Блок – схема алгоритма работы микропрограммного устройства управления.
Z1
Z2
Z3
Z4
2. МК с одним адресом в адресном поле. Адресация МК- принудительная с одним адресом.
Sоп | X | А' | β |
При БПУ X=0 и АСЛ=А'β
При УПУ X=f и АСЛ=А'Xf
Кодирование МК – горизонтальное.
Микропрограммные устройства управления с принудительной адресацией и одним адресом работает в соответствии с микропрограммой, имеющей следующий вид:
Z1
Z2
Z3
Z4
3. Естественная адресация команд.
Форматы микрокоманд (МК)
Операционная МК:
Р1
Управляющая МК:
Р1
Р1 – признак, с помощью которого различаются эти две микрокоманды.
Алгоритм работы микропрограммного устройства управления
имеет следующую граф - схему:
Р2=1 при БПУ (поле Х=0)
Р2=0 при УПУ (поле Х≠0)
Асл = СТАМК + 1, если операционная МК
Асл = СТАМК + 1, если УПУ при условии хi=l
Асл = А при БПУ и при УПУ, если хi=1
X1=P1
X2=P2
X3=xi
X4=сигнал «останов»
Z1
Z2
Операционная МК 0 1 Управляющая МК
Z3 1 БПУ
Z4
0 УПУ
0 1
Z4 Z5
Структурная схема микропрограммного устройства управления с
естественной адресацией имеет следующий вид:
Примеры реализации некоторых алгебраических операций.
Пример 1.
Сложение - вычитание в дополнительном коде чисел, поступающих в
дополнительном коде. Результат выдается в дополнительном
коде(способ 1а)
1. Если S=A+B, то [S]доп=[А]доп+[B]доп. Сложение по mod 2m+1
2. Если 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
В этом способе знаковые разряды слагаемые участвуют в операции и
поэтому переполнение разрядной сетки определяется с помощью одного из
следующих методов:
1.Признак переполнения формируется в случае, если знаки А и В совпадают,
но не совпадают со знаком суммы S.
2. Признак переполнения формируется, если не совпадают переносы в
знаковый разряд П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 - прямой код второго слагаемого В.
Вычитание сводится к сложению путем предварительного изменения знака
слагаемого В на противоположный.
Сложение выполняется следующим образом:
1. Слагаемое А переводится в модифицированный дополнительный код.
2. В регистре 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 из
модифицированного дополнительного кода в прямой код, если на втором
этапе не произошло переполнение разрядной сетки (ПРС).
Список условий:
X1= 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
0 Вычитание
у4 Изменение знака у второго
слагаемого В,если выполняется
0 операция вычитания.
1
y5 Образование
дополнительного кода
y6 слагаемого А, если А<0.
0 1
y7 y8 Выполняется
операция
суммирования
1 0
Знаки Р1 и Р2 Знаки Р1 и Р2
разные одинаковые 0
если S=-2m 1
Образование
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- содержимое счетчика циклов СТ
X2= 0, если содержимое счетчика СТ больше нуля
1, если содержимое счетчика СТ равно нулю
Х3= Р2 +Р3- сумма по модулю 2 знаковых разрядов сомножителей В и А
y1
y2 Запись сомножителей
А и В в прямых кодах
y3 в регистры RG3 и RG1
y4 Установка значения
счетчика циклов.
1 Сложение модуля А с
суммой частичных
у5 произведений. П7 – пере-
нос из старшего разряда
сумматора SM.
y6 Сдвиг вправо на один
разряд содержимого
y7 регистров RG1 и RG2;
Вычитание 1 из счетчиков
циклов.
Выход из цикла
у6 Сдвиг вправо на один
разряд.
1 Формирование знака произве-
у8 дения С. 1- если знаки
сомножителей А и В разные.
у9 Выдача результата на шину Z.
Пример 4.
Деление чисел с фиксированной запятой с восстановлением остатка (п=8, т=0). Числа - правильные дроби со знаком (способ 3.1).
Деление С=А/В выполняется на основе школьного алгоритма деления «уголком» и сводится к циклическому вычитанию делителя В из удвоенных частичных остатков (ЧОС) необходимое количество раз. В каждом цикле деления определяется одна цифра частного С.
Список микроопераций
у1: CT:=8;RG1:=0
y2: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).
Список условий:
X1=P1+P2
X2=P3
X3= 1, если СТ=0
0, если СТ>0
X4=P5=RG1(9)
у1
у2
у3
1 Формирование знака
у4 результата С
у5 Пробное вычитание
|A| - |B|
у9 1
у6 Восстановление |A|
у7 Сдвиг влево RG2
у5 Вычитание
у8 Сдвиг RG1
А В С D
A B C D
у6 Восстановление ЧОС
у10
у11 Передача
содержимого RG1 в RG2
у12 Операция
округления
у13 Выдача результата
на шину Z
Построение таблиц микрокоманд.
Рассмотрим пример составления таблицы МК для выполнения
микропрограммы ускоренного умножения.
0 0 0
1 1 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 | 0 0 0 0 0 0 0 | - | х1 | ||||
0 0 0 0 0 0 0 | - | х2 | |||||
1 0 0 0 0 0 0 | ---- | y1 | БПУ | ||||
0 0 0 0 0 0 0 | - | х3 | |||||
0 1 0 0 0 0 0 | ---- | y2 | БПУ | ||||
0 0 0 1 1 0 0 | y4,y5 | х4 | |||||
0 0 1 0 0 0 0 | ---- | y3 | БПУ | ||||
0 0 0 0 0 0 0 | - | х1 | |||||
0 0 0 0 0 0 0 | - | х5 | |||||
0 0 0 0 0 0 0 | - | х6 | |||||
1 0 0 0 0 0 0 | y1 | х6 | |||||
0 0 0 0 0 0 0 | - | х7 | |||||
0 0 0 0 0 1 0 | y6 | х7 | |||||
0 0 0 0 0 0 0 | ---- | - | Ост. | ||||
0 0 0 0 0 0 1 | ---- | 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 и остановом.