Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка__МОЯ.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.03 Mб
Скачать

3 Разработка арифметико-логического устройства

3.1 Общие положения разработки

В соответствии с заданием, арифметико-логическое устройство проектирова­лось как автомат с закрепленными микрооперациями. Данная структура АЛУ позволяет уменьшить сложность при разработке АЛУ, так как для выполнения каждой команды (SBB, IMUL и SAL) разрабатывается свой операционный автомат. Поскольку в АЛУ гипотетического микропроцессора должны выполняться только три команды, то и структурная схема конкретного АЛУ будет проще. Схема данного АЛУ будет отличаться от стандартной схемы АЛУ, синтезированного по способу ОМО.

3.2 Разработка ОА и микропрограммы операции SBB

Команда SBB - выполняет вычитание с займом. Данная команда аналогична SUB, но она вычитает из приемника значение источника и дополнительно вычитает значение флага CF. Ее можно использовать для вычитания 64-битных чисел в EDX:EAX и EBX:ECX аналогично ADD/ADC:

sub eax, ecx

sbb edx, ebx

Формат команды: SBB приемник, источник.

Размер команды: 2 байта.

Схема операционного автомата операции SBB приведена на рисунке 3.1.

Рисунок 3.1 – Схема ОА выполнения микрооперации SBB

Состав:

РП

- регистр приемник

РИ

- регистр источник

РР

- регистр результата

РФ

- регистр флага

БКЗ

- блок контроля знака операндов

ФК

- формирователь кода

КСМ

- комбинационный сумматор

Перечень шин:

ШД

- шина данных

Перечень осведомительных сигналов:

X1 :

БКЗ

- переполнение (перенос/заем)

Перечень микро-операций:

Y1 :

РИ:= ОП2

загрузка в регистр ОП2

Y2 :

РП:= CF

загрузка в регистр РП флага переполнения

Y3 :

КСМ:= РИ + РП

суммирование

Y4 :

ФК:=PP

загрузка в ФК значения PP

Y5 :

РИ:= ОП1

загрузка в регистр ОП1

Y6 :

КСМ:= РИ + ФК

сложение

Y7 :

РР:= КСМ

загрузка в РР результата

Y8 :

CF:= БКЗ

установка флага переноса

Микропрограмма автомата операции SBB, построенная по схеме рисунка 3.1, приведена на рисунке 3.2.

3.3 Разработка ОА и микропрограммы операции IMUL

Команда IMUL – умножение чисел со знаком. Источник (регистр или переменная) умножается на AL, AX или EAX (в зависимости от размера операнда), и результат располагается в AX, DX:AX или EDX:EAX соответственно. Результат может занимать в два раза больше места, чем размер источника. В данном случае приемник автоматически оказывается очень большим. Флаги OF и CF будут равны единице, если это произошло, и нулю, если результат умножения поместился целиком в младшую половину приемника. Значения SF, ZF, AF и PF после команды IMUL не определены.

Формат команды: IMUL источник.

Размер команды: 2 байта.

Схема операционного автомата операции IMUL приведена на рисунке 3.3.

Рисунок 3.2- Микропрограмма выполнения команды SBB

Рисунок 3.3 – Схема ОА микрооперации IMUL

Состав:

РП

- регистр приемник

РИ

- регистр источник

РЧС

- регистр частичных сумм

СЧ

- счетчик

БКЗ

- блок контроля знака операндов

ФК

- формирователь кода

КСМ

- комбинационный сумматор

CДВ

- регистр сдвига

Перечень шин

ШД

- шина данных

Перечень осведомительных сигналов

X1 :

CЧ = 0

- СЧ равен 0 - 1, не равен 0

X2 :

РИ[n] = 0

- множимое положителен

X3 :

СЧ = 1

- СЧ равен 1 - 1, не равен 0

X4 :

РП[n-1] = 0

- старший бит множителя равен 0

Перечень микроопераций

Y1 :

РП := ОП2

Загрузка в регистр РП значения ОП2

Y2 :

РИ := ОП1

Загрузка в регистр БР значения ОП1

Y3 :

РЧС := 0

обнуление регистра РЧС

Y5 :

СДВ := РИ

Заносим в СДВ содержимое РИ

Y6 :

L := L1(СДВ).0

сдвиг влево СДВ на 1

Y7 :

РИ := СДВ

Заносим содержимое СДВ в РИ

Y8 :

СДВ := РИ

Заносим в СДВ содержимое РИ

Y9 :

РП := СДВ

Заносим содержимое СДВ в РП

Y10 :

КСМ := РП + РЧС

выполнить сложение

Y11 :

СДВ := РИ

занести результат в СДВ

Y12 :

РИ := СДВ

занести результат в РИ

Y13 :

РЧС := КСМ

занести результат в РЧС

Y14 :

ФК:= РИ

занести в ФК значение РИ

Y15 :

ФК:= РП

занести в ФК значение РП

Y16 :

КСМ:=ФК+РЧС

выполнить сложение ФК и РЧС

Y17 :

CЧ:= n - 1

установить начальное значение счетчика

Y18 :

ШД:= РЧС[07]

Передать на шину данных младший байт результата

Y19 :

ШД:= РЧС[815]

Передать на шину данных старший байт результата

Y20 :

R := 0.R­1( СДВ)

сдвиг вправо СДВ на 1

Микропрограмма автомата операции IMUL, построенная по схеме рисунка 3.3, приведена на рисунке 3.4.

3.4 Разработка ОА и микропрограммы операции SAL

Команда SAL выполняет арифметический сдвиг влево.

Формат команды: SAL приемник, счетчик.

Размер команды: 2 байта.

