Сдвиговые регистры: последовательный вход, параллельный выход (SIPO)[1]
Сдвиговый регистр с последовательным входом и параллельным выходом сродни сдвиговому регистру с последовательными входом и выходом в том – он также сдвигает данные во внутренние элементы памяти на последовательном входе и может выводить данные на последовательный выход.
Он отличается тем, что делает все внутренние этапы доступными в качестве выходов. Следовательно, сдвиговый регистр с последовательным входом и параллельным выходом может преобразовывать данные из последовательного формата в параллельный.
Пример использования сдвигового регистра с последовательным входом и параллельным выходом
Если четыре бита данных сдвигаются на четыре тактовых импульса по одному проводу при вводе данных, как показано на рисунке 1 ниже, данные становятся доступными одновременно на четырёх выходах с QA по QD после четвёртого тактового импульса.
Данные доступны одновременно на четырёх выходах QA—QD после четвёртого тактового импульса.
Практическое применение сдвигового регистра с последовательным входом и параллельным выходом заключается в преобразовании данных из последовательного формата на одном проводе в параллельный формат на нескольких проводах.
Допустим, нам нужно приложение, в котором зажигаются четыре светодиода (светоизлучающие диоды) с четырьмя выходами (QA QB QC QD).
Приведённая выше детализация сдвигового регистра с последовательным входом и параллельным выходом довольно проста. Он выглядит как сдвиговый регистр с последовательным входом и выходом с добавлением отводов к выходу каждого этапа.
Последовательные данные вводятся в SI (от англ. Serial-In, т.е. последовательный вход). После количества тактов, равного количеству этапов, первый бит данных появляется в SO (от англ. Serial-Out, т.е. последовательный выход) т.е. QD на приведённом выше рисунке.
В общем, как для сдвиговых регистров из предыдущих двух разделов, тут нет отдельного выхода SO. Последний этап (QD выше) как раз и выполняет роль SO и каскадируется к следующему пакету, если таковой существует.
Последовательный вход, параллельный выход VS последовательные вход и выход
Если сдвиговый регистр с последовательным входом и параллельным выходом настолько похож на сдвиговый регистр с последовательными входом и выходом, почему производители предлагают оба типа?
Почему бы просто не ограничиться только сдвиговым регистром с последовательным входом и параллельным выходом?
Ответ заключается в том, что на самом деле сдвиговые регистры с последовательным входом и параллельным выходом имеют не более 8 бит.
Обратите внимание, что сдвиговые регистры с последовательными входом и выходом имеют длину от 18 до 64 бит, что заметно больше 8 бит.
Если сдвиговый регистр с последовательным входом и параллельным выходом сделать 64-битным, он потребует слишком большого количества выходных контактов, что делает использование таких регистров нецелесообразным. Чтобы в этом убедиться, взглянем на осциллограммы на рисунке 3 ниже для приведённого на рисунках 1-2 выше сдвигового регистра.
Сдвиговый регистр был очищен от любых предыдущих данных с помощью CLR', активизирующего «низкий» уровень, очищающий все триггеры типа «D» в сдвиговом регистре.
Обратите внимание на шаблон последовательных данных 1011, представленный на входе SI. Эти данные синхронизируются с тактовым входом CLK.
Это может иметь место, если он вводится из чего-то вроде другого сдвигового регистра, например, из сдвигового регистра с параллельным входом и последовательным выходом (здесь не показано).
На первом такте в момент t1 данные (равные 1 в этом примере) в SI сдвигаются из D в Q первого этапа сдвигового регистра. После t2 этот первый бит данных находится в QB.
После t3 он находится в QC. После t4 он находится в QD. Четыре тактовых импульса сдвинули первый бит данных до последнего этапа QD.
Второй бит данных (в данном случае равен 0) находится в QC после 4-го такта. Третий бит данных (= 1) находится в QB. Четвёртый бит данных, также равный 1, находится в QA.
Таким образом, шаблон 1011 последовательного ввода данных содержится в (QD QC QB QA). Теперь он доступен на четырёх выходах.
Он будет доступен на четырёх выходах сразу после такта t4 и сразу перед t5.
Эти параллельные данные должны использоваться или храниться в промежутке между этими двумя периодами времени, иначе они будут потеряны из-за сдвига этапа QD на следующих тактах от t5 до t8, как показано на рисунке 3 выше.
Устройства с последовательным входом и параллельным выходом
Давайте подробнее рассмотрим сдвиговые регистры с последовательным входом и параллельным выходом, доступные в виде интегральных схем, любезно предоставленных Texas Instruments.
Для получения полных спецификаций устройств следует найти их страницы на сайте производителя.
SN74ALS164A 8-битный сдвиговый регистр с последовательным входом и параллельным выходом
8-битный сдвиговый регистр SN74AHC594 с последовательным входом и параллельным выходом и выходным регистром
8-битный регистр SN74AHC595 с последовательным входом и параллельным выходом и выходным регистром
CD4094 8-битовый сдвиговый регистр с последовательным входом и параллельным выходом и выходным регистром
74ALS164A почти идентичен нашей предыдущей схеме, за исключением двух последовательных входов A и B.
Неиспользуемый вход должен быть подтянут к «высокому» уровню, чтобы активировать другой вход. Мы не показываем все этапы на рисунке 4 выше.
Однако все выходы показаны на ANSI-обозначении на рисунке 5 ниже вместе с нумерацией контактов.
Вход CLK в секцию управления вышеупомянутого ANSI-обозначения имеет две внутренние функции C1, управление чем-либо с префиксом 1.
Это будет синхронизация данных в 1D. Вторая функция, стрелка после косой черты (/) – это сдвиг вправо (вниз) данных внутри сдвигового регистра.
Восемь выходов доступны справа от восьми регистров ниже секции управления. Первая ступень шире остальных, чтобы вместить ввод A&B.
Приведённая выше внутренняя логическая схема адаптирована из технического описания, предоставленного компанией Texas Instruments для 74AHC594. Триггер типа «D» в верхнем ряду содержит сдвиговый регистр с последовательным входом и параллельным выходом.
Этот раздел работает аналогично ранее описанным устройствам. Выходы (от QA' QB' вплоть до QH') половины сдвиговых регистров устройства питают триггер типа «D» в нижней параллельной половине. QH' (вывод 9) выводится на любой дополнительный каскадный пакет устройств.
Один положительный фронт тактового сигнала на RCLK будет передавать данные из D в Q младших триггеров. Все 8 бит передаются параллельно в выходной регистр (набор элементов памяти).
Назначение выходного регистра состоит в том, чтобы поддерживать постоянный вывод данных, в то время как новые данные сдвигаются в верхнюю секцию сдвигового регистра.
Это необходимо, если выходы управляют реле, клапанами, двигателями, соленоидами, звуковыми сигналами или зуммерами. Эта функция может не понадобиться при управлении светодиодами, если мерцание во время переключения не является проблемой.
Обратите внимание, что 74AHC594 имеет отдельные тактовые входы для сдвигового регистра (SRCLK) и выходного регистра (RCLK). Кроме того, сдвиговый регистр может быть очищен с помощью SRCLR, а выходной регистр — с помощью RCLR.
Выходы желательно переводить в известное состояние при включении питания, в частности, если это управляющие реле, двигатели и т.п. Приведённые на рисунке 7 ниже волны сигналов иллюстрируют сдвиг и «защёлкивание» данных.
Приведённые на рисунке 7 выше сигналы показывают сдвиг 4-битных данных в первые четыре этапа 74AHC594, а затем параллельную передачу в выходной регистр.
На самом деле 74AHC594 представляет собой 8-битный сдвиговый регистр, и для сдвига 8-битных данных потребуется 8 тактов, что является нормальным режимом работы.
Однако 4 бита (вместо 8-ми), которые мы показываем, экономят место и адекватно иллюстрируют операцию.
Мы очищаем сдвиговый регистр за полтакта до t0 с SRCLR' = 0. SRCLR' должен вернуться в исходное состояние перед переключением.
Непосредственно перед t0 выходной регистр очищается RCLR' = 0. Он тоже освобождается (RCLR' = 1).
Последовательные данные 1011 представлены на выводе SI между тактами t0 и t4. Он смещается тактами t1 t2 t3 t4, появляющимися на внутренних этапах сдвига QA' QB' QC' QD'.
Эти данные присутствуют на этих этапах между t4 и t5. После t5 искомые данные (1011) будут недоступны на этих внутренних каскадах переключателя.
Между t4 и t5 мы применяем положительный RCLK, передающий данные 1011 для регистрации выходов QA QB QC QD.
Эти данные будут здесь заморожены по мере поступления дополнительных данных (нулей) во время последующих SRCLK-ов (от t5 до t8). Данные здесь не изменятся, пока не будет применен другой RCLK.
74AHC595 идентичен «594», за исключением того, что «RCLR» заменён на «OE», что позволяет использовать буфер с тремя состояниями на выходе каждого из восьми битов выходного регистра.
Хотя выходной регистр не может быть очищен, выходы могут быть отключены с помощью OE' = 1.
Это позволит внешним подтягивающим резисторам переводить любые реле, соленоиды или приводы клапанов в нужное состояние во время включения системы.
Как только система включена и, скажем, микропроцессор переместил и зафиксировал данные в «595», разрешение выхода может быть установлено (OE' = 0) для управления реле, соленоидами и клапанами с достоверными данными, но, не раньше этого времени.
На рисунке 9 выше приведены предлагаемые ANSI-обозначения для этих устройств. C3 синхронизирует данные на последовательный вход (внешний SER), как указано префиксом 3 в 2,3D.
Стрелка после C3/ указывает на сдвиг вправо (вниз) сдвигового регистра, на 8 этапов влево от символа «595» под секцией управления.
Префикс 2 для 2,3D и 2D указывает, что эти этапы могут быть сброшены с помощью R2 (внешний SRCLR').
Префикс 1 1,4D в «594» указывает, что R1 (внешний RCLR') может сбрасывать выходной регистр, который находится справа от секции сдвигового регистра.
«595», который имеет EN на внешнем OE', не может сбросить выходной регистр. Но EN включает выходные буферы с тремя состояниями (отмечено перевернутым треугольником).
Прямоугольный треугольник как «594», так и «595» указывает на внутреннюю буферизацию. Оба выходных регистра (и 594-й, и 595-й) тактируются C4, как указано цифрой 4 из 1,4D и 4D соответственно.
CD4094B представляет собой сдвиговый регистр с фиксацией от 3 до 15 В постоянного тока, альтернативный предыдущим устройствам 74AHC594.
Тактовый вход, C1, сдвигает данные в ПОСЛЕДОВАТЕЛЬНЫЙ ВХОД, о чём свидетельствует префикс 1 1D.
Это также тактовый вход правого сдвигового регистра (левая половина на теле обозначения), указано как / → C1 / → на входе ТАКТОВЫЙ ВХОД.
СТРОБ, C2 – это тактовый вход для 8-битного выходного регистра справа от тела символа. 2 из 2D указывает, что C2 является тактовым входом для выходного регистра.
Перевёрнутый треугольник на выходной «защёлке» указывает на то, что выход имеет три состояния и активируется посредством EN3.
Цифра 3, предшествующая перевёрнутому треугольнику, и цифра 3 в EN3 часто опускаются, так как подразумевается, что любой вход разрешения (EN) управляет выходами с тремя состояниями. QS и QS' являются «незащёлкнутыми» выходами этапа сдвигового регистра.
QS можно каскадировать на ПОСЛЕДОВАТЕЛЬНЫЙ ВХОД последующего устройства.
Практическое применение
Реальное применение сдвигового регистра с последовательным входом и параллельным выходом заключается в выводе данных из микропроцессора на индикатор удалённой панели.
Или на какое другое удалённое устройство вывода, которое принимает данные в последовательном формате.
На рисунке 11 «Сигнализация с удалённой клавиатурой» здесь видим уже знакомую секцию с параллельным входом и последовательным выходом с добавлением удалённого дисплея.
Таким образом, мы можем отображать, например, состояние шлейфов, подключённых к основной сигнализации.
Если сигнал тревоги детектирует взлом окна, он может отправить последовательные данные на удаленный дисплей, сообщая оператору об этом.
Клавиатура и дисплей, скорее всего, будут находиться в одном и том же удалённом корпусе, отдельно от основного блока сигнализации. Однако в этом разделе мы рассмотрим только панель дисплея.
Если бы дисплей был на той же плате, что и сигнализация, мы могли бы просто провести восемь проводов к восьми светодиодам, а также два провода для питания и заземления.
Эти восемь проводов гораздо менее желательны при длительном подключении к удалённой панели. Используя регистры сдвига, нам нужно запустить только пять проводов: тактовый вход, последовательные данные, строб, питание и заземление.
Если бы панель находилась всего в нескольких дюймах от основной платы, всё равно было бы желательно сократить количество проводов в соединительном кабеле для повышения надёжности.
Кроме того, мы иногда используем бо́льшую часть доступных выводов на микропроцессоре и должны использовать последовательные методы для увеличения количества выходов.
Некоторые устройства вывода на интегральных схемах, такие как цифро-аналоговые преобразователи, содержат сдвиговые регистры с последовательным входом и параллельным выходом для приёма данных от микропроцессоров.
Методы, показанные здесь, применимы и к этим устройствам.
Мы выбрали сдвиговый регистр 74AHC594 с последовательным входом, параллельным выходом и выходным регистром; хотя для этого требуется дополнительный контакт RCLK для параллельной загрузки сдвинутых данных на выходные контакты.
Этот дополнительный вывод предотвращает изменение выходов во время ввода данных. Для светодиодов это не критично. Но это было бы проблемой, если вместо светодиодов данные принимают приводные реле, клапаны, двигатели и т. д.
Код, выполняемый микропроцессором, будет начинаться с 8-битных данных для вывода. Один бит будет выводиться на вывод «Последовательные выходные данные», управляя SER удалённого 74AHC594.
Затем микропроцессор формирует переход с «низкого» уровня на «высокий» на узле «Тактовый сдвиг», управляя SRCLK сдвигового регистра «595».
Эти положительные тактовые сигналы сдвигают бит данных в SER с «D» на «Q» первого этапа сдвигового регистра.
На данный момент это не влияет на светодиод QA из-за внутреннего 8-битного выходного регистра между сдвиговым регистром и выходными контактами (от QA до QH).
Наконец, «Тактовый сдвиг» возвращается микропроцессором к «низкому» уровню. Это завершает сдвиг одного бита в «595».
Вышеупомянутая процедура повторяется ещё семь раз, чтобы завершить сдвиг 8-битных данных из микропроцессора в сдвиговый регистр с последовательным входом и параллельным выходом 74AHC594.
Для передачи 8-битных данных из внутреннего сдвигового регистра «595» на выход требуется, чтобы микропроцессор генерировал переход с «низкого» уровня на «высокий» на RCLK, тактовом входе выходного регистра.
Это применяет новые данные к светодиодам. RCLK необходимо вернуть в «низкий» уровень в ожидании следующей 8-битной передачи данных.
Данные, присутствующие на выходе «595», будут оставаться до тех пор, пока процесс, описанный в двух предыдущих абзацах, не будет повторен для новых 8-битных данных.
В частности, новые данные могут быть сдвинуты во внутренний сдвиговый регистр «595» без воздействия на светодиоды. Светодиоды будут обновляться новыми данными только с применением положительного фронта RCLK.
Что, если нам нужно управлять более чем восемью светодиодами? Просто подключите ещё один вывод 74AHC594 BE к QH' существующего переключателя.
Следует запараллелить контакты SRCLK и RCLK. Микропроцессору потребуется передать 16 бит данных за 16 тактов, прежде чем сгенерировать RCLK, питающий оба устройства.
Дискретные светодиодные индикаторы, которые мы показываем, могут быть 7-сегментными светодиодами. Однако существуют LSI-устройства (от англ. Large Scale Integration, т.е. Крупномасштабная интеграция), способные управлять несколькими 7-сегментными цифрами.
Это устройство принимает данные от микропроцессора в последовательном формате, управляя бо́льшим количеством сегментов светодиодов, чем у него есть контактов, за счёт мультиплексирования светодиодов.