Курсовик ТА Каржавин (1082217), страница 2
Текст из файла (страница 2)
-
К – код операции (0 – первая, 1 – вторая).
-
S – команда начала новой операции.
-
Запись и считывание информации будет происходить по 32 разрядной шине ввода/вывода.
-
После завершения операции результат будет выдаваться на шину ввода/вывода до подачи сигнала начала новой операции.
Операционный автомат № 1
Первый операционный автомат должен находить среднее арифметическое двух чисел в дополнительном коде.
Числа 32 разрядные. Первый разряд знаковый.
Алгоритм нахождения среднего арифметического:
-
Сложение двух чисел.
-
Деление суммы на два, используя косую передачу со сдвигом в сторону младшего разряда. Освободившийся разряд заменяется на 0 в случае сложения чисел с разными знаками, и на перенос с сумматора в случае сложения чисел с одним знаком.
Составим блок-схему преобразования:
Р – знаковые разряды чисел А и В одинаковы.
(1 – да. 0 – нет.)
Разработка функциональной схемы
-
Регистры А и В используются для записи исходных чисел.
-
Сумматор используется для сложения этих чисел.
-
Регистр В используется для записи ответа.
-
Элемент М2 и мультиплексор выбирают, заменять старший разряд после сдвига суммы на 0 или перенос из сумматора.
Управляющие сигналы:
Y1 – разрешение на запись в RG_A (0 – нет, 1 – да)
Y2 – разрешение на запись в RG_В (0 – нет, 1 – да)
Y3 – разрешение на запись в RG_С (0 – нет, 1 – да)
Описание работы автомата
Перед началом сложения необходимо записать в регистры оба числа. Во время записи второго числа нужно подать сигнал на запись ответа. Поскольку происходит сдвиг числа в сторону младшего разряда, происходит потеря младшего разряда и вычисление получается с точностью до целых. Для избежания потери младшего разряда можно вывести его вместе с шиной выхода.
Операционный автомат № 2
Второй операционный автомат должен реализовывать возведение в квадрат числа с плавающей точкой.
Алгоритм возведения в квадрат:
-
Сумма равна нулю. А и В равны числу.
-
Если ещё не прошло 23 такта, то, если младший разряд B =1 прибавляем к S A, если нулю, то не прибавляем.
-
Сдвигаем вправо S и В.
-
Повторяем 2 и 3 пока не пройдет 23 такта. Когда пройдёт умножаем порядок на 2 и пишем ответ.
Алгоритм нормализации мантиссы:
-
Если старший не знаковый разряд мантиссы не равен 1 то сдвигаем мантиссу влево и уменьшаем порядок на единицу.
-
Если равен то завершаем нормализацию, если не равен, то повторяем пункт 1 пока не будет равен. (Поскольку число возводится в квадрат, то результат всегда положителен и нормализация отрицательной мантиссы не рассматривается.)
Составим блок-схему преобразования:
Разработка функциональной схемы
-
Регистры А и В используются для записи исходного числа. Регистр S для записи мантиссы ответа. RG2 для записи всего ответа.
-
Счётчик используется для определения того, что прошло 24 такта.
-
Сумматор складывает S и А. Мультиплексор выбирает, прибавлять ли А в соответствии со старшим разрядом В.
-
Входное число имеет разрядность 32. Выходное – 34 (два разряда на случай переполнения мантиссы и порядка при возведении в квадрат).
-
В ответ записывается 1 разряд – знак (всегда 0), 9 разрядов порядка и 24 разряда мантиссы.
Управляющие сигналы и признаки:
Y1 – разрешить синхросигнал на RG_B (0 – нет, 1 – да). Y3 – разрешить синхросигнал на RG_S (0 – нет, 1 – да)
Y2 – разрешить синхросигнал на RG_A (0 – нет, 1 – да). Y4 – разрешить сдвиг на RG_A (0 – запись, 1 – сдвиг)
Y5 – разрешить уменьшение адреса. Y6 – разрешить синхросигнал на RG_2 (0 – нет, 1 – да)
R – обнуление RG_S и СТ. E – признак окончания умножения.
N – признак завершения нормализации. OF – признак переполнения в мантиссе или порядке.
Описание работы автомата
Перед началом сложения необходимо записать в регистры А и В исходное число. Следующие 23 такта автомат должен сдвигать В и переписывать S пока не будет условия Е. После этого происходит нормализация (сдвиг S вправо пока не будет 1 в 21 разряде и уменьшение порядка на 1). (В 21 разряде а не в 22 потому что УА нужен 1 такт чтобы переключиться. Когда УА изменит управляющие сигналы пройдет еще один такт за который произойдет последний сдвиг и 1 будет в 22 разряде. По этой же причине условие окончания умножения СТ=22 а не 23.) Умножение порядка на 2 реализовано при помощи косой передачи с потерей 6го разряда и дописыванием нуля справа. Если 6ой разряд был значащим, его равенство знаковому разряду определяет схема с М2, то произошло переполнение.
Управляющий автомат
По условию должен быть управляющий автомат с регулярной адресацией, последовательный вариант. В этой схеме при разветвлении процесса вычислений пара альтернативных адресов получается следующим образом: один адрес всегда на единицу больше, чем текущий (т.е. изменяется «регулярным» образом), второй адрес - произвольный и содержится вместе с микрокомандой в микроинструкции.
Элементом, «вычисляющим» адрес, служит счетчик, управляемый входным для УА сигналом. При различных значениях входного сигнала счетчик выполняет две функции: либо прибавляет единицу к значению, которое хранилось в счетчике и являлось текущим адресом, либо загружается значением адреса из управляющей памяти.
В схему введен элемент М2, позволяющий инвертировать значение входного сигнала, что облегчает распределение микроинструкций по ячейкам управляющей памяти.
Работой управляющего автомата должны управлять входные сигналы.
К – код операции (0 – операция 1, 1 – операция 2).
E – завершение операции 2 (0 – нет, 1 – да).
S – сигнал о начале операции.
OF – переполнение в операции 2 (0 – нет, 1 – да).
В каждой строке таблицы ROM пишем: Y – микрокоманда, H – новый адрес входного сигнала, который автомат будет использовать на следующем такте (0 – переход в следующий адрес, 1 – переход в текущий S адрес), S – новый адрес перехода, если не происходит перехода в следующий по счету адрес, e – инверсия входного сигнала в следующем такте (0 – нет, 1 – да), N – текущая операция (0 – первая, 1 – вторая).
Таблицы заполнения памяти
M | Y1 | Y2 | Y3 | Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | R | D | OP |
M0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | x |
M1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | x |
M2 | 1 | 0 | 0 | x | x | x | x | x | x | 0 | 0 | 0 |
M3 | 0 | 1 | 1 | x | x | x | x | x | x | 0 | 1 | 0 |
M4 | x | x | x | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
M5 | x | x | x | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
M6 | x | x | x | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 |
M7 | x | x | x | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Таблица заполнения ROM | |||||
A | S | H | e | Y | |
Начало | 000 | 000 | 001 | 0 | M0 |
Выбор операции | 001 | 100 | 010 | 1 | M1 |
Запись А | 010 | xxx | 000 | 1 | M2 |
Запись В и результата | 011 | 000 | 000 | 0 | M3 |
Запись А и В | 100 | xxx | 000 | 1 | M4 |
Умножение | 101 | 101 | 011 | 0 | M5 |
Нормализация | 110 | 110 | 100 | 0 | M6 |
Запись результата | 111 | xxx | 000 | 1 | M7 |