Проектирование процесса для заданной системы команд

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

[Введите текст]

Введение

Микропроцессор — процессор (устройство, отвечающее за выполнение арифметических, логических операций и операций управления, записанных в машинном коде), реализованный в виде одной микросхемы или комплекта из нескольких специализированных микросхем (в отличие от реализации процессора в виде электрической схемы на элементной базе общего назначения или в виде программной модели). Первые микропроцессоры появились в 1970-х годах и применялись в электронных калькуляторах, в них использовалась двоично-десятичная арифметика 4-битных слов. Вскоре их стали встраивать и в другие устройства, например терминалы, принтеры и различную автоматику. Доступные 8-битные микропроцессоры с 16-битной адресацией позволили в середине 1970-х годов создать первые бытовые микрокомпьютеры.

Долгое время центральные процессоры создавались из отдельных микросхем малой и средней интеграции, содержащих от нескольких единиц до нескольких сотен транзисторов. Несмотря на скромное начало, непрерывное увеличение сложности микропроцессоров привело к почти полному устареванию других форм компьютеров. В настоящее время один или несколько микропроцессоров используются в качестве вычислительного элемента во всём, от мельчайших встраиваемых систем и мобильных устройств до огромных мейнфреймов и суперкомпьютеров.

В данном курсовом проекте необходимо разработать микропроцессор, способный выполнять заданные команды (IMUL r16, r/m16 (MOD = 00); FDIV ST (i), ST; JNA rel8) из базовой системы команд микропроцессора Intel 486. Так же для реализации данного проекта выданы необходимые данные для расчета оперативной памяти (V = 4ГБ; ширина выборки 16 бит), для разработки устройства управления (автомат Мура, RS-триггер), микропрограммного устройства управления (вертикальный метод организации операционной части, естественная адресация).

1. Исследовательская часть

1.1 Микропроцессор i486

Intel486 (также известный как i486, Intel 80 486 или просто 486-ой) — 32-битный скалярный x86-совместимый микропроцессор четвёртого поколения, построенный на гибридном CISC-RISC-ядре и выпущенный фирмой Intel 10 апреля 1989 года. Этот микропроцессор является усовершенствованной версией микропроцессора 80 386. Впервые он был продемонстрирован на выставке Comdex Fall, осенью 1989 года. Это был первый микропроцессор со встроенным математическим сопроцессором (FPU). Применялся преимущественно в настольных ПК, в высокопроизводительных рабочих станциях, в серверах и портативных ПК (ноутбуки и лаптопы).

Микропроцессор Intel 486 представляет собой высокопроизводительное устройство, имеющее полную 32-разрядную архитектуру, включая 32-разрядные регистры и шины. Наиболее часто команды выполняются этим микропроцессором за один цикл, что обеспечивает быстродействие, сравнимое с процессорами архитектуры RISC. Микропроцессор i486 использует один источник питания с напряжением 5 В. Типовые значения потребляемой мощности составляют 3…4 Вт в зависимости от тактовой частоты (25…50 МГц).

Микропроцессор i486 содержит на одном кристалле, кроме собственно центрального процессора, также блок обработки данных с плавающей запятой (FPU — Floating Point Unit), устройство управления, диспетчер памяти (MMU — Memory Manager Unit), блок предварительной выборки команд и данных, интерфейс магистрали, кэш-память.

Центральный процессор, в свою очередь, включает в себя арифметико-логическое устройство (АЛУ, или ALU — Arithmetical-Logical Unit), восемь 32-разрядных регистров общего назначения (РОН), многоразрядный сдвигатель (Shifter), используемый не только при отработке команд сдвига, но и при выполнении операций умножения и деления. Блок FPU имеет собственные регистры данных и управления; он работает параллельно с центральным процессором.

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

Диспетчер памяти, состоящий из блока сегментации и блока страничной адресации, осуществляет формирование физического адреса ячейки памяти. Диспетчер обеспечивает два режима работы микропроцессора: режим реальных адресов (реальный режим) и режим защищенных виртуальных адресов (виртуальный режим). В реальном режиме i486 работает как очень быстрый процессор 8086. При этом реализуется расширенный набор команд и допускается увеличение разрядности операндов и адресов до 32. В защищенном режиме могут одновременно выполняться несколько задач (программ). Задачи при этом изолированы и защищены одна от другой.

Интерфейс магистрали реализует протоколы обмена микропроцессора с памятью, контроллерами ввода-вывода, другими активными устройствами. Обмен осуществляется с помощью 32-разрядной двунаправленной шины данных, 32-разрядной шины адреса и 32-разрядной шины управления, причем разрядность шины данных может переключаться непосредственно в ходе работы; могут использоваться один, два или все четыре байта.

1.2 Внутренняя архитектура микропроцессора Intel 486

В состав процессора i486 входят девять внутренних функциональных устройств, которые работают параллельно. Подробная внутренняя архитектура процессора приведена на Рис. 1. Сравнительно автономными внутренними устройствами процессора i486 являются:

— устройство шинного интерфейса или просто шинный интерфейс;

— внутренняя кэш-память;

— устройство опережающей выборки (предвыборки) команд;

— двухступенчатый дешифратор команд;

— устройство управления;

— целочисленное устройство;

— устройство с плавающей точкой;

— устройство сегментации;

— устройство страничного преобразования адреса.

Сигналы внешней 32-битной шины процессора подаются во внутренние устройства через шинный интерфейс. На внутренней стороне шинный интерфейс и кэш-память передают адреса по 32-битной двунаправленной шине. Данные передаются из кэш-памяти в шинный интерфейс по 32-битной шине данных. Тесно связанные кэш-память и устройство предвыборки одновременно воспринимают выбранные с опережением команды из шинного интерфейса по разделенной 32-битной шине данных, которую кэш-память использует также для получения операндов. Находящиеся в кэш-памяти команды доступны устройству предвыборки, которое имеет 32-байтную очередь команд, ожидающих выполнения.

Рис. 1 — Внутренняя архитектура i486

Когда внутренние запросы данных или команд можно удовлетворить из кэш-памяти, сравнительно медленные циклы внешней шины процессора не выполняются. Шинный интерфейс привлекается, если операция требует обращения к шине процессора.

Формирование адреса производят устройства сегментации страничного преобразования. Логические адреса преобразуются устройством сегментации в линейные адреса, которые передаются в устройство страничного преобразования и кэш-память по 32-битной шине линейного адреса. Устройство страничного преобразования превращает линейные адреса в физические, которые направляются в кэш-память по 20-битной шине.

1.3 Формат данных

В своей работе процессор может оперировать разнообразными данными, которые в зависимости от режима работы и применяемых команд могут быть представлены в нескольких различных формах (форматах).

Различные форматы данных отличаются длиной (количеством бит, отводимых для числа) и назначением отдельных битов или групп битов. В современных процессорах, которые поддерживают несколько наборов команд, соответственно, поддерживается и несколько наборов различных форматов. В курсовом проекте применяются базовые форматы, которые используются стандартными командами при операциях с числами в регистрах и памяти. Формат данных представлен на рис. 2.

Рис. 2 — Форматы данных

Целые числа могут занимать байт, слово или двойное слово. Они могут быть знаковыми и беззнаковыми. В знаковых целых самый старший бит байта, слова или двойного слова, занимаемого числом, отводится для индикации знака числа. Таким образом, возможный диапазон представляемых значений для знаковых целых составляет: от -128 до +127 для байтовых величин, от -231 до 231−1 для двойных слов. Беззнаковые целые могут принимать значения: от 0 до 255 для байтовых величин, от 0 до 232−1 для двойных слов.

В FPU вещественные числа двойной точности кодируются с помощью трех полей: знак, порядок и мантисса.

Для индикации знака отводится один самый старший бит числа, 1 соответствует отрицательным числам, 0 — положительным. В следующих (более младших) битах располагается поле порядка, оно занимает 11 или бит в зависимости от формата.

Для поля порядка не предусмотрено отдельного бита знака, здесь применяется т.н. смещение порядка, оно заключается в прибавлении к реальному значению порядка некоторой константы и последующему кодированию уже этой суммы. Таким образом, все кодируемые значения положительны. С учетом применяемых в различных форматах констант (1023 для длинных вещественных) в поле порядка могут кодироваться следующие значения для порядка: от -1022 до 1023 для длинных вещественных.

Поле мантиссы занимает самые младшие биты. Для длинных вещественных самый старший бит мантиссы подразумевается равным единице для нормализованных величин и опускается. Таким образом, в форматах длинных вещественных поле мантиссы содержит только дробную часть числа.

1.4 Формат команд

При разработке системы команд процессоров 80 386 и i486 пришлось решить следующие основные вопросы:

