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

Блок – схема алгоритма работы микропрограммного устройства управления.
Z1
0
1
Z2
Z3
Z4
0
1
2. МК с одним адресом в адресном поле. Адресация МК- принудительная с одним адресом.
|
Sоп |
X |
А' |
β |
При БПУ X=0 и АСЛ=А'β
При УПУ X=f и АСЛ=А'Xf
Кодирование МК – горизонтальное.

Микропрограммные устройства управления с принудительной адресацией и одним адресом работает в соответствии с микропрограммой, имеющей следующий вид:
Z1
0
1
Z2
Z3
Z4
0
1
-
Естественная адресация команд.
Форматы микрокоманд (МК)
Операционная МК:
Р
1
Управляющая МК:
Р
1

Р1 – признак, с помощью которого различаются эти две микрокоманды.
Алгоритм работы микропрограммного устройства управления имеет следующую граф - схему:
Р2=1
при БПУ (поле Х=0)
Р2=0 при УПУ (поле Х≠0)
Асл = СТАМК + 1, если операционная МК Асл = СТАМК + 1, если УПУ при условии хi=l Асл = А при БПУ и при УПУ, если хi=1
X1=P1
X2=P2
X3=xi
X
4=сигнал
«останов»
Z1
0
1
Z2
Операционная МК 0 1 Управляющая МК
Z3 1 БПУ
Z4
-
УПУ
-
1
Z4 Z5
0
1
Структурная схема микропрограммного устройства управления с естественной адресацией имеет следующий вид:

Примеры реализации некоторых алгебраических операций.
Пример 1.
Сложение - вычитание в дополнительном коде чисел, поступающих в дополнительном коде. Результат выдается в дополнительном коде(способ 1а)
-
Если S=A+B, то [S]доп=[А]доп+[B]доп. Сложение по mod 2m+1
-
Е
сли
S=A-B=
А+(-В), то [S]доп=[А]доп+[В]доп+2-n
(по mod
2m+1)
Если
необходимо изменить знак у слагаемого
В, т.е. получить -В, то
необходимо инвертировать все разряды числа, включая знаковый, и к
младшему разряду прибавить единицу (+2-n).
Пусть
m=4, n=0, S=A-B, А=10, В=-3 S=10-(-3)=13
Апр=0.1010=10 [А]доп=0.1010 Впр=1.0011=-3 [В]доп=1.1101
О
перация
вычитания.
+[А]доп=
0.1010
[В]доп= 1.0011
[S]доп= 0.1101 =13
В этом способе знаковые разряды слагаемые участвуют в операции и поэтому переполнение разрядной сетки определяется с помощью одного из следующих методов:
-
Признак переполнения формируется в случае, если знаки А и В совпадают, но не совпадают со знаком суммы S.
-
П

ризнак
переполнения формируется, если не
совпадают переносы в
знаковый разряд
Пm
и из знакового разряда Пm+1,
т.е.
Пm Пm+1 ɣ Пm Пm+1=1
На практике чаще используется второй метод, т.к. в первом методе знаки слагаемых нужно хранить до конца операции, а затем сравнивать со знаком суммы.
Примеры определения переполнения разрядной сетки.
а)А=12; В=5
+ [А]доп= 0.1100
[В]доп= 0.0101
[S]доп=1.0001 Пm=1
Пm+1=0
б)А=-12; В=-5; Апр=1.1100 ; Впр=1.0101 + [А]доп= 1.0100
[B]доп= 1.1011
[S]доп=10.1111
Пm=0 Пm+1=1
Структурная схема АЛУ для выполнения операций сложения - вычитания чисел, поступающих в дополнительном коде, имеет следующий вид:

Список микроопераций:
y1:RG1(8:0):=X(8:0) Tпрс:=0
y2 :RG2(8:0):=X(8:0)
y3 :RG1:=RG1+RG2
___
y4 :RG1:=RG1+RG2+1
y5 : Tпрс:=1
y6 : Z(8:0):=RG1(8:0)
Список условий:
1,
если сложение
Х1= 0, если вычитание
__ __
Х2=П9П8ɣП9П8=1, если произошло переполнение разрядной сетки.
Микропрограмма выполнения операций сложение – вычитание чисел, поступающих дополнительном коде, имеет следующий вид:
у1
у2
Сложение 1 0 Вычитание
у3 у4
1 0
у5 у6
Пример 2.
Сложение – вычитание в модифицированном дополнительном коде чисел, поступающих в прямом коде (способ 2б).
Слагаемые А и В поступают в прямом коде. Сумма S формируется в прямом коде. В процессе сложения – вычитания в необходимых случаях слагаемые А и В могут переводиться в дополнительный код.
Структурная схема АЛУ имеет следующий вид:

Список микроопераций:
у1 : Тпрс: = 0
у2 : RG2(8:0):=X(8:0)
у3: RG1(9:0):=X(8)X(8:0)
______
у4: RG2(8):= RG2(8)
________
у5: RG1(7:0):=RG1(7:0)
у6: RG1:=RG1+1
у7: RG1 := RG1+00. RG2(7:0)
_______
у8: RG1:=RG1+11.RG2(7:0)+1
у9 : Tnpc: = 1
у10: Z(8:0):=RG1(8:0)
В регистр RG1 и комбинационный сумматор SM вводится по дополни- тельному знаковому разряду. В начале операции в RG1 записывается моди - фицированный прямой код А, а в RG2 - прямой код второго слагаемого В. Вычитание сводится к сложению путем предварительного изменения знака слагаемого В на противоположный.
Сложение выполняется следующим образом:
-
Слагаемое А переводится в модифицированный дополнительный код.
-
В регистре RG1 формируется сумма S в дополнительном коде.
[S]доп=[А]доп +[В]доп по mod 2m+1
При этом выполняется либо микрооперация RG1 := RG1+00. RG2(7:0), если В>0; либо микрооперация RG1:= RG1+11. RG2(7:0)+1, если В<0.
3. Сигнал ПРС формируется на втором этапе, либо по несовпадению знаковых разрядов суммы в RG1, либо при получении результата S=-2m
Т.е. S=11.0000 0000
4. На последнем этапе выполняется перевод суммы S из модифицированного дополнительного кода в прямой код, если на втором этапе не произошло переполнение разрядной сетки (ПРС).
Список условий:
X
1=
0, если выполняется операция вычитание
1, если выполняется операция сложение Х2=P2 = RG1(8)- знаковый разряд слагаемого А, при этом Р1 – второй знаковый разряд, который называется также разрядом переполнения разрядной сетки ПРС.
X3=P3=RG2(8)- знаковый разряд слагаемого В.
Х

4=
Р1
+
Р2
=
Р1Р2ɣР1Р2
-
сумма
по модулю 2 знаковых разрядов слагаемых
А и В
Х4=1,
если знаки P1
и
Р2
разные
Х4=0,
если знаки Р1
и Р2
одинаковые
Х5= Р4=1, если RG1(7:0)=0; Р4 - сигнал обнаружения нуля (СОН) в значащих
разрядах регистра RG1.
y1
y2 Запись слагаемых А и В
в прямом коде в регистры.
y3
Сложение 1
-
Вычитание
у4 Изменение знака у второго
слагаемого В,если выполняется
0 операция вычитания.
1
y5 Образование
дополнительного кода
y6 слагаемого А, если А<0.
-
1
y7 y8 Выполняется
операция
суммирования
1 0
Знаки Р1 и Р2 Знаки Р1 и Р2
разные одинаковые 0
1
если S=-2m 1
0
Образование
y9 y5 прямого кода
суммы S
(переход от
y6 дополни-го
кода к
прямому)
y10
Пример 3.
Умножение двух чисел в прямых кодах. Сдвиг множителя и суммы частичных произведений вправо (способ 2.1)
С=А*В
А - множимое; В - множитель.
Структурная схема АЛУ имеет следующий вид:



Список микроопераций:
у1: СТ:= 8 у2 : RG3(8:0):=X(8:0) у3: RG1(8:0):=X(8:0) у4: RG2(8:0):=0
у
5:
RG2(7:0):=RG2(7:0)
+ RG3(7:0)
RG2(8):=
П7
y6:
T3H:=RGl(0)
RG1(8:0):=RG2(0).RG1(8:1) RG2(8:0):=0.RG2(8:1) y7: СT:=CT-1
у
8:
RG2(8):=
1, если результат C<0,
то в RG2(8)
записывается 1
y9:
Z(17:9):=
RG2(8:0)
Z(8:0):=RG1(8:0)
В каждом цикле модуль множимого А прибавляется к содержимому RG2 по сигналу у5, если младший разряд RG1 равен 1. Затем содержимое RG1, RG2 и Тзн сдвигается вправо на один разряд по сигналу у6. После выхода из цикла (условная вершина Х2) выполняется еще один сдвиг вправо по сигналу у6, чтобы привести произведение в RG2 и RG1 к удвоенному формату. При этом в RG2 оказывается (m+1) старших разрядов, а в RG1 - (m+1) младших разрядов модуля произведения С. В триггере знака Тзн находится знак множителя В. Произведению С присваивается отрицательный знак по сигналу у8, если знаки сомножителей А и В разные.
Список условий:
X1=P1 - младший разряд множителя В
Х2=P4- содержимое счетчика циклов СТ
X
2=
0, если содержимое счетчика СТ больше
нуля
1,
если содержимое счетчика СТ равно
нулю
Х3=
Р2
+Р3-
сумма по модулю 2 знаковых разрядов
сомножителей В и А
y1
y2 Запись сомножителей
А и В в прямых кодах
y3 в регистры RG3 и RG1
y4 Установка значения
счетчика циклов.
0
1 Сложение модуля А с
суммой частичных
у5 произведений. П7 – пере-
нос из старшего разряда
сумматора SM.
y6 Сдвиг вправо на один
разряд содержимого
y7 регистров RG1 и RG2;
Вычитание 1 из счетчиков
циклов.
0
Выход из цикла
1
у6 Сдвиг вправо на один
разряд.
0
1 Формирование знака произве-
у8 дения С. 1- если знаки
сомножителей А и В разные.
у9 Выдача результата на шину Z.
Пример 4.
Деление чисел с фиксированной запятой с восстановлением остатка (п=8, т=0). Числа - правильные дроби со знаком (способ 3.1).
Деление С=А/В выполняется на основе школьного алгоритма деления «уголком» и сводится к циклическому вычитанию делителя В из удвоенных частичных остатков (ЧОС) необходимое количество раз. В каждом цикле деления определяется одна цифра частного С.

Список микроопераций
у1: CT:=8;RG1:=0
y
2:RG2(0:9):=X(0).0.X(l:8)
у3:
RG3(0:8):=X(0:8)
у4:
RG1(0):=1
у
5:
RG2(1:9):=
RG2(1:9)+1.
RG3(1:8)+2-8
у6:
RG2(1:9):=
RG2(1:9)+0.
RG3(1:8)
у7:
RG2(0:9):=RG2(1:9).0
y8: RG1(1:9):= RG1(2:9). RG2(1)
у9: Tпpc: = 1 y10: CT:=CT-1
y11: RG2(0:9):=RG1(0).0.RG1(1:8) y12: RG2(1:9):= RG2(1:9)+2-8 y13: Z(0:8):= RG2(0). RG2(2:9)
М
икропрограмма
начинается с установления начальных
значений
регистров и счетчика. После
этого по сигналу у4
устанавливается знак
частного С=А/В
и производится пробное вычитание модулей
|А| - |В| = G0
по
сигналу у5.
Знак RG1(0)
частного равен 1 если знаки делимого и
делителя
разные (условие Х1=Р1+Р2).
Пробное вычитание производится с
целью
выявления возможного переполнения
разрядной сетки (ПРС). Если G0>0,
то
возникает ПРС и триггер переполнения
Тпрс
устанавливается в 1 и деление не
выполняется.
Если результат пробного вычитания Go<0,
то
восстанавливается модуль делимого
|А| по сигналу у6.
Далее (n+1)
раз
повторяется цикл деления. В каждом
цикле содержимое RG2(частичный
остаток)
удваивается сдвигом влево на один разряд
по сигналу у7
и
формируется новое значение частичного
остатка (ЧОС) путем вычитания |В|
по
сигналу у5.
По знаку ЧОС, т.е. Р3,
формируется в младшем разряде RG1
очередная
цифра частного С, для этого выполняется
сдвиг влево разрядов
RG1(вcex
разрядов
кроме знакового RG1(0))
с вводом справа в разряд RG1(9)
значения
Р3=
RG2(1),
т.е. RG1(9):=
RG2(1)
по сигналу у8.
Если ЧОС меньше 0, то по сигналу у6
восстанавливается предыдущий удвоенный
остаток. Цикл
деления завершается
вычитанием 1 из счетчика СТ по сигналу
у10и
анализом
его состояния (условие х3).
После выхода из цикла деления результат
С
(кроме младшего разряда) передается
из RG1
в RG2
по сигналу у11
для
округления до n
разрядов. При округлении к младшему
разряду RG2
прибавляется
1, если RG1(9)
= Ps
= Х4
=1. В процессе округления может
возникать
ПРС, когда округленное значение |С|=1
(условие Х2=Р3).
Список условий:
X
1=P1+P2
X2=P3
X
3=
1, если СТ=0
0, если СТ>0
X4=P5=RG1(9)
у1
у2
у3
0
1 Формирование знака
у4 результата С
у5 Пробное вычитание
|A| - |B|
0
у9 1
у6 Восстановление |A|
у7 Сдвиг влево RG2
у5 Вычитание
у8 Сдвиг RG1
А В С D



