Сдвиговый регистр принцип работы

Сдвиговый регистр принцип работы

Регистры сдвига или сдвиговые регистры (англ. shift register ) представляют собой, как уже отмечалось, последовательно соединенную цепочку триггеров. Основной режим их работы — это сдвиг разрядов кода, записанного в эти триггеры, То есть по тактовому сигналу содержимое каждого предыдущего триггера переписывается в следующий по порядку в цепочке триггер . Код, хранящийся в регистре, с каждым тактом сдвигается на один разряд в сторону старших разрядов или в сторону младших разрядов, что и дало название регистрам данного типа.

В связи с названием направления сдвига в сдвиговых регистрах часто возникает путаница. Сдвиг бывает двух видов: вправо (основной режим, который есть у всех сдвиговых регистров ) и влево (этот режим есть только у некоторых, реверсивных сдвиговых регистров ). Названия эти отражают внутреннюю структуру регистров сдвига (рис. 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
0XXX00Сдвиговый регистр принцип работы0
10XXНе меняются
11ХХНе меняются
10 to1111Q0Сдвиговый регистр принцип работыQ6
10 to10Х0Q0Сдвиговый регистр принцип работыQ6
10 to1Х00Q0Сдвиговый регистр принцип работыQ6

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

Лекция 111. Сдвиговый регистр

Таблица 8.6. Таблица истинности регистра сдвига ИР9Входы Функция -WR C1 C2
0XXПараллельная запись
11ХХранение
1Х1Хранение
100 1Сдвиг
10 10Сдвиг

Что такое регистр?

Регистр это устройство, выполненное на триггерах для выполнения ряда действий с двоичными числами. Для тех, кто не знает, что такое триггер, рекомендуем познакомиться с простейшим RS-триггером.

Наиболее простая функция регистров — это запоминание числа и его длительное хранение. Эти устройства так и называются – регистры хранения. Вот простейший пример.

На входы D0 – D2 подаётся число, которое необходимо сохранить. Как только на входе С появляется импульс синхронизации, число записывается в триггер, изменяя их состояние. На рисунке показан трёхразрядный регистр хранения. При подаче на входы числа 1112 оно же появится на прямых выходах триггеров (Q0 — Q2). На инверсных выходах (Q0 — Q2) будет, естественно 0002. Сигналом R (Reset) или сброс, триггеры устанавливаются в нулевое состояние.

Обычно используются регистры, состоящие из 4, 8, или 16 триггеров. Изображение четырёхразрядного регистра на принципиальных схемах может быть таким.

На рисунке не показаны инверсные выхода триггеров и сигнал R. Регистры всегда обозначаются латинскими буквами RG. Если регистр сдвигающий, то под обозначением рисуется стрелка направленная влево, вправо или двойная.

Сдвигающие регистры или регистры сдвига.

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

Кроме того сдвигающие регистры являются основой (АЛУ) арифметико-логического устройства, так как при сдвиге записанного в регистр двоичного числа на один разряд влево производится умножение числа на два, а при сдвиге числа на один разряд вправо число делится на два. Поэтому наибольшее распространение получили реверсивные или двунаправленные регистры.

Рассмотрим четырёхразрядный регистр сдвига, преобразующий последовательный двоичный код в параллельный. Применение последовательного кода оправдано тем, что по одной линии можно передавать огромные массивы информации. Таким примером может служить универсальная последовательная шина — USB порт любого устройства. Число триггеров в данном регистре может быть любым. Достаточно соединить прямой выход Q3 с D входом следующего триггера и так далее до достижения необходимой разрядности.

Регистр работает следующим образом. Первый информационный бит поступает на вход D0. Одновременно с этим битом приходит тактовый синхроимпульс на вход С. Входы С всех триггеров входящих в регистр, объединены между собой. С приходом первого тактового импульса уровень, находящийся на входе D0 записывается в первый триггер и с выхода Q0 приходит на вход следующего триггера, но записи во второй триггер не происходит, так как синхроимпульс уже закончился.

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

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

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

Рассмотрим, как работает четырёх разрядный универсальный регистр сдвига К155ИР1 (аналог — SN7495N). Вот его внутреннее устройство.

Регистр содержит четыре D-триггера, которые соединены между собой с помощью дополнительных логических элементов И – ИЛИ, которые позволяют реализовать различные функции. На схеме:

  • V2 – вход управления. С его помощью выбирается режим работы регистра.
  • Q1 – Q4 выходы триггеров с которых снимается параллельный код.
  • V1 – вход для подачи последовательного кода.
  • C1, C2 – тактовые синхроимпульсы.
  • D1 – D4 – входы для записи параллельного кода.

Алгоритм работы регистра следующий. Если на вход V2 подать низкий потенциал, тактовые импульсы на C1, а на вход V1 подавать информационные биты, то регистр осуществляет сдвиг вправо. После приёма четырёх разрядов на выходах триггеров Q1 – Q4 мы получаем параллельный код. Таким образом осуществляется преобразование последовательного кода в параллельный.

Для обратного преобразования параллельный код записывается по входам D1 – D4, с подачей на вход V2 высокого потенциала и тактовых импульсов на вход С2. Затем подавая на вход V2 низкий потенциал, а тактовые импульсы на вход С1 мы сдвигаем записанный код, а с выхода последнего триггера снимается последовательный код.

По своей структуре это один из самых простых регистров сдвига.

Регистры сдвига в цифровой технике могут послужить основой, на которой собираются узлы с интересными свойствами. Это, например, кольцевые счётчики, которые называются счётчики Джонсона. Такой счётчик имеет количество состояний вдвое большее, чем число составляющих его триггеров. Например, если кольцевой счётчик состоит из трёх триггеров, то он будет иметь шесть устойчивых состояний. На вход счётчика ничего не подаётся кроме синхроимпульсов. В первоначальном состоянии все триггеры «сброшены», то есть на прямых выходах триггеров логические нули, а вот на входе D первого триггера с инверсного выхода третьего триггера находится логическая единица. Начнём подавать тактовые импульсы и процесс пошёл.

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

N Q2 Q1 Q0
1001
2011
3111
4110
5100
6000

Теперь вы знаете, что такое регистр и как он может использоваться на практике. Основа любого регистра — это триггер. Число триггеров в регистре определяет его разрядность. Те, кто увлекается микроконтроллерами знает, что важнейший элемент любого микроконтроллера, будь то PIC, AVR, STM или MSP, это регистр.

Сдвиговый регистр

Иногда требуется ОЧЕНЬ много выходных портов. Особенно если хотим сделать что нибудь на светодиодах. Гирлянду какую-нибудь навороченную. Что делать? Брать под это дело ATMega128 с ее полусотней выводов? Избыточно — для ламеров. Ставить i 2 с расширитель портов? Дорого. Для мажоров. Тут на помощь из вековых глубин выплывает старая добрая дискретная логика. На этот раз нас выручит грошовый сдвиговый регистр. Возьму, для примера, 74HC164 он же, для любителей совковых трешевых микросхем в неубиваемом каменном корпусе, наш КM555ИР8.

У него есть 8 выходов и четыре входа. R-сброс, С-тактовый, А1 и А2 вход. На самом деле, внутри они заведены через логический элемент 2И-НЕ и идут на D триггеры. D — это такой тип триггера, который по тактовому импульсу схватывает и отправляет на выход то, что у него на входе. Как видишь, тут они цепью стоят ,передавая бит от одного к другому и нет принципиальной разницы сколько их тут будет, восемь штук или восемь миллиардов. Но чем больше, тем дольше по этой эстафете гнать данные до конца. Поэтому мы смело можем эти регистры соединять последовательно.
Получается вот такая схема:

От МК, как видно, требуется только четыре выхода. Одним (RESET) мы сбрасываем состояние регистра. Из второго (Data) побитно вылазит байтик, а тактовый CLC обеспечивает продвижение битов по регистру. Самих регистров тут три. Они сцеплены паровозом. Когда переполняется первый, то биты из него вылазят во второй, потом в третий. Итого, 24 вывода.
Катоды диодов подключены все вместе через транзистор и как только будет слово мы подаем сигнал Ready и зажигаем всю эту ботву.

Наполнять регистр просто:
1) Поднимаем и держим RESET в 1
2) Выдаем первый (старший) бит на Data.
3) Опускаем в 0 и поднимаем в 1 тактовый выход. На восходящем фронте происходит занос в регистр и сдвиг всей цепочки на один шаг.
4) Повторить со второго пункта пока все биты не выдадим.