— обеспечить совместимость по объектному коду с предшествующими процессорами, но вместе с этим ввести в команды 32-битные операнды и адреса;

— расширить диапазон использования регистров общего назначения в адресных вычислениях, в частности, привлечь для этого регистры ЕАХ, ЕСХ и EDX, 16-битные аналоги которых АХ, СХ к DХ для адресации не применялись;

— по возможности ввести новые команды, которые упрощают решение часто встречающихся программных задач, например манипуляций двоичными цепочками, двойного сдвига и др.

0бщий формат команды процессора i486 приведен на Рис. 3. Команды состоят из необязательных префиксов, одного или двух байт главного кода операции, спецификатора адреса, представленного байтами mod r/m и sib, смещения в команде (displacement) и непосредственных данных. Английские аббревиатуры означают следующее: Base — база, MODe — режим, Register/Memory — регистр/память, Scale — масштаб, Index — индекс. Из всех полей команды обязательными являются только один или два байта кода операции.

Префикс — это байт со специальным кодированием, который модифицирует операцию одной находящейся за ним команды.

Рис. 3 — Общий формат команд

Во многих командах процессора байты ModR/M и SIB следуют за байтом (байтами) кода операции. Эти байты содержат следующую информацию:

1. тип индексации или номер регистра, используемого в команде;

2. используемый регистр или дополнительную информацию о коде операции;

3. информацию о базе, индексе и масштабе.

Байт ModR/M состоит из трех информационных полей:

1. поле mod содержит два наиболее значимых бита (7 и 6 биты) и в комбинации с полем r/m определяет 32 возможных типа адресации (8 регистровых и 24 индексных);

2. поле reg содержит следующие за полем mod три бита (5, 4 и 3 биты) и определяет либо номер регистра, либо три дополнительных бита кода операции;

3. поле r/m содержит три последних значащих бита байта ModR/M (2, 1 и 0 биты) и может определять номер регистра, в котором находится операнд, или представлять совместно с полем mod 32 возможных типа адресации.

32-битные базовые и масштабируемые индексные формы адресации требуют наличия SIB байта. Определенная кодировка ModR/M байта сигнализирует о присутствии SIB байта. Байт SIB состоит из следующих полей:

1. поле ss, занимающее два наиболее значимых бита (7 и 6 биты), определяет масштабный множитель;

2. поле index, занимающее следующие три бита за полем ss (5, 4, и 3 биты), определяет номер индексного регистра;

3. поле base, занимающее оставшиеся три бита (2, 1 и 0 биты), определяет номер базового регистра.

На рис. 4 показаны форматы ModR/M и SIB байтов.

Рис. 4 — Формат байтов ModR/M и SIB

Устройство FPU имеет пять форматов команд, представленных на Рис. 5. Во всех форматах минимальная длина команды составляет два.

Команды с форматами, показанными на Рис. 5 (а, б), выполняют обращение к памяти, поэтому поля mod (режим) и r/m (регистр/память) во втором байте, а также байт sib (масштаб, индекс, база) имеют тот же смысл, что и в командах целочисленного устройства. Эти поля определяют, как формируется эффективный адрес ЕА памяти.

Команды с форматом, показанном на Рис. 5 (б), выполняют арифметические операции и операции сравнения. Поле формата памяти MF определяет тип операнда, находящегося в памяти. Оно имеет следующее кодирование:

00 — вещественное число одинарной точности (32 бита),

01 — короткое целое двоичное число (32 бита),

10 — вещественное число двойной точности (64 бита), И — целое слово (16 бит) или упакованное десятичное число (80 бит).

Во всех остальных форматах поле mod содержит комбинацию 11 В. В командах целочисленного устройства эта комбинация задает режим регистровой адресации, который не относится к устройству FPU. Именно такие команды целочисленное устройство «пропускает», не производя никаких действий.

Рис. 5 — Формат команды для блока FPU

1.5 Регистры общего назначения (РОНы)

Основные функциональные регистры приведены на следующем рисунке:

Рис. 6 — РОНы

Регистры общего назначения (РОН) EAX, EBX, ECX, EDX 32-разрядные, причем каждый из них может использоваться либо как единое целое, либо только своей младшей 16-разрядной частью (AX, BX, CX, DX). В свою очередь, эти 16-разрядные части допускают независимое использование своих младших (LOW) и старших (HIGH) половин, то есть фактически 8-разрядных регистров (AH и AL, BH и BL и т. д.).

1. 6 Программная модель устройства FPU

Основу программной модели устройства FPU, показанной на Рис. 9, образует регистровый стек из восьми 80-битных регистров данных R0 — R7, называемых также численными или арифметическими регистрами. В этих регистрах хранятся числа, представленные в форме с плавающей точкой в расширенном вещественном формате (ранее этот формат назывался временным вещественным форматом). Такой формат является единственным внутренним форматом чисел в устройстве FPU. В любой момент времени трехбитное поле TOP в слове состояния SW определяет регистр, являющийся текущей вершиной стека и обозначаемый ST (0) или просто ST. Все команды устройства FPU рассчитаны на такую относительную адресацию и даже на языке ассемблера нельзя работать с физическими регистрами R0 — R7.

Рис. 7 — Программная модель устройства FPU

Операция загрузки или включения в стек (PUSH) осуществляет декремент поля ТОР и загружает адресуемые данные в новую вершину стека, что приводит к автоматической перенумерации регистров. В операции сохранения и извлечения из стека (POP) в получатель, например в память, передается содержимое текущей вершины стека, а затем производится инкремент поля ТОР. Таким образом, в стандартных стековых операциях поле ТОР выполняет функции традиционного указателя стека SP (Stack Pointer).

С каждым регистром стека ассоциируется двухбитный тэг (признак), совокупность которых образует слово тэгов TW (Tag Word). Тэг регистра R0 находится в младших битах этого слова, а тэг регистра R7 в старших битах. Тэг в общем виде показывает, что содержится в соответствующем регистре и помогает устройству FPU в выполнении команд.

1.7 Регистр флагов FPU

микропроцессор архитектура команда регистр

16-битное слово состояния отражает общее состояние устройства FPU (Рис. 7). В слове состояния SW младшие 6 бит отведены для регистрации особых случаев. Флажки особых случаев обозначаются так:

РЕ (Precision Error) — ошибка точности,

UE (Underflow Error) — ошибка антипереполнения,

ОЕ (Overflow Error) — ошибка переполнения,

ZЕ (divide-by-Zero Error) — ошибка деления на нуль

DE (Denormalized operand Error) — ошибка ненормализованного операнда,

IE (Invalide operation Error) — ошибка недействительной операции.

Рис. 8 — Слово состояния сопроцессора (регистр флагов FPU)

При обнаружении любого из незамаскированных особых случаев устройство FPU устанавливает в состояние 1 соответствующий флажок и формирует активный выходной сигнал, сообщая об особом случае (прерывание 16). Процедура обработки особого случая считывает слово состояния для определения конкретной причины особого случая.

Бит нарушения стека SF предназначен для того, чтобы фиксировать ошибки в работе регистрового стека. Устройство FPU устанавливает его в состояние 1, если команда вызывает переполнение стека (включение в уже заполненный стек) или антипереполнение стека (извлечение из пустого стека).

Бит 8 суммарной ошибки ES (Error Summary) устанавливается в состояние 1 при возникновении любого особого случая и участвует в формировании выходного сигнала FERR#.

Биты кода условия СЗ — СО фиксируют особенности результатов команд сравнения, проверки и анализа. Биты С З — СО, в основном, применяются для условных переходов.

2. Разработка структуры и микропрограммы микропроцессора

2.1 Выборка и дешифрация команд

В соответствии с вариантом задания, требуется произвести выборку следующих команд:

— IMUL r16, r/m16 (mod = 00)

— FDIV ST (i), ST

-JNA rel8

1. IMUL r16, r/m16

Команда IMUL производит знаковое умножение. В некоторых формах команды применяются неявные регистровые операнды. В данном случае первый операнд располагается в РОН, а второй операнд — в ячейке памяти, адрес которой хранится в РОН. Команда IMUL сбрасывает флажки OF и CF в 0 при форме r16, r/m16 тогда, когда результат точно помещается в r16. Если не перемещается, то старшая часть произведения перемещается в DX, OF и CF устанавливаются в 1. Флажки SF, ZF, AF и PF не определены. Код операции AF. Структура команды представлена на рисунке 9.

КОП

MOD R/M

D

W

MOD

REG/OPCODE

R/M

101 011

1

1

00

3 бита

3 бита

Рис. 9 — Структура команды IMUL r16, r/m16

