Электроника:Цифровая электроника/Сдвиговые регистры/Сдвиговые регистры: параллельный вход, последовательный выход (PISO)

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Макаров В. (valemak) Контакты:</br>* Habr: @vakemak</br>* Сайт: www.valemak.com</br>Перевёл статей: 648.
Проверка/Оформление/Редактирование: Мякишев Е.А.


Сдвиговые регистры: параллельный вход, последовательный выход (PISO)[1]

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

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

Кроме того, параллельный ввод и последовательный вывод на самом деле означает, что мы можем загружать данные параллельно во все этапы до того, как начнётся какое-либо смещение.

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

Под последовательным форматом мы подразумеваем, что биты данных выводятся последовательно во времени по одному проводу или цепи, как в случае с «выходными данными» на блок-схеме ниже.

Рис. 1. «Выходные данные» на блок-схеме.
Рис. 1. «Выходные данные» на блок-схеме.

Ниже мы подробно и детализировано разберём трёхкаскадный сдвиговый регистр с параллельным входом и последовательным выходом.

Этап состоит из триггера типа «D» для хранения и селектора И-ИЛИ, что позволяет определять, будут ли данные загружаться параллельно или произойдёт сдвиг сохранённых данных вправо.

Как правило, эти элементы реплицируются для необходимого количества этапов. Мы показываем всего три этапа, иначе изображения схем будут слишком длинными.

А вообще, для реальных деталей обычно нормальное количество бит (а следовательно, и этапов) составляет четыре, восемь или шестнадцать.

Рис. 2. Подробности 3-этапного сдвигового регистра с параллельным входом и последовательным выходом.
Рис. 2. Подробности 3-этапного сдвигового регистра с параллельным входом и последовательным выходом.

Выше показан путь параллельной загрузки, когда СДВИГ/LD' имеет «низкий» логический уровень. Верхние вентили И-НЕ, обслуживающие DA DB DC, включены, передавая данные на входы D для D-триггеров QA QB DC соответственно.

При следующем положительном фронте синхронизации данные будут тактироваться от D до Q во всех трёх триггерах. Три бита данных будут загружаться в QA QB DC одновременно.

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

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

Только один из этих методов (либо синхронный, либо асинхронный) используется в отдельном устройстве, синхронная загрузка более распространена в более новых устройствах.

Рис. 3. Синхронная нагрузка чаще встречается в новых устройствах.
Рис. 3. Синхронная нагрузка чаще встречается в новых устройствах.

Путь переключения показан выше, когда СДВИГ/LD' имеет «высокий» логический уровень. Нижние вентильные пары И, питающие вентили ИЛИ, включены, что даёт нам соединение сдвигового регистра входа SI с DA, QA с DB, QB с DC, QC с выходом SO. Тактовые импульсы заставят данные сдвигаться вправо к выходу SO для последовательных импульсов.

Приведённые ниже волны сигналов показывают как параллельную загрузку трёх битов данных, так и последовательное смещение этих данных. Параллельные данные на DA DB DC преобразуются в последовательные данные на SO.

Рис. 4. Изображены графики как параллельной загрузки трёх битов данных, так и последовательное смещение этих данных.
Рис. 4. Изображены графики как параллельной загрузки трёх битов данных, так и последовательное смещение этих данных.

То, что мы ранее описывали словами для параллельной загрузки и смещения, теперь представлено выше в виде волн сигналов.

В качестве примера подаём 101 на параллельные входы DAA DBB DCC. Затем СДВИГ/LD' переходит в «низкий» уровень, что позволяет загружать данные, а не сдвигать их.

Он должен быть «низким» на короткое время до и после тактового импульса из-за требований к настройке и удержанию. Он значительно шире, чем должен быть.

Хотя при синхронной логике удобно сделать его широким. Мы могли бы сделать активный «низкий» СДВИГ/LD' шириной почти в два такта, «низкий» почти за такт до t1 и обратно «высокий» как раз перед t3.

Важным фактором является то, что он должен быть «низким» по тактовому времени t1, чтобы обеспечить параллельную загрузку данных в соответствии с тактовыми сигналами. Обратите внимание, что в момент t1 данные 101 в DA DB DC синхронизируются от D до Q триггеров, как показано в QA QB QC в момент времени t1.

