Я планирую объединить 40 х 74HC595 сдвиговых регистров. Вся цепь 74HC595s будет контролироваться с помощью 5 V микроконтроллера, который будет генерировать SDI
, CLOCK
& LATCH
сигналы.
Каждый сдвиговый регистр и микроконтроллер будут иметь свою собственную печатную плату, как показано на схеме ниже:
Из-за механических ограничений расстояние между каждым сдвиговым регистром будет составлять около 30 см (12 дюймов), поэтому сигналы управления будут распространяться на расстояние приблизительно. 12 м (40 футов). Кроме того, вся система будет установлена в очень шумной обстановке (рядом с люминесцентными лампами, сетевыми проводами и т. Д.)
Меня беспокоит то, что сигналы управления будут очень шумными, а сдвиговые регистры могут выводить неправильные данные. Я думал о:
- Использование буферной ИС на каждой плате для буферизации сигналов управления. Какой из них вы бы порекомендовали?
- Использование экранированных кабелей между платами для сигналов
- Понижение
CLOCK
частоты максимально. Мне нужно обновлять содержимое регистров только несколько раз в день.
Являются ли вышеуказанные решения полезными? Что еще я могу сделать, чтобы свести (потенциальный) шум в сигнальных проводах к минимуму?
Ответы:
Используйте триггеры Шмитта на входах каждой доски. Они будут очищать сигналы так, чтобы любой шум, например, не давал ложных импульсов на часах. 74LVC3G17 является тройным неинвертирующим буфером.
Также передайте буферизованные сигналы на следующую доску. В противном случае все входы будут параллельными, и вы можете превысить разветвление управляющего микроконтроллера (особенно я думаю об общей емкостной нагрузке). Последовательная цепь тактовых сигналов и сигналов защелки будет вызывать пульсацию по всей цепочке, но данные также будут поступать так же, и вы все равно планируете двигаться на низкой скорости.
источник
Проблема, которая может возникнуть, состоит в том, что некоторые SR синхронизируются до следующих SR, так что следующий SR будет синхронизировать неверные данные. (Стандартное?) Решение для этого состоит в том, чтобы подключить часы, начиная с последнего SR.
Я хотел бы рассмотреть возможность добавления буфера (schmit-trigger?) На каждой плате для всех 3 сигнальных линий.
(править) Понижение тактовой частоты не поможет (если только оно не было слишком высоким для начала). Проблемы, которые могут возникнуть у вас по краям часов, которые будут у вас в любом случае, независимо от того, как низко вы выберете частоту.
источник
Самая большая проблема при объединении сдвиговых регистров заключается в том, чтобы гарантировать, что временная зависимость между часами, используемыми каждой платой, используемой для получения данных, и изменением данных с предыдущей платы предсказуема. Тот факт, что выход 74HC595 изменяется на той же границе, что и часы, немного раздражает в этом отношении. Я бы предложил, чтобы тактовый сигнал был буферизован при прохождении через каждую плату и чтобы сигнал данных, поступающий из 74HC595 одной платы, передавался через буфер, который задержит его на время, немного превышающее тактовый буфер.
В качестве альтернативы вы можете использовать сдвиговый регистр, такой как 74HC4094, у которого изменение выходных данных по падающему фронту тактового сигнала, или вы можете добавить триггер между выходом последнего 74HC595 на плате и следующей плате и получить этот триггер зафиксируйте его выход на заднем фронте тактового генератора, который управляет 74HC595 (возможно, пропустите тактовый генератор через два инвертора для его буферизации и подайте инвертированный тактовый сигнал на триггер).
Если число выходов 74HC595, которые вы будете использовать, на один (или более) меньше, чем количество, поставляемое вашими чипами (например, на плате с двумя 74HC595, вам на самом деле нужно только 15 выходов), вы можете подать последние 74HC595 на плату с часы, инвертированные от других, но это будет стоить вам использовать один выход 74HC595 для каждого прохождения сигнала между неинвертированными тактовыми импульсами 74HC595 и инвертированными тактовыми импульсами 74HC595.
источник