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