Это параллельная загрузка данных синхронна с тактовым сигналом.

Рис. 5. Параллельная загрузка данных синхронна с тактовым сигналом.
Рис. 5. Параллельная загрузка данных синхронна с тактовым сигналом.

Теперь, когда данные загружены, мы можем сдвинуть их при условии, что СДВИГ/LD' имеет «высокое» значение, чтобы разрешить смещение, что происходит до t2. В момент t2 данные 0 в QC смещаются за пределы SO, что совпадает с волной сигнала QC. Они либо перекладываются в другую интегральную схему, либо теряются, если к SO ничего не подключено. Данные в QB, a 0 сдвигаются в QC. 1 в QA сдвигается в QB. Если для «входных данных» установлено значение 0, QA становится равным 0. После t2 QA QB QC = 010.

После t3 QA QB QC = 001. Эта 1, которая первоначально присутствовала в QA после t1, теперь присутствует в SO и QC.

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

При такте t5 мы показываем сдвиг данных на 1 этап, присутствующих на последовательном входе SI.

Вопрос: Зачем в сдвиговом регистре использовать выводы SI и SO?

Ответ: Эти соединения позволяют нам каскадом разместить этапы сдвигового регистра, чтобы обеспечить бо́льшие сдвиговые устройства, чем те, которые доступны в одном корпусе ИС (интегральной схемы). Они также допускают последовательное соединение с другими ИС, такими как микропроцессоры.

Давайте подробнее рассмотрим сдвиговые регистры с параллельным входом и последовательным выходом, доступные в виде интегральных схем, любезно предоставленных компанией Texas Instruments.

Чтобы ознакомиться с полными техническими данными устройства, на сайте компании следует перейти на страницы следующих устройств:

Устройства с параллельным входом и последовательным выходом

  • SN74ALS166 8-битный сдвиговый регистр с параллельным входом и последовательным выходом, синхронная загрузка.
  • SN74ALS165 8-битный сдвиговый регистр с параллельным входом и последовательным выходом, асинхронная загрузка.
  • CD4014B 8-битный сдвиговый регистр с параллельным входом и последовательным выходом, синхронная загрузка.
  • SN74LS647 16-битный сдвиговый регистр с параллельным входом и последовательным выходом, синхронная загрузка.

SN74ALS166, показанный выше, является наиболее близким соответствием реальной детали, схемы которых приведены выше, где изображены сдвиговые регистры с параллельным входом и последовательным выходом.

Отметим незначительные изменения по сравнению с нашими рисунками 2 и 3 выше. Прежде всего, в SN74ALS166 8 этапов. Мы (для экономии места) показываем только три.

Все 8 этапов показаны в таблице данных от производителя. Производитель помечает входы данных A, B, C и т. д. вплоть до буквы H.

Регулятор называется SH/LD' (сокращение от англ. SHIFT/LOAD, т.е. СДВИГ/ЗАГРУЗКА). Это сокращение от нашей предыдущей терминологии, но работает так же: параллельная нагрузка, если «низкий» уровень сигнала, сдвиг, если «высокий».

Ввод сдвига (ввод последовательных данных) — это SER на ALS166 вместо SI. Тактовый сигнал CLK управляется запрещающим сигналом CLKINH.

Если CLKINH «высокий», тактовый вход заблокирован или отключён. В остальном эта «реальная часть» такая же, как то, что мы подробно рассмотрели выше.

Рис. 7. ANSI-обозначения для SN74ALS166.
Рис. 7. ANSI-обозначения для SN74ALS166.

Выше приведено ANSI-обозначение (Американский национальный институт стандартов) для SN74ALS166, указанное в техпаспорте.

Если разобраться, как работает часть схемы, то в дальнейшем удобно скрыть рассмотренные детали за обозначениями. Существует много общих обозначений.

Преимущество ANSI-обозначений заключается в том, что метки дают подсказки о том, как работает деталь.

