Проектирование графа микропрограммы
Граф микропрограммы отличается от блок-схемы алгоритма конкретностью указания действий, учетом особенностей работы, используемых логических схем и требований технического задания.
|
Граф микропрограммы логического сложения/вычитания целых чисел со знаком в прямом коде представлен на рис.7.2. Граф микропрограммы построен на основе блок схемы алгоритма и структурной схемы ОЧ представленных, соответственно на рис. 5.1 и рис.7.1.
Рис. 7.2. Граф микропрограммы логического сложения/вычитания целых чисел со знаком в прямом коде
Первая микрокоманда графа Y1 (?) по сигналу y1 передает первый операнд с шины данных в первый регистр с дублированием знака на триггере знака/переполнения (T&/v):
Вторая микрокоманда Y2 по сигналу y2 переключает вход мультиплексора MSB на шину данных и заносит второй операнд с шины данных ШДс задержкой по заднему фронту сигнала y6(tз):
Y2 = y2, y6(tз)
Третья микрокоманда Y3 по сигналу y4 передает первый операнд на входы сумматора SM. Второй операнд при отсутствии сигнала y5 подается на входы сумматора в прямом коде. Фиксация суммы в регистре второго операнда РегВ производится по заднему фронту сигнала y6(tз).
Переполнение определяется по факту переноса из старшего разряда сумматора. Если единица переноса возникает при сложении, то – это переполнение. Перенос сохраняется как переполнение в триггере переполнения T&/v.
Y3 = y4, y6(tз),
Четвертая микрокоманда Y4 выполняет следующие действия:
· по сигналу y4передает на входы сумматора первый операндв прямом коде без знака,
· по сигналу y5передает на входы сумматора второй операнд в дополнительном коде без знака,
· фиксирует сумму на регистре второго операнда по заднему фронту сигнала y6(tз)
· фиксирует переполнение в триггере переноса T&/v,
Таким образом, микрокоманда Y4 производит вычитание без знаков второго оператора операнда из первого с сохранением результата в регистре второго операнда РегВ, а переноса — в триггере переполненияT&/v:
Y4 = y4, y5, y6(tз),:
Пятая микрокоманда Y5 производит коррекцию знака результата.
При выполнении операции вычитания переполнение не возникает. Но перенос из старшего разряда возможен, если |А| £ |В|. Это случай, когда знак результата сформирован неверно. Для нахождения верного результата нужна его коррекция. Коррекция результата заключается в его инверсии (вычитании из нуля): перенос результат
Сигнал переполнения фиксируется в триггере переполнения T&/v и проверяется после выполнения операции вычитания. При отсутствии переноса производится коррекция результата: триггер переполнения сбрасывается и производится инвертирование знака результата (y7):
Y5 = y7,
Это делается для упрощения сохранения знака результата. Априори результату присваивается знак первого операнда (А). Но на магистральную шину данных знак результата будет передаваться со знакового триггера второго операнда. Такая замена возможна, так как известно соотношение знаков.
Микрокоманда Y6изменяет знак результата, формирует дополнительный код результата и сбрасывает сигнал переполнения (у7):
Y6 = y5, y6(tз), y7,
Микрокоманда Y7 сохраняет результат на шине данных:
Y7 = y3.
Граф микропрограмм имеет четыре вершины проверки условий:
· равенства знаков операндов X1 = X2
· переноса из старшего разряда сумматора X3.
Ниже приводится табл. 9 всех используемых в МП микрокоманд, с указанием всех составляющих микроопераций.
Таблица 9. Микрокоманды устройства алгебраического сложения/вычитания целых чисел со знаком в прямом коде.
МК | Микрооперации | Описание |
Y1 | y1: РегА:= ШД[0÷7]; T&/v := РегА [0]. | Занесение первого операнда в регистр c дублированием знака в регистр знака/переполнения. |
Y2 | у2:MSB:=ШД[0÷7]; y6(tз):РегВ[0÷7]:= SM(Вых) | Переключение мультиплексора на шину данных; Занесение второго операнда в регистр с шины данных позднему фронту сигнала управления.. |
Y3 | у4: SM(B):= РегВ[1÷7]; SM(А):= РегА[1÷7]; y6(tз):РегВ[1÷7]:= SM(Вых) T&/v := SM(P1). | Подача на вход сумматора SM(А) 2-го операнда. Подача на вход сумматора SM(В) 1-го операнда. Подача с выхода сумматора результата на регистр второго операнда и знака на триггер знака/переполнения. |
Y4 | y4: SM(А):= РегА[1÷7]; y5,: SM(B):= ; SM(р7):= 1 y6(tз): РегВ[1÷7]:=SM(Вых) T&/v := SM(P1). | Подача на вход сумматора SM(В) 1-го операнда Подача на вход сумматора SM(А) 2-го операнда с отрицательным знаком. Подача с выхода сумматора результата на регистр второго операнда и знака на триггер знака/переполнения.. |
Y5 | у7: T&v:= 0 у : РегА[0]:= | Сброс триггера переполнения (T&v) и изменение знака результата |
Y6 | y5,: SM(B):= ; SM(р7):= 1 y6tз : РегВ[1÷7]:= SM(Вых) у7 : РегА[0]:= 0 | Коррекция результата (перевод результата в дополнительный код с изменением знака). Сброс триггера переполнения (T&v) |
Y7 | у3 : ШД[0÷8]:= := РегА[0]|РегВ[0÷7]| T&v | Помещение на шину данных результата операции со знаком и признака результата (переполнение). |
Дата добавления: 2022-02-05; просмотров: 316;