Y
|
Микрооперация
|
ai
|
A1
|
bi
|
A2
|
φm
|
Z
|
dk
|
Результат
|
y1
|
A
(7 : 0) : = D1(7 : 0)
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
y2
|
B
(7 : 0) : = D2(7 : 0)
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
y3
|
C
(15 : 0) : = 0
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
y4
|
CnT
(2 : 0) : = 81 0
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
y5
|
C
(15 : 0) : = L1 (C (14 : 0). 0)
|
a1
|
C
|
-
|
-
|
φ1
|
Z
:= L1 (A1(14 : 0). 0)
|
d1
|
C
:= Z
|
y6
|
C
(15 : 0) : = C (15 : 0)+A (7 : 0)
|
a1
|
C
|
b1
|
A
|
φ2
|
Z
:= A1 (15 : 0)+ A2 (7 : 0)
|
d1
|
C
:= Z
|
y7
|
B
(7 : 0) : = L1 (B (6: 0). 0)
|
-
|
-
|
b2
|
B
|
φ3
|
Z
:= L1 (A2 (6: 0). 0)
|
d2
|
B
:= Z
|
y8
|
CnT
: = CnT-1
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
y9
|
CnT
(0) : = 1
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
y10
|
C
(7 : 0) : = C (7 : 0) + A (7 : 4)
|
a1
|
C
|
b1
|
A
|
φ4
|
Z
:= A1 (7 : 0)+ A2 (7 : 4)
|
d1
|
C
:= Z
|
y11
|
C
(7 : 0) : = L1 (C (6 : 0). 0)
|
a1
|
C
|
-
|
-
|
φ5
|
Z
:= L1 (A1 (6 : 0). 0)
|
d1
|
C
:= Z
|
y12
|
A
(7 : 0) : = L1 (A (6 : 0). 0)
|
-
|
-
|
b1
|
A
|
φ6
|
Z
:= L1 (A2 (6 : 0). 0)
|
d3
|
A
:= Z
|
y13
|
B
(7 : 0) : = C (7 : 0)
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
y14
|
C
(7 : 0) : = C (7 : 0) + B (7: 0)
|
a1
|
C
|
b2
|
B
|
φ7
|
Z
:= A1 (7 : 0) + A2 (7: 0)
|
d1
|
C
:= Z
|
y15
|
R
(15 : 0) : = C (15 : 0)
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
y16
|
COP
: = D3
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
. Выделим классы эквивалентных микроопераций и
найдем для них обобщенные микрооператоры:
. Построим схему М-автомата уровня
регистровых передач:
Рисунок 2.3 - Схема М-автомата
уровня регистровых передач
3. ПРОЕКТИРОВАНИЕ УПРАВЛЯЮЩЕГО
АВТОМАТА
.1 Общие вопросы функционирования
устройств управления с программируемой логикой (Р-автоматы)
Под УУ понимается совокупность
блоков и узлов процессора, обеспечивающих координирование работы всех устройств
ЭВМ и управление ими для всех принятых режимов. УУ, реализуя программы,
организовывают все необходимые действия по приёму, оценке и преобразованию
исходной информации с целью получения и выдачи необходимых результатов. Таким
образом, УУ может считаться преобразователем первично-командной информации,
представленной командами системы, во вторично-командную информацию,
представленную формируемыми УУ исполнительными адресами, кодами и управляющими
сигналами, воздействие которых на соответствующие узлы и блоки приводит к
выполнению заданных операций.
Управляющий автомат может быть
построен на основе принципа программного управления, использующего
операционно-адресную структуру управляющих слов. Управляющее слово определяет
порядок функционирования устройства в течение одного такта и называется
микрокомандой. Совокупность микрокоманд образует массив МК[0…P], отдельные
микрокоманды в котором выделяются посредством адреса, равного номеру 0, 1, … Р
элемента массива МК. Микрокоманда содержит информацию о микрооперациях, которые
должны выполняться в данном такте работы устройства, и информацию об адресе
следующей микрокоманды. Также в микрокоманде должны быть указаны логические
условия, значение которых влияет на выбор адреса следующей микрокоманды.
Согласно задания, необходимо
спроектировать Р-автомат с принудительной адресацией и сокращенным форматом
микрокоманды. В таком случае, для формирования адреса следующей микрокоманды
отводится единственное поле B. Если поле Х = 0, то значение B, безусловно,
определяет адрес следующей микрокоманды. Если Х ¹ 0, то адрес следующей микрокоманды
равен (В+хХ), где хХ - значение логического условия с
номером Х. В результате этого реализуется условный переход: если хХ =
0, то к микрокоманде с номером В, если хХ = 1, то к микрокоманде с
адресом (В+1). Указанный порядок формирования адресов реализуется схемой на
рисунке 3.1. Исполнительный адрес Вi+1=Вi+ хХ формируется
сумматором.
Рисунок 3.1 - Структурная схема УА с
принудительной адресацией и сокращенным форматом микрокоманды
.2 Уточненная граф-схема алгоритма
Для проектирования управляющего
автомата необходимо использовать уточненную ГСА, которая учитывает тип
операционного автомата.
Преобразование объединенной ГСА в
уточненную включает следующие действия:
. замена микроопераций их условными
обозначениями yi;
. разделение операционных вершин с n
микрооперациями преобразования на n операционных вершин, т.к. ОА типа М не
может выполнять больше одной микрооперации преобразования за один такт работы;
. разметка состояний управляющего
автомата по правилам:
состояние, следующее за условной
вершиной при равенстве xj = 0, должно иметь метку Ai (i-ый
номер);
состояние, следующее за условной
вершиной при равенстве xj = 1, должно иметь метку Ai+1((i+1)-ый
номер).
Рисунок 3.2 - Уточненная (размеченная) ГСА
3.3 Проектирование управляющего автомата
Разработка структуры УА (Р-автомата)
подразумевает выполнение следующих этапов:
. Опеределение формата микрокоманды:
Рисунок 3.3 - Формат микрокоманды
. Определение формата операционной части
микрокоманд. Для разбиения множества микроопераций на непересекающиеся (по
совместимости команд) подножества будем использовать алгоримт прямого
включения.
Таблица 3.1 - Матрица совместимости
микроопераций S
S1
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S2
|
1
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S3
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S4
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S5
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S6
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S7
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S8
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
S9
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S10
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S11
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S12
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
S13
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
S14
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S15
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
S16
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Таким образом подмножества
непересекающихся микроопераций будут следующими:
Получим матрицу включений R для
полученных подмножеств микроопераций:
Таблица 3.2 - Матрица включений R
|
y1
|
y2
|
y3
|
y4
|
y5
|
y6
|
y7
|
y8
|
y9
|
y10
|
y11
|
y12
|
y13
|
y14
|
y15
|
y16
|
Y1
|
1
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
Y2
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
Y3
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Y4
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Количество бит, необходимое для кодирования
управляющих сигналов {yi} для каждого подмножества Yj
будет составлять (с учетом состояни, при котором не должна выполняться ни одна
операция из подмножества):
Y1
= 4;nY2 = 3;nY3 = 1;nY4 = 1;
Таким образом, длина операционной части
микрокоманды:
ОЧ
= 4 + 3 + 1 + 1 = 9.
. Определим формат адресной части микрокоманды.
Количество бит, необходимое для кодирования
адреса команды:
.
Количество бит, необходимое для
кодирования всех логических условий:
.
Таким образом, длина адресной части
микрокоманды:АЧ = 2 + 5 = 7.
Определим размер всей
микрокоманды:МК = 7 + 9 = 16.
. Составим кодированную программу
функционирования Р-автомата
Таблица 3.3 Кодированная программа
функционирования Р-автомата
Ai
|
Y1
|
Y2
|
Y3
|
Y4
|
X
|
A
|
A0
|
y16
|
-
|
-
|
-
|
x1
|
A1
|
A1
|
y1
|
y2
|
y3
|
y4
|
-
|
A3
|
A2
|
y1
|
y9
|
y3
|
-
|
-
|
A7
|
A3
|
y5
|
-
|
-
|
-
|
x2
|
A5
|
A4
|
y15
|
-
|
-
|
-
|
-
|
A0
|
A5
|
y7
|
y8
|
-
|
-
|
x3
|
A3
|
A6
|
y6
|
-
|
-
|
-
|
A5
|
A7
|
y10
|
-
|
-
|
-
|
x3
|
A8
|
A8
|
y11
|
-
|
-
|
-
|
-
|
A10
|
A9
|
y15
|
-
|
-
|
-
|
-
|
A0
|
A10
|
y12
|
-
|
-
|
-
|
-
|
A11
|
A11
|
y12
|
y13
|
-
|
-
|
-
|
A12
|
A12
|
y11
|
-
|
-
|
-
|
-
|
A13
|
A13
|
y12
|
-
|
-
|
-
|
-
|
A14
|
A14
|
y11
|
-
|
-
|
-
|
-
|
A15
|
A15
|
y12
|
-
|
-
|
-
|
-
|
A16
|
A16
|
y14
|
y8
|
-
|
-
|
-
|
A7
|
. Составим карты программирования памяти в
соответствии с кодами выполняемых микроопераций и проверяемых логических
условий:
Таблица 3.4 - Коды микроопераций подмножества Y1
Y1
|
y1
|
y5
|
y6
|
y7
|
y10
|
y11
|
y12
|
y14
|
y15
|
y16
|
K(Y1)
|
0001
|
0010
|
0011
|
0100
|
0101
|
0110
|
0111
|
1000
|
1001
|
1010
|
Таблица 3.5 - Коды микроопераций подмножества Y2
Y2
|
y2
|
y8
|
y9
|
y13
|
K(Y2)
|
001
|
010
|
011
|
100
|
Таблица 3.6 - Коды микроопераций подмножества Y3
Таблица 3.7 - Коды микроопераций подмножества Y4
Таблица 3.8 - Коды логических условий Х
Согласно кодам микроопераций и логических
условий и кодированной микропрограмме составим матрицу программирования памяти:
Таблица 3.9 - Матрица программирования памяти
№
|
Адрес
|
Y1
|
Y2
|
Y3
|
Y4
|
X
|
A
|
|
|
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
0
|
00000
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
1
|
00001
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
2
|
00010
|
0
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
3
|
00011
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
1
|
0
|
1
|
4
|
00100
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
5
|
00101
|
0
|
1
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
6
|
00110
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
7
|
00111
|
0
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
8
|
01000
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
9
|
01001
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
10
|
01010
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
11
|
01011
|
0
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
12
|
01100
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
13
|
01101
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
14
|
01110
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
15
|
01111
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
16
|
10000
|
1
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
. Построение схемы управляющего автомата уровня
регистровых передач.
Согласно обобщенной структуре управляющего
автомата для построения схемы используются следующие элементы:
PROM - постоянное запоминающее устройство,
которое хранит набор выполняемых команд;
Т-триггер для разрешения чтения из постоянного
запоминающего устройства PROM;
регистр RG, хранящий текущую микрооперацию;
DC - декодирующее устройство, преобразующее
позиционный двоичный код;
MX - мультиплексор, выбирающий одно из
проверяемых логических условий;
SM - сумматор, формирующий адрес следующей
команды.
Рисунок 3.3 - Схема управляющего устройства
уровня регистровых передач
4. ПРОЕКТИРОВАНИЕ ПРОЦЕССОРНОГО МОДУЛЯ
процессорный модуль
беззнаковый двоичный
Согласно декомпозиции процессорного модуля,
представленной на рисунке 1.1, проектирование заключалось в выполнении двух
этапов: проектирование операционного устройства и управляющего автомата.
Очевидно, что полученный процессорный модуль
является соединением двух отедльных устройств - ОА и УА. На входы всего
процессорного модуля подаются операнды (D1, D2), условие
выбора операции (СОР или D3) и управляющие сигналы (Clk1, Clk2,
Start, Stop, Reset). Внутреннее взаимодействие между ОА и УА заключается во
взаимопередаче сигналов: ОА генерирует значения вычисленных логических условий
{X} на каждом такте, УА формирует сигналы выполнения необходимых на данном
такте микроопераций {Y}. Также операционное устройство формирует результат
выполнения заданного значением регистра СОР действия, который подается на
выходную шину R.
Помимо схем ОА и УА уровня регистровых передач
результатом выполнения курсового проекта являются тексты VHDL-моделей
управляющего устройства, операционного автомата и процессорного модуля.
VHDL-модель процессорного модуля включает в себя в качестве компонентов модели
ОА и УА.
Стоит отметить, что при проектировании
VHDL-модели процессорного модуля сигнал синхронизации Clk подавался УА и ОА в
противофазе, т.к. это обеспечивает согласованную работу обоих устройств. В
другом случае могли иметь место конфликты между компонентами.
5. АНАЛИЗ РЕЗУЛЬТАТОВ СИНТЕЗА
В результате автоматизированного синтеза были
получены модели операционного автомата, управляющего устройства и всего
процессорного модуля. Оценить работу разработанных компонентов можно с помощью
полученных временных диагрмм, построенных в среде проектирования.
.1 Тестирование VHDL-модели операционного
устройства
После разработки VHDL-модели ОА была получена
временная диаграмма работы устройства, представленная на рисунке 5.1.
Рисунок 5.1 - Временная диаграмма работы
VHDL-модели ОА
Моделирование работы ОА осуществлялось при
подаче на входы устройства входных данных (d1, d2, d3), текущей микрокоманды и
сигналов синхронизации (clk) и асинхронного сброса (rst). В результате моделирования
и отладки был сделан вывод о соответствии работы устройства требованиям к ОА.
(Текст VHDL-модели операционного автомата - в приложении 1).
5.2 Тестирование VHDL-модели управляющего
устройства
После разработки VHDL-модели УА была получена
временная диаграмма работы устройства, представленная на рисунке 5.2.
Рисунок 5.2 - Временная диаграмма работы
VHDL-модели УА
Для моделирования работы управляющего устройства
на входы устройства были поданы сигналы синхронизации (clk) и асинхронного
сброса (rst) а также значения вычисленных операционным автоматом логических
условий. (Текст VHDL-модели управляющего автомата - в приложении 2).
Особенностью VHDL-модели является то, что для
реализации преобразования кодов логических условий и микроопераций из команд в
унарные коды использовалась функция conv_integer(). Т.к. при нулевых значения
векторов функция возвращает 0, пришлось ввести дополнительный нулевой бит во
входной вектор логических условий и выходной вектор микроопераций.
Моделирование работы устройства осуществлялось
по стратегии обхода всех дуг. В результате моделирования был сделан вывод о
работоспособности модели, т.к. во всех состояниях УА в качестве выходного
вектора подавались сигналы микроопераций, соответствующие отмеченным в
уточненной ГСА.
.3 Тестирование VHDL-модели процессорного модуля
После разработки VHDL-модели УА были получены
временные диаграммы выполнения двух действий, представленные на рисунках 5.3 и
5.4. Для моделирования на входы модели процессорного модуля были поданы сигналы
синхронизации и асинхронного сброса, входные данные для выполняемого действия
(d1,d2 - операнды; d3 - код выполняемой операции). Результат выполнения
операции был получен на выходной шине r.
Рисунок 5.3 - Временная диграмма работы
прцессорного модуля: выполнение операции умножения целых беззнаковых чисел
Проверка результатов моделирования работы,
представленных на рисунке 5.3 (умножение целых беззнаковых чисел):
АА * 55 = 3872, или
* 1010101 = 11100001110010.
При моделировании получен верный результат.
Проверка результатов моделирования работы,
представленных на рисунке 5.4 (преобразование двоично-десятичного числа в
двоичное):
2-10 =
1011000 = 26 + 24 + 23 = 64 +16 + 8 = 88 10.
При моделировании получен верный результат.
Рисунок 5.4 - Временная диграмма работы
прцессорного модуля: выполнение преобразования двоично-десятичного числа в
двоичное
ВЫВОДЫ
Целью выполнения данного курсового проекта
является проектирование процессорного модуля - устройства, которое в
соответствии с входными данными выполняет одно из двух действий: умножение
целых беззнаковых чисел и преобразование двоично-десятичного числа в двоичное.
Исходными данными к проектированию были
граф-схемы алгоритмов заданных действий и рзарядность операндов.
При проектировании всего процессорного модуля
были обобщены и структурированы знания по дисциплине Компьютерная схемотехника:
углублены теоретические знания по организации и функционированию сложных
цифровых систем обработки информации, получены практические навыки по
проектированию данных систем с использованием языка VHDL. При проектировании УА
для разбиения множества микроопераций на непересекающиеся подмножества в
соответствии с матрицей совместимости S был использован алгоритм прямого
включения.
В соответствии с заданием к проекту был
спроектирован процессорный модуль, выполняющий заданные действия. Полученный
процессорный модуль состоит из двух устройств: операционного и управляющего
автоматов. Проектирование каждого из устройств проводилось отдельно в
соответствии с заданием. Спроектирован ОА типа М; УА является устройством с
программируемой логикой и сокращенным форматом микрокоманды.
В результате анализа автоматизированного синтеза
устройств можно сделать вывод о правильном и полном выполнении задания к
курсовому проектированию, т.к. разработанный процессорный модуль правильно
выполняет предусмотренные заданием действия.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1.
Кораблев Н. М. - Конспект лекций по дисциплине «Компьютерная схемотехника» -
Харьков, 2010 г.
.
Кораблев Н.М., Саранча С. Н., Саранча О. Н. - Методические указания к
лабораторным работам по дисциплине «Компьютерная схемотехника»: Часть 2
«Проектирование сложных систем» - Харьков: ХНУРЭ, 2006 г.
.
Кораблев Н.М., Саранча С. Н., Чиженков Ю. Я. - Методические указания к
лабораторным работам по дисциплине «Цифровые ЭВМ»: Часть 1 «Проектирование
отдельных функциональных узлов» - Харьков: ХНУРЭ, 2006 г.
.
Угрюмов Е.П. Цифровая схемотехника. Учебн. пособие.- СПб.: БХВ - Петербург.,
2000.-528 с.
.
Организация ЭВМ и систем. Однопроцессорные ЭВМ. Часть 1.: Конспект лекций /
И.В. Хмелевский, В.П. Битюцкий. 2-е изд., испр. и допол. Екатеринбург: ГОУ ВПО
УГТУ-УПИ, 2005. 87 с.
.
Бибило П.Н. Синтез логических схем с использованием языка VHDL.- М.: СЛОН-Р,
2002.- 384 с.
.
http://window.edu.ru/
.
http://vhdl-1.ru/
.
http://ru.wikipedia.org/
ПРИЛОЖЕНИЯ
Приложение 1
модель
операционного
автоматаIEEE;IEEE.STD_LOGIC_1164.all;IEEE.STD_LOGIC_unsigned.all;OA_M is(,rst :
in STD_LOGIC;: in STD_LOGIC_VECTOR(16 downto 1);: in STD_LOGIC_VECTOR(7 downto
0);: in STD_LOGIC_VECTOR(7 downto 0);: in STD_LOGIC;: out STD_LOGIC_VECTOR(15
downto 0);: out STD_LOGIC_VECTOR(3 downto 0)
);OA_M;OA_M
of OA_M is
объявление
внутренних сигналовA,B,Arg2: STD_LOGIC_VECTOR(7 downto 0);C,Arg1,Rez:
STD_LOGIC_VECTOR(15 downto 0);Cnt: INTEGER;COP: STD_LOGIC;
сигналы
А, В, С, СОР - входы соответствующих регистров
сигналы
Arg1, Arg2 - шины аргументов
сигнал
Rez - результат выполнения микрооперации
сигнал
Cnt - счетчик(clk,rst)isrst='0' then
-асинхронный
сброс<=(others=>'0');<=(others=>'0');<=(others=>'0');<=0;<='0';rising_edge(clk)then
-синхронная
запись в регистр Аy(1)='1' then A<=d1;y(12)='1' then A<=Rez(7 downto
0);if;
-синхронная
запись в регистр Вy(2)='1' then B<=d2;y(13)='1' then B<=C(7 downto
0);y(7)='1' then B<=Rez(7 downto 0);if;
-синхронная
запись в регистр Сy(3)='1' then C<=(others=>'0');(y(5) or y(6) or y(10)
or y(11) or y(14))='1' then C<=Rez;if;
синхронная
запись результатаy(15)='1' then r<=C;if;
синхронная
запись в счетчикy(4)='1' then Cnt<=8;y(9)='1' thenCnt<=1;y(8)='1' then
Cnt<=Cnt-1;if;
синхронная
запись в регистр СОРy(16)='1' then COP<=d3;COP<='0';if;if;process;
Шина
аргумента 2<= A when (y(6) or y(10) or y(12))='1'B when (y(7) or
y(14))='1'(others=>'0');
Шина
аргумента 1<= C when (y(5) or y(6) or y(10) or y(11) or
y(14))='1'(others=>'0');
Шина
результата<="00000000"&(Arg1(7 downto 0)+Arg2(7 downto 4))
when y(10)='1'"00000000"&(Arg1(7 downto 0)+Arg2(7 downto 0)) when
y(14)='1'"00000000"&Arg1(6 downto 0)&'0' when
y(11)='1'"00000000"&Arg2(6 downto 0)&'0' when (y(7) or
y(12))='1'Arg1(15 downto 0)+Arg2(7 downto 0) when y(6)='1'Arg1(14 downto
0)&'0' when y(5)='1'(others=>'0');
формирование
признаков результата(1)<=COP;(2)<='1' when B(7)='1' else '0';(3)<='1'
when Cnt=0 else '0';(0)<='0';OA_M;
Приложение
2
модель
управляющего
автоматаIEEE;IEEE.STD_LOGIC_1164.all;IEEE.STD_LOGIC_unsigned.all;YA_P is(, rst
: in STD_LOGIC;: in STD_LOGIC_VECTOR(3 downto 0);: out STD_LOGIC_VECTOR(16
downto 0)
);YA_P;YA_P
of YA_P is
-подтип
КомандаTCommand is std_logic_vector(15 downto 0);
-тип
для имитации ПЗУTROM is array(0 to 16) of TCommand;
-заполнение
информации о командахROM:TROM := (
-yyyyyyyxxaaaaa
"1010000000100001",--0
"0001001110000011",--1
"0001011100000111",--2
"0010000001000101",--3
"1001000000000000",--4
"0100010001100011",--5
"0011000000000101",--6
"0101000001101000",--7
"0110000000001010",--8
"1001000000000000",--9
"0111000000001011",--10
"0111100000001100",--11
"0110000000001101",--12
"0111000000001110",--13
"0110000000001111",--14
"0111000000010000",--15
"1000010000000111"--16
);RegCom:TCommand;TY
is array(0 to 10) of INTEGER;
-подмножества
множества микроопераций, непересекающихся по совместмостиY1: TY
:=(0,1,5,6,7,10,11,12,14,15,16);Y2: TY :=(0,2,8,9,13,0,0,0,0,0,0);Y3: TY
:=(0,3,0,0,0,0,0,0,0,0,0);Y4: TY :=(0,4,0,0,0,0,0,0,0,0,0);
-вспомогательный
сигнал выходов уyConv: STD_LOGIC_VECTOR(16 downto 0);(rst,clk) isrst='0' then
-асинхронный
сброс<=(others=>'0');rising_edge(clk) then
-формирование
следующей командыx(conv_integer(RegCom(6 downto 5))) ='0' then --
àíàëèç
óñëîâèÿ
RegCom<=ROM(conv_integer(RegCom(4
downto 0)));else RegCom<=ROM(conv_integer(RegCom(4 downto
0))+1);if;if;process;(RegCom) is
-преобразование
сокращенного кода команды в унарный выходной код<=(others=>'0');(Y1(conv_integer(RegCom(15
downto 12))))<='1';(Y2(conv_integer(RegCom(11 downto
9))))<='1';(Y3(conv_integer(RegCom(8 downto
8))))<='1';(Y4(conv_integer(RegCom(7 downto
7))))<='1';process;<=yConv;architecture YA_P;
Приложение
3
модель
процессорного
устройствоIEEE;IEEE.STD_LOGIC_1164.all;IEEE.STD_LOGIC_unsigned.all;PM is(, rst
: in STD_LOGIC;: in STD_LOGIC_VECTOR(7 downto 0);: in STD_LOGIC_VECTOR(7 downto
0);: in STD_LOGIC;:out STD_LOGIC_VECTOR(15 downto 0)
);PM;PM
of PM is
компонент
- операционный автомат типа МOA_M is(,rst : in STD_LOGIC;: in
STD_LOGIC_VECTOR(16 downto 1);: in STD_LOGIC_VECTOR(7 downto 0);: in
STD_LOGIC_VECTOR(7 downto 0);: in STD_LOGIC;:out STD_LOGIC_VECTOR(15 downto
0);: out STD_LOGIC_VECTOR(3 downto 0)
);component;
компонент
- управляющий автомат с программируемой логикойYA_P is(, rst : in STD_LOGIC;:
in STD_LOGIC_VECTOR(3 downto 0);: out STD_LOGIC_VECTOR(16 downto 0)
);component;nclk:
std_logic;
сигналы,
которомы обмениваются ОА и УУ.y: STD_LOGIC_VECTOR (16 downto 0);x: STD_LOGIC_VECTOR
(3 downto 0);<= not clk;: OA_M port map(clk, rst, y(16 downto 1), d1, d2,
d3, r, x);: YA_P port map(nclk, rst, x, y);PM;