Схема операционного автомата операции SAL приведена на рисунке 3.5.

Рисунок 3.5- Схема ОА микрооперации SAL

Рисунок 3.6 – Микропрограмма автомата команды SAL

Состав:

РП

- регистр приемник

СF

- флаг переноса

L

- ячейка спадающего разряда

СЧ

- счетчик

РР

- регистр результата

СДВ

- сдвигающий регистр

Перечень шин

ШД

- шина данных

Перечень осведомительных сигналов

X1 :

m

- количество циклов

X2 :

СЧ := 0

- счетчик равен 0

Перечень микроопераций

Y1 :

РП := ОП1

- загрузка в регистр ОП1

Y2 :

СЧ := 1

- установка счетчика

Y3 :

X := СЧ

- присвоение значения счетчика переменной

Y4 :

СДВ := РП

- заносим ОП в сдвигающий регистр

Y5 :

L:= СДВ

- выполняем сдвиг вправо

Y6 :

СF := СДВ[n]

- устанавливаем регистр флагов

Y7 :

СДВ[0] := 0

- возвращаем в младший бит СДВ значение 0

Y8 :

РР:= СДВ

- запоминаем результат операции

Y9 :

КСМ:=Х+1

- увеличиваем значение сумматора на 1

Y10 :

СЧ:=КСМ

- передаем счетчику значение сумматора

Рисунок 3.4- Микропрограмма автомата команды IMUL

3.5 Структурная схема ОА АЛУ

АЛУ представляет собой ОА с ОМО, способный выполнять требуемые микрооперации SBB, SAL и IMUL. Он содержит в себе элементы, на которых выполняются эти операции, ОА которых представлены на рисунках 3.2, 3.4 и 3.6. Структурная схема операционного автомата АЛУ с ОМО представлена на рисунке 2.7.

Рисунок 3.7 – Схема ОА АЛУ

Состав АЛУ:

КЧ – комбинационная часть (представляет собой набор элементов, выполняющих МО);

Р1 – регистр хранения первого операнда;

Р2 – регистр хранения второго операнда;

Р3 – регистр результата.

Р1: Р3 – составляют запоминающую часть (ЗЧ) ОА.

Перечень шин:

А – шина внешних данных;

X, Y – входные шины КЧ;

Z – выходная шина КЧ;

AZ – входная шина запоминающей части.

Набор микроопераций:

yAZ : AZ:=

{yi} : множество микроопераций КЧ;

{ } : множество микроопераций над входной шиной X КЧ;

{ } : множество микроопераций над входной шиной Y КЧ;

yA : прием сигналов с входной шины A

Осведомительные сигналы:

Xi: осведомительные сигналы результата (знак, переполнение, нечетность) – флаг переполнения OF, флаг нечетности PF, флаг знака SF, флаг переноса CF.

3.6 Микропрограмма работы АЛУ

Микропрограмма работы АЛУ представлена на рисунке 3.8; объединенный ОА АЛУ представлен на рисунке 3.9.

Рисунок 3.8 - Микропрограмма работы АЛУ

На основании ОА для выполнения заданных операций разработаем структуру обобщенного АЛУ, синтезированного по способу обобществленных микроопераций. Синтезированная структура АЛУ показана на рисунке 3.9 .

Рисунок 3.9 - Схема общего ОА АЛУ

В состав общего ОА АЛУ включены:

РП

- регистр приемник

РИ

- регистр источник

РР

- регистр результата

РФ

- регистр флагов

ФК

- формирователь кода

КСМ

- комбинационный сумматор

CДВ

- двунаправленный регистр сдвига

L и R

- ячейки спадающих разрядов

БФКР

- блок формирования коррекции результата

Перечень шин

ШД

- шина данных (является логическим продолжением А-шины процессора

В состав общего ОА АЛУ включены следующие микрооперации:

Y1 :

РП := ШД(ОП1)

загрузка в регистр РП значения ОП2

Y2 :

РИ := ШД(ОП2)

загрузка в регистр РИ значения ОП1

Y3 :

ФК := РП

загрузка в ФК значения РП

Y4 :

ФК := РИ

загрузка в ФК значения РИ

Y5 :

СЧ := n

запись в счетчик значения n

Y6 :

СЧ := СЧ - 1

операция инкремента счетчика

Y7 :

РИ := РФ

копирование регистра флагов в РИ

Y8 :

РИ := РФ

копирование регистра результата в РИ

Y9 :

СДВ := КСМ

передача данных в сдвиговый регистр

Y10 :

R := 1(СДВ).0

сдвиг вправо СДВ на 1

Y11 :

L := 1(СДВ).0

сдвиг влево СДВ на 1

Y12 :

-

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

Y13 :

-

набор микроопераций корректировки результата при выполнении умножения

Y14 :

РФ (СF) := L

запись случаев переноса или займа

Y15 :

РР(0) := L

возврат в младший бит РР при циклических сдвигах

Y16 :

PP(n) := R

возврат в старший бит РР при циклических сдвигах

Y17 :

ШД := РР

возврат на внешнюю шину данных результата из РР

Y18 :

РР := СДВ

передача данных в РР из сдвигающего регистра

Y19 :

АЛУ:=0

указание что АЛУ занято

Y20 :

АЛУ:=1

указание что АЛУ свободно

Перечень осведомительных сигналов полностью повторяет осведомительные сигналы разработанные в ОА для выполнения заданного перечня операций.

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

X1 :

Пуск АЛУ

X2 :

SAL

- выполнение операции SAL

X3 :

SBB

- выполнение операции SBB

X4 :

IMUL

- выполнение операции IMUL