Старшие 6 бит инициализируют код команды, бит D определяет направление передачи данных (D = 1 — из регистра/памяти в регистр). Бит W определяет размер операнда (W = 1 — полный размер).

Поле MOD в комбинации с полем r/m определяет 32 возможных типа адресации (8 регистровых и 24 индексных). При MOD = 00 (по условию) вычисляется адрес вида DS: [r/m]. Поле r/m описывает используемый регистр. Поле REG содержит адрес регистра-операнда из РОН.

2. FDIV ST (i), ST

Команда деления производит деление вершины стека ST на другой операнд и возвращают частное в получатель. Флажки C0, C2, C3 не определены, C1 = 1 показывает, что произошло округление вверх или если IE и SF = 1, то C1 различает переполнение (C1=1) и антипереполнение (C1 = 0). Численные особые случаи P, U, Z, D, I, IS. Код операции DC F8+i (i — номер регистра в регистровом стеке FPU). Структура команды представлена на рисунке 10.

FPU

R

P

КОП

КОП

ST (i)

10 101

1

1

0

11

111

3 бита

Рис. 10 — Структура команды FDIV ST (i), ST

Старшие 5 бит инициализируют устройство FPU. Бит R указывает на направление операции. Если R = 1, то это значит, что результат возвращается в другой (не в вершину) регистр стека. Бит P = 1 указывает на то, что данные извлекаются из стека. КОП (3,4,5,8 биты) инициализируют команду FDIV. ST (i) указывает на элемент стека, в котором содержится операнд.

Стоит отметить, что элемент стека отсчитывается от TOP.

3. JNA rel8

Условный переход JNA проверяет флажки CF и ZF на равенство 1. Флажки устанавливает предыдущая команда.

Если проверяемое условие истинно, то производится переход к ячейке, задаваемой операндом. Кодирование наиболее эффективно, когда назначение перехода находится в текущем сегменте кода и в пределах от -128 до +127 байт от первого байта следующей команды.

КОП

Относительный адрес перехода

1 110 110

8 бит

Рис. 11 — Структура команды JNA rel8

КОП содержит код команды, а поле с относительным адресом перехода содержит число (rel8), которое будет прибавляться (вычитаться) к счетчику команд.

Команды из памяти выбираются по счетчику команд и записывается в регистр команд. В счетчике хранится адрес текущей команды. После выполнения текущей команды, значение счетчика увеличивается и выборка производится снова. В регистре команд производится дешифрация команд.

2.2 Разработка структурной схемы

На основе анализа форматов заданных команд и данных была разработана структурная схема микропроцессора, которая включает в себя следующие элементы:

1. Оперативная память объемом 4ГБ. Регистр адреса ОП имеет разрядность 31 бит, а регистр информации ОП — 16 бит. Ширина выборки — 16 бит. Разрядность общей шины — 32 бита.

2. Регистры общего назначения с организацией 8Ч16. Разрядность регистра адреса РОН — 3 бита, а регистра информации — 16 бит.

3. Стековая память в FPU с организацией 8Ч80. Разрядность регистра адреса стековой памяти 3 бита, а регистра информации — 80 бит.

4. Регистр флагов сопроцессора (РгSW) — отображает состояния флагов при выполнении команд в формате с плавающей точкой. Разрядность регистра — 16 бит.

5. Счетчик команд (СчК) — хранит адрес следующей команды. Разрядность равна 31 биту.

6. Регистр команд (РгК) — хранит текущую команду. Разрядность равна 16 битам.

Блок АЛУ для операций команды IMUL (блоки 26−72) содержит следующие элементы:

1. Рг1_У и Рг2_У — 16 разрядные выходные регистры АЛУ, хранят множимое и множитель соответственно.

2. Рг2'_У — временный шестнадцатиразрядный регистр, используется для хранения сдвинутого значения множителя в процессе умножения.

3. РгА_У, РгБ_У — входные 16-разрядные регистры сумматора СМ_У.

4. СМ_У — 16-разрядный сумматор, используется для сложения суммы частичных произведений с очередным отрицательным или положительным множимым в ходе алгоритма умножения.

5. РгСМ_У — регистр сумматора СМ_У.

6. СчТ_У — 16-разрядный счетчик итераций умножения.

7. ТЗн — триггер, сохраняющий знак множителя. Введен для того, чтобы произвести нужный тип коррекции произведения после умножения (знак в Рг2_У будет утерян).

Блок АЛУ для операций команды FDIV (блоки 74−161):

1. Рг1, Рг2 — восьмидесяти разрядные входные регистры АЛУ, получают делимое и делитель из стека FPU.

2. РгА_АСт, РгБ_АСт, СМ_АСт, РгСМ_АСт — трехразрядный сумматор с входными регистрами и выходным регистром для вычисления смещения вершины относительно TOP (ST (i)).

3. Рг1_П, Рг2_П — 15 разрядные регистры для хранения порядков операндов.

4. РгА_П, РгБ_П, СМ_П, РгСМ_П — 15 разрядный сумматор для сложения (вычитания) порядков операндов.

5. Сч_П — 15 разрядный счетчик, хранит вычисленное значение порядков, служит для возможного инкремента порядка при денормализации.

6. М2 — комбинационная схема вычисления знака ответа. При том, что знак при делении восстанавливается, этот элемент введен для простановки знака при «критических» случаях деления, например, 0/0 или ?/?.

7. Рг2_М, Рг1_М — 65 разрядные регистры для хранения мантисс операндов. В старший бит записывается знак операнда.

8. ТЗн_М — триггер, который хранит знак делимого, полученного из Рг1_М. Сохраняет знак для выполнения коррекции после деления, так как знаковый разряд Рг1_М сдвинется в процессе деления.

9. Рг1'_М — 65 разрядный регистр, «удлиняющий» делимое. До начала деления равен 0. В процессе деления в нем получается частное.

10. Рг3_М — 65 разрядный регистр, хранящий сдвинутое значение Рг1'_М.

11. РгА_М, РгБ_М, СМ_М, РгСМ_М — 65 разрядный сумматор с входными и выходным регистрами. На нем осуществляется сложение/вычитание в процессе деления.

12. РгРез_ПЗ — 80 разрядный сдвиговый регистр, содержащий подсчитанное частное. Служит для возможной денормализации мантиссы.

13. СчТ_М — 65 разрядный счетчик итераций при делении.

Блок АЛУ для выполнения команды JNA (блоки 14−17):

1. РгА_СчК, РгБ_СчК, СМ_СчК, РгСМ_СчК — 31 разрядный сумматор с входными и выходным регистрами для вычисления нового адреса команды. РгА_СчК принимает значение текущей команды из СчК, РгБ_СчК — смещение, указанное в команде.

2. КСХ — комбинационная схема для анализа флагов.

Расчет организации ОП:

Ширина выборки = 16 бит — разрядность РгИОП

N = 31 — разрядность РгАОП.

Структурная схема микропроцессора представлена в Приложении 1.

2.3 Разработка микропрограммы

Программа в ЭВМ реализуется по средствам последовательного выполнения команд. Она состоит из следующих основных этапов:

— выборка и дешифрация команд;

— выборка операндов;

— выполнение операции;

— запись результата;

— формирование адреса следующей команды.

1. Блоки 1−8: выборка команды.

2. Блоки 9−12, 18−25: дешифрация команды.

3. Блоки 12−16: реализация команды JNA.

4. Блоки 26−72: реализация команды IMUL:

— Блоки 26−31: выбор первого операнда.

— Блоки 33−40: выборка второго операнда из ОП.

— Блок 41: подготовка перед умножением.

— Блоки 42−51: выполнение алгоритма умножения в дополнительном коде.

— Блоки 52−57: коррекция произведения.

— Блоки 58−65: внализ произведения и вывод старшей части ответа в регистр DX.

— Блоки 66−72: вывод младшей (всей) части произведения.

5. Блок 73: инкремент счетчика команд.

6. Блоки 74 — 161: выполнение команды FDIV:

— Блоки 74−76: вычисление операнда ST (i).

— Блоки 77−82: выборка первого операнда.

— Блоки 83−91: выборка второго операнда.

— Блок 92: загрузка операндов в регистры АЛУ.

— Блоки 93−108: анализ особых случаев при делении.

— Блоки 109−115: проверка условия ДМ< ДТ и коррекция в противном случае.

— Блоки 116−119, 150: вычитание порядков и проверка переполнения.

— Блоки 120−122: подготовка АЛУ для деления.

— Блоки 123−135: выполнение алгоритма деления в дополнительном коде.

— Блоки 136−145: коррекция частного.

— Блоки 146−148: денормализация мантиссы.

— Блоки 149−153: запись в регистр результата особого ответа в случае возникновения.

— Блоки 154−161: вывод ответа в регистровый стек.

