Сдвигающие регистры. Регистры сдвига Использование сдвиговых регистров

jk-триггеры можно включить последовательно друг за другом для сохранения последовательности цифр. Такая конструкция, называемая регистром сдвига , показана на рис. 13.27. Свое название схема получила на осно-

Рис. 13.27. 4-разрядный регистр сдвига, образованный последовательно включенными JK- триггерами.

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

Этот регистр действует по принципу первым вошел - первым вышел (First-In First-Out, FIFO).

Рассмотрим работу регистра сдвига, изображенного на рис. 13.27. Сначала на шину сброса подается логическая 1, а затем значение сигнала на ней возвращается в 0. Теперь предположим, что сигнал на входе данных первоначально равен 1 и что последовательность тактовых импульсов поступает на тактовый вход. В этом случае триггер FF1 имеет на входе / высокий уровень, а на входе ^низкий уровень, так что после первого тактового импульса на выходе Q устанавливается высокий уровень. Предположим, что тем временем входной сигнал вернулся к значению 0 и остается таким. Во время действия второго тактового импульса высокий уровень на входе / триггера FF2 передается на его выход, и Q 2 принимает значение логической 1. В это же время на входе / триггера FF1 действует логический 0, так что вторым тактовым импульсом на выходе устанавливается низкий уровень; если сигнал на входе данных остается равным 0, то на выходе будет оставаться низкий уровень с каждым тактовым импульсом. Однако бит логической 1 каждым тактовым импульсом передвигается дальше на один разряд, так что после четырех импульсов он достигнет выхода Q 4 . Всего теперь запомнено 4 бита входных данных. Последующие тактовые импульсы приведут к потере этих данных, а более новые данные будут сохранены.

В регистре сдвига, показанном на рис. 13.27, имеется возможность, если требуется, наблюдать запомненные данные в параллельном виде, обеспечив доступ к выходам Q v Q 2 , Q 3 и Q 4 . Такая схема известна как регистр с последовательным входом и параллельным выходом: данные должны вводиться последовательно через единственный вход, после чего они становятся доступны в параллельном виде на выходах регистра. Такое преобразование последовательного представления данных в параллельное является очень распространенной операцией, применяемой, например, для преобразования считанных с диска компьютера битов программы в параллельный код для ввода в основную память.

Если каждый триггер снабдить отдельным входом установки в дополнение к общему входу сброса, то данные могут вводиться параллельно через эти входы. «Загруженные» таким образом данные можно, подавая тактовые импульсы, получить на выходе Q 4 в последовательном виде. Такой регистр служит преобразователем параллельного кода в последовательный и часто применяется для преобразования выводимых из микропроцессора данных, представленных сигналами, появляющимися одновременно на большом числе выходов (например, на 16 выходах), в последовательный код для передачи по единственной паре проводов в сеть или к модему. Популярной конструкцией, которой можно воспользоваться для преобразования данных из параллельного вида в последовательный и обратно, является универсальный асинхронный приемопередатчик; он содержит в одной интегральной схеме необходимые регистры Сдвига, схему управления и формирователи для работы на линию.

Если в схеме, изображенной на рис. 13.27, выход Q 4 соединить с входом данных, то данные, которые можно вводить в параллельном виде через входы установки, никогда не смогут покинуть регистр, а будут просто циркулировать в нем. Такая схема называется регистром с циклическим переносом или кольцевым счетчиком. Используя 10 триггеров, соединенных в кольцевой счетчик и пронумерованных от 0 до 9, можно получить десятичный счетчик. Первоначально в триггере с номером 0 устанавливается состояние с высоким уровнем, а остальные сбрасываются в нулевое состояние. Затем импульсы, подлежащие счету, подаются на тактовый вход, так что с приходом каждого входного импульса логическая 1 передвигается из одного триггера в другой. После девяти импульсов в триггер с номером 9 запишется логическая 1, а следующий импульс восстановит начальное состояние. Соединение выхода триггера с номером 9 со входом другого кольцевого счетчика позволит записывать в него десятки, а еще один кольцевой счетчик сможет записывать сотни. Несмотря на очевидное изящество этой схемы, почти всегда более удобно считать в двоичном виде, а затем преобразовывать выход двоичного счетчика в десятичный вид.