Большой зазубренный блок в верхней части 74ASL166 – это управляющая часть ANSI-обозначений. Есть «Сброс», отмеченный как R (от англ. Reset).

Существует три управляющих сигнала: M1 (Сдвиг), M2 (Загрузка) и C3/1 (обозначено стрелкой) (обозначает, что синхронизация запрещена). Тактовый вход имеют две функции.

Во-первых, C3 нужен для сдвига параллельных данных везде, где появляется префикс 3. Во-вторых, всякий раз, когда устанавливается M1, как указано 1 в C3/1 (обозначено стрелкой), данные сдвигаются, как указано направлением стрелки – вправо.

Косая черта (/) является разделителем между этими двумя функциями. Этапы с 8-ю сдвигами, обозначенные заголовком SRG8, идентифицируются внешними входами от A, B, C и т.д. до H.

2, 3D указывает, что данные D управляются тактовой частотой M2 [Загрузка] и C3. В этом случае можно сделать вывод, что параллельные данные загружаются синхронно с тактовым сигналом C3.

Верхний каскад в точке А представляет собой более широкий блок, чем другие, для размещения входного SER.

1, 3D подразумевает, что SER управляется тактовым входом M1 [Сдвиг] и C3. Таким образом, мы ожидаем, что данные будут синхронизироваться в SER при сдвиге, а не при параллельной загрузке.

Рис. 8. ANSI-обозначения вентилей.
Рис. 8. ANSI-обозначения вентилей.

Прямоугольные символы основных затворов ANSI/IEEE приведены выше для сравнения с более знакомыми символами волн, чтобы мы могли расшифровать символику, связанную с контактами CLKIN H и CLK в предыдущем ANSI-обозначении SN74ALS166.

CLK и CLKINH подают логический элемент ИЛИ на ANSI-обозначение SN74ALS166. ИЛИ обозначается как => на прямоугольном символе вставки.

Длинный треугольник на выходе указывает на тактовый вход. Если бы был «пузырёк» со стрелкой, это подразумевало бы сдвиг на отрицательном фронте тактового сигнала (от «высокого» к «низкому»).

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

Длинная стрелка после C3/1, указывающая вправо, указывает на сдвиг вправо, то есть вниз по символу.

Регистр смещается по положительному фронту тактового сигнала (переход от «низкого к высокому).

Часть внутренней логики параллельного входа/последовательного выхода SN74ALS165, асинхронного регистра сдвига нагрузки воспроизведена из таблицы данных выше.

Полную схему смотрите, найдя страницу этого регистра на сайте производителя. До этого момента мы не рассматривали асинхронную загрузку данных.

В первую очередь загрузка осуществляется подачей соответствующих сигналов на входы «Установка» и «Сброс» триггеров.

Вверху схемы логические элементы И-НЕ питают контакты «Установка» триггера, а также каскадно переходят в нижние логические элементы И-НЕ, питающие контакты «Сброс» триггера.

Нижний вентиль И-НЕ инвертирует сигнал при переходе от вывода «Установка» к выводу «Сброс».

Во-первых, SH/LD' должен быть переведен в «низкий» уровень, чтобы активировать верхний и нижний вентили И-НЕ.

Если бы вместо этого SH/LD' был на «высоком» логическом уровне, инвертор подавал бы «низкий» логический уровень на все логические элементы И-НЕ и принудительно выдал бы «высокий» уровень, освобождая «активный низкий уровень» на выводах «Установка» и «Сброс» всех триггеров.

Тогда не было бы возможности загрузить данные в триггер.

Удерживая SH/LD' на «низком» уровне, мы можем подать, например, «Данные 1» на параллельный вход A, который инвертируется в ноль на выходе верхнего вентиля И-НЕ, устанавливая QA равным 1.

0 на контакте «Установка» подаётся на нижний логический элемент И-НЕ, где он инвертируется в 1, освобождая контакт «Сброс» QA.

Таким образом, данные A = 1 задают QA = 1. Поскольку ни для чего из этого не требуется тактовый сигнал, загрузка является асинхронной по отношению к системным часам.

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

Единственная разница в подаче данных 0 на параллельный вход A заключается в том, что они инвертируются в 1 из верхнего вентиля, освобождая «Установка».

