Проектирование процесса для заданной системы команд
Введение
Микропроцессор - процессор (устройство,
отвечающее за выполнение арифметических, логических операций и операций
управления, записанных в машинном коде), реализованный в виде одной микросхемы
или комплекта из нескольких специализированных микросхем (в отличие от
реализации процессора в виде электрической схемы на элементной базе общего
назначения или в виде программной модели). Первые микропроцессоры появились в
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 Микропроцессор i486
(также известный как i486, Intel 80486 или
просто 486-ой) - 32-битный скалярный x86-совместимый микропроцессор четвёртого
поколения, построенный на гибридном CISC-RISC-ядре и выпущенный фирмой Intel 10
апреля 1989 года. Этот микропроцессор является усовершенствованной версией
микропроцессора 80386. Впервые он был продемонстрирован на выставке 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 Формат команд
При разработке системы команд процессоров 80386
и i486 пришлось решить следующие основные вопросы:
обеспечить совместимость по объектному коду с
предшествующими процессорами, но вместе с этим ввести в команды 32-битные
операнды и адреса;
расширить диапазон использования регистров
общего назначения в адресных вычислениях, в частности, привлечь для этого
регистры ЕАХ, ЕСХ и EDX, 16-битные аналоги которых АХ, СХ к DХ для адресации не
применялись;
по возможности ввести новые команды, которые
упрощают решение часто встречающихся программных задач, например манипуляций
двоичными цепочками, двойного сдвига и др.
бщий формат команды процессора i486 приведен на
Рис. 3. Команды состоят из необязательных префиксов, одного или двух байт
главного кода операции, спецификатора адреса, представленного байтами mod r/m и
sib, смещения в команде (displacement) и непосредственных данных. Английские
аббревиатуры означают следующее: Base - база, MODe - режим, Register/Memory -
регистр/память, Scale - масштаб, Index - индекс. Из всех полей команды
обязательными являются только один или два байта кода операции.
Префикс - это байт со специальным кодированием,
который модифицирует операцию одной находящейся за ним команды.
Рис. 3 - Общий формат команд
Во многих командах процессора байты ModR/M и SIB
следуют за байтом (байтами) кода операции. Эти байты содержат следующую
информацию:
.тип индексации или номер регистра,
используемого в команде;
.используемый регистр или дополнительную
информацию о коде операции;
.информацию о базе, индексе и масштабе.
Байт ModR/M состоит из трех информационных
полей:
.поле mod содержит два наиболее значимых бита (7
и 6 биты) и в комбинации с полем r/m определяет 32 возможных типа адресации (8
регистровых и 24 индексных);
.поле reg содержит следующие за полем mod три
бита (5, 4 и 3 биты) и определяет либо номер регистра, либо три дополнительных
бита кода операции;
.поле r/m содержит три последних значащих бита
байта ModR/M (2, 1 и 0 биты) и может определять номер регистра, в котором
находится операнд, или представлять совместно с полем mod 32 возможных типа
адресации.
-битные базовые и масштабируемые индексные формы
адресации требуют наличия SIB байта. Определенная кодировка ModR/M байта
сигнализирует о присутствии SIB байта. Байт SIB состоит из следующих полей:
.поле ss, занимающее два наиболее значимых бита
(7 и 6 биты), определяет масштабный множитель;
.поле index, занимающее следующие три бита за
полем ss (5, 4, и 3 биты), определяет номер индексного регистра;
.поле base, занимающее оставшиеся три бита (2, 1
и 0 биты), определяет номер базового регистра.
На рис. 4 показаны форматы ModR/M и SIB байтов.
Рис. 4 - Формат байтов ModR/M и SIB
Устройство FPU имеет пять форматов команд,
представленных на Рис. 5. Во всех форматах минимальная длина команды составляет
два.
Команды с форматами, показанными на Рис. 5
(а,б), выполняют обращение к памяти, поэтому поля mod (режим) и r/m
(регистр/память) во втором байте, а также байт sib (масштаб, индекс, база)
имеют тот же смысл, что и в командах целочисленного устройства. Эти поля
определяют, как формируется эффективный адрес ЕА памяти.
Команды с форматом, показанном на Рис. 5 (б),
выполняют арифметические операции и операции сравнения. Поле формата памяти MF
определяет тип операнда, находящегося в памяти. Оно имеет следующее
кодирование:
- вещественное число одинарной точности (32
бита),
- короткое целое двоичное число (32 бита),
- вещественное число двойной точности (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 и т.д.).
.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) - ошибка точности,(Underflow
Error) - ошибка антипереполнения,
ОЕ (Overflow Error) - ошибка переполнения,Е
(divide-by-Zero Error) - ошибка деления на нуль(Denormalized operand Error) -
ошибка ненормализованного операнда,(Invalide operation Error) - ошибка
недействительной операции.
Рис. 8 - Слово состояния сопроцессора (регистр
флагов FPU)
При обнаружении любого из незамаскированных
особых случаев устройство FPU устанавливает в состояние 1 соответствующий
флажок и формирует активный выходной сигнал, сообщая об особом случае
(прерывание 16). Процедура обработки особого случая считывает слово состояния
для определения конкретной причины особого случая.
Бит нарушения стека SF предназначен для того,
чтобы фиксировать ошибки в работе регистрового стека. Устройство FPU
устанавливает его в состояние 1, если команда вызывает переполнение стека
(включение в уже заполненный стек) или антипереполнение стека (извлечение из
пустого стека).
Бит 8 суммарной ошибки ES (Error Summary)
устанавливается в состояние 1 при возникновении любого особого случая и
участвует в формировании выходного сигнала FERR#.
Биты кода условия СЗ - СО фиксируют особенности
результатов команд сравнения, проверки и анализа. Биты СЗ - СО, в основном,
применяются для условных переходов.
2. Разработка структуры и
микропрограммы микропроцессора
.1 Выборка и дешифрация команд
В соответствии с вариантом задания, требуется
произвести выборку следующих команд:
IMUL r16, r/m16 (mod = 00)
FDIV ST(i), ST
JNA rel8
. 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
|
101011
|
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 содержит адрес регистра-операнда из РОН.
. 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)
|
10101
|
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.
. JNA rel8
Условный переход JNA проверяет флажки CF и ZF на
равенство 1. Флажки устанавливает предыдущая команда.
Если проверяемое условие истинно, то
производится переход к ячейке, задаваемой операндом. Кодирование наиболее
эффективно, когда назначение перехода находится в текущем сегменте кода и в
пределах от -128 до +127 байт от первого байта следующей команды.
КОП
|
Относительный
адрес перехода
|
01110110
|
8
бит
|
Рис. 11 - Структура команды JNA rel8
КОП содержит код команды, а поле с относительным
адресом перехода содержит число (rel8), которое будет прибавляться (вычитаться)
к счетчику команд.
Команды из памяти выбираются по счетчику команд
и записывается в регистр команд. В счетчике хранится адрес текущей команды.
После выполнения текущей команды, значение счетчика увеличивается и выборка
производится снова. В регистре команд производится дешифрация команд.
2.2 Разработка структурной схемы
На основе анализа форматов заданных команд и
данных была разработана структурная схема микропроцессора, которая включает в
себя следующие элементы:
. Оперативная память объемом 4ГБ. Регистр адреса
ОП имеет разрядность 31 бит, а регистр информации ОП - 16 бит. Ширина выборки -
16 бит. Разрядность общей шины - 32 бита.
. Регистры общего назначения с организацией 8×16.
Разрядность
регистра адреса РОН - 3 бита, а регистра информации - 16 бит.
. Стековая память в FPU с организацией 8×80.
Разрядность
регистра адреса стековой памяти 3 бита, а регистра информации - 80 бит.
. Регистр флагов сопроцессора (РгSW) -
отображает состояния флагов при выполнении команд в формате с плавающей точкой.
Разрядность регистра - 16 бит.
. Счетчик команд (СчК) - хранит адрес следующей
команды. Разрядность равна 31 биту.
. Регистр команд (РгК) - хранит текущую команду.
Разрядность равна 16 битам.
Блок АЛУ для операций команды IMUL (блоки 26-72)
содержит следующие элементы:
. Рг1_У и Рг2_У - 16 разрядные выходные регистры
АЛУ, хранят множимое и множитель соответственно.
. Рг2’_У - временный шестнадцатиразрядный
регистр, используется для хранения сдвинутого значения множителя в процессе
умножения.
. РгА_У, РгБ_У - входные 16-разрядные регистры
сумматора СМ_У.
. СМ_У - 16-разрядный сумматор, используется для
сложения суммы частичных произведений с очередным отрицательным или
положительным множимым в ходе алгоритма умножения.
. РгСМ_У - регистр сумматора СМ_У.
. СчТ_У - 16-разрядный счетчик итераций
умножения.
. ТЗн - триггер, сохраняющий знак множителя.
Введен для того, чтобы произвести нужный тип коррекции произведения после
умножения (знак в Рг2_У будет утерян).
Блок АЛУ для операций команды FDIV (блоки
74-161):
. Рг1, Рг2 - восьмидесяти разрядные входные
регистры АЛУ, получают делимое и делитель из стека FPU.
. РгА_АСт, РгБ_АСт, СМ_АСт, РгСМ_АСт -
трехразрядный сумматор с входными регистрами и выходным регистром для
вычисления смещения вершины относительно TOP (ST(i)).
. Рг1_П, Рг2_П - 15 разрядные регистры для
хранения порядков операндов.
. РгА_П, РгБ_П, СМ_П, РгСМ_П - 15 разрядный
сумматор для сложения (вычитания) порядков операндов.
. Сч_П - 15 разрядный счетчик, хранит
вычисленное значение порядков, служит для возможного инкремента порядка при
денормализации.
. М2 - комбинационная схема вычисления знака
ответа. При том, что знак при делении восстанавливается, этот элемент введен
для простановки знака при «критических» случаях деления, например, 0/0 или ∞/∞.
. Рг2_М, Рг1_М - 65 разрядные регистры для
хранения мантисс операндов. В старший бит записывается знак операнда.
. ТЗн_М - триггер, который хранит знак делимого,
полученного из Рг1_М. Сохраняет знак для выполнения коррекции после деления,
так как знаковый разряд Рг1_М сдвинется в процессе деления.
. Рг1’_М - 65 разрядный регистр, «удлиняющий»
делимое. До начала деления равен 0. В процессе деления в нем получается
частное.
. Рг3_М - 65 разрядный регистр, хранящий
сдвинутое значение Рг1’_М.
. РгА_М, РгБ_М, СМ_М, РгСМ_М - 65 разрядный
сумматор с входными и выходным регистрами. На нем осуществляется
сложение/вычитание в процессе деления.
. РгРез_ПЗ - 80 разрядный сдвиговый регистр,
содержащий подсчитанное частное. Служит для возможной денормализации мантиссы.
. СчТ_М - 65 разрядный счетчик итераций при
делении.
Блок АЛУ для выполнения команды JNA (блоки
14-17):
. РгА_СчК, РгБ_СчК, СМ_СчК, РгСМ_СчК - 31
разрядный сумматор с входными и выходным регистрами для вычисления нового
адреса команды. РгА_СчК принимает значение текущей команды из СчК, РгБ_СчК -
смещение, указанное в команде.
. КСХ - комбинационная схема для анализа флагов.
Расчет организации ОП:
Ширина выборки = 16 бит -
разрядность РгИОП
= 31 - разрядность РгАОП.
Структурная схема микропроцессора
представлена в Приложении 1.
2.3 Разработка микропрограммы
Программа в ЭВМ реализуется по средствам
последовательного выполнения команд. Она состоит из следующих основных этапов:
выборка и дешифрация команд;
выборка операндов;
выполнение операции;
запись результата;
формирование адреса следующей команды.
. Блоки 1-8: выборка команды.
. Блоки 9-12, 18-25: дешифрация команды.
. Блоки 12-16: реализация команды JNA.
. Блоки 26-72: реализация команды IMUL:
Блоки 26-31: выбор первого операнда.
Блоки 33-40: выборка второго операнда из ОП.
Блок 41: подготовка перед умножением.
Блоки 42-51: выполнение алгоритма умножения в
дополнительном коде.
Блоки 52-57: коррекция произведения.
Блоки 58-65: внализ произведения и вывод старшей
части ответа в регистр DX.
Блоки 66-72: вывод младшей (всей) части
произведения.
. Блок 73: инкремент счетчика команд.
. Блоки 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: вывод ответа в регистровый стек.
. Блок 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’_М
|
РгСМ_У:=СМ_У
|
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]=110110
|
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. Разработка управляющего автомата
с жесткой логикой
.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
|
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
|
y4S1
|
|
|
|
|
|
|
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,y8R3
|
|
|
|
|
a12
|
101
0011
|
y12S6S7
|
|
|
|
|
a52
|
101
0100
|
y43S5
|
|
|
|
|
a53
|
101
0101
|
y44,y45,y46S5S7
|
|
|
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
|
|
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
|
y4R7
|
|
|
|
|
|
|
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
|
y21S1
|
|
|
|
|
a28
|
010
0110
|
y22S5
|
|
|
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
|
y26S2
|
|
|
|
|
a31
|
111
0110
|
y27S2S5
|
|
|
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
|
y21R5R7
|
|
|
|
|
a28
|
010
0110
|
y22R1R7
|
|
|
|
|
a34
|
010
0111
|
y22R1
|
|
|
|
|
a36
|
111
0111
|
y31S3
|
|
|
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,y35R2
|
|
|
|
|
a44
|
011
0110
|
y40,y41S6R7
|
|
|
|
|
|
|
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
|
|
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
|
y67S3R6
|
|
|
|
|
a73
|
011
1111
|
y68S3
|
|
|
|
|
|
|
y68
|
|
|
|
|
a74
|
011
1110
|
y68S3R7
|
|
|
|
|
a75
|
010
1110
|
y67R7
|
|
|
|
|
|
|
y67
|
|
|
|
|
a76
|
110
1111
|
y68S1
|
|
|
|
|
|
|
y68
|
|
|
|
|
|
|
y68
|
|
|
|
|
a104
|
001
1111
|
y68,y104R2S3
|
|
|
|
|
|
|
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,y76R3
|
|
|
|
|
a83
|
101
1111
|
y81,y82,y83S6
|
|
|
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,y77S2
|
|
|
|
|
a105
|
001
1110
|
y105R1
|
|
|
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
|
y70S2
|
|
|
|
|
|
|
y70
|
|
|
|
|
a93
|
110
1011
|
y88S2R3
|
|
|
|
|
|
|
y88
|
|
|
a91
|
111
1011
|
a92
|
101
1001
|
|
y73
|
R2R6
|
a92
|
101
1001
|
a95
|
100
1001
|
y93R3
|
|
|
|
|
a96
|
100
1000
|
y94R3R7
|
|
|
a93
|
110
1011
|
a94
|
110
1001
|
|
y89
|
R6
|
a94
|
110
1001
|
a95
|
100
1001
|
y93R2
|
|
|
|
|
a96
|
100
1000
|
y94R2R7
|
|
|
a95
|
100
1001
|
a97
|
110
1000
|
y87,y95S2R7
|
|
|
|
|
a89
|
100
1011
|
y76S6
|
|
|
a96
|
100
1000
|
a97
|
110
1000
|
y87,y95S2
|
|
|
|
|
a89
|
100
1011
|
y76S6S7
|
|
|
a97
|
110
1000
|
a98
|
010
1000
|
y73R1
|
|
|
|
|
|
|
y73
|
|
|
|
|
|
|
y73
|
|
|
|
|
a99
|
010
1001
|
y89R1S7
|
|
|
|
|
|
|
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,y100S3
|
|
|
|
|
a103
|
001
1010
|
y101,y102,y103R2S3
|
|
|
a102
|
011
1010
|
a102
|
011
1010
|
y98,y99,y100-
|
|
|
|
|
a103
|
001
1010
|
y101,y102,y103R2
|
|
|
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
|
Аналитические выражения для термов:
Аналитические выражения для функций возбуждения:
=T1+T17+a28+a45+a64+T34+T35+T36+a114=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=a60=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. Разработка управляющего автомата
с программируемой логикой
.1 Составление карты прошивки УП
Основной частью управляющего автомата с
программируемой логикой является управляющая память, в которой хранятся
закодированная микропрограмма. Существуют различные способы адресации
микроопераций, хранимых в УП. В данном случае используется естественная
адресация с двумя адресами. Способ кодирования операционной части -
вертикальный. Операционная часть содержит либо код микрооперации, либо адрес
перехода при выполнении условия. За тип микрокоманды отвечает специальный бит
(равен одному - адресный формат). При невыполнении условия выполняется
следующая по порядку в УП микрокоманда. Фрагмент схемы программируемого
автомата с естественной адресацией приведен на рисунке 13.
Рис. 13 - Автомат с естественной адресацией
Количество разрядов операционной
части:. Количество
разрядов адресной части : .
Структура микрокоманды представлена
на рисунке 14.
Тип
|
Условие
|
Адресная
часть
|
|
|
Операционная
часть
|
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
Биты
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 14 - Структура микрокоманды
Кодирование условий представлено в таблице 7,
кодирование микроопераций - в таблице 8, карта прошивки управляющей памяти
представлена в таблице 9.
Таблица 7
Условие
|
Содержимое
|
Условие
|
Содержимое
|
БП
|
000000
|
X24
|
011000
|
X1
|
000001
|
X25
|
011001
|
X2
|
000010
|
X26
|
011010
|
X3
|
000011
|
X27
|
011011
|
X4
|
000100
|
X28
|
011100
|
X5
|
000101
|
X29
|
011101
|
X6
|
000110
|
X30
|
011110
|
X7
|
000111
|
X31
|
011111
|
X8
|
001000
|
X32
|
100000
|
X9
|
001001
|
X33
|
100001
|
X10
|
001010
|
X34
|
100010
|
X11
|
001011
|
X35
|
100011
|
X12
|
001100
|
X36
|
100100
|
X13
|
001101
|
X37
|
100101
|
X14
|
001110
|
X38
|
100110
|
X15
|
001111
|
X39
|
100111
|
X16
|
010000
|
X40
|
101000
|
X17
|
010001
|
X41
|
101001
|
X18
|
010010
|
X42
|
101010
|
Х19
|
010011
|
X43
|
101011
|
Х20
|
010100
|
X44
|
101100
|
Х21
|
010101
|
X45
|
101101
|
Х22
|
010110
|
|
|
Х23
|
010111
|
|
|
Таблица 8
Операция
|
Код
|
Операция
|
Код
|
Операция
|
Код
|
Операция
|
Код
|
ym
|
0000000
|
y30
|
0011110
|
y60
|
0111100
|
y90
|
1011010
|
y1
|
0000001
|
y31
|
0011111
|
y61
|
0111101
|
y91
|
1011011
|
y2
|
0000010
|
y32
|
0100000
|
y62
|
0111110
|
y92
|
1011100
|
y3
|
0000011
|
y33
|
0100001
|
y63
|
0111111
|
y93
|
1011101
|
y4
|
0000100
|
y34
|
0100010
|
y64
|
1000000
|
y94
|
1011110
|
y5
|
0000101
|
y35
|
0100011
|
y65
|
1000001
|
y95
|
1011111
|
y6
|
0000110
|
y36
|
0100100
|
y66
|
1000010
|
y96
|
1100000
|
y7
|
0000111
|
y37
|
0100101
|
y67
|
1000011
|
y97
|
1100001
|
y8
|
0001000
|
y38
|
0100110
|
y68
|
1000100
|
y98
|
1100010
|
y9
|
0001001
|
y39
|
0100111
|
y69
|
1000101
|
y99
|
1100011
|
y10
|
0001010
|
y40
|
0101000
|
y70
|
1000110
|
y100
|
1100100
|
y11
|
0001011
|
y41
|
0101001
|
y71
|
1000111
|
y101
|
1100101
|
y12
|
0001100
|
y42
|
0101010
|
y72
|
1001000
|
y102
|
1100110
|
y13
|
0001101
|
y43
|
0101011
|
y73
|
1001001
|
y103
|
1100111
|
y14
|
0001110
|
y44
|
0101100
|
y74
|
1001010
|
y104
|
1101000
|
y15
|
0001111
|
y45
|
0101101
|
y75
|
1001011
|
y105
|
1101001
|
y16
|
0010000
|
y46
|
0101110
|
y76
|
1001100
|
y106
|
1101010
|
y17
|
0010001
|
y47
|
0101111
|
y77
|
1001101
|
y107
|
1101011
|
y18
|
0010010
|
y48
|
0110000
|
y78
|
1001110
|
y108
|
1101100
|
y19
|
0010011
|
y49
|
0110001
|
y79
|
1001111
|
y109
|
1101101
|
y20
|
0010100
|
y50
|
0110010
|
y80
|
1010000
|
y110
|
1101110
|
y21
|
0010101
|
y51
|
0110011
|
y81
|
1010001
|
y111
|
1101111
|
y22
|
0010110
|
y52
|
0110100
|
y82
|
1010010
|
y112
|
1110000
|
y23
|
0010111
|
y53
|
0110101
|
y83
|
1010011
|
y113
|
1110001
|
y24
|
0011000
|
y54
|
0110110
|
1010100
|
y114
|
1110010
|
y25
|
0011001
|
y55
|
0110111
|
y85
|
1010101
|
y115
|
11100011
|
y26
|
0011010
|
y56
|
0111000
|
y86
|
1010110
|
y116
|
1110100
|
y27
|
0011011
|
y57
|
0111001
|
y87
|
1010111
|
y117
|
1110101
|
y28
|
0011100
|
y58
|
0111010
|
y88
|
1011000
|
|
|
y29
|
0011101
|
y59
|
0111011
|
y89
|
1011001
|
|
|
Таблица 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
|
|
0001001
|
|
0001
1001
|
0
|
|
0001010
|
y11
|
0001
1010
|
0
|
|
0001011
|
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
|
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
|
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.
Рассматривались следующие команды:
. IMUL r16, r/m16
. FDIV ST(i), ST
. JNA rel8
В курсовом проекте была разработана структура
микропроцессора, его функциональная микропрограмма. На основе автомата Мура и
RS-триггеров был разработан управляющий автомат с жесткой логикой. Построена
принципиальная электрическая схема (на основе микросхем серии КР1533 и элемента
серии К531).
Также был спроектирован автомат с
программируемой логикой и построена его функциональная схема.
Разработка микропроцессора успешно завершена,
благодаря оценке оптимальности принятого решения на каждом шаге проектирования.