7. Блок 162: конец алгоритма.

В таблице 1 приведен список микроопераций.

Таблица 1

y1

СчК: =НА

y60

Рг2[64−79]: =М

y2

М: =СчК

y61

Рг1_П[0−14]: =Рг1[63−78]

y3

РгАОП: =М

y62

Рг2_П[0−14]: =Рг1[63−78]

y4

РгИОП: =Чт[РгАОП]

y63

Рг1_М[64]: =Рг1[79]

y5

М: =РгИОП

y64

Рг2_М[64]: =Рг1[79]

y6

РгК: =М

y65

Рг1_М[0−63]: =Рг1[0−63]

y7

РгА_СчК: =СчК

y66

Рг2_М[0−63]: =Рг2[0−63]

y8

РгБ_СчК: =РгК[0−7]

y67

РгSW[ZE]: =1

y9

СМ_СчК: =РгА_СчК+РгБ_СчК

y68

РгSW[ZE]: =0

y10

РгСМ_СчК: =СМ_СчК

y69

РгА_М: =Рг2_М

y11

СчК: =РгСМ_СчК

y70

РгБ_М: =Рг1_М

y12

РгК[MOD]: =00

y71

РгА_П: =0

y13

М: =РгК[3−5]

y72

РгБ_П: =Рг2_П

y14

РгАРОН: =М

y73

СМ_М: =РгА_М+РгБ_М+1

y15

РгИРОН: =Чт[РгАРОН]

y74

ТЗн_М: =Рг1_М[64]

y16

М: =РгИРОН

y75

СМ_П: =РгА_П+РгБ_П+1

y17

Рг1_У: =М

y76

РгСМ_М: =Л (1)СМ_М

y18

М: =РгК[MOD, R/M]

y77

РгСМ_П: =СМ_П

y19

РгБ_У: =0

y78

Рг1_М: =РгСМ_М

y20

ТЗн: =Рг2_У[15]

y79

Рг2_П: =РгСМ_П

y21

РгА: =Рг1_У

y80

Рг1_М[64]: =ТЗн_М

y22

РгА_У: =0

y81

РгА_П: =Рг1_П

y23

СМ_У: =РгА_У+РгБ_У

y82

РгБ_П[14]: =Рг2_П[14]

y24

Рг2'_У: =П (1)Рг2_У

y83

РгБ_П[0−13]: =Рг2_П[0−13]

y25

Рг2'_У[15]: =СМ_У[0]

y84

СМ_П: =РгА_П+РгБ_П

y26

РгСМ_У: =П (1)СМ_У

y85

РгSW[OE]: =0

y27

РгСМ_У: =1*П (1)СМ_У

y86

Сч_П: =РгСМ_П

y28

Рг2_У: =Рг2'_У

y87

РгА_М: =0

y29

РгБ_У: =РгСМ_У

y88

РгБ_М: =Рг1_М

y30

СчТ_У: =СчТ_У-1

y89

СМ_М: =РгА_М+РгБ_М

y31

РгА_У: =Рг1_У

y90

СчТ_М: =64

y32

СМ_У: =РгА_У+РгБ_У+1

y91

Рг3_М: =Л (1)Рг1'_М

y33

РгСМ_У: =СМ_У

y92

СчТ_М: =СчТ_М-1

y34

РгFLAGs[0]: =0

y93

Рг3_М[0]: =0

y35

РгFLAGs[1]: =0

y94

Рг3_М[0]: =1

y36

М: =РгСМ_У

y95

РгБ_М: =Рг1'_М

y37

РгИРОН: =М

y96

РгСМ_М: =СМ_М

y38

РгАРОН: =010b

y97

РгРез_М: =РгСМ[0−63]

y39

Зп[РгАРОН]: РгИРОН

y98

РгSW[DE]: =1

y40

РгFLAGs[0]: =1

y99

РгРез_М: =Л (1)РгРез_М

y41

РгFLAGs[1]: =1

y100

Сч_П: =СчП+1

y42

РгБ_У: =Рг2_У

y101

РгSW[DE]: =0

y43

СчК: =СчК+1

y102

РгРез_ПЗ[0−63]: =РгРез_М

y44

РгА_АСт: =РгSW[TOP]

y103

РгРез_ПЗ[64−78]: =СчП

y45

М: =РгК[0−2]

y104

РгРез_ПЗ[64−78]: =0

y46

РгАСт: =РгSW[TOP]

y105

РгSW[OE]: =1

y47

РгБ_АСт: =РгSW[TOP]

y106

РгРез_ПЗ[64−78]: =7FFFh

y48

РгИСТ: =Чт[РгАСт]

y107

РгРез_ПЗ[0−63]: =0

y49

СМ_АСт: =РгА_АСт+РгБ_АСт

y108

РгРез_ПЗ[79]: =Рг1[79]?Рг2[79]

y50

РгСМ_АСт: =СМ_АСт

y109

М: =РгРез_ПЗ[0−31]

y51

М: =РгИСт[0−31]

y110

РгИСт[0−31]: =М

y52

Рг1[0−31]: =М

y111

М: =РгРез_ПЗ[32−63]

y53

М: =РгИСт[32−63]

y112

РгИСт[32−63]: =М

y54

Рг1[32−63]: =М

y113

М: =РгРез_ПЗ[64−679]

y55

М: =РгИСТ[64−79]

y114

РгИСт[64−79]: =М

y56

Рг1[64−79]: =М

y115

Зп[РгАСт]: РгИСт

y57

РгSW[TOP]: =РгСМ_АСт

y116

Рг2_У: =М

y58

Рг2[0−31]: =М

y117

СчТ_У: =16

y59

Рг2[32−63]: =М

Таблица 2

x1

Zоп=0

x24

Рг1_П[0−14]=7FFFh

x2

РгК[14−15]=10

x25

Рг2_М[0−63]=0

x3

РгК[14−15]=11

x26

Рг2_П[0−14]=0

x4

РгК[14−15]=01

x27

Рг2_П[0−14]=7FFFh

x5

РгК[8−13]=110 110

x28

Рг2_М[0−63]=0

x6

РгFLAGS[0−1]=11

x29

Рг2_П[0−14]=0

x7

РгК[10−13]=1011

x30

Рг2_М[0−14]=7FFFh

x8

РгК[9]=1

x31

Рг2_М[0−63]=0

x9

РгК[8]=1

x32

Рг2_П[0−14]=0

x10

Zоп=0

x33

СМ_М[64]=1

x11

Рг2_У[0]=0

x34

ПР=10

x12

Рг1_У[15]=1

x35

ТЗн11_М=1

x13

СчТ_У=0

x36

Рг2_М[64]=1

x14

ТЗн=1

x37

Рг2_М[64]=1

x15

РгСМ_У[0−14]=РгСМ_У[15]

x38

СМ_М[64]=Рг2_М[64]

x16

Рг2'У[7]=РгСМ_У[15]

x39

СчТ_М=0

x17

РгК[8,10−13]=1011

x40

Рг1[79]=1

x18

РгК[10]=1

x41

Рг2[79]=1

x19

РгК[9]=0

x42

Рг2[79]=1

x20

РгК[6−7]=11

x43

Рг1_М=0

x21

РгК[2−5]=111

x44

Рг1_М=0

x22

Рг1_М[0−63]=0

x45

РгРез_М[63]=1

x23

Рг1_П[0−14]=0

Функциональная микропрограмма микропроцессора представлена в Приложении 2.

3. Разработка управляющего автомата с жесткой логикой

3.1 Синтез запоминающей части управляющего автомата

Синтез управляющего автомата реализуется с помощью автомата Мура и RS-триггеров.

Рис. 12 — Структурная схема автомата Мура

В автомате Мура (рис. 12) операторные вершины алгоритма ставятся в соответствие с состояниями автомата. Отметка состояний осуществляется следующим образом: начальная и конечная вершины отмечаются одинаково; каждая операторная вершина отмечается единственным символом. Зная количество состояний, можно определить количество запоминающих элементов (триггеров):

По отмеченным состояниям в микропрограмме составляется таблица переходов автомата, которая служит исходными данными для синтеза логических схем. Таблица переходов определяется следующими множествами:

— множеством состояний автомата

— множеством входных сигналов

— множеством выходных сигналов

— функциями возбуждения.

Закон функционирования автомата Мура:

Микропрограмма, помеченная состояниями автомата Мура, представлена в Приложении 2.

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

Таблица переходов RS-триггера представлена в таблице 3. Таблица состояний на карте Карно приведена в таблице 4.

Таблица 3

R

S

Q (t)

Q (t+1)

0

0

не определено

0

1

0

1

1

0

1

0

1

1

не определено

Таблица 4

000

001

011

010

110

