- •Часть II
- •4. Реализация простых операций
- •4.1.Упровление входными и выходными регистрами
- •4.2. Управление микропроцессором
- •II. Эксперементальная часть
- •Реализация умножения и деления двоичных чисел на микропроцессорной установке.
- •5.3.1 Алгоритм операции деления
- •5.3.4. Микропрограммная реализация деления
- •Лабораторная работа № 2
Реализация умножения и деления двоичных чисел на микропроцессорной установке.
ОСБЕННОСТИ МИКРОПРОЦЕССОРНОЙ РЕАЛИЗАЦИИ УМНОЖЕНИЯ И ДЕЛЕНИЯ ДВОИЧНЫХ ЧИСЕЛ
Микропроцессорная установка даёт возможность выполнить операции умножения и деления двоичных чисел микрокомандным и микропрограммным способами. В МП последовательно вводятся и выполняются МК согласно алгоритму реализуемой операции. При втором способе составляется микропрограмма, представляющая собой набор МК, которые заносятся в ЗУ и считываются по мере их выполнения. В микропрограммном режиме можно реализовать умножение целых двоичных чисел без знака, быстрое умножение по алгоритму Бута(в дальнейшем не используется) и деление двоичных чисел.
Как будет показано ниже, в алгоритмах умножения и деления двоичных чисел используются операции сдвига, после выполнения которых выполняется контроль младшего разряда дополнительного регистра (ДРО), или выхода переноса АЛУ (Пвых) и в зависимости от их значений принимается решение на выполнение следующей операции. Так как МК исполняется на втором такте, то до завершения операции сдвига неизвестно, какую следующую МК необходимо вводить в МП. Это обстоятельство вынуждает использовать пустую операцию.
Для реализации микрокомандного способа умножения и деления следует составить табличный алгоритм.
Отличие микропрограммного способа реализации от микрокомандного проявляется в автоматизации принятия решения о следующей микрокоманде, что обеспечивает БМУ. Поскольку для умножения и деления 8-разрядных операндов требуется восемь операций сдвига, то для их подщёта в одном из регистров общего назначения организуется счётчик сдвигов, в который заносится число 248(код – 11111000). После восьми сдвигов счётчик переполняется, фиксируя число 256 или код 100000000. На выходе переноса АЛУ появляется сигнал Пвых = 1, который индицирует окончание программы.
Микропрограмму целесообразно представить в виде таблицы, содержащей 26 колонок. Нулевая колонка отводится под номера ячеек ЗУ, в которых хранится МК микропрограммы, последняя колонка – под пояснения. Основой для составления микропрограммы служит блок-схема алгоритма выполняемой операции. В первые 9 колонок таблицы заносят код МК МП, в колонках с 10 по 19 располагают управляющую часть МК или операнды, а в колонках с 20 по 24 размещают адресную часть. Для каждого разряда МК проставляют единичные или нулевые биты информации. Нулевые биты в таблицу можно не заносить. Особенности составления микропрограммы для умножения и деления двоичных чисел проиллюстрированы ниже на конкретных премерах.
УМНОЖЕНИЕ ДВОИЧНЫХ ЧИСЕЛ
Алгоритм умножения
При реализации умножения двух целых положительных двоичных чисел X и Y на МП используется регистр двойной длинны, составленный из рабочего (РР) и дополнительного (ДР) регистров. В РР размещается сумма двуз частичных произведений, а в ДР – множитель Y. Множимое X заносится в один из РОН, например, в Р0; РР устанавливается в нулевое исходное состояние. Чтобы не было переполнения РР при получении сумм частичных произведений, число разрядов множимого X не должно превышать семи. Поэтому старшие разряды X и Y используются как знаковые и в них размещаются нули.
Процедура умножения состоит в следующем.
Перед каждым циклом i производится анализ текущего разряда множителя Y – младшего разряда ДР (ДР0i), который можно контролировать на индикаторе выходного регистра данных (РД), или на гнезде СДВИГ ВПРАВО БМУ. Если ДР0i=0, то производится логический сдвиг вправо РР, ДР с помощью МК (РР,ДР)СЛП-->РР,ДР. При ДР0i=1 выполняется комбинация сложения содержимого РР и Р0 с занесением суммы частичного произведения в РР, и сдвига вправо РР, ДР, для чего используется МК (РР+Р0,ДР)САП-->РР,ДР. После 8-го сдвига в РР оказываются старшие разряды произведения X и Y, а в ДР – младшие разряды. С помощью МК ДР-->ШВых содержимое ДР выводится на индикатор выходного регистра МП ВЫХОД ИНФОРМАЦИИ, при этом содержмое ДР автоматически выводится на индикатор ВЫХОД АДРЕСА(РР-->ШАдр), если гнездо ПРИОРИТЕТ является свободным (ПР=0).
Иллюстрация алгоритма
Принимаем X=00111111 (63), Y=00110100 (52), тогда X х Y = 0000110011001100 (3276). В табл. 5.1. приведена последовательность действий, приводящих к указанному результату. Для наглядности младший разряд ДР(ДР0i) вынесен в отдельную графу.
Табл. 5.1
-
i
M0i
PP ДР
ДР0i
M0i+1
0000000 00110100
0
Сдв.1
1
Сдв.1
0000000 00011010
0
Сдв.2
2
Сдв.2
0000000 00001101
1
Слож.+Сдв.3
3
Слож.
00111111
+
00111111
Сдв.3
00011111 10000110
0
Сдв.4
4
Сдв.4
00001111 11000011
1
Слож.+Сдв.5
5
Слож.
00111111
+
01001110
Сдв.5
00100111 01100001
1
Слож.+Сдв.6
6
Слож.
00111111
+
01100110
Сдв.6
00110011 00110000
0
Сдв.7
7
Сдв.7
00011001 10011000
0
Сдв.8
8
Сдв.8
00001100 11001100
Примечания : i – номер цикла при реализации алгоритма умножения на МП; М0i – микрооперация, используемая в i-ом цикле алгоритма; М0i+1 – микрооперация, рекомендуемая по результатам анализа ДР0i для исполнения в i+1 цикле алгоритма. После 8-ого ЦИКа в РР, ДР фиксируется результат.
Микрокомандная реализация умножения
Рассмотрим особенности реализации умножения двоичных чисел путём последовательного введения и исполнением МК микропроцессором с осуществлением контроля состояний РР, ДР после загрузки и каждого цикла. Для удобства представим алгоритм в табличном виде.
Табл. 5.2
Операция |
Команда |
Код МК П |
Сброс РР |
0PP |
0000 01 000 1 |
Загрузка Y в ДР через вх. РД |
ШВхДР |
0000 11 010 0 |
Загрузка X в Р0 через вх. РД |
ШВхР0 |
1111 10 000 0 |
Контроль РР, ДР |
ДРШВых, PPШАдр |
1110 11 010 0 |
Если ДР0i=0, то сдв. РР, ДР |
(РР,ДР)СЛПРР,ДР |
1100 11 101 0 |
Если ДР0i=1, то сл.+сдв. |
(PP+P0,ДР)САПРР,ДР |
1011 10 000 0 |
Контроль РР, ДР |
ДРШВых, РРШАдр |
1110 11 010 0 |
В табл. 5.3 приведён алгоритм для рассмотренного выше примера.
Табл. 5.3
k |
i |
Установка |
Контроль |
Пояснения | ||
П |
ШВх |
Код МК |
ДР0 | |||
1 |
|
0 |
|
0000 01 000! |
|
0РР |
2 |
|
1 |
|
0001 11 010! |
|
ШВхДР |
3 |
|
0 |
00110100 |
1111 10 000! |
|
ШВх=Y, ШВхР0 |
4 |
|
0 |
00111111 |
1110 11 010! |
0 |
ШВх=X, РДШВых |
5 |
1 |
0 |
|
1100 11 101! |
|
(РР,ДР)СЛПРР,ДР |
6 |
|
0 |
|
1110 11 010! |
0 |
ДРШВых, РРШАдр |
7 |
2 |
0 |
|
1100 11 101! |
|
(РР,ДР)СЛПРР,ДР |
8 |
|
0 |
|
1110 11 010! |
1 |
ДРШВых, РРШАдр |
9 |
|
0 |
|
1011 10 000! |
|
(РР+Р0,ДР)САПРР,ДР |
10 |
|
0 |
|
1110 11 010! |
0 |
ДРШВых, РРШАдр |
11 |
4 |
0 |
|
1100 11 101! |
|
(РР,ДР)СЛПРР,ДР |
12 |
|
0 |
|
1110 11 010! |
1 |
ДРШВых, РРШАдр |
13 |
5 |
0 |
|
1011 10 000! |
|
(РР+Р0,ДР)САПРР,ДР |
14 |
|
0 |
|
1110 11 010! |
1 |
ДРШВых, РРШАдр |
15 |
6 |
0 |
|
1011 10 000! |
|
(РР+Р0,ДР)САПРР,ДР |
16 |
|
0 |
|
1110 11 010! |
0 |
ДРШВых, РРШАдр |
17 |
7 |
0 |
|
1100 11 101! |
|
(РР,ДР)СЛПРР,ДР |
18 |
|
0 |
|
1110 11 010! |
0 |
ДРШВых, РРШАдр |
19 |
8 |
0 |
|
1100 11 101! |
|
(РР,ДР)СЛПРР,ДР |
20 |
|
0 |
|
1110 11 010! |
|
ДРШВых, РРШАдр |
Примечания: k – порядковый номер шага реализуемого алгоритма или введённой в МП микрокоманды; i – порядковый номер цикла; восклицательным знаком «!» обозначена подача СИМ на гнездо СИНХР микропроцессора.
Микропрограммная реализация умножения
Микропрограмма составляется на основании блок-схемы алгоритма умножения двоичных чисел, приведённой на рис. 5.1 (цифры в скобках указывают номера ячеек, где размещаются МК или операнды), и оформляется в виде табл. 5.4.
Как следует из графы «Пояснения» табл. 5.4, в ячейках 1, 4, 6 расположены операнды (младший разряд в Р10, старший в Р17), при этом Р18=1 отражает необходимость их пересылки в соответствующие регистры; в остальных ячейках – коды микрокоманд микропроцессора и сопутствующие им признаки.
Табл. 5.4
Микропрограмма реализуется пошаговым исполнением её отдельных микрокоманд согласно указанных в ячейках адресам. Как видно из адресной части микропрограммы, в ячейке 0 указан адрес ячейки 1, в ячейке 1 – адрес ячейки 2 и т.д. По этому до 6 ячейки включительно микрокоманды исполняются последовательно. В ячейке 6 указан адрес ячейки 12, где хранится МК вывода содержимого ДР на ШВых (а также РР на ШАдр при сигнале ПР=0) и адрес следующей МК – ячейка 7. Микрокомандной ячейки 7 проверяется младший разряд ДР0 дополнительного регистра, при этом адрес 01000 (8) заносится в регистр информации БМУ. Если ДР0 = 0, то он сохраняется и на следующем шаге даётся МК ячейки 8, если же ДР0=1, то счетчик адреса БМУ получает приращений +1 и выполняется МК ячейки 9. Из ячеек 8, 9 осуществляется переход в ячейку 10, по команде которой содержимое счётчика циклов Р1 увеличивается на +1. В ячейке 11 хранятся МК для вывода содержимого ДР и РР на ШВых и ШАдр и данные управляющей части МКМПр для проверки сигнала ПВых – выхода переноса АЛУ. При пвых=0 из ячейки 11 с помощью БМУ совершается переход к ячейке 12, где указан адрес ячейки 7 для выполнения следующего цикла программы; при ПВых=1 – к ячейке 13 для вывода информации на ШВых, ШАдр и окончания программы.
ДЕЛЕНИЕ ДВОИЧНЫХ ЧИСЕЛ