Эта 1 в «Установка» инвертируется в 0 в нижних вентилях, переводя «Сброс» в «низкий» уровень, что сбрасывает QA = 0.

Рис. 10. ANSI-обозначение SN74ALS165.
Рис. 10. ANSI-обозначение SN74ALS165.

ANSI-обозначение для SN74ALS166 выше имеет два внутренних элемента управления C1 [ЗАГРУЗКА] и C2 (тактовый вход) из функции ИЛИ (CLKINH, CLK).

SRG8 говорит о 8-этапном переключателе передач. Стрелка после C2 указывает на смещение вправо или вниз. Вход SER является функцией тактового входа, на что указывает внутренняя метка 2D.

Параллельные входы данных от A, B, C до H являются функцией C1 [Загрузка], обозначенной внутренней меткой 1D.

C1 устанавливается, когда SH/LD' = 0 из-за инвертора (выглядящего на схеме как «полустрелка») на входе.

Сравните это с управлением параллельными входами данных с помощью тактового входа в предыдущем ANSI-обозначении для синхронного SN75ALS166. Обратите внимание на различия в метках данных ANSI.

Рис. 11. Контроль параллельных входов данных в соответствии с тактовым сигналом предыдущего ANSI-обозначения синхронного SN75ALS166.
Рис. 11. Контроль параллельных входов данных в соответствии с тактовым сигналом предыдущего ANSI-обозначения синхронного SN75ALS166.

На приведённом выше CD4014B M1 устанавливается, когда LD/SH' = 0. M2 устанавливается, когда LD/SH' = 1.

Тактовый вход C3/1 используются для параллельной загрузки данных в 2, 3D, когда M2 активен, как указано метками префикса 2 и 3.

Предполагается, что контакты P3—P7 имеют внутренний префикс 2, 3 как P2 и P8. В SER префикс 1, 3D означает, что M1 и тактовый вход C3 необходимы для ввода последовательных данных.

Сдвиг вправо происходит, когда M1 активен, как показано стрелкой 1 в C3/1.

CD4021B является аналогичной деталью, за исключением асинхронной параллельной загрузки данных, что подразумевается отсутствием каких-либо двух префиксов в метке данных 1D для контактов P1, P2 и P8.

Разумеется, префикс 2 в метке 2D на входе SER говорит о том, что данные тактируются на этот пин. Вставка вентиля ИЛИ показывает, что часы управляются LD/SH'.

Рис. 12. Часы управляются LD/SH'.
Рис. 12. Часы управляются LD/SH'.

Приведённая выше внутренняя метка SN74LS674 SRG 16 указывает на 16-битный сдвиговый регистр.

Вход MODE в секцию управления в верхней части символа помечен как 1,2 M3. Внутренний M3 является функцией входа MODE и G1 и G2, как указано цифрами 1 и 2, предшествующими M3.

Базовая метка G указывает на функцию И любых таких входов G. Вход R/W' имеет внутреннюю маркировку G1/2 EN.

Это разрешающий EN (управляемый G1 И G2) для устройств с тремя состояниями, используемых в других местах обозначения.

Заметим, что CS' (на вывод 1) является внутренним G2. Выбор микросхемы CS' также объединяется по вентилям И с входным сигналом CLK для получения внутреннего тактового сигнала C4.

«Пузырёк» внутри часовой стрелки указывает на то, что активность находится на отрицательном (от «высокого» к «низкому») фронте тактового сигнала.

Косая черта (/) – это разделитель, подразумевающий две функции тактового входа. Перед косой чертой C4 указывает на управление чем-либо с префиксом 4.

После косой черты 3' (стрелка) указывает на смещение. 3' в C4/3' означает смещение, когда M3 деактивирован (MODE = 0). Длинная стрелка указывает на сдвиг вправо (вниз).

Спускаясь ниже раздела управления к разделу данных, мы имеем внешние входы P0—P15, контакты (7-11, 13-23).

Префикс 3.4 внутренней метки 3.4D указывает на то, что M3 и тактовый вход C4 управляют загрузкой параллельных данных.

