Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 методичка. Р-РС-71.doc
Скачиваний:
45
Добавлен:
20.05.2014
Размер:
3.38 Mб
Скачать
      1. Реализация умножения и деления двоичных чисел на микропроцессорной установке.

    1. ОСБЕННОСТИ МИКРОПРОЦЕССОРНОЙ РЕАЛИЗАЦИИ УМНОЖЕНИЯ И ДЕЛЕНИЯ ДВОИЧНЫХ ЧИСЕЛ

Микропроцессорная установка даёт возможность выполнить операции умножения и деления двоичных чисел микрокомандным и микропрограммным способами. В МП последовательно вводятся и выполняются МК согласно алгоритму реализуемой операции. При втором способе составляется микропрограмма, представляющая собой набор МК, которые заносятся в ЗУ и считываются по мере их выполнения. В микропрограммном режиме можно реализовать умножение целых двоичных чисел без знака, быстрое умножение по алгоритму Бута(в дальнейшем не используется) и деление двоичных чисел.

Как будет показано ниже, в алгоритмах умножения и деления двоичных чисел используются операции сдвига, после выполнения которых выполняется контроль младшего разряда дополнительного регистра (ДРО), или выхода переноса АЛУ (Пвых) и в зависимости от их значений принимается решение на выполнение следующей операции. Так как МК исполняется на втором такте, то до завершения операции сдвига неизвестно, какую следующую МК необходимо вводить в МП. Это обстоятельство вынуждает использовать пустую операцию.

Для реализации микрокомандного способа умножения и деления следует составить табличный алгоритм.

Отличие микропрограммного способа реализации от микрокомандного проявляется в автоматизации принятия решения о следующей микрокоманде, что обеспечивает БМУ. Поскольку для умножения и деления 8-разрядных операндов требуется восемь операций сдвига, то для их подщёта в одном из регистров общего назначения организуется счётчик сдвигов, в который заносится число 248(код – 11111000). После восьми сдвигов счётчик переполняется, фиксируя число 256 или код 100000000. На выходе переноса АЛУ появляется сигнал Пвых = 1, который индицирует окончание программы.

Микропрограмму целесообразно представить в виде таблицы, содержащей 26 колонок. Нулевая колонка отводится под номера ячеек ЗУ, в которых хранится МК микропрограммы, последняя колонка – под пояснения. Основой для составления микропрограммы служит блок-схема алгоритма выполняемой операции. В первые 9 колонок таблицы заносят код МК МП, в колонках с 10 по 19 располагают управляющую часть МК или операнды, а в колонках с 20 по 24 размещают адресную часть. Для каждого разряда МК проставляют единичные или нулевые биты информации. Нулевые биты в таблицу можно не заносить. Особенности составления микропрограммы для умножения и деления двоичных чисел проиллюстрированы ниже на конкретных премерах.

  1. УМНОЖЕНИЕ ДВОИЧНЫХ ЧИСЕЛ

  1. Алгоритм умножения

При реализации умножения двух целых положительных двоичных чисел X и Y на МП используется регистр двойной длинны, составленный из рабочего (РР) и дополнительного (ДР) регистров. В РР размещается сумма двуз частичных произведений, а в ДР – множитель Y. Множимое X заносится в один из РОН, например, в Р0; РР устанавливается в нулевое исходное состояние. Чтобы не было переполнения РР при получении сумм частичных произведений, число разрядов множимого X не должно превышать семи. Поэтому старшие разряды X и Y используются как знаковые и в них размещаются нули.

Процедура умножения состоит в следующем.

Перед каждым циклом i производится анализ текущего разряда множителя Y – младшего разряда ДР (ДР0i), который можно контролировать на индикаторе выходного регистра данных (РД), или на гнезде СДВИГ ВПРАВО БМУ. Если ДР0i=0, то производится логический сдвиг вправо РР, ДР с помощью МК (РР,ДР)СЛП-->РР,ДР. При ДР0i=1 выполняется комбинация сложения содержимого РР и Р0 с занесением суммы частичного произведения в РР, и сдвига вправо РР, ДР, для чего используется МК (РР+Р0,ДР)САП-->РР,ДР. После 8-го сдвига в РР оказываются старшие разряды произведения X и Y, а в ДР – младшие разряды. С помощью МК ДР-->ШВых содержимое ДР выводится на индикатор выходного регистра МП ВЫХОД ИНФОРМАЦИИ, при этом содержмое ДР автоматически выводится на индикатор ВЫХОД АДРЕСА(РР-->ШАдр), если гнездо ПРИОРИТЕТ является свободным (ПР=0).

      1. Иллюстрация алгоритма

Принимаем 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-ого ЦИКа в РР, ДР фиксируется результат.

      1. Микрокомандная реализация умножения

Рассмотрим особенности реализации умножения двоичных чисел путём последовательного введения и исполнением МК микропроцессором с осуществлением контроля состояний РР, ДР после загрузки и каждого цикла. Для удобства представим алгоритм в табличном виде.

Табл. 5.2

Операция

Команда

Код МК П

Сброс РР

0PP

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 – порядковый номер цикла; восклицательным знаком «!» обозначена подача СИМ на гнездо СИНХР микропроцессора.

      1. Микропрограммная реализация умножения

Микропрограмма составляется на основании блок-схемы алгоритма умножения двоичных чисел, приведённой на рис. 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 для вывода информации на ШВых, ШАдр и окончания программы.

    1. ДЕЛЕНИЕ ДВОИЧНЫХ ЧИСЕЛ