Другим применением кольцевого счетчика является замена им распределителя в электронной системе зажигания автомобиля. Вместо механического кулачка, размыкающего и замыкающего контактные точки для создания искры зажигания, с помощью оптического или магнитного датчика, расположенного на маховике двигателя, формируются тактовые импульсы. Здесь используется сдвиг логической 1 по кругу в кольцевом счетчике, который имеет по одному разряду на каждый цилиндр двигателя. Фазу тактового импульса можно тщательно выставить так, чтобы логическая 1 появлялась на каждом каскаде точно в нужное время для зажигания смеси. Коррекция момента зажигания устанавливается, таким образом, без труда, и, более того, однажды установленный, он никогда не будет изменяться, поскольку в электронном распределителе отсутствует механический износ.

Схему регистра сдвига, приведенную на рис. 13.27, можно применять в качестве основной для экспериментов со всеми типами регистров сдвига и кольцевыми счетчиками. В качестве /^-триггера рекомендуется ИС 74LS76: каждая микросхема содержит два триггера, срабатывающих по отрицательному фронту с отдельными входами установки и сброса. Цоколевка этой схемы дана в приложении 4.

1. Умножение на 2 – это сдвиг двоичного числа влево на 1 разряд.

Деление на 2 – это сдвиг числа вправо на 1 разряд.

Каждый последующий сдвиг числа – это дальнейшее умножение или деление на степень двойки.

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

Рис. 3.43. Схема преобразования кода параллельный\последовательный

S – data serial - последовательный вход данных

P/ S – вход управления режимом ввода (параллельный/последовательный)

Для осуществления преобразования регистр RG1 переводят в режим параллельного приема информации, а RG2 последовательного приёма, воздействуя на входы управления P/S соответствующим логическим уровнем сигнала. Параллельный код через входы D 1 - D 4 загружается в передающий регистр RG1, появляясь в параллельном виде на его выходах Q 1 – Q 4 . После этого оба регистра переводят в режим сдвига и на тактовый вход «с» подают серию из четырех импульсов. Передаваемый код вытесняется из передающего регистра в линию связи начиная со старших разрядов числа. Регистр–приёмник принимает и сдвигает каждый бит информации синхронно с передающим регистром. Таким образом, с окончанием серии из четырех тактовых импульсов, передаваемый код будет размещен в принимающем регистре и может быть прочитан из него в параллельном виде, т. к. появится на его выходах Q 1 – Q 4 . Это синхронный способ передачи кода.

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

Для выполнения функции как приемника так и передатчика при обмене в стандартном последовательном формате выпускаются специальные микросхемы КР580ВВ51 (ввод-вывод) или КР581ВА1.

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

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

Недостаток – большое время обращения

Достоинства – малые аппаратурные затраты и низкая стоимость.

Например 144ИР3 имеет ёмкость 64 бит.

4. Кольцевые распределители

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

Применяют для управления шаговыми двигателями, обслуживания матриц ПЗС и др. многоразрядных объектов (рис. 3.44).

Рис. 3.44. Кольцевой распределитель

Схема предусматривает внесение единицы через элемент ИЛИ на вход последовательного приема информации DS. Последующие импульсы сдвига с частотой следования f вх перемещают эту единицу от младших разрядов к старшим, выделяя её на выходах Q 1 – Q 4 (рис. 3.45).

Рис. 3.45 Диаграмма кольцевого распределителя

Очевидно, что частота выходных импульсов на каждом из выходов окажется в четыре раза меньше входной, а в общем виде это соотношение зависит от числа разрядов сдвигового регистра – n. f вых = f вх / n

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

Недостаток схемы – после сбоя работоспособность можно восстановить только путем внесения новой единицы.

От этого недостатка свободна схема с самовосстановлением после сбоя (рис. 3.46).

Рис. 3.46. Кольцевой распределитель с самовосстановлением после сбоя

Очевидно, что при смещении единицы в четвертый триггер регистра будет выполняться условие: Q̅ 1 ·Q̅ 2 ·Q̅ 3 = 1. Эта единица по цепи обратной связи поступит на вход DS, после чего цикл повторится.

5. Счетчик импульсов

Кольцевой распределитель можно рассматривать как счетчик-делитель с коэффициентом счета равным числу триггеров. Соединив последовательно два регистра по четыре разряда можно построить делитель на 16 (рис. 3.47).

Рис. 3.47 Счетчик-делитель на 16

Явным недостатком такой конструкции является малая ёмкость. Действительно, затратив те же 8 триггеров, можно собрать двоичный счетчик с коэффициентом деления 2 8 = 256.

6. Кольцевой распределитель с перекрестной связью

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