111

101

100

0000

a1

a2

a4

a5

a6

a7

a8

0001

a21

a20

a11

a16

a15

a14

a10

a9

0011

a22

a19

a18

a17

a13

a12

0010

a23

a24

a25

a26

a27

a30

a29

0110

a45

a43

a44

a28

a32

a31

a47

a46

0111

a41

a42

a35

a34

a33

a36

a48

a49

0101

a40

a39

a38

a57

a56

a37

a53

a50

0100

a59

a60

a3

a58

a55

a54

a52

a51

1100

a64

a61

a62

a63

a68

a67

a66

a65

1101

a106

a72

a70

a69

a78

a79

a80

1111

a107

a104

a73

a71

a76

a77

a83

a81

1110

a108

a105

a74

a75

a85

a84

a82

1010

a109

a103

a102

a101

a86

a87

a88

1011

a110

a111

a112

a100

a93

a91

a90

a89

1001

a113

a99

a94

a92

a95

1000

a114

a98

a97

a115

a116

a96

Состояния и их соответствующие коды представлены в таблице 5.

Таблица 5

а1

000 0000

а25

011 0010

а49

100 0111

а73

011 1111

а97

110 1000

а2

001 0000

а26

010 0010

а50

100 0101

а74

011 1110

а98

010 1000

а3

011 0100

а27

110 0010

а51

100 0100

а75

010 1110

а99

010 1001

а4

010 0000

а28

010 0110

а52

101 0100

а76

110 1111

а100

010 1011

а5

110 0000

а29

101 0010

а53

101 0101

а77

111 1111

а101

010 1010

а6

111 0000

а30

111 0010

а54

111 0100

а78

111 1101

а102

011 1010

а7

101 0000

а31

111 0110

а55

110 0100

а79

101 1101

а103

001 1010

а8

100 0000

а32

110 0110

а56

110 0101

а80

100 1101

а104

001 1111

а9

100 0001

а33

110 0111

а57

010 0101

а81

100 1111

а105

001 1110

а10

101 0001

а34

010 0111

а58

010 0100

а82

100 1110

а106

001 1101

а11

011 0001

а35

011 0111

а59

000 0100

а83

101 1111

а107

000 1111

а12

101 0011

а36

111 0111

а60

001 0100

а84

101 1110

а108

000 1110

а13

111 0011

а37

111 0101

а61

001 1100

а85

111 1110

а109

000 1010

а14

111 0001

а38

011 0101

а62

011 1100

а86

111 1010

а110

000 1011

а15

110 0001

а39

001 0101

а63

010 1100

а87

101 1010

а111

001 1011

а16

010 0001

а40

000 0101

а64

000 1100

а88

100 1010

а112

011 1011

а17

010 0011

а41

000 0111

а65

100 1100

а89

100 1011

а113

011 1001

а18

011 0011

а42

001 0111

а66

101 1100

а90

101 1011

а114

011 1000

а19

001 0011

а43

001 0110

а67

111 1100

а91

111 1011

а115

111 1000

а20

001 0001

а44

011 0110

а68

110 1100

а92

101 1001

а116

101 1000

а21

000 0001

а45

000 0110

а69

110 1101

а93

110 1011

а22

000 0011

а46

100 0110

а70

010 1101

а94

110 1001

а23

000 0010

а47

101 0110

а71

010 1111

а95

100 1001

а24

001 0010

а48

101 0111

а72

011 1101

а96

100 1000

3.2 Синтез комбинационной части управляющего автомата

На основе закодированных состояний и взятых, в качестве запоминающих элементов, RS-триггеров, составим прямую таблицу переходов (Таблица 6).

Таблица 6

Исходное состояние

Код исходного состояния

Состояние перехода

Код состояния перехода

Входные сигналы

Выходные сигналы

Функции возбуждения

a1

000 0000

a2

001 0000

y1

S3

a2

001 0000

a3

011 0100

y2

S2S5

a3

011 0100

a4

010 0000

y3

R3R5

a4

010 0000

a5

110 0000

y4

S1

y4

a5

110 0000

a6

111 0000

y5

S3

a6

111 0000

a7

101 0000

y6

R2

a7

101 0000

a1

000 0000

R1R3

a8

100 0000

y7,y8

R3

a12

101 0011

y12

S6S7

a52

101 0100

y43

S5

a53

101 0101

y44,y45,y46

S5S7

a8

100 0000

a9

100 0001

y9

S7

a9

100 0001

a10

101 0001

y10

S3

a10

101 0001

a11

011 0001

y11

R1S2

a11

011 0001

a3

011 0100

y2

S5R7

a12

101 0011

a13

111 0011

y13

S2

a13

111 0011

a14

111 0001

y14

R6

a14

111 0001

a15

110 0001

y15

R3

a15

110 0001

a16

010 0001

y16

R1

a16

010 0001

a17

010 0011

y17

S6

a17

010 0011

a18

011 0011

y18

S3

a18

011 0011

a19

001 0011

y14

R2

a19

001 0011

a20

001 0001

y15

R6

a20

001 0001

a21

000 0001

y16

R3

a21

000 0001

a22

000 0011

y3

S6

a22

000 0011

a23

000 0010

y4

R7

y4

a23

000 0010

a24

001 0010

y5

S3

a24

001 0010

a25

011 0010

y116

S2

a25

011 0010

a26

010 0010

y117,y19,y20

R3

a26

010 0010

a27

110 0010

y21

S1

a28

010 0110

y22

S5

a27

110 0010

a32

110 0110

y23,y24,y25

S5

a28

010 0110

a32

110 0110

y23,y24,y25

S1

a29

101 0010

a30

111 0010

y26

S2

a31

111 0110

y27

S2S5

a30

111 0010

a31

111 0110

y28

S5

a31

111 0110

a32

110 0110

y28

R3

a32

110 0110

a33

110 0111

y29,y30

S7

a33

110 0111

a27

110 0010

y21

R5R7

a28

010 0110

y22

R1R7

a34

010 0111

y22

R1

a36

111 0111

y31

S3

a34

010 0111

a35

011 0111

y23

S3

a35

011 0111

a38

011 0101

y33

R6

a36

111 0111

a37

111 0101

y32

R6

a37

111 0101

a38

011 0101

y33

R1

a38

011 0101

a39

001 0101

y34,y35

R2

a44

011 0110

y40,y41

S6R7

y40,y41

a39

001 0101

a40

000 0101

y36

R3

a40

000 0101

a41

000 0111

y37

S6

a41

000 0111

a42

001 0111

y38

S3

a42

001 0111

a43

001 0110

y39

R7

a43

001 0110

a45

000 0110

y22,y42

R3

a44

011 0110

a45

000 0110

y22,y42

R2R3

a45

000 0110

a46

100 0110

y23

S1

a46

100 0110

a47

101 0110

y33,y18

S3

a47

101 0110

a48

101 0111

y14

S7

a48

101 0111

a49

100 0111

y36

R3

a49

100 0111

a50

100 0101

y37

R6

a50

100 0101

a51

100 0100

y39

R7

a51

100 0100

a52

101 0100

y43

S3

a52

101 0100

a3

011 0100

y2

R1S2

a53

101 0101

a54

111 0100

y47,y48

S2R7

a54

111 0100

a55

110 0100

y49

R3

a55

110 0100

a56

110 0101

y50,y51

S7

a56

110 0101

a57

010 0101

y52

R1

a57

010 0101

a58

010 0100

y53

R7

a58

010 0100

a59

000 0100

y54

R2

a59

000 0100

a60

001 0100

y55

S3

a60

001 0100

a61

001 1100

y56

S4

a61

001 1100

a62

011 1100

y57

S2

a62

011 1100

a63

010 1100

y46

R3

a63

010 1100

a64

000 1100

y48

R2

a64

000 1100

a65

100 1100

y51

S1

a65

100 1100

a66

101 1100

y58

S3

a66

101 1100

a67

111 1100

y53

S2

a67

111 1100

a68

110 1100

y59

R3

a68

110 1100

a69

110 1101

y55

S7

a69

110 1101

a70

010 1101

y60

R1

a70

010 1101

a71

010 1111

y61,y62,y63,

y64,y65,y66

S6

a71

010 1111

a72

011 1101

y67

S3R6

a73

011 1111

y68

S3

y68

a74

011 1110

y68

S3R7

a75

010 1110

y67

R7

y67

a76

110 1111

y68

S1

y68

y68

a104

001 1111

y68,y104

R2S3

y68,y104

y68,y104

a72

011 1101

a106

001 1101

y106

R2

a73

011 1111

a106

001 1101

y106

R2R6

a74

011 1110

a108

000 1110

y106

R2R3

a75

010 1110

a108

000 1110