А для сброса достаточно уронить Reset в ноль на пару микросекунд.
Все просто 🙂

З.Ы.
Кружок на входе регистра означает, что вход инверсный. Т.е. подал ноль — сработало
Треугольник на входе показывает по какому фронту произойдет срабатывание. Запомнить просто: _/ _ — это, типа, импульс. А треугольник, как стрелочка, указывает на нужный фронт. ->_/ _ передний (восходящий фронт) и _/ _

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

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

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

16-битный регистр сдвига влево

В соответствии с принципом правого сдвигового регистра код конструкции verilog HDL приведен ниже:

1. `timescale 1ns/1ps 2. module register_left_tb; 3. reg clk; 4. reg [15:0] din; 5. wire [15:0] dout; 6. 7. always 8. #10 clk = ~clk; 9. 10. initial 11. begin 12. clk = 1’b0; 13. din = 16’b0000_0000_0000_0000; 14. #10 din = 16’b0000_0000_0000_0011; 15. #20 din = 16’b0000_0000_0011_0000; 16. #100; 17. end 18. 19. register_left U1(.clk(clk), .din(din), .dout(dout)); 20. endmodule

Диаграмма формы сигнала, полученная путем моделирования в Modelsim, выглядит следующим образом:

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

Далее описывается регистр последовательного ввода и параллельного выхода с шириной в битах 8. Реализованные функции: последовательный ввод 1-битных данных и параллельный вывод 8-битных данных. Когда наступает передний фронт тактовых импульсов, 1-битные входные данные din входят в младший бит qtemp, а оставшиеся биты qtemp по очереди сдвигаются на 1 бит влево.

Verilog HDL дизайн-код:

1. module left_shifter_reg_tb; 2. reg din; 3. reg clk; 4. wire [7:0] dout; 5. 6. always 7. #10 clk = ~clk; 8. 9. initial 10. begin 11. clk = 1’b0; 12. #100 din = 1’b1; 13. #100 din = 1’b1; 14. #100 din = 1’b0; 15. end 16. 17. left_shifter_reg U1(.din(din), .clk(clk), .dout(dout)); 18. endmodule

Диаграмма формы волны, полученная моделированием в Modelsim:

Сдвиговый регистр 74HC595

Сдвиговый регистр — это набор последовательно соединённых триггеров (обычно их 8 штук). В отличии от стандартных регистров, сдвиговые поддерживают функцию сдвига вправо и влево. (т. е. переписывание данных с каждого предыдущего триггера на следующий по счёту). Функционал и назначение у сдвиговых регистров довольно велик. Сегодня мы познакомим одного из них с Arduino (Отличный способ множить выходы у Arduino: занимаем 3, получаем 8). Наверное самая популярная микросхема, представляющая собой такой регистр — это 74HC595. — Работает на интерфейсе SPI: ноги DS, ST_CP, SH_CP — это шины управления. Соответственно: шина данных(MOSI), защёлка(SS) и тактовая линия(SCK). Подключаем на любые 3 контакта Arduino (библиотека SPI в коде не будет задействована). У меня это 12, 10, 13 выходы Arduino (стандарт). — Ноги Q0, Q1, . Q7 — это выходы регистра (разряды). Для того, чтобы следить за состоянием каждого из них, повесим на каждый вывод по светодиоду (с последовательно соединённым резистором. Номинал от 150 до 330 Ом) — VCC и GND — это питание. Подключаем к +5v и GND. — выход Q7` не трогаем (предназначен для последовательного соединения таких регистров) — MR — это сброс. Подключаем к +5v (сброс не активен). — ну и OE притягиваем к земле (подключаем к контакту GND). Получается вот, такая схема: На BreadBoard можно разместить вот, так: Теперь к коду: — как говорилось ранее, библиотека SPI использоваться не будет. Есть удобная функция shiftOut(). для начала именуем наши пины (тактовая линия — clock, данные — data, защёлка — latch):