D означает данные. Предполагается, что эта метка применяется ко всем параллельным входам, хотя и не записывается явно.

Найдите метку 3',4D справа от этапа P0 (контакт 7). Дополненный – 3 указывает, что M3 = MODE = 0 вводит (сдвигает) SER/Q15 (вывод 5) за тактовое время (4 из 3', 4D), соответствующее тактовому сигналу C4.

Другими словами, при MODE = 0 мы сдвигаем данные в Q0 с последовательного входа (вывод 6). Все остальные этапы смещаются вправо (вниз) в соответствии с тактом.

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

Треугольник, указывающий вниз, указывает на устройство с тремя состояниями. Ранее мы заявляли, что три состояния управляются входом разрешения EN, что на самом деле является G1 И G2 из секции управления.

Если R/W = 0, тройное состояние отключено, и мы можем сместить данные в Q0 через SER (вывод 6), деталь, которую мы опустили выше. На самом деле нам нужно MODE = 0, R/W' = 0, CS' = 0.

Внутренняя логика SN74LS674 и таблица, обобщающая работу управляющих сигналов, доступны если найти деталь на сайте производителя.

Если R/W' = 1, три состояния разрешены, Q15 смещает SER/Q15 (вывод 6) и рециркулирует на ступень Q0 через правый провод к 3',4D.

Мы предположили, что CS' был низким, что дало нам тактовые входы C4/3' и G2 в EN, благодаря чему возможно тройственное состояние.

Практическое применение

Сдвиговый регистр с параллельным входом и последовательным выходом применяется для считывания данных в микропроцессор.

Вышеприведённая сигнализация дистанционно управляется клавиатурой. Блок сигнализации подает +5 В и заземляет дистанционную клавиатуру для её питания.

Сигнализация считывает сигналы от удалённой клавиатуры каждые несколько десятков миллисекунд, отправляя тактовый сдвиг на клавиатуру, которая возвращает последовательные данные, показывающие состояние клавиш через сдвиговый регистр с параллельным входом и выходом.

Таким образом, мы считываем девять клавиш-переключателей с четырьмя проводами. Сколько проводов потребовалось бы, если бы нам пришлось провести цепь для каждого из девяти ключей?

Рис. 14. Сигнализация, управляемая клавиатурой – схема со сдвиговым регистром.
Рис. 14. Сигнализация, управляемая клавиатурой – схема со сдвиговым регистром.

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

Некоторые недорогие микропроцессоры имеют только 6 контактов ввода/вывода (входа/выхода) в 8-контактном корпусе.

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

Это повышает надёжность автоматической системы. Обычно, если производителям удаётся уменьшить количество проводов в автомобиле, то утверждается, что они производят более надёжный продукт.

В любом случае требуется только три вывода микропроцессора для считывания 8-битных данных с переключателей на рисунке выше.

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

Параллельные входы данных сдвигового регистра подтягиваются до +5 В с помощью резистора на каждом входе.

Если все переключатели разомкнуты, все единицы будут загружены в сдвиговый регистр, когда микропроцессор перемещает линию LD/SH' с «низкого» уровня на «высокий», а затем обратно на «низкий» в ожидании сдвига.

Любые замыкания переключателя будут подавать логический 0 на соответствующие параллельные входы. Шаблон данных в P1—P7 будет загружаться параллельно с помощью LD/SH' = 1, сгенерированного программным обеспечением микропроцессора.

Микропроцессор генерирует импульсы сдвига и считывает бит данных для каждого из 8-ми битов.

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

При LD/SH' = 0 микропроцессор генерирует переход от 0 к 1 на линии тактового сдвига, затем считывает бит данных на линии последовательных данных. Это повторяется для всех 8 бит.

Линия SER сдвигового регистра может управляться другой идентичной схемой CD4021B, если необходимо считывать больше контактов переключателя.

В этом случае микропроцессор генерирует 16 импульсов сдвига. Скорее всего, им будет управлять что-то другое, совместимое с этим последовательным форматом данных, например аналого-цифровой преобразователь, температурный датчик, сканер клавиатуры, последовательное постоянное запоминающее устройство.

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

См.также

Внешние ссылки