y106

R2

a76

110 1111

a77

111 1111

y69,y70,

y71,y72

S3

a77

111 1111

a78

111 1101

y73

R6

a78

111 1101

a79

101 1101

y74

R2

a79

101 1101

a80

100 1101

y75,y76

R3

a83

101 1111

y81,y82,y83

S6

a80

100 1101

a81

100 1111

y77,y78

S6

a81

100 1111

a82

100 1110

y79,y80

R7

a82

100 1110

a83

101 1111

y81,y82,y83

S3S7

a83

101 1111

a84

101 1110

y84

R7

a84

101 1110

a85

111 1110

y85,y77

S2

a105

001 1110

y105

R1

a85

111 1110

a86

111 1010

y86,y87,y88

R5

a86

111 1010

a87

101 1010

y89

R2

a87

101 1010

a88

100 1010

y90

R3

a88

100 1010

a89

100 1011

y76,y74

S7

a89

100 1011

a90

101 1011

y78,y91,

y69,y92

S3

a90

101 1011

a91

111 1011

y70

S2

y70

a93

110 1011

y88

S2R3

y88

a91

111 1011

a92

101 1001

y73

R2R6

a92

101 1001

a95

100 1001

y93

R3

a96

100 1000

y94

R3R7

a93

110 1011

a94

110 1001

y89

R6

a94

110 1001

a95

100 1001

y93

R2

a96

100 1000

y94

R2R7

a95

100 1001

a97

110 1000

y87,y95

S2R7

a89

100 1011

y76

S6

a96

100 1000

a97

110 1000

y87,y95

S2

a89

100 1011

y76

S6S7

a97

110 1000

a98

010 1000

y73

R1

y73

y73

a99

010 1001

y89

R1S7

y89

y89

a98

010 1000

a100

010 1011

y96

S6S7

a99

010 1001

a100

010 1011

y96

S6

a100

010 1011

a101

010 1010

y97

R7

a101

010 1010

a102

011 1010

y98,y99,y100

S3

a103

001 1010

y101,y102,y103

R2S3

a102

011 1010

a102

011 1010

y98,y99,y100

-

a103

001 1010

y101,y102,y103

R2

a103

001 1010

a109

000 1010

y108

R3

a104

001 1111

a107

000 1111

y107

R3

a105

001 1110

a106

001 1101

y106

R6S7

a106

001 1101

a107

000 1111

y107

R3S6

a107

000 1111

a109

000 1010

y108

R5R7

a108

000 1110

a109

000 1010

y108

R5

a109

000 1010

a110

000 1011

y109

S7

a110

000 1011

a111

001 1011

y110

S3

a111

001 1011

a112

011 1011

y111

S2

a112

011 1011

a113

011 1001

y112

R6

a113

011 1001

a114

011 1000

y113

R7

a114

011 1000

a115

111 1000

y114

S1

a115

111 1000

a116

101 1000

y115

R2

a116

101 1000

a52

101 0100

y43

R4S5

Аналитические выражения для термов:

Аналитические выражения для функций возбуждения:

S1=T1+T17+a28+a45+a64+T34+T35+T36+a114

R1=T2+T3+T4+T5+T6+T7+T8+T9+T10+T11+a10+a15+T22+T23+a37+a52+a56+a69+T43+T56+T57+T58+T59+T60+T61

S2=a2+a10+a12+a24+T19+T20+a52+a53+a61+a66+T42+T44+T45+T46+T47+T52+T54+a111

R2=a6+a18+T25+a44+a58+a63+T37+T38+T39+a72+a73+a74+a75+a78+a86+a91+T50+T51+T63+T65+a115

S3=a1+a5+a9+a17+a23+T24+a34+a41+a46+a51+a59+a65+T2/+T29+T30+T31+T38+a76+a82+a89+T62+T63+a110

R3=a3+T2+T3+T4+T5+T6+T7+T8+T9+T10+T11+T12+a14+a20+a25+a31+a39+a43+a44+a48+a54+a62+a67+a74+T40+a87+T46+T47+T48+T49+a103+a104+a106

S4=a60

R4=a116

S5=a2+T14+T15+a11+T18+a27+T20+a30+a116

R5=a3+T21+a85+a107+a108

S6=T13+a16+a21+T26+T27+a40+a70+T41+a80+T53+T55+a98+a99+a106

R6=a13+a19+a35+a36+a49+T28+a73+a77+a91+a93+a105+a112

S7=T13+T15+a8+a32+a47+a55+a68+a82+a88+T55+T59+T60+T61+a98+a105+a109

R7=a1+T16+T21+T22+T26+T27+a42+a50+a53+a57+T31+T32+T33+a81+a83+T49+T51+T52+a100+a107+a113

Аналитические выражения для функций выхода:

y1=a2

y2=a3

y3=a4+a22

y4=a5+a23

y5=a6+a24

y6=a7

y7=a8

y8=a8

y9=a9

y10=a10

y11=a11

y12=a12

y13=a13

y14=a14+a19+a48

y15=a15+a20

y16=a16+a21

y17=a17

y18=a18+a47

y19=a26

y20=a26

y21=a27

y22=a28+a34+a45

y23=a32+a35+a46

y24=a32

y25=a32

y26=a30

y27=a31

y28=a31+a32

y29=a33

y30=a33

y31=a36

y32=a37

y33=a38+a47

y34=a39

y35=a39

y36=a40+a49

y37=a41+a50

y38=a42

y39=a43+a51

y40=a44

y41=a44

y42=a45

y43=a52

y44=a53

y45=a53

y46=a53+a63

y47=a54

y48=a54+a64

y49=a55

y50=a56

y51=a56+a65

y52=a57

y53=a58+a67

y54=a59

y55=a60+a69

y56=a61

y57=a62

y58=a66

y59=a68

y60=a70

y61=a71

y62=a71

y63=a71

y64=a71

y65=a71

y66=a71

y67=a72+a75

y68=a73+a74+a76+a104

y69=a77+a90

y70=a77+a91

y71=a77

y72=a77

y73=a78+a92+a98

y74=a79+a89

y75=a80

y76=a80+a89

y77=a81+a85

y78=a81+a90

y79=a82

y80=a82

y81=a83

y82=a83

y83=a83

y84=a84

y85=a85

y86=a86

y87=a86+a97

y88=a86+a93

y89=a87+a94+a99

y90=a88

y91=a90

y92=a90

y93=a95

y94=a96

y95=a97

y96=a100

y97=a101

y98=a102

y99=a102

y100=a102

y101=a103

y102=a103

y103=a103

y104=a104

y105=a105

y106=a106+108

y107=a107

y108=a109

y109=a110

y110=a111

y111=a112

y112=a113

y113=a114

y114=a115

y115=a116

y116=a25

y117=a26

3.3 Разработка электрической принципиальной схемы

Работа схемы начинается с подачи на входы схемы входных сигналов (условий) Х1. Х45 с вилки ГРПМ1−45ШУ2(XP1), а также их противоположных значений. Инвертирование происходит на микросхемах ТТЛ-типа КР1533ЛН1[DD1-DD8]. На розетку МРН4−1(XP2) подаются сигналы ТИ, сброса, а так же питание и земля.

Далее происходит вычисление значений термов на микросхемах КР1533ЛИ1[DD9, DD12, DD22, DD25, DD37, DD40, DD41, DD45], КР1533ЛИ3[DD10, DD23, DD24, DD38, DD39], КР1533ЛН1[DD8, DD17, DD27, DD34, DD44], КР1533ЛА1[DD11, DD13, DD14, DD36, DD42, DD43] и КР1533ЛА2[DD15, DD16, DD18-DD21, DD26, DD28-DD33, DD35].

Затем, на основе полученных термов, вычисляем значения функций возбуждения триггеров S1-S7, R1-R7 на микросхемах КР1533ЛН1[DD44], КР531ЛЕ7[DD46, DD48-DD50, DD52, DD53, DD55, DD56, DD58, DD59, DD61, DD64, DD66, DD69, DD71, DD73], КР1533ЛА1[DD54, DD70], КР1533ЛА2[DD51, DD54, DD57, DD60, DD65, DD74], КР1533ЛА3[DD47], которые подаются на входы триггеров КР1533ТР2 [DD79, DD80].

После этого производится кодирование состояний на дешифраторах. Старшие разряды кода подаются на основной дешифратор (КР1533ИД7 [DD81]), выходы которого разрешают работу нескольких дополнительных дешифраторов (КР1533ИД3 [DD75-DD78, DD82-DD85]). На объединенные входы этих дополнительных дешифраторов подаются младшие разряды входного кода. Используя одну микросхему дешифратор (1) и 8 микросхем дешифраторов (2−9), получаем один дешифратор на 128 выходов.