В связи с названием направления сдвига в сдвиговых регистрах часто возникает путаница. Сдвиг бывает двух видов: вправо (основной режим, который есть у всех сдвиговых регистров ) и влево (этот режим есть только у некоторых, реверсивных сдвиговых регистров ). Названия эти отражают внутреннюю структуру регистров сдвига (рис. 8.14) и перезапись сигналов последовательно по цепочке триггеров. При этом триггеры, вполне естественно, нумеруются слева направо, например, от 0 до 7 (или от 1 до 8) для 8-разрядных регистров. В результате сдвиг информации регистром вправо представляет собой сдвиг в сторону разрядов, имеющих большие номера, а сдвиг информации регистром влево - это сдвиг в сторону разрядов, имеющих меньшие номера.

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


Рис. 8.14.

В стандартные серии цифровых микросхем входит несколько типов сдвиговых регистров , отличающихся возможными режимами работы, режимами записи, чтения и сдвига, а также типом выходных каскадов (2С или 3С). Большинство регистров сдвига имеет восемь разрядов. На рис. 8.15 представлены для примера четыре типа микросхем регистров сдвига .

Регистр ИР8 - наиболее простой из регистров сдвига . Он представляет собой 8-разрядную линию задержки, то есть имеет только один информационный вход, на который подается последовательная сдвигаемая информация (точнее, два входа, объединенных по функции 2И), и восемь параллельных выходов. Сдвиг в сторону выходов со старшими номерами осуществляется по переднему фронту тактового сигнала С. Имеется также вход сброса –R, по нулевому сигналу на котором все выходы регистра сбрасываются в нуль. Таблица истинности регистра ИР8 приведена в табл. 8.5 .


Рис. 8.15. Таблица 8.5. Таблица истинности регистра сдвига ИР8
Входы Выходы
-R C D1 D2 Q0 Q1 Q7
0 X X X 0 0 0
1 0 X X Не меняются
1 1 Х Х Не меняются
1 0 1 1 1 1 Q0 Q6
1 0 1 0 Х 0 Q0 Q6
1 0 1 Х 0 0 Q0 Q6

Регистр ИР9 выполняет функцию, обратную регистру ИР8. Если ИР8 преобразует входную последовательную информацию в выходную параллельную, то регистр ИР9 преобразует входную параллельную информацию в выходную последовательную. Однако суть сдвига не меняется, просто в ИР9 все внутренние триггеры имеют выведенные параллельные входы, и только один, последний триггер имеет выход (причем как прямой , так и инверсный). Запись входного кода в регистр производится по нулевому сигналу на входе -WR. Сдвиг осуществляется по положительному фронту на одном из двух тактовых входов С1 и С2, объединенных

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

В однотактных регистрах со сдвигом на один разряд вправо (рисунок 7) слово сдвигается при поступлении сигнала синхронизации. Вход и выход последовательные (DSR - Data Serial Right). На рисунке 8 показана схема регистра со сдвигом влево (вход данных DSL - Data Serial Left), а на рисунке 9 иллюстрируется принцип построения реверсивного регистра, в котором имеются связи триггеров с обоими соседними разрядами, но соответст-вующими сигналами разрешается работа только одних из этих связей (команды «влево" и «вправо" одновременно не подаются).

Рисунок 7. Схема право-сдвигающего регистра


Рисунок 8. Схема лево-сдвигающего регистра


Рисунок 9. Схема реверсивного регистра

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

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

Многотактные сдвигающие регистры управляются несколькими синхропоследовательностями. Из их числа наиболее известны двухтактные с основным и дополнительным регистрами, построенными на простых одноступенчатых триггерах, управляемых уровнем. По такту С1 содержимое основного регистра переписывается в дополнительный, а по такту С2 возвращается в основной, но уже в соседние разряды, что соответствует сдвигу слова. По затратам оборудования и быстродействию этот вариант близок к однотактному регистру с двухступенчатыми триггерами.

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

Сдвиг влево

Сдвиг вправо

Ввод информации в регистр может выполнятся различными способами, однако наиболее часто используют параллельный или последовательный ввод, при которых ввод двоичного числа осуществляется или одновременно во все разряды регистра, или последовательно во времени по отдельным разрядам. В счётчиках импульсов находят применение сдвигающие регистры с последовательным вводом и выводом информации и со сдвигом вправо. На рисунке 10 a приведена схема четырёхразрядного регистра сдвига, выполненного на RS-триггерах. В этой схеме каждый выход Q триггера соединён со входом S последующего разряда, а каждый выход - с входом R. Тактовые входы всех триггеров соединены вместе, и поступление сигнала синхронизации осуществляется одним общим импульсом через логический элемент И-НЕ (DD7). Состояние первого триггера определяется входными сигналами на входах Х1, Х2 логического элемента И-НЕ (DD5). На вход Х1 подаётся текущая информация, а на вход Х2 сигнал разрешения её передачи. Логический элемент НЕ используется (DD6) используется для инвертирования входного сигнала, подаваемого на вход S.

