Используем MPL в синхронном режиме (FTX=L, FTY=L, FTP=L, FTI=L). Так как не предполагается использование MPL в режиме «ведомый», то SLAVE=L. Входы разрешения загрузки регистров входных данных (ENXA#, ENXB#, ENYA#, ENYB#) и вход мультиплексора регистра промежуточных результатов (TSEL) управляются соответствующими битами микрокоманды. Разрешаем загрузку регистров инструкций, произведения и промежуточных результатов (ENI=L, ENT=L, ENP= L). Так как в данном проекте не используется контроль паритета для данных, входы и выходы PRERR, PP0-3, PX0-3, PY0-3 не используются. Так как на MPL выполняем только целочисленные операции и не выполняем операции над дробными числами, то ACC0=L, ACC1=L, FA=H, PSLE0=L, PSEL1=L, TCX=L, TCY=L. В связи с использованием MPL для умножения двойной точности – RND=L. Вход разрешения вывода произведения через порт P управляется соответствующим разрядом микрокоманды, так как на Y – шину помимо MPL выводит результат и ALU.
Структурная схема ОБ прилагается (рис. 1).
5. Логика сдвигов:
СБИС ЦПЭ Am29C332 содержит групповой сдвигатель, представляющий собой 64-разрядную комбинационную схему, построенную из мультиплексоров. Перед использованием в АЛУ операнд А или В на шине DA или DB может быть сдвинут в одном такте влево, вправо или циклически на заданное количество разрядов, равное параметру сдвига P.
Параметр сдвига задается в дополнительном коде в соответствии с таблицей 1 и под управлением бита инструкции I8 может выбираться P – MUX из двух источников: из МПП со входов P0-5 при I8=L, либо из статусного регистра, если I8=H. Когда I8=H, код параметра сдвига замещается кодом PR0-5 из нулевого байта статусного регистра. В таблице 1 положительные значения Р соответствуют сдвигу влево (для P5=1, Pr5=1).
Сдвигатель АЛУ выполняет правосторонний сдвиг на два разряда для поддержки алгоритма умножения, сдвиг на один разряд влево для алгоритма деления, а также сдвиги влево/вправо на один разряд.
Таблица 1 |
|
Кодировка параметра сдвига Р |
|
ВходыР5Р4Р3Р2Р1Р0 |
Значение P, бит |
0 0 0 0 0 0 0 |
0 |
0 0 0 0 0 0 1 |
1 |
0 0 0 0 0 1 0 |
2 |
…………… |
.. |
0 1 1 1 1 1 1 |
31 |
1 0 0 0 0 0 0 |
-32 |
1 0 0 0 0 0 1 |
-31 |
…………… |
.. |
1 1 1 1 1 1 1 |
-1 |
6. Формат статусного регистра (регистра слова состояния).
Вся необходимая информация о выполняемой в СБМС операции сохраняется в 32-разрядном регистре состояния по окончании каждого микроцикла, что делает возможным прерывание АЛУ в каждом цикле.
Регистр состояния может быть загружен с шины DA или с шины DB и прочитан на Y-шину для сохранения слова состояния во внешнем файле регистров. При загрузке регистра указывается байтовая ширина для задания обнавляемых в регистре байтов. Загрузка возможна, если HOLD=L (пассивен). Формат регистра состояния дан в таблице 2.
Назначение разрядов регистра состояния.
Номер байта |
Номер разряда |
Обозначение |
Назначение |
Примечание |
0 |
0-5 |
PR0-PR5 |
Регистр позиции (параметры сдвига) |
Разряды (0:5) доступны для записи и чтения |
6 7 |
PR6 PR7 |
Не используется |
||
1 |
8-12 |
WR0-WR4 |
Регистр ширины поля маски |
Разряды (8:12) доступны для записи и чтения |
13 |
#C+Z |
Беззнаковое меньше или равно |
Разряды (13:15) доступны только для чтение на Y-шину с помощью команды выделения статуса |
|
14 |
NÅV |
Знаковое меньше |
||
15 |
(NÅV)+Z |
Знаковое меньше или равно |
||
2 |
16 |
C |
Перенос |
|
17 |
N |
Отрицательный |
Любой бит (16:22) может устанавливаться командой SETBITSTAT или сбрасываться командой RSTBITSTAT |
|
18 |
V |
Переполнение |
||
19 |
Z |
Ноль или равно |
||
20 |
L |
Бит связи (сдвига) |
||
21 |
M |
Бит множителя для умножения или результат сравнения знаков для деления |
||
22 |
S |
Знак частичного остатка для беззнакого деления |
||
23 |
0 |
Константа 0 |
||
3 |
24-31 |
NC0-NC7 |
Десятичные переносы для BCD-арифметики |
Используются во втором цикле выполнения операций BCD-арифметики |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.