Благодаря каскадному способу построения дешифратора, получили исходные состояния автомата а0. а116 путем подачи на входы дешифраторов функций возбуждения 51. 58.

Управляющие сигналы y1. y117 получаем на микросхемах КР1533ЛН1[DD95-DD104], КР1533ЛА1[DD92], КР1533ЛА3[DD47, DD86, DD89-DD91, DD93, DD94], КР1533ЛА4[DD87, DD88]. Сигналы y1. y117 снимаются со схемы с вилки ГРПМ1У-122ГО2[XP3].

Для шунтирования питания введены блокировочные конденсаторы. Электролитический конденсатор C1 емкостью 10 мкФ служит для фильтрации низкочастотных колебаний, а керамический конденсатор С2 емкостью 680 нФ для фильтрации высокочастотных колебаний.

Принципиальная электрическая схема представлена в Приложении 3.

4. Разработка управляющего автомата с программируемой логикой

4.1 Составление карты прошивки УП

Основной частью управляющего автомата с программируемой логикой является управляющая память, в которой хранятся закодированная микропрограмма. Существуют различные способы адресации микроопераций, хранимых в УП. В данном случае используется естественная адресация с двумя адресами. Способ кодирования операционной части — вертикальный. Операционная часть содержит либо код микрооперации, либо адрес перехода при выполнении условия. За тип микрокоманды отвечает специальный бит (равен одному — адресный формат). При невыполнении условия выполняется следующая по порядку в УП микрокоманда. Фрагмент схемы программируемого автомата с естественной адресацией приведен на рисунке 13.

Рис. 13 — Автомат с естественной адресацией

Количество разрядов операционной части:. Количество разрядов адресной части:.

Структура микрокоманды представлена на рисунке 14.

Тип

Условие

Адресная часть

Операционная часть

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Биты

Рис. 14 — Структура микрокоманды

Кодирование условий представлено в таблице 7, кодирование микроопераций — в таблице 8, карта прошивки управляющей памяти представлена в таблице 9.

Таблица 7

Условие

Содержимое

Условие

Содержимое

БП

0

X24

11 000

X1

1

X25

11 001

X2

10

X26

11 010

X3

11

X27

11 011

X4

100

X28

11 100

X5

101

X29

11 101

X6

110

X30

11 110

X7

111

X31

11 111

X8

1 000

X32

100 000

X9

1 001

X33

100 001

X10

1 010

X34

100 010

X11

1 011

X35

100 011

X12

1 100

X36

100 100

X13

1 101

X37

100 101

X14

1 110

X38

100 110

X15

1 111

X39

100 111

X16

10 000

X40

101 000

X17

10 001

X41

101 001

X18

10 010

X42

101 010

Х19

10 011

X43

101 011

Х20

10 100

X44

101 100

Х21

10 101

X45

101 101

Х22

10 110

Х23

10 111

Таблица 8

Операция

Код

Операция

Код

Операция

Код

Операция

Код

ym

0

y30

11 110

y60

111 100

y90

1 011 010

y1

1

y31

11 111

y61

111 101

y91

1 011 011

y2

10

y32

100 000

y62

111 110

y92

1 011 100

y3

11

y33

100 001

y63

111 111

y93

1 011 101

y4

100

y34

100 010

y64

1 000 000

y94

1 011 110

y5

101

y35

100 011

y65

1 000 001

y95

1 011 111

y6

110

y36

100 100

y66

1 000 010

y96

1 100 000

y7

111

y37

100 101

y67

1 000 011

y97

1 100 001

y8

1 000

y38

100 110

y68

1 000 100

y98

1 100 010

y9

1 001

y39

100 111

y69

1 000 101

y99

1 100 011

y10

1 010

y40

101 000

y70

1 000 110

y100

1 100 100

y11

1 011

y41

101 001

y71

1 000 111

y101

1 100 101

y12

1 100

y42

101 010

y72

1 001 000

y102

1 100 110

y13

1 101

y43

101 011

y73

1 001 001

y103

1 100 111

y14

1 110

y44

101 100

y74

1 001 010

y104

1 101 000

y15

1 111

y45

101 101

y75

1 001 011

y105

1 101 001

y16

10 000

y46

101 110

y76

1 001 100

y106

1 101 010

y17

10 001

y47

101 111

y77

1 001 101

y107

1 101 011

y18

10 010

y48

110 000

y78

1 001 110

y108

1 101 100

y19

10 011

y49

110 001

y79

1 001 111

y109

1 101 101

y20

10 100

y50

110 010

y80

1 010 000

y110

1 101 110

y21

10 101

y51

110 011

y81

1 010 001

y111

1 101 111

y22

10 110

y52

110 100

y82

1 010 010

y112

1 110 000

y23

10 111

y53

110 101

y83

1 010 011

y113

1 110 001

y24

11 000

y54

110 110

y84

1 010 100

y114

1 110 010

y25

11 001

y55

110 111

y85

1 010 101

y115

11 100 011

y26

11 010

y56

111 000

y86

1 010 110

y116

1 110 100

y27

11 011

y57

111 001

y87

1 010 111

y117

1 110 101

y28

11 100

y58

111 010

y88

1 011 000

y29

11 101

y59

111 011

y89

1 011 001

Таблица 9

Пояснения

№ ячейки

Тип МК

Условия

Операционная (адресная) часть

EXT

0000 0000

0

000 0000

НА

0000 0001

0

000 0001

a3

0000 0010

0

000 0010

a4

0000 0011

0

000 0011

Zоп

0000 0100

1

00 0001

0000 0110

0000 0101

1

00 0000

0000 0100

a5

0000 0110

0

000 0100

0000 0111

0

000 0101

0000 1000

0

000 0110

x2

0000 1001

1

00 0010

0000 1101

x3

0000 1010

1

00 0011

0001 1100

x4

0000 1011

1

00 0100

0001 0010

toEXT

0000 1100

1

00 0000

0000 0000

x7

0000 1101

1

00 0111

0000 1111

toEXT

0000 1110

1

00 0000

0000 0000

x8

0000 1111

1

00 1000

0001 0001

toEXT

0001 0000

1

00 0000

0000 0000

x9

0001 0001

1

00 1001

0010 0110

x5

0001 0010

1

00 0101

0001 0100

toEXT

0001 0011

1

00 0000

0000 0000

x6

0001 0100

1

00 0110

0001 0110

to a52

0001 0101

1

00 0000

0110 0100

a8(y7)

0001 0110

0

000 0111

a8(y8)

0001 0111

0

000 1000

y9

0001 1000

0

1 001

0001 1001

0

1 010

y11

0001 1010

0

1 011

to a3

0001 1011

1

00 0000

0000 0010

x17

0001 1100

1

01 0001

0001 1110

toEXT

0001 1101

1

00 0000

0000 0000

x18

0001 1110

1

01 0010

0001 1111

toEXT

0001 1111

1

00 0000

0000 0000

x19

0010 0000

1

01 0011

0010 0010

toEXT

0010 0001

1

00 0000

0000 0000

x20

0010 0010

1

01 0100

0010 0100

toEXT

0010 0011

1

00 0000

0000 0000

x21

0010 0100

1

01 0101

0110 0110

toEXT

0010 0101

1

00 0000

0000 0000

a12

0010 0110

0

000 1100

0010 0111

0

000 1101

0010 1000

0

000 1110

0010 1001

0

000 1111

0010 1010

0

001 0000

0010 1011

0

001 0001

a18

0010 1100

0

001 0010

0010 1101

0

000 1110

0010 1110

0

000 1111

a21

0010 1111

0

001 0000

a22

0011 0000

0

000 0011

x10

0011 0001

1

00 1010

0010 0011

Zоп

0011 0010

1

00 0000

0010 0001

a23

0011 0011

0

000 0100

0011 0100

0

000 0101

0011 0101

0

111 0100

a26y18

0011 0110

0

111 0101

0011 0111

0

001 0011

0011 1000

0

001 0100

x11

0011 1001

1

00 1011

0011 1100

a27

0011 1010

0

001 0101

jmp a29

0011 1011

1

00 0000

0011 1101

a28

0011 1100

0

001 0110

a29 y23

0011 1101

0

001 0111

0011 1110

0

001 1000

y25

0011 1111

0

001 1001

x12

0100 0000

1

00 1100

0100 0011

a30

0100 0001

0

001 1010

jmp a32

0100 0010

1

00 0000

0100 0100

a31

0100 0011

0

001 1011

a32

0100 0100

0

001 1100

a33 y29

0100 0101

0

001 1101

0100 0110

0

001 1110

x13

0100 0111

1

00 1101

0100 1001

jmp x11

0100 1000