#define clock 13 #define data 12 #define latch 10

потом в void setup() обозначаем их как выходы и сразу ставим защёлке высокий уровень, чтобы регистр не принимал сигналов:

void setup()

теперь давайте попробуем что-нибудь отправить на регистр: — для начала ставим LOW на защёлку (начинаем передачу данных. Теперь регистр принимает сигналы с Arduino).

digitalWrite(latch, LOW);

— потом отправляем данные (т. е. отправляем байт в цифровом или двоичном виде. В двоичном проще, т. к. каждый из 8 битов отвечает за свой разряд в регистре. Проще сориентироваться глазами): Для начала отправим байт 0b10000000; (должен будет загореться первый светодиод):

shiftOut(data, clock, LSBFIRST,0b10000000);
— и в конце выставляем HIGH на защёлку (заканчиваем передавать данные).
digitalWrite(latch, HIGH);
В итоге весь наш код:
#define clock 13 #define data 12 #define latch 10 void setup() < pinMode(clock, OUTPUT); pinMode(data, OUTPUT); pinMode(latch, OUTPUT); digitalWrite(latch, HIGH); >void loop()

Теперь вгружаем в ардуину. Результат должен быть таким (зажёгся первый светодиод): (если у вас зажёгся не первый, а последний светодиод, то в функции shiftOut поменяйте LSBFIRST на MSBFIRST и всё станет на свои места). Итак, получилось! Предлагаю создать функцию для того, чтобы каждый раз не писать эти 3 СТРОЧКИ: Я назову её: sendbyte;