A
B C D



0
1
у6 Восстановление ЧОС
у10
0
1
у11 Передача
содержимого RG1 в RG2
0
1
у12 Операция
округления
1
0
у13 Выдача результата
на шину Z
Построение таблиц микрокоманд.
Рассмотрим пример составления таблицы МК для выполнения микропрограммы ускоренного умножения.
0 0 0
1 1 1
0
1
0
1
0
1
0
1
В приведенной микропрограмме (МП) ускоренного умножения количество различных МО равно N=7: {у1, у2,...., у7}, количество различных ЛУ L=7: {х1, х2,...., х7}, поэтому l= ]log2(L+l)[=3, т.е. поле X должно иметь три разряда.
В соответствии с количеством вершин в графе МП требуемое количество ячеек УП Р' ориентировочно равно 16, поэтому Р = ]log2 Р' [=4, т.е. разрядность адресных полей А1 и А2 равно 4.
Построим таблицу МК для случая принудительной адресации с двумя адресами в МК, используется горизонтальный способ кодирования микроопераций.
|
|
Адрес ячейки
|
Микропрограмма
|
Примечание
|
||||
|---|---|---|---|---|---|---|---|
|
|
Sоп у1у2у3у4у5у6у7 |
Х
|
А1
|
А2
|
МО
|
ЛУ
|
|
|
Анач x1=0 x1=1 x2=0 x2=1 x3=0 x3=1 x4=0 x4=1 x5=0 x5=1 x6=0 x6=1 x7=0 x7=1 |
0000 |
0 0 0 0 0 0 0 |
001 |
0001 |
0010 |
- |
х1 |
|
0001 |
0 0 0 0 0 0 0 |
010 |
0011 |
0100 |
- |
х2 |
|
|
0010 |
1 0 0 0 0 0 0 |
000 |
0101 |
---- |
y1 |
БПУ |
|
|
0011 |
0 0 0 0 0 0 0 |
011 |
0101 |
0110 |
- |
х3 |
|
|
0100 |
0 1 0 0 0 0 0 |
000 |
0101 |
---- |
y2 |
БПУ |
|
|
0101 |
0 0 0 1 1 0 0 |
100 |
0111 |
1000 |
y4,y5 |
х4 |
|
|
0110 |
0 0 1 0 0 0 0 |
000 |
0101 |
---- |
y3 |
БПУ |
|
|
0111 |
0 0 0 0 0 0 0 |
001 |
0001 |
0010 |
- |
х1 |
|
|
1000 |
0 0 0 0 0 0 0 |
101 |
1001 |
1010 |
- |
х5 |
|
|
1001 |
0 0 0 0 0 0 0 |
110 |
1011 |
1100 |
- |
х6 |
|
|
1010 |
1 0 0 0 0 0 0 |
110 |
1011 |
1100 |
y1 |
х6 |
|
|
1011 |
0 0 0 0 0 0 0 |
111 |
1101 |
1110 |
- |
х7 |
|
|
1100 |
0 0 0 0 0 1 0 |
111 |
1101 |
1110 |
y6 |
х7 |
|
|
1101 |
0 0 0 0 0 0 0 |
000 |
0000 |
---- |
- |
Ост. |
|
|
1110 |
0 0 0 0 0 0 1 |
000 |
0000 |
---- |
y7 |
Ост. |
|
В этой таблице каждая строка соответствует одной ячейке управляющей памяти (УП). Адрес ячейки указан в старших четырех разрядах строки. В остальных разрядах строки записана микрокоманда. Длина микрокоманды (количество разрядов в ячейке УП) равна K=N+l+2p=18 т.к. N=7, l=3,а р=4.
В графе «Примечание» указаны микрооперации (МО), входящие в данную МК и ЛУ, проверяемые при выполнении МК. Прочерк в графе МО означает пустую МК.
Строки таблицы заполнены в соответствии с графом МП. Из графа следует, что первая МК является пустой (условная вершина x1 ) и осуществляется УПУ по значению х1. Поэтому в поле Sоп для нулевой строки записаны нули, а в поле X записан номер ЛУ х1, т.е. Х=001. В полях А1 и А2 указаны адреса первых следующих свободных ячеек УП, т.е. А1=0001, а А2=0010. Таким образом первая МК передает управление следующей МК с адресом А1 =0001 при x1=0 и МК с адресом А2=0010 при x1=1.
Таким образом, при х1=0 должна выполняться УПУ по значению х2. Поэтому в первой строке таблицы записана пустая МК, передающая управление A1=0011 при х2=0 и А2=0100 при х2=1.
При x1=1 осуществляется переход к операторной вершине, в которой записана МО у1. Поэтому во второй строке таблицы записана МК, формирующая выходной сигнал у1 и осуществляющая БПУ в следующую свободную ячейку с адресом 0101. Таким образом, во второй строке в поле
Soп единица записана в первом разряде, соответствующем сигналу у1, т.е. Soп=100 0000, а в поле X записаны нули, т.к. переход к следующей МК
безусловный и никакое ЛУ не проверяется. В поле A1 записан адрес 0101, а значение адреса безразлично (переход по А2 не происходит).
При х2=0 выполняется УПУ по значению х3. МК, проверяющая значение х3 записана в третьей строке таблицы. При этом, если х3=0, то происходит БПУ к вершине, в которой записаны у4 и у5, а при х3= 1 - БПУ к вершине у3. Поэтому в третьей строке записана пустая МК (Soп=0) с проверкой условии х3 (Х=011) и адрес А1=0101. Этот адрес был ранее зарезервирован для МК, формирующей сигналы у4 и у5. В поле А2 записан адрес следующей свободной ячейки, т.е. А2=0110.
При х2=1 выполняется МК, формирующая МО у2 и БПУ по адресу 0101 т.е. A1=0101 в четвертой строке таблицы и Sоп=010 0000 (у2=1).
Наконец, в МК по адресу 0101 записана сама МК формирующая МО у4 и у5 и УПУ по значению х4. Таким образом, в поле Sоп записано Sоп=000 1100. Из графа следует, что при х4=0 выполняется возврат в начало МП. Однако указать в поле А1 адрес нулевой ячейки нельзя, т.к. по Анач=0000 происходит останов МП. Поэтому в пятой строке в поле А1 указан адрес следующей свободной ячейки , т.е. A1=0111, в которой повторено содержимое нулевой ячейки, а в поле А2 записан адрес А2=1000.
В шестой строке (строке 0110) записана МК формирующая МО у3 и осуществляющая БПУ к МК из пятой строки.
В седьмой строке, как уже отмечалось, повторено содержимое нулевой ячейки.
В восьмой строке записана пустая МК (с Sоп=000 0000), проверяющая ЛУ х5 с УПУ по адресам А1=1001 и А2=1010.
В девятой строке записана пустая МК поверяющая ЛУ х6 и с УПУ по адресам А1=1011 иА2=1100.
В десятой строке записана МК, формирующая МО y1, т.е. Sоп=l00 0000 и проверяющая следующее условие х6 с последующим УПУ по адресам А1=1011 и А2=1100.
В одиннадцатой строке записана пустая МК, проверяющая х7 и с УПУ по адресам А1=1101 и А2=1110.
В двенадцатой строке записана МК, формирующая у6, проверяющая х7 и с УПУ по адресам А1=1101 и А2=1110.
В тринадцатой строке записана пустая МК, осуществляющая БПУ на конечную вершину с адресом Анач=0000 и остановом.
В четырнадцатой (последней) строке записана МК, формирующая у7, с выходом на конечную вершину с адресом Анач=0000 и остановом.