1

00 0000

0011 1001

x14

0100 1001

1

00 1110

0100 1101

a34

0100 1010

0

001 0110

a35

0100 1011

0

001 0111

jmp a38

0100 1100

1

00 0000

0100 1111

a36

0100 1101

0

001 1111

a37

0100 1110

0

010 0000

a38

0100 1111

0

010 0001

x15

0101 0000

1

00 1111

0101 1001

x16

0101 0001

1

01 0000

0101 1001

a39 y34

0101 0010

0

010 0010

a39 y35

0101 0011

0

010 0011

a40

0101 0100

0

010 0100

0101 0101

0

010 0101

0101 0110

0

010 0110

a43

0101 0111

0

010 0111

jmp a45

0101 1000

1

00 0000

0101 1011

a44 y40

0101 1001

0

010 1000

0101 1010

0

010 1001

a45 y22

0101 1011

0

001 0110

0101 1100

0

010 1010

0101 1101

0

001 0111

0101 1110

0

010 0001

0101 1111

0

001 0010

0110 0000

0

000 1110

0110 0001

0

010 0100

0110 0010

0

010 0101

a51

0110 0011

0

010 0111

a52

0110 0100

0

010 1011

jmp a3

0110 0101

1

00 0000

0000 0010

a53

0110 0110

0

010 1100

0110 0111

0

010 1101

0110 1000

0

010 1110

0110 1001

0

010 1111

0110 1010

0

011 0000

0110 1011

0

011 0001

0110 1100

0

011 0010

0110 1101

0

011 0011

0110 1110

0

011 0100

0110 1111

0

011 0101

0111 0000

0

011 0110

0111 0001

0

011 0111

0111 0010

0

011 1000

a62

0111 0011

0

011 1001

0111 0100

0

010 1111

0111 0101

0

011 0000

0111 0110

0

011 0011

0111 0111

0

0111 010

0111 1000

0

011 0101

0111 1001

0

011 1011

0111 1010

0

011 0111

a70

0111 1011

0

011 1100

0111 1100

0

011 1101

0111 1101

0

011 1110

0111 1110

0

011 1111

0111 1111

0

100 0000

1000 0000

0

100 0001

1000 0001

0

100 0010

x22

1000 0010

1

01 0110

1000 0100

jmp a76

1000 0011

1

00 0000

1001 1011

x23

1000 0100

1

01 0111

1001 0011

x24

1000 0101

1

01 1000

1000 1101

x25

1000 0110

1

01 1001

1000 1000

jmp a76

1000 0111

1

00 0000

1001 1011

x26

1000 1000

1

01 1010

1000 1011

x27

1000 1001

1

01 1011

1110 0000

jmp a76

1000 1010

1

00 0000

1001 1011

a72

1000 1011

0

100 0011

jmp a106

1000 1100

1

00 0000

1110 0011

x28

1000 1101

1

01 1100

1001 0000

a73

1000 1110

0

100 0100

jmp a106

1000 1111

1

00 0000

1110 0011

x29

1001 0000

1

01 1101

1001 0111

x30

1001 0001

1

01 1110

1001 1001

jmp a73

1001 0010

1

00 0000

1000 1110

x31

1001 0011

1

01 1111

1001 0101

jmp a104

1001 0100

1

00 0000

1110 0000

x32

1001 0101

1

10 0000

1001 0111

jmp a104

1001 0110

1

00 0000

1110 0000

a75

1001 0111

0

100 0011

jmp a108

1001 1000

1

00 0000

1110 0110

a74

1001 1001

0

100 0100

jmp a108

1001 1010

1

00 0000

1110 0110

a76

1001 1011

0

100 0100

1001 1100

0

100 0101

1001 1101

0

100 0110

1001 1110

0

100 0111

1001 1111

0

100 1000

1010 0000

0

100 1001

a79

1010 0001

0

100 1010

x33

1010 0010

1

10 0001

1010 0100

jmp a83

1010 0011

1

00 0000

1010 1010

a80

1010 0100

0

100 1011

1010 0101

0

100 1100

1010 0110

0

100 1101

1010 0111

0

100 1110

1010 1000

0

100 1111

1010 1001

0

101 0000

a83

1010 1010

0

101 0001

1010 1011

0

101 0010

1010 1100

0

101 0011

1010 1101

0

101 0100

x34

1010 1110

1

10 0010

1110 0010

a85

1010 1111

0

101 0101

1011 0000

0

100 1101

1011 0001

0

101 0110

1011 0010

0

101 0111

1011 0011

0

101 1000

1011 0100

0

101 1001

a88

1011 0101

0

101 1010

a89

1011 0110

0

100 1100

1011 0111

0

100 1010

1011 1000

0

100 1110

1011 1001

0

101 1011

1011 1010

0

100 0101

a90

1011 1011

0

101 1100

x35

1011 1100

1

10 0011

1100 0001

x36

1011 1101

1

10 0100

1100 0010

a91

1011 1110

0

100 0110

a92

1011 1111

0

100 1001

jmp x38

1100 0000

1

00 0000

1100 0100

x37

1100 0001

1

10 0101

1011 1110

a93

1100 0010

0

101 0111

a94

1100 0011

0

101 1001

x38

1100 0100

1

10 0110

1100 0111

a95

1100 0101

0

101 1101

jmp x39

1100 0110

1

00 0000

1100 1000

a96

1100 0111

0

101 1110

x39

1100 1000

1

10 0111

1100 1010

jmp a89

1100 1001

1

00 0000

1011 0110

a97

1100 1010

0

101 0111

1100 1011

0

101 1111

x40

1100 1100

1

10 1000

1101 0010

x41

1100 1101

1

10 1001

1101 0100

a99

1100 1110

0

101 1001

jmp a100

1100 1111

1

00 0000

1101 0100

x44

1101 0000

1

10 1100

1101 0100

jmp a99

1101 0001

1

00 0000

1100 1110

x42

1101 0010

1

10 1010

1101 0000

x43

1101 0011

1

10 1011

1100 1110

a98

1101 0100

0

100 1001

a100

1101 0101

0

110 0000

a101

1101 0110

0

110 0001

x45

1101 0111

1

10 1101

1101 1100

a102

1101 1000

0

110 0010

1101 1001

0

110 0011

1101 1010

0

110 0100

jmp x45

1101 1011

1

00 0000

1101 0111

a103

1101 1100

0

110 0101

1101 1101

0

110 0110

1101 1110

0

110 0111

jmp a109

1101 1111

1

00 0000

1110 0111

a104

1110 0000

0

100 0100

1110 0001

0

110 1000

a105

1110 0010

0

110 1001

a106

1110 0011

0

110 1010

a107

1110 0100

0

110 1011

jmp a109

1110 0101

1

00 0000

1110 0111

a108

1110 0110

0

110 1010

a109

1110 0111

0

110 1100

1110 1000

0

110 1101

1110 1001

0

110 1110

1110 1010

0

110 1111

1110 1011

0

111 0000

1110 1100

0

111 0001

1110 1101

0

111 0010

a116

1110 1110

0

111 0011

jmp a52

1110 1111

1

00 0000

0110 0100

1111 0000

1111 0001

4.2 Описание функциональной схемы УА

Запуск управляющего автомата производится сигналом, который переключает триггер в единичное состояние. Инициализируется операция чтения.

После инициализации чтения команды, ее адрес из ПЗУ через мультиплексор передается на счётчик команд. Адрес со счетчика передается в УП. Из управляющей памяти по этому адресу считывается микрокоманда и передается в РгМк (регистр микрокоманд).

Далее анализируется формат микрокоманды (на схеме — по нулевому биту РгМк). Если микрокоманда имеет операционный формат, то операционная часть (биты 7−13 РгМк) заносится в RG2, в котором дешифрируется текущая микрооперация и посылается в ОУ, после чего счётчик переходит на следующий адрес и из УП выбирается новая микрокоманда.

Если микрокоманда имеет адресный формат, то адресная часть (биты 7−14 РгМк) заносится в РгА. Далее биты 1−6 с РгМк посылаются на дешифратор DC2, и, если после получения сигналов из ОУ условие является выполненным, то следует переход на ячейку памяти в ПЗУ, адрес которой находится в РгА. Если условие не выполнено, счётчик осуществляет переход на следующий адрес по-порядку. МПУУ продолжает функционировать, пока активной не станет микрокоманда «нет операции» (ym = 000 0000)

Заключение

В ходе выполнение курсового проекта было выполнено проектирование работы микропроцессора на основе команд из системы команд процессора Intel 486.

Рассматривались следующие команды:

1. IMUL r16, r/m16

2. FDIV ST (i), ST

ПоказатьСвернуть
Заполнить форму текущей работой