Каскадные регистры сдвига, управляемые однотактным микроконтроллером

Я пытаюсь сделать блок, в котором 4 цифры могут быть обновлены за небольшой промежуток времени от микроконтроллера с одним циклом (желательно, чтобы все цифры обновлялись в течение 5 мкс)

Моя схема устроена следующим образом (для простоты я исключил 7-сегментные индикаторы и резисторы). Регистры сдвига — 74HC595, а мультивибратор слева — CD4538, но я думаю, что мне нужно обновить его до 74HC4538 (кто-то подтверждает это?)

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

Резистор 10К, конденсатор 1нФ.

Если я использую микросхему с более низкой скоростью, такую ​​​​как AT89S52, которая может обновлять контакты GPIO в лучшем случае 1/2 микросекунды (с кристаллом 22 МГц), то эта схема не имеет проблем. Но если я начну использовать высокоскоростной однотактный микроконтроллер, то контакты GPIO смогут обновляться со скоростью 20 нс.

Что я могу сделать, чтобы улучшить эту схему без перестановки частей? Должен ли я просто обновить мультивибратор и уменьшить номинал конденсатора?

синхронизация сдвигового регистра

Разве вы не можете просто добавить несколько NOP между записями на контакты ввода-вывода?
Вам нужно обновлять выходные данные каждые 5 мкс или просто обновлять их все в течение 5 мкс для гораздо более низкой частоты обновления?
Не забудьте колпачки 0,1 мкФ на каждом контакте VCC регистра сдвига к Gnd.
Я последовательно подключил 45 сдвиговых регистров и использовал передачу SPI от Atmel Atmega1284P с тактовой частотой 16 МГц. Тактовая частота SPI была установлена ​​на 8 МГц, я мог обновлять их каждые 50 мкс (по 17 тактов, то есть 1,06 мкс на каждый отправляемый байт). AT89S52 также поддерживает передачу SPI. 4 потребовалось бы чуть более 4 мкс на частоте 16 МГц. С тактовой частотой 22 МГц и тактовой частотой SPI 11 МГц, тогда 4 должно занять более 3 мкс.

Ответы (1)

Имейте в виду, что у 595, используемого таким образом, есть проблема: выход гирляндной цепочки изменяется на том же фронте тактового сигнала, что и вход следующих выборок микросхемы. Чип, который действительно предназначен для такого использования (у IIRC есть один в серии CD), имеет последовательный выход с задержкой.

Вы можете смягчить эту проблему:

  • небольшая задержка выходных данных гирляндной цепочки (RC)
  • применение часов в обратном порядке: сначала подключите их к последнему чипу в цепочке

Я не понимаю, почему вы используете этот 4538. Если вы просто хотите всегда иметь последние (сдвигающиеся!) Данные на выходах, вы можете просто соединить SCK и SLK вместе. Вы получите некоторое ореолы, в зависимости от вашего соотношения обновления/ожидания.

Я хотел минимизировать мерцание. Каждый раз, когда RCK переключается, дисплей обновляется. Если я свяжу часы вместе, то дисплей будет обновляться для каждого смещенного бита, что означает большее мерцание. Итак, что я сделал, так это создал тайм-аут, чтобы, когда данные перестают смещаться, дисплей обновлялся один раз.
ХОРОШО. кажется разумным.