Lab4
.pdfЛабораторная работа № 4
Устройство управления микропрограммного типа на примере автомата для управления выполнением косвенного умножения
1. Содержание работы
Рассмотрим алгоритм выполнения косвенного умножения (см. работу № 3) с сигналом начала преобразования (Start)
Рисунок 1 Алгоритм работы управляющего автомата
Рассмотрим структуру управляющего автомата микропрограммного типа для реализации этого алгоритма (рисунок 2).
Yi |
|
ACode |
|
JMP Adr |
|
|
|
|
|
Регистр микрокоманды (РМК)
Память микропрограмм
(ПМП, ROM)
Адрес ПМП
Схема формирования адреса ПМП
Start |
Bn Zero |
JMP Adr |
|
|
Рисунок 2 – Схема устройства управления микропрограммного типа
Микропрограмма хранится в памяти микропрограмм (ПМП), которая представляет собой ПЗУ (ROM). На каждом такте из ПЗУ считывается очередная микрокоманда и загружается в регистр микрокоманды (РМК). В
микрокоманде несколько полей, рассмотренных в таблице 1. Поля Y0, Y1 и
Y2 формируют соответствующие микрооперации, поле ACode ( в данном случае – 3 бита) кодирует вариант формирования адреса следующей микрокоманды в соответствии с таблицей 2, поле JMP Adr представляет собой адрес перехода в ПМП (используется в микрокомандах передачи управления).
Схема формирования адреса ПМП выбирает адрес для ПМП из двух вариантов : либо – текущий адрес + 1 (NEXT), либо – адрес, указанный в поле JMP Adr соответствующей микрокоманды в зависимости от того, какой вариант формирования адреса микрокоманды используется, и какое значение имеют сигналы Start, Bn и Zero, поступающие в устройство.
Эта схема может быть построена на базе счетчика, двухканального многоразрядного мультиплексора и комбинационной схемы, у которой будут 6 входов (ACode2..0 , Start, Bn, Zero) и один выход, управляющий входом выбора мультиплексора (эту схему также можно представить как одноразрядный 3-канальный мультиплексор).
Микропрограмма, реализующая алгоритм косвенного умножения
(рисунок 1), приведена в таблице 3.
Таблица 1 - Формат микрокоманды (и регистра МК)
Y0-Load |
Y1-Add |
Y2-Shift |
ACode2 |
ACode1 |
ACode0 |
JMP Adr (3) |
Таблица 2 - Коды варианта формирования адреса микрокоманды
ACode2 |
ACode1 |
ACode0 |
Вариант формирования адреса |
0 |
0 |
0 |
NEXT (Addr + 1) |
0 |
0 |
1 |
JMP (безусловный) |
0 |
1 |
0 |
JMP on Not Start (JNS) |
0 |
1 |
1 |
JMP on Not Bn (JNB) |
1 |
0 |
0 |
JMP on Not Zero (JNZ) |
Таблица 3 - Микропрограмма косвенного умножения
Адрес |
Y0-Load |
Y1-Add |
Y2-Shift |
ACode |
JMP Adr |
000 |
0 |
0 |
0 |
JNS (010) |
000 |
001 |
1 |
0 |
0 |
NEXT |
000 |
010 |
0 |
0 |
0 |
JNB |
100 |
011 |
0 |
1 |
0 |
NEXT |
000 |
100 |
0 |
0 |
1 |
NEXT |
000 |
101 |
0 |
0 |
0 |
JNZ |
010 |
110 |
0 |
0 |
0 |
JMP |
000 |
2. Порядок выполнения работы :
1.Изучить алгоритм , схему устройства управления (УА) и пример микрокода.
2.Построить схему формирования адреса (СФА) по приведенному описанию.
3.Построить СФА в Quartus II.
4.Построить схему всего устройства в Quartus II
5.Получить временные диаграммы работы устройства
6.Заменить управляющий автомат в косвенном умножителе (работа № 3) на разработанное устройство
7.Написать микропрограмму для полученного автомата для реализации другого алгоритма (по варианту из п. 3). При необходимости скорректировать схему автомата.
3. Варианты заданий для п. 2.6:
Во всех вариантах предполагается создание микропрограммы и получение диаграммы для немного видоизмененного (или совсем другого) алгоритма
1.Алгоритм без проверки сигнала Start
2.Алгоритм с проверкой сигнала Start после Load
3.Алгоритм с округлением (выдается еще один сигнал Y3)
4.Алгоритм сложения двух чисел
5.Алгоритм сдвига на 1 разряд
6.Алгоритм сдвига на 3 разряда
7.Алгоритм умножения на 5
8.Алгоритм сложения со сдвигом
9.Модифицировать микропрограмму для поддержки условий JZ, JB, JStart