void sendbyte(byte value)

Эта функция отправляет регистру состояние всех разрядов сразу. Это пригодится для управления семисегментом (например). Но, чтобы использовать регистр как расширитель портов, нужно управлять каждым разрядом по-отдельности (аналогично функции digitalWrite()): — Мы можем отправлять регистру только полный байты (8 бит — 0b00000000). Если отправить не 8, а 5 бит (например: 0b00000000), то регистр будет ждать недостающие 3 бита. Значит, что когда мы хотим изменить состояние одного разряда регистра (включить его, или выключить) мы должны, по сути, послать ранее отправленный байт, с изменением на один бит. (P. S.: Сейчас долгое и нудное объяснение (новичкам), кому не интересно, спуститесь чуть ниже :); — Итак, сначала создаём, так называемую (мною), базу данных, в которой будет храниться состояние каждого разряда (включен(HIGH) или выключен(LOW)). тип: boolean:

boolean states[8];

Только что у нас появился массив переменных; Каждая переменная в данном массиве обозначает свой разряд (в нулевой (по счёту) будет храниться состояние 1 разряда, второй — 3-го, и т. д.) — Теперь напишем функцию (я назову её: sendpin). Она будет принимать 2 значения: номер разряда, и уровень, который нам надо этому разряду приписать: высокий(HIGH) или низкий(LOW).

void sendpin(int pin, boolean state) < pin—; states[pin]=state; byte value = 0; byte add = 1; for(int i=0; idigitalWrite(latch, LOW); shiftOut(data, clock, LSBFIRST, value); digitalWrite(latch, HIGH); >

— из-за того, что счёт начинается с нуля, нам придётся называть первый пин нулевым. Чтобы это исправить (мы будем писать как есть(первый, значит первый), а Arduino будет сама отбавлять один), Я написал:

— Затем отмечаем изменения в базе данных:
states[pin]=state;

Теперь надо сформировать из 8 битов байт и отправить его на регистр. — для начала создаём переменные: value — тот байт, который будем отправлять. (по умолчанию его нужно сделать нулём):

byte value = 0;

add — это переменная, которая будет хранить в себе байт текущего разряда. для первого разряда это байт 1 (0b10000000);

byte add = 1;

теперь нам нужно прокрутить в базе данных все 8 переменных и сформировать байт (делать это будем с помощью цикла for():

for(int i=0; i

Итак, каждый раз мы проверяем очередной разряд в базе данных. Если он должен иметь высокий уровень, то мы прибавляем к value add и переходим на следующий разряд в цепочке (как бы сдвигаемся на разряд выше (левее). Т. е., в двоичном коде всё просто: было так: 0b01000000; сдвинули единичку влево и получилось так: 0b10000000. А вот в цифровом виде всё по-другому. Сдвиг влево аналогичен умножению на 2 (а вправо, кстати, — делению на 2)). Получается примерно так:

if(states[i]==HIGH) value+=add; add*=2;
Теперь остаётся только послать value на регистр:
digitalWrite(latch, LOW); shiftOut(data, clock, LSBFIRST, value); digitalWrite(latch, HIGH);

В принципе, если понять, то всё очень просто. Итак, давайте попробуем включить 2, 4, 6, и 8 разряды отдельно (4 раза напишем в цикле нашу функцию):

sendpin(2, HIGH); sendpin(4, HIGH); sendpin(6, HIGH); sendpin(8, HIGH);
И кстати, в setup-e нужно очистить регистр (послать 0). Можно даже такую функцию создать:
void cleanreg()

В общем результат таков:

Реализация регистра сдвига на RS-триггерах

Регистр сдвига на двухтактных RS-триггерах. В регистре сдвига на RS-триггерах (рис. 16.17, а) триггеры по-прежнему двухтактные. Этот

Регистр сдвига на RS-триггерах

Рис. 16.17. Регистр сдвига на RS-триггерах: а) двухтактных, б) однотактных

регистр отличается от регистра сдвига на D-триггерах тем, что на входы DS-триггеров принимается не только прямой, но и инверсный код (па- рафазные прием и передача).

Достоинство этой схемы в сравнении с предыдущей (рис. 16.16) состоит в следующем. В вентильной схемотехнике DS-триггер обладает меньшей задержкой и меньшим количеством вентилей, а, значит, мощностью. Следовательно, регистр сдвига на /^S-триггерах по этим параметрам лучше, нежели регистр сдвига на D-триггерах.

Возможна реализация регистра сдвига на однотактных ^-триггерах.

Регистр сдвига на однотактных KS-триггерах. При использовании однотактных /^S-триггеров сдвигающий регистр строится с использованием вспомогательного регистра (рис. 16.17, б). В отличие от регистра сдвига на двухтактных /^S-триггерах здесь используется не один, а два управляющих СИ (С! и С2).

Сначала, при Сх = 1 (С2 = 0), происходит запись информации из i-x разрядов основного регистра в i-e разряды вспомогательного. Затем, при С2 = 1 (Cj = 0), информация из i-x разрядов вспомогательного регистра записывается со сдвигом в (/ + 1)-е разряды основного регистра.

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

Трехтактный регистр. За уменьшение наполовину количества триггеров вспомогательного регистра приходится «платить» быстродействием. Сдвиг на один разряд происходит за три такта. Общий алгоритм работы трехтактного регистра представлен на рисунке 16.18.

Упрощенная схема передачи информации в трехтактном регистре

Рис. 16.18. Упрощенная схема передачи информации в трехтактном регистре

Схема трехтактного регистра

Рис. 16.19. Схема трехтактного регистра

Стрелками показано, каким образом происходит перемещение информации в каждом такте.

Схема трехтактного регистра изображена на рисунке 16.19.

Реверсивный регистр

Реверсивные регистры — это регистры, которые могут осуществлять сдвиг как влево, так и вправо (рис. 16.20).

Перед каждым разрядом (в том числе и перед нулевым) стоит схема управления.

Схема реверсивного регистра

Рис. 16.20. Схема реверсивного регистра

В зависимости от управляющего сигнала X /-я схема управления пропускает информацию либо (/ — 1)-го триггера, либо (/ + 1)-го триггера. Регистры с последовательным вводом и выводом информации осуществляют задержку передачи информации на т тактов.

Сдвиг числа влево или вправо на один разряд соответствует его умножению или делению на два. Поэтому регистры сдвига используют для построения умножителей и делителей.

Сдвиговые регистры — многофункциональные устройства, на них можно строить, например кольцевые счетчики.

Задание. Спроектируйте схему управления /-го разряда реверсивного регистра в базисах ТТЛ, ЭСЛ, И 2 Л, на МОП-транзисторах и КМОП-парах.

Параллельный регистр

Схема параллельного регистра

Схема соединения триггеров в параллельном регистре

В данном типе регистров триггеры соединены параллельно, то есть каждый внутренний триггер имеет свой вход D и свой выход Q, которые не зависят от других триггеров, а также вход С, который называется тактовым входом и для всех входящих в регистр триггеров он является общим. Параллельные регистры бывают двух типов:

  • тактируемые регистры, которые срабатывают по фронту сигнала управления (вход С);
  • стробируемые регистры, которые срабатывают по уровню входного сигнала (вход С);

Наибольшее распространение получили тактируемые параллельные регистры.

Регистры, срабатывающие по фронту сигнала

Данные типы регистров практически ничем не отличаются от D триггеров. Напомню, что на выходе Q устанавливается такой уровень напряжения, который был на входе D, в момент положительного фронта тактового сигнала на входе С. Так как регистр состоит из нескольких D триггеров, то и количество (4,6,8,16) запоминаемых сигналов (бит) у регистра больше.

Тактируемые регистры

Параллельные регистры, срабатывающие по фронту импульса.

Большинство регистров восьмибитные и в основном различаются отсутствием или наличием инверсии сигнала на выходе, входом сброса (R), входом разрешения записи (WE), типом выходов (2C или 3C) и входом EZ. Таблицы истинности тактируемых регистров практически не отличаются от таблицы истинности D триггеров и имеют следующий вид

Таблица истинности регистра с входом разрешения записи WE

ВходыВыход
WECDQ
00→100
00→111
00XНе меняется
01XНе меняется
1XXНе меняется

Основное применение регистры с тактируемым входом нашли в схемах где необходимо хранить некоторый код в течении необходимого времени, а по фронту импульса на тактовом входе С выдавать на выходы Q.

Регистры, срабатывающие по уровню сигнала

Данные типы регистров являются как бы гибридом между буфером и регистром (ещё такие регистры называют регистры-защёлки, англ. Latch). Принцип работы данных регистров состоит в следующем: когда на стробирующем входе высокий логический уровень, сигнал поступает с входов на выходы регистра, а если на стробирующем входе низкий уровень сигнала, регистр переходит в режим хранения последнего из пропущенных значений входного сигнала. Регистры-защелки не очень распространены из-за своего специфического характера работы, но в некоторых случаях удобнее, регистров срабатывающих по фронту сигнала на тактовом входе. Типичный представитель параллельных регистров срабатывающих по уровню стробирующего сигнала, является микросхема К555ИР22, которая представляет собой восьмиразрядный параллельный регистр, со стробирующим входом С и выходами с тремя состояниями (3С).

Регистр, срабатывающий по уровню входного стробирующего сигнала К555ИР22.

Таблица истинности стробируемого регистра

ВходыВыход
EZCDQ
0111
0100
00XНе меняется
1XXX

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

Регистр сдвига (последовательный регистр)

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

Схема последовательного регистра

Схема сдвигового регистра от младших разрядов к старшим.

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

Последовательно параллельные регистры

Регистры сдвига

Рассмотрим некоторые типы сдвиговых регистров. Первый из них это микросхема типа К555ИР8, которая представляет собой обычный регистр сдвига от младшего разряда к старшему. Она имеет два информационных входа объединённые по схеме 2И, вход сброса R, по отрицательному импульсу которого все выходы данного регистра устанавливаются в нуль. Сдвиг разрядов происходит по фронту импульса поступающего на тактовый вход регистра С.

Второй тип сдвигового регистра – это микросхема К555ИР9, как видно по изображению данной микросхемы она выполняет действия обратные микросхеме К555ИР8, то есть если ИР8 из последовательного кода преобразует в параллельный, то ИР9 преобразует входящий параллельный код в выходящий последовательный код. Микросхема К555ИР9 реализует следующий режим работы: при низком логическом уровне на входе разрешения записи WR происходит запись входного кода. Для осуществления сдвига необходимо перевести вход WR в высокий логический уровень и на один из тактовых входов С, объединённых по 2ИЛИ, подавать тактовые импульсы. Дополнительный информационный вход DR, позволяет с него записать информацию в младший разряд регистра сдвига.

И наконец, ещё один тип сдвигового регистра, которым является микросхема К555ИР13. Она является как бы объединением двух предыдущих регистров сдвига. Во-первых, данная микросхема имеет восемь параллельных входов и восемь параллельных выходов, причём сдвиг может осуществляться как в сторону увеличения разрядов (вход SR), так и в сторону уменьшения разрядов (вход SL) по фронту сигнала на входе С. При помощи информационных входов DR и DL есть возможность записать сигнал как в младший разряд так и в старший разряд. К555ИР13 является реверсивным регистром, Сдвиг битов от младшего разряда к старшему осуществляется по фронту сигнала на входе С при низком уровне на и высоком на SR входах, а в обратную сторону сдвиг идёт при единице на входе SL и нуле на входе SR. В случае же единичного уровня сигнала на входах SL и SR одновременно, данный регистр превращается в повторитель сигнала, то есть информация с входов микросхемы переносится на её выходы.

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

Теория это хорошо, но необходимо отрабатывать это всё практически ПОПРОБОВАТЬ МОЖНО ЗДЕСЬ

Оцените статью
TutShema
Добавить комментарий