Занятие № 7. Регистры
Вопросы
- Для чего используются регистры?
- В каком порядке данные записываются и считываются из регистров?
Задачи
- Изучить процесс записи значений в D-триггер.
- Изучить процесс записи значений в четырёхразрядные регистры с последовательной записью.
- Вспомнить алгоритм преобразования двоичных чисел в десятичные.
Теория
Регистр - это последовательностное устройство предназначенные для хранения двоичного числа. Также применяются для преобразования из параллельной записи в последовательную и наоборот.
Для хранения одного бита в регистре используется триггер. Для хранения n-разрядного двоичного числа необходимо n триггеров. Схемы регистров в данной лабораторной работе составлены с помощью D-триггеров.
Выделяют 4 режима записи и чтения:
- Последовательный ввод - параллельный вывод (SIPO - Serial-in to Parallel-out);
- Последовательный ввод - последовательный вывод (SISO - Serial-in to Serial-out);
- Параллельный ввод - последовательный вывод (PISO - Parallel-in to Serial-out);
- Параллельный ввод - параллельный вывод (PIPO - Parallel-in to Parallel-out).
Если вывод Q одного триггера соединить с входом данных D следующего триггера регистра, получим регистр сдвига. Сдвиг разрядов может происходить вправо или влево.
Регистр с последовательной записью и параллельным чтением
На рисунке приведена схема 4-х разрядного регистра сдвига, построенного на основе динамических D-триггеров:
Число записывается в регистр последовательно, разряд за разрядом. Очередной разряд выставляется на входе данных D первого триггера. После подачи синхроимпульса на вход С, значение на входе D запишется в первый триггер и установится на выходе Q0. Последующие разряды числа записываются в триггер аналогичным образом. После 4-х синхроимпульсов, число записано в регистр и доступно для чтения на выходах Q3 Q2 Q1 Q0, где Q3 - старший разряд числа, Q0 - младший разряд числа.
Расположение старшего разряда числа в последнем триггере условно. При необходимости можно считать, что первый D-триггер хранит старший разряд, а последний - младший. Выбор обуславливается условием решаемой задачи.
Подобные регистры полезны при управлении несколькими сигналами при помощи небольшого количества входов. Например, всего два входа (D и C) понадобятся для управления состоянием 4 выходов (Q0..Q3). При необходимости несколько регистров соединяются последовательно. Объединив два 4-х разрядных регистра сдвига, получим 8 выходов (Q0..Q7), управление которыми всё также происходит с помощью всего двух входов.
Регистр с последовательной записью и чтением
Запись и чтение данных в таком регистре происходит последовательно. Схема 4-х битного регистра приведена на рисунке:
Разряды для записи последовательно поступают на информационных вход D первого D-триггера. Для записи 4-х битного числа потребуется подать 4 синхронизирующих импульса на вход C.
Чтение числа происходит последовательно из выхода Q. Как и для записи, для чтения числа потребуется 4 синхронизирующих импульса.
Такой регистр применяется как для хранения числа, так и для создания задержки в передаче данных. Величина задержки определяется количеством последовательно соединённых триггеров в схеме регистра.
Практические задания
Задание № 1. Исследование работы динамического D-триггера
Изучим режимы работы динамического D-триггера.
- Обнулите содержимое триггера, щёлкнув по входу R. Прямой выход Q должен содержать
0
. - Заполните столбец Q таблицы. По очереди устанавливайте необходимые значения на входах D и С и записывайте значения на выходе Q в нужную строку.
- Нажмите кнопку Проверить таблицу, чтобы убедиться в корректности её заполнения.
D | C | Q |
---|---|---|
0 | 1 | |
0 | 0 | |
1 | 1 | |
1 | 0 | |
1 | 1 | |
1 | 0 | |
0 | 1 | |
0 | 0 |
Ответьте на вопросы:
- Верно ли, что запись числа в регистр всегда происходит при изменении значения на входе C ?
- Какое значение устанавливается на выходе Q после подачи
1
на вход R ? - Верно ли, что выход Q всегда повторяет значение на входе D ?
После сброса триггера подачей 1
на вход R, на прямом выходе Q устанавливается значение 0.
Чтобы поменять значение хранящееся в триггере и выводимое на Q, на входе С должен произойти переход значения от логического 0
к 1
. Для записи нового значения в триггер не достаточно изменить значение на информационном входе D.
Задание № 2. Изучение регистра с последовательной записью и чтением
Запись производится последовательно, начиная со старшего разряда числа. В схеме контакты C и R работают в режиме кнопок: зажав и удерживая левую кнопку мыши меняем значение на входе с 0
на 1
, отпустив левую кнопку мыши - с 1
на 0
. Поэтому для записи следующего разряда и сброса регистра будет достаточно одиночного клика по контактам. В таблице клик по контакту С обозначен следующим образом: 0 ⇗ 1.
Запишем в регистр двоичное число 1101
.
- Обнулите содержимое регистра, щёлкнув по входу R.
- Последовательно устанавливайте на входе D значения из таблицы и нажимайте контакт С для подачи тактового импульса на триггеры регистра. После каждого записанного разряда, записывайте в таблицу значения на выходе регистра Q.
- Нажмите кнопку Проверить таблицу, чтобы убедиться в корректности её заполнения.
D | C | Q |
---|---|---|
0 ⇗ 1 | ||
0 ⇗ 1 | ||
0 ⇗ 1 | ||
0 ⇗ 1 | ||
0 ⇗ 1 | ||
0 ⇗ 1 | ||
0 ⇗ 1 | ||
0 ⇗ 1 |
Ответьте на вопросы:
- Сколько импульсов нужно подать на вход C, чтобы записать 4-х разрядное число в данный регистр?
- Старший или младший разряд числа устанавливается на выходе Q после записи 4-х разрядного числа в регистр?
- Верно ли что в данном регистре мы можем одновременно прочитать все разряды записанного числа?
При последовательной записи n-разрядного двоичного числа в n-разрядный регистр, на вход C нужно подать n тактовых импульсов.
Разряды записываются по-очереди: первый вошёл - первый вышел. Если первым записывается старший разряд числа, то первым он и окажется на выходе регистра.
В регистре с последовательным выводом можно прочитать только 1 разряд числа за один тактовый импульс на входе C.
Задание № 3. Изучение работы регистра с последовательной записью и параллельным чтением
Запись числа в SIPO-регистр происходит последовательно, а чтение - параллельно. Будем считать, что за хранение старшего разряда записываемого числа будет отвечать последний D-триггер регистра.
Запишем в регистр двоичное число 1100
.
- Обнулите содержимое регистра, щёлкнув по входу R.
- Последовательно устанавливайте на входе D значения из таблицы и нажимайте контакт С для подачи тактового импульса на триггеры регистра. После каждого записанного разряда, записывайте в таблицу значения на выходах регистра Q0..Q3.
- Нажмите кнопку Проверить таблицу, чтобы убедиться в корректности её заполнения.
D | C | Q0 | Q1 | Q2 | Q3 |
---|---|---|---|---|---|
0 ⇗ 1 | |||||
0 ⇗ 1 | |||||
0 ⇗ 1 | |||||
0 ⇗ 1 |
Обнулите содержимое регистра и самостоятельно запишите в него двоичное число 0101
. Продемонстрируйте результат преподавателю.
Помните, что старший разряд числа должен храниться в триггере с выходом Q3.
Число 0101
2 = 10. На входе D установите логический 0
. Подайте один тактовый импульс, нажав на вход C. Теперь в регистре хранится двоичное число 2 = 10. Это означает, что сдвиг вправо привёл к . Проверьте правильность ваших ответов.