На рисунке 10 б приведены временные диаграммы выходных сигналов триггеров и состояния регистров при записи в первый разряд единичного сигнала. Если при поступлении первого тактового импульса на входах Х1 и Х2 установлены сигналы Х1 = Х2 = 1, которые затем снимаются к приходу второго тактового импульса, то в результате в первый триггер будет записан сигнал Q1 = 1. С приходом второго тактового импульса в первый триггер будет записан сигнал Q1 = 0, а на выходе второго триггера появится сигнал Q2 = 1, который перед этим был на выходе второго триггера. При поступлении последующих тактовых импульсов единичный сигнал перемещается последовательно в третий и четвёртый триггеры, после чего все триггеры устанавливаются в нулевое состояние.


Рисунок 10. Схема четырёхфазного регистра сдвига, временные диаграммы его сигналов и состояния регистров при записи в первый разряд единичного сигнала

Сдвиговые регистры также можно реализовать на D-триггерах ил JK-триггерах. Для всех регистров сдвига характерны следующие положения:

  • 1) необходима предварительная установка исходного состояния и ввод единицы в первый триггер
  • 2) для регистра из n триггеров после поступления n входных тактовых импульсов первоначально введённая единица выводится, вследствие чего прямые выходы всех регистров оказываются в нулевом состоянии.

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

Рисунок 11. Реализация регистра сдвига на однотактных RS-триггерах

Последовательный регистр сдвига обладает двумя недостатками: он позволяет вводить только по одному биту информации на каждом тактовом импульсе и, кроме того, каждый раз при сдвиге информации в регистре вправо теряется крайний правый информационный бит. На рисунке 12 показана система, которая позволяет осуществлять одновременную параллельную загрузку 4 бит информации.

Рисунок 12. Структурная схема 4-разрядного параллельного регистра

Входы 1, 2, 3, 4 в этом устройстве являются информационными входами. Эту систему можно снабдить еще одной полезной характеристикой - возможностью кольцевого перемещения информации, когда данные с выхода устройства возвращаются на его вход и не теряются.


Рисунок 13. Логическая схема четырёхразрядного параллельного кольцевого регистра

Схема 4-разрядного параллельного кольцевого регистра сдвига показана на рисунке 13. В этом регистре сдвига используются четыре JK-триггера. Благодаря цепи обратной связи введенная в регистр информация, которая обычно теряется на выходе четвёртого триггера, будет циркулировать по регистру сдвига. Сигналом очистки регистра (установки его выходов в состояние 0000) является уровень логического 0 на входе CLR. Входы параллельной загрузки данных 1, 2, 3 и 4 связаны со входами предварительной установки триггеров (PS), что позволяет устанавливать уровень логической 1 на любом выходе (1, 2, 3, 4). Если на один из этих входов даже кратковременно подать логический 0, то на соответствующем выходе будет установлена логическая 1. Подача тактовых импульсов на входы C всех JK-триггеров приводит к сдвигу информации в регистре вправо. Из четвёртого триггера данные передаются в первый триггер (кольцевое перемещение информации).

№ строки

№ тактового импульса

Принцип работы параллельного регистра сдвига описан в таблице 1. При включении питания на выходах регистра может установиться любая двоичная комбинация, такая, например, как в строке 1 таблицы. Подача логического 0 на входы CLR триггеров инициирует очистку регистра (строка 2). Далее (строка 3) осуществляется загрузка в регистр двоичной комбинации 0100. Последовательные тактовые импульсы вызывают сдвиг введенной информации вправо (строки 4 - 8). В строках 5 и 6: единица из крайнего правого триггера (четвёртого) переносится в крайний левый триггер (первый). В данном случае можно говорить о кольцевом перемещении единицы в регистре. Далее (строка 9) вновь инициируется очистка регистра с помощью входа CLR. Загружается новая двоичная комбинация 0110 (строка 10). Подача 5 тактовых импульсов (строки 11-15) приводит к кольцевому сдвигу информации на 5 позиций вправо. Для возвращения данных в исходное состояние требуется 4 тактовых импульса.

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

Рисунок 14. Трехтактный регистр сдвига на RS-триггерах

Огород