Какие проблемы могут возникнуть при объединении 40 сдвиговых регистров?

Я планирую соединить вместе 40 сдвиговых регистров 74HC595 . Вся цепочка 74HC595 будет управляться микроконтроллером 5 В, который будет генерировать сигналы SDI, CLOCK& .LATCH

Каждый регистр сдвига и микроконтроллер будут иметь свою собственную печатную плату, как показано на схеме ниже:

диаграмма

Из-за механических ограничений расстояние между каждым сдвиговым регистром будет составлять около 30 см (12 дюймов), поэтому управляющие сигналы будут перемещаться на расстояние прибл. 12 м (40 футов). Кроме того, вся система будет монтироваться в очень шумном месте (рядом с люминесцентными лампами, сетевыми проводами и т. д.).

Меня беспокоит то, что управляющие сигналы будут очень шумными, а сдвиговые регистры могут выводить неверные данные. Я думал о:

  • Использование буферной ИС на каждой плате для буферизации управляющих сигналов. Какой из них вы бы порекомендовали?
  • Использование экранированных кабелей между платами для сигналов
  • Максимально снизить CLOCKчастоту. Мне нужно обновлять содержимое регистров всего несколько раз в день.

Вышеуказанные решения хороши? Что еще я могу сделать, чтобы свести к минимуму (потенциальный) шум в сигнальных проводах?

Это звучит как фантастический кандидат на CPLD вместо 40 сдвиговых регистров.
@JoelB Это может показаться подходящим для CPLD, но это будет означать наличие 320 (= 40 * 8) сигналов, идущих от основной платы (CPLD) повсюду. В моем случае это было бы очень сложно установить в такой среде; и поддерживать его будет очень сложно. Кроме того, сигналы хоть и короче, но все равно будут подвержены шуму.
@Joel - Digikey перечисляет только несколько CPLD с 320 вводами-выводами, и все они BGA. Они также дороже, чем 40 595, и, как говорит m.Alin, у вас нет преимущества распределенных сигналов. С логической точки зрения это идеальная работа для CPLD, с практической — в меньшей степени.
@ m.Alin - Вы совершенно правы. Я только что прочитал 40 регистров сдвига и набрал CPLD. После внимательного прочтения вопроса становится понятно, как вы это делаете.

Ответы (3)

Используйте буферы триггера Шмитта на входах каждой платы. Они будут очищать сигналы, чтобы, например, любой шум не давал ложных импульсов на часах. 74LVC3G17 представляет собой тройной неинвертирующий буфер.

Кроме того, передайте буферизованные сигналы на следующую плату. В противном случае все входы будут параллельными, и вы можете превысить разветвление управляющего микроконтроллера (особенно я думаю об общей емкостной нагрузке). Гирляндная цепочка тактовых сигналов и сигналов защелки будет давать пульсирующую задержку по всей цепочке, но данные также будут иметь такую ​​же задержку, и вы все равно планируете использовать низкую скорость.

Нельзя сказать, что у вас нет места для 3G17: корпус XSON8 имеет размеры 1,0 мм x 1,2 мм, шаг 0,3 мм. :-)
О.. это нехорошо. Вряд ли я их увижу :-)
@ m.Alin - Не волнуйтесь, это также доступно в TSSOP. Все еще мало, но должно быть управляемым. В любом случае, не рассчитывайте на DIP для такого рода устройств, это определенно уходит в прошлое. Если вам нужен DIP, обратите внимание на более классическую серию 74HC.
Спасибо, Стивен. TSSOP должен быть в порядке. Чисто теоретически говоря, допустим, я не буду использовать буферы. Таким образом, входные сигналы будут параллельными, превышая разветвление микроконтроллера. Могу ли я решить эту проблему, управляя выходами UC с некоторыми транзисторами?
@ m.Alin - Да, двухтактный этап подойдет. Но я бы настоятельно рекомендовал буферы не только из-за возможности привода, но особенно из-за гистерезиса триггера Шмитта , который позволит избежать ложных тактовых импульсов, вызванных шумом около порога.
@stevenvh Лучше ставить буферы до или после кабеля, который снимает сигналы с платы? В моем случае у меня есть буферы перед кабелем, но нет после него.
@Saad - Вы имеете в виду, что буфер передает сигнал по кабелю? Хорошо то, что он обеспечивает низкий импеданс, который снижает шум. Но если на стороне получателя будет шум, вы ничего не сможете с этим поделать на стороне отправителя. Так что приемнику нужна хорошая помехоустойчивость, которую обеспечивает триггер Шмитта.
@stevenvh Итак, лучшее решение, если вы ожидаете шума в приемнике, но также хотите обеспечить низкое сопротивление источнику, - это установить буферы на обоих концах?
@Saad - Да, но в данном случае это кажется излишним: длина проводов всего 30 см, а на каждой плате уже есть повторитель/буфер.
@stevenvh Да, я говорил в общем. В ваших постах много информации и я почти всегда узнаю что-то новое! В этом случае у меня есть буферы на плате контроллера, которые подключаются к кабелю, который подключается к «дочерней плате». Я не ожидаю большого шума, так что я могу остаться при своей аранжировке. У меня там только буферы, чтобы мой источник не управлял 8 устройствами (с входной емкостью 8 пФ + емкость дорожки и кабеля).
@Saad - Спасибо за цветы! :-) Следите за емкостью кабеля, особенно если он больше метра или около того. Эмпирическое правило: 100 пФ/м, это намного больше, чем входная емкость.

Проблема, которая может возникнуть, заключается в том, что некоторые SR синхронизируются раньше, чем следующие SR, так что следующий SR будет тактировать с неправильными данными. (Стандартное?) Решение для этого состоит в том, чтобы подключить часы, начиная с последнего SR.

Я бы подумал о добавлении буфера (триггера Шмитта?) на каждой плате для всех 3 сигнальных линий.

(редактировать) Снижение тактовой частоты не поможет (если только она не была слишком высокой для начала). Проблемы, которые у вас могут возникнуть, возникают на фронтах тактовой частоты, которые у вас будут в любом случае, независимо от того, насколько низкую вы выберете тактовую частоту.

Самая большая проблема при объединении регистров сдвига в цепочку заключается в том, чтобы обеспечить предсказуемость временных соотношений между часами, используемыми каждой платой для получения данных, и изменением данных от предыдущей платы. Тот факт, что выходной сигнал 74HC595 изменяется по тому же фронту, что и часы, немного раздражает в этом отношении. Я бы предложил, чтобы тактовый сигнал буферизировался при прохождении через каждую плату, а сигнал данных, выходящий из 74HC595 одной платы, должен проходить через буфер, который будет задерживать его на время, немного большее, чем тактовый буфер.

В качестве альтернативы вы можете использовать регистр сдвига, такой как 74HC4094 , у которого выход данных изменяется на спадающем фронте тактового сигнала, или вы можете добавить триггер между выходом последнего 74HC595 на плате и следующей платой, и этот триггер зафиксируйте его выход на заднем фронте тактового сигнала, который управляет 74HC595 (возможно, пропустите тактовый сигнал через два инвертора, чтобы буферизовать его и подать инвертированный тактовый сигнал на триггер).

Если количество выходов 74HC595, которые вы будете использовать, на один (или более) меньше, чем количество, предоставляемое вашими микросхемами (например, на плате с двумя 74HC595 вам фактически нужно только 15 выходов), вы можете подключить последний 74HC595 к плате с часы, инвертированные по сравнению с другими, но это будет стоить вам использования одного выхода 74HC595 каждый раз, когда сигнал проходит между 74HC595 без инвертированных часов и 74HC595 с инвертированными часами.