
lect4_m2_vt_mrtus_CS_niy37
.pdfвыми значениями, например над масками. Сдвиг осуществляется по всем позициям регистра.
Арифметические команды сохраняют знаковый (старший) разряд операнда и используются для действия с числами со знаком; отметим, что арифметический сдвиг влево совпадает с логическим сдвигом влево.
Отметим несколько обстоятельств, которые необходимо иметь в виду, работая с командами простого и циклического сдвига. Во-первых, любая из выполняемых при этом операций эквивалентна умножению (сдвиг влево) или делению (сдвиг вправо) числа на 2 при сдвиге на один разряд. Во-вторых, при использовании команд простого сдвига данные, сдвигаемые за пределы регистра, теряются. В-третьих, команды циклического сдвига сохраняют сдвинутые за пределы регистра биты, помещая их обратно в регистр. В-четвертых, команды сдвига взаимодействуют с флагами регистра состояния. Разряд переноса С регистра состояния участвует в выполнении команд, и его значение изменяется по мере передачи данных в него или из него.
Рассмотрим подробнее все эти операции (команды).
Логический (SHL - shift logical left), арифметический (SAL - shift arithmetic left) сдвиг влево - эта команда часто используется для реализации операции умножения. Как видно из рис.2.50, при выполнении этих команд содержимое старшего разряда регистра передаётся в разряд переноса С регистра состояния. В младший разряд b0 регистра загружается при этом 0. Содержимое каждого разряда регистра перемещается в соседний старший разряд, а содержимое разряда переноса С (независимо от его значения) теряется. Команда SAL не сохраняет знак операнда, но заносит 1 во флаг переполнения V регистра состояния в случае изменения знака операнда.
Логический сдвиг вправо (SHR - shift logical right) - эта команда часто используется для операции деления. Как видно из рис.2.50, при выполнении этой команды содержимое младшего разряда b0 регистра передаётся в разряд переноса С регистра состояния. В старший разряд b7 регистра загружается при этом 0. Содержимое каждого разряда регистра перемещается в соседний младший разряд, а содержимое разряда переноса С теряется.
Арифметический сдвиг вправо (SAR - shift arithmetic right) - со-
держимое младшего разряда передаётся в разряд переноса С регистра состояний, содержимое всех остальных разрядов числа сдвигается вправо на одну позицию. Отличительной особенностью команды является то, что старший (знаковый) разряд сохраняет свое значение, это необходимо при выполнении некоторых арифметических операций в дополнительном коде. Содержимое разряда переноса С теряется.
Циклический сдвиг влево (ROL - rotate left) - содержимое старшего разряда b7 регистра загружается в разряд переноса С регистра состояния. Все разряды операнда, находящегося в регистре, сдвигаются на одну пози-
цию влево, т.е. содержимое каждого разряда перемещается в позицию соседнегостаршегоразряда, асодержимоеразрядаb7 загружаетсявразрядb0.
Циклический сдвиг вправо (ROR - rotate right) - содержимое младшего разряда b0 регистра загружается в разряд переноса С регистра состояния. Все разряды операнда, находящегося в регистре, сдвигаются на одну позицию вправо, т.е. содержимое каждого разряда перемещается в позицию соседнего младшего разряда, а содержимое разряда b0 загружается в разряд b7.
Циклический сдвиг с переносом влево (RCL - rotate left through carry) - этой командой все данные, находящиеся в регистре и разряде переноса, сдвигаются на одну позиция влево, причём содержимое b7 загружается в разряд переноса С, а последний - в разряд регистра b0.
Циклический сдвиг с переносом вправо (RCR - rotate right through carry) - этой командой все данные, находящиеся в регистре и разряде переноса, сдвигаются на одну позиция вправо, причём содержимое b0 загружается в разряд переноса С, а последний - в разряд регистра b7.
При использовании команд циклического сдвига не происходит потерьданных, посколькуданныеперемещаются позамкнутомуконтуру.
Пример 2.19. Спроектировать операционный блок, выполняющий указанные восемь операций сдвига, на реверсивном восьмиразрядном сдвиговом регистре. В качестве разряда переноса С регистра состояний использовать отдельный триггер. Сигнал m направления сдвига закодировать так: m = 0 - сдвиг влево, m = 1 - сдвиг вправо. Триггер переноса и регистр должны иметь единую систему синхронизации.
Так как всего выполняется восемь операций, закодируем их 3-разрядным кодом а2а1а0. Функционирование операционного блока
представлено в табл.2.22. Рассматривая Ct 1, b7t 1, b0t 1 и m как функции
алгебры логики (ФАЛ) от переменных a2 , a1, a0 ,Ct ,b7t и b0t , из табл.2.22 получаем выражения в СДНФ:
Dct Ct 1 a2a1a0b7 a2a1a0b0 a2a1a0b7 a2a1a0b0a2a1a0b7 a2a1a0b7 a2a1a0b7 a2a1a0b0;
DLt b7t 1 a2a1a0b7 a2a1a0b0 a2a1a0C;
DRt b0t 1 a2a1a0b7 a2a1a0C;
m a2a1a0 a2a1a0b0 a2a1a0 a2a1a0.

Таблица 2.22
Функционирование операционного блока, реализующего восемь сдвиговых команд
|
Операция |
набораНомер |
|
a2 |
|
|
|
a1 |
|
|
a0 |
|
C t+1 |
b 7t+1 |
b 0t+1 |
m |
|
||
|
SHL |
|
0 |
|
0 |
|
|
|
0 |
|
|
0 |
|
b 7t |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SHR |
|
1 |
|
0 |
|
|
|
0 |
|
|
1 |
|
b 0t |
0 |
|
1 |
|
|
|
SAL |
|
2 |
|
0 |
|
|
|
1 |
|
|
0 |
|
b 7t |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SAR |
|
3 |
|
0 |
|
|
|
1 |
|
|
1 |
|
b 0t |
b 1t |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ROL |
|
4 |
|
1 |
|
|
|
0 |
|
|
0 |
|
b 7t |
|
b 7t |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ROR |
|
5 |
|
1 |
|
|
|
0 |
|
|
1 |
|
b 0t |
b 0t |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RCL |
|
6 |
|
1 |
|
|
|
1 |
|
|
0 |
|
b 7t |
|
Ct |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RCR |
|
7 |
|
1 |
|
|
|
1 |
|
|
1 |
|
b 0t |
Ct |
|
1 |
|
|
После минимизации получаем |
|
|
|
|
|
|
|
|
|
||||||||||
|
Dc t Ct 1 a0b7 a0b0 ; |
|
|
|
|
|
|
||||||||||||
|
t |
t 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
DL |
|
b7 |
(a2a1b7 a2a1b0 a2a1C)a0 ; |
(2.38) |
||||||||||||||
|
DRt bt 1 |
a |
2 |
a |
0 |
(a b |
a C); |
|
|
|
|
||||||||
|
|
|
0 |
|
|
|
|
1 |
7 |
|
1 |
|
|
|
|
||||
|
m a0. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Уравнения (2.38) определяют структуру операционного блока, которая и приведена на рис.2.51. 8-разрядный сдвиговый регистр показан в обобщённомвиде, таккакможетбытьреализованвразличныхвариантах. Нарис.2.51 обозначено: V - вход выбора режима (например, V = 0 - параллельная загрузка, V = 1 - сдвиг); DR (data right) - данныесправа(состоронымладшихразря-
дов), на этот вход подаётся сигнал b0t 1 ; DL (data left) - данные слева (со стороныстаршихразрядов), наэтотвходподаётсясигнал b7t 1 .

|
|
|
|
R |
TT |
C |
|
|
& |
1 |
|
||
|
|
D |
|
|
||
|
|
|
|
|
|
|
|
|
& |
|
C |
|
|
|
|
|
|
S |
|
|
|
|
& |
1 |
|
|
|
|
|
& |
& |
R |
RG |
|
|
|
|
V |
b0 |
||
|
|
|
|
|
||
|
|
|
|
|
Q0 |
|
|
|
|
|
m |
|
b1 |
|
|
|
|
|
Q1 |
|
|
|
|
|
DR |
|
b2 |
|
|
|
|
|
Q2 |
|
|
|
& |
1 |
DL |
|
b3 |
|
|
|
Q3 |
|||
a2 |
1 |
1 |
|
D0 |
|
b4 |
|
|
|
|
|
Q4 |
|
|
|
& |
|
D1 |
|
b5 |
|
|
& |
D2 |
|
Q5 |
|
|
|
|
D3 |
|
b6 |
|
a1 |
1 |
1 |
|
D4 |
|
Q6 |
|
|
& |
|
D5 |
|
b7 |
|
|
|
D6 |
|
Q7 |
|
|
|
|
|
D7 |
|
|
a0 |
1 |
1 |
|
C |
|
|
|
|
|
|
|||
Уст. «0» |
|
|
|
|
|
|
V |
|
|
|
|
|
|
С (синхр.) |
|
|
|
|
|
|
|
|
Рис.2.51. Схема операционного блока |
|
|
|
2.5. Кольцевые счётчики
Кольцевым счётчиком называется сдвиговый регистр, замкнутый в кольцо. Далее рассмотрены схемы, выполненные на D-триггерах, либо схемы, имеющие однофазный последовательный вход и выход. Структуры, выполненные на других типах триггеров, могут быть получены аналогичными методами.
Наиболее распространены две схемы кольцевых счётчиков:
• для первой схемы для всех n разрядов выполняется соотношение
Di Qi 1 ;

• для второй схемы для n 1 разрядов выполняется соотношение Di Qi 1 , а для одного разряда D0 Qn 1 , т.е. реализуется одна пере-
крестная связь.
Поскольку счётчик кольцевой, не имеет значения, между какими разрядами выполняется перекрестная связь, однако для удобства анализа на схемах для наглядности соединяют выход последнего разряда со входом первого.
Схемы с одной перекрестной связью называют кольцевыми распределителями, счётчиками Джонсона, счётчиками Мёбиуса, счётчиками в коде Либау-Крейга, кольцами Реженера. На рис.2.52 приведена схема четырёхразрядного кольцевого счётчика с прямыми связями между разрядами, а на рис.2.53 - временные диаграммы этой схемы.
Q0 |
Q1 |
Q2 |
Q3 |
R TT |
R TT |
R TT |
R TT |
D |
D |
D |
D |
C |
C |
C |
C |
S |
S |
S |
S |
C
Рис.2.52. Кольцевой счётчик с прямыми связями
Вариант, показанный на рис.2.53,а, соответствует сдвигу в кольце одной единицы, на рис.2.53,б - сдвигу двух смежных единиц, на рис.2.53,в - сдвигу двух единиц, разделённых нулём, на рис.2.53,г - сдвигу трёх смежных единиц (или одного нуля). Все эти варианты возможны из-за первичного включения схемы либо из-за действия помех на схему. Более наглядно эти (и два дополнительных) варианта отражены на графе переходов схемы рис.2.54,а. Из графа ясно, что шесть возможных замкнутых циклов работы, раз возникнув, могут сами не перейти в нужный для работы цикл. Пусть нужный для работы цикл имеет последовательность следующих состояний: 1-2-4-8-1-… (на рис.2.54,б этот цикл выделен жирными линиями переходов). Анализируя полный граф переходов на рис.2.42,г, определим вхождение в рабочий цикл из любого нерабочего состояния с минимальным числом переходов в рабочий цикл. Результаты анализа отражены на рис.2.54,б.

C
Q0
Q1
Q2
Q3
8 |
1 |
2 |
4 |
8 |
1 |
2 |
4 |
8 |
1 |
а
Q0
Q1
Q2
Q3
9 |
3 |
6 |
12 |
9 |
3 |
6 |
12 |
9 |
3 |
б
Q0
Q1
Q2
Q3
10 |
5 |
10 |
5 |
10 |
5 |
10 |
5 |
10 |
5 |
в
Q0
Q1
Q2
Q3
11 |
7 |
14 |
13 |
11 |
7 |
14 |
13 |
11 |
7 |
г
Рис.2.53. Временные диаграммы схемы (см. рис.2.52) для четырёх циклов работы

1 |
0001 |
|
|
|
|
0 |
|
|
|
2 |
0010 |
|
|
1 |
|
3 |
0011 |
5 |
0101 |
|
|
0 |
|
|
|
11 |
1011 |
|
|
1 |
|
7 |
0111 |
|
|
0
0 0000
1
0
9 1001
0
1
6 0110
1
0
|
|
|
|
|
|
|
|
|
1 |
0 |
|
0000 |
|
|
|
|
8 |
|
1000 |
1 |
|
0001 |
|
|
1 |
||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
4 |
|
0100 |
|
|
|
|
|
|
2 |
|
0010 |
0 |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
1 |
|
|
|
|
|
|
9 |
|
1001 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
0 |
||
|
|
|
|
|
|
|
|
|
|
|
|
||
10 |
|
1010 |
12 |
|
1100 |
3 |
|
0011 |
5 |
|
0101 |
|
|
|
|
|
|
|
|
||||||||
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
0110 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
13 |
|
1101 |
1 |
|
|
|
|
|
11 |
|
1011 |
0 |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
14 |
|
1110 |
7 |
|
0111 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
1000 |
|
|
|
0 |
|
|
4 |
|
0100 |
|
0 |
|
|
|
||||
|
0 |
|
|||
|
|
|
|
||
10 |
|
1010 |
12 |
|
1100 |
|
|
||||
|
|
|
0 |
|
|
|
0 |
|
|
|
|
|
|
|
|
0 |
|
13 |
|
1101 |
14 |
|
|
|
|
|
|||
|
0 |
|
1110 |
||
|
|
||||
|
|
|
|
15 |
1111 |
15 |
1111 |
1 |
б |
а |
|
Рис.2.54. Пояснения к схеме (см. рис.2.52): а - граф переходов; б - граф вхождения в рабочий цикл с минимальными путями вхождения

По графу (см. рис.2.54,б) заполняем карту Карно (рис.2.55) для |
|||||||
входа сдвигового регистра, из которой следует |
|
|
|
||||
|
|
D0 Q2Q1Q0 . |
|
|
|
(2.39) |
|
Соответствующая схема приведена на рис.2.56. |
|
|
|||||
|
D0 |
Q1 |
|
|
|
|
|
|
0 |
0 |
0 |
1 |
|
|
|
|
Q3 |
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
Q2 |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
|
|
|
|
0 |
0 |
0 |
1 |
|
|
|
|
|
|
Q0 |
|
|
|
|
|
Рис.2.55. Карта Карно для D0 |
|
|
|
|||
|
Q0 |
|
Q1 |
|
Q2 |
|
Q3 |
& |
R TT |
R |
TT |
R |
TT |
R |
TT |
|
|
|
|
|
|
|
|
|
D |
D |
|
D |
|
D |
|
|
C |
C |
|
C |
|
C |
|
|
S |
S |
|
S |
|
S |
|
C |
|
|
|
|
|
|
|
|
Рис.2.56. Кольцевой счётчик с циклом 1-2-4-8-1... |
|
|

Убедитесь самостоятельно в справедливости следующих соотношений для сигнала D0 сдвигового регистра, в котором циркулирует одна единица:
n 2, D0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q0 ; |
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n 3, D0 Q1Q0 ; |
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n 4, D0 |
Q2Q1Q0 |
; |
|
, |
(2.40) |
||||||||||||||
|
|
||||||||||||||||||
n 5, D |
|
|
|
|
|
|
|
|
|
; |
|
|
|||||||
Q |
Q |
Q |
Q |
|
|
||||||||||||||
0 |
3 2 1 |
0 |
|
|
|
||||||||||||||
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
а также в справедливости следующих соотношений для сигнала D0 сдвиговогорегистра, вкоторомциркулируетодиннуль(цикл7-14-13-11-7-…):
n 2, D0 |
|
|
|
|
|
|
||
Q0 ; |
|
|||||||
|
|
|
|
|
|
|
|
|
n 3, D0 Q1Q0 ; |
|
(2.41) |
||||||
n 4, D0 |
|
|
|
|
; |
|
||
Q2Q1Q0 |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n 5, D0 Q3Q2Q1Q0. |
|
Рассмотрите самостоятельно для n = 4 структуру сдвигового регистра, в котором циркулируют две смежные единицы (или, что то же самое, два нуля) с вхождением в рабочий цикл 3-6-12-9-3-… из всех остальных состояний.
На рис.2.57 приведена схема четырёхразрядного кольцевого счётчика с одной перекрестной связью D0 Q3 (для остальных разрядов Di Qi 1 ), а на рис.2.58 - временные диаграммы для двух устойчивых
циклов. В подавляющем большинстве случаев используется цикл, показанный на рис.2.58,а. Граф переходов для обоих случаев показан на рис.2.59. При первичном включении либо из-за действия помех схема (см. рис.2.57) может попасть в нерабочий цикл и остаться в нем. На рис.2.59 штриховыми линиями показаны возможные переходы, обеспечивающие вхождение в рабочий цикл. Поскольку вариантов вхождения много, нужно воспользоваться какими-либо критериями их выбора. Такими критериями могут быть: обеспечение минимального числа тактов при вхождении в рабочий цикл из любого нерабочего состояния; обеспечение минимальной схемотехнической реализации (при возможности обеспечения и первого критерия).

R |
Q0 |
R |
TT |
Q1 |
R |
TT |
Q2 |
R |
Q3 |
TT |
|
|
TT |
||||||
D |
|
D |
|
|
D |
|
|
D |
|
C |
|
C |
|
|
C |
|
|
C |
|
S |
|
S |
|
|
S |
|
|
S |
|
C
Рис.2.57. Кольцевой счётчик с одной перекрёстной связью
а C
Q0
Q1
Q2
Q3
8 |
0 |
1 |
3 |
7 |
15 |
14 |
12 |
8 |
0 |
бC
Q0
Q1
Q2
Q3
9 |
2 |
5 |
11 |
6 |
13 |
10 |
4 |
9 |
2 |
Рис.2.58. Временные диаграммы: а - для цикла 0-1-3-7-15-14-12-8-0 ...
(см. рис.2.57); б - для цикла 2-5-11-6-13-10-4-9-2 ...