Вы находитесь на странице: 1из 43

Министерство науки и высшего образования РФ

Федеральное государственное бюджетное образовательное учреждение


высшего образования

«РЯЗАНСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ


УНИВЕРСИТЕТ ИМЕНИ В.Ф. УТКИНА»

Кафедра ЭВМ

К защите
Руководитель проекта
______________________
дата, подпись

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К КУРСОВОМУ ПРОЕКТУ
по дисциплине
«Проектирование цифровых устройств»

по теме
«Разработка процессора в системе Quartus»

Выполнил студент группы 745


Рожко Л.С.
____________________________
дата сдачи на проверку, подпись

Руководитель проекта
к.т.н., доцент кафедры ЭВМ
Кистрин А.В. _____________ ____________________
оценка дата защиты, подпись

Рязань 2020
Задание
Разработайте синтезированный процессор на основе ПЛИС семейства
FLEX 10K, выполните отладку, тестирование и индивидуальные задания в
соответствие с заданным вариантом.
Технические требования
1. Требование по быстродействию. Любая команда должна
выполняться за один период синхроимпульсов.
2. Разрядность команд - 16 бит, разрядность данных – 8 бит.
3. Методы адресации и состав системы команд.
3.1. Команды с непосредственной адресацией. Операнды -
содержимое регистра и константа из команды. Состав команд: пересылка,
суммирование, суммирование с учетом переноса, логическиеоперацииИ,
ИЛИ, сумма по модулю два.
3.2. Двухадресные команды с регистровой адресацией. Операнды
- содержимое двух регистров. Состав команд подобен п.3.1.
3.3. Одноадресные команды циклических сдвигов.
3.4. Команды обращения к памяти с косвенной адресацией.
3.5. Команды безусловных и условных переходов по
признакамнуля - zf и переноса - cf с прямой адресацией.
Вариант индивидуального задания.
Задание А. Разработать программу для тестирования команд сдвигов.
Выполнить моделирование. Определить временные задержки
формирования адреса команд, чтения кода команды, а также формирования
результата операции на шине данных.
Задание Б. Создать в памяти, начиная с адреса 00, массив из 8 чисел
W0 – W7 , которые вычисляются в соответствии с заданной
формулой:Wk=2k+4.Определить экспериментально максимальную частоту
синхронизации.

2
Задание В. Включить дополнительную команду инкремента
содержимого регистра incrx, представить в отчете результаты
тестирования.

3
Содержание

Введение...........................................................................................................................4
1. Архитектура микропроцессорной системы и процессора.......................................5
2. Система синхронизации процессора.........................................................................7
3. Регистровая модель процессора.................................................................................9
4. Разработка системы команд.....................................................................................11
4.1. Команды с непосредственной адресацией.....................................................11
4.2. Двухадресные команды с регистровой адресацией.......................................13
4.3. Одноадресные команды с регистровой адресацией......................................15
4.4. Команды обращения к памяти с косвенной адресацией...............................16
4.5. Команды переходов с прямой адресацией.....................................................18
5. Разработка процессора в САПР...............................................................................20
5.1. Разработка функциональной схемы процессора............................................20
5.2. Модуль управления переходами – control......................................................21
5.3. ПЗУ команд.......................................................................................................23
5.4. Блок РОН...........................................................................................................24
5.5. Модуль АЛУ......................................................................................................27
5.6. Устройство синхронизации записи данных (sync_wr)..................................31
6. Разработка схемы процессора..................................................................................32
7. Задание А...................................................................................................................34
8. Задание Б....................................................................................................................36
9. Задание В....................................................................................................................38
Заключение.....................................................................................................................39
Библиографический список..........................................................................................40

4
Введение

Современный уровень проектирования цифровых вычислительных


устройств характеризуется широким использованием программируемых
логических интегральных схем (ПЛИС) типа «система на кристалле» (System On
Chip). Для управления вычислительным процессом в указанных системах
используют синтезированные процессоры, разработанные в виде проекта в САПР.

Синтезированный процессор оказываются гораздо компактнее


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

5
1. Архитектура микропроцессорной системы и процессора.

Для проектируемого процессора выбрана гарвардская архитектура


микропроцессорной системы (рисунок 1), в которой для хранения команд и
данных используются независимые адресные пространства и устройства памяти.

Процессор
С
ПЗУкома ak Устройствоупр Устройствао ad ОЗУданн
нд авленияперехо бработкидан ых
k дами d-bus
ных

Рисунок 1. Гарвардская архитектура процессора.

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


шин. Это шина адреса команд ak, шина команды k, шина адреса данных ad и шина
данных d-bus. Гарвардская архитектура сложнее архитектуры Джона фон
Неймана, но она обладает очевидными достоинствами. Для хранения команд и
данных можно использовать блоки памяти различных типов и различной
разрядности. В микроконтроллерах для хранения программы, которая в процессе
работы изменяться не должна, используют ПЗУ, а для хранения данных – ОЗУ.
Более того, разрядность памяти программ может быть выбрана с учетом
необходимой разрядности адресной части команды. Гарвардская архитектура
позволяет простыми техническими средствами организовать конвейер команд и
параллельное выполнение операций с адресами и данными. Для каждого
устройства памяти (ПЗУ или ОЗУ) можно выделить отдельные функциональные
устройства процессора, выполняющие обработку команд или данных, которые
могут работать параллельно. В результате удается повысить быстродействие
системы.

6
В зависимости от числа операций системы команд процессоры делятся на
две группы: CISC (Complex Instruction Set Computer) – процессоры со сложной
системой команд и RISC (Reduce Instruction Set Computer) – процессоры с
сокращенной системой команд. Основная идея построения RISC - процессоров –
это тщательный подбор часто используемых простейших команд одинаковой
длины, которые процессор может выполнить за один период сигнала
синхронизации. Основной выигрыш от такого подхода – упрощение аппаратной
реализации процессора и возможность значительно повысить его
производительность.

Устройства обработки данных процессора – это арифметико-логическое


устройство (АЛУ) и регистры для хранения обрабатываемых результатов.

Наиболее простая конфигурация (архитектура) процессора содержит всего


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

Более совершенной является конфигурация процессора с блоком регистров


общего назначения (РОН). Операнды выбираются из регистров процессора, и
результат операции записывается также в регистр. Любой из регистров может
выполнять функции аккумулятора. Обмен между оперативными регистрами и
памятью выполняется с помощью команд загрузки или записи. Программа для
процессоров с блоком РОН содержит в основном двухадресные команды,
отличается высокой эффективностью. Подобную архитектуру имеют
микроконтроллеры семейства AVR. В основу разрабатываемого процессора
положена RISC-архитектура процессора с блоком РОН.

7
2. Система синхронизации процессора.

Система синхронизации должна обеспечить выполнение любой команды за


один период синхросигнала, который содержит два состояния (интервала
времени), которым соответствуют постоянные значения синхросигнала с = 0 и с =
1, а также два изменения состояний - спад и фронт импульса (рисунок 2).

Выполнение команды за один период синхроимпульса становится


возможным при использовании в процессоре двухфазной синхронизации и
выполнении операций записи синхронно с фронтом или спадом импульсов, а
операций обработки команд и данных - асинхронно, посредством
комбинационных схем следующим образом. При этом устройства памяти должны
быть с динамическим управлением. Моменты времени, когда производится
запись, выбирают таким образом, чтобы процесс обработки данных был
завершен, и ошибки, вызываемые гонками, отсутствовали.
с
с=0 с=1 t
Спад импульса Фронт импульса
Рисунок 2. Импульсы синхронизации.

1. По спаду синхросигнала устройство управления переходами (рисунок


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

2. Интервал с = 0 предназначен для обработки данных посредством


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

8
поступать все необходимые сигналы для выполнения операции. Результат
операции формируется на шине данных d_bus.

3. По фронту синхросигнала выполняется запись данных в устройство


памяти - РОН или ОЗУ, подключенное к шине данных d_bus, а также запись
признаков результата в регистр признаков.

4. Интервал с = 1 используется для формирования адреса следующей


команды в устройстве управления переходами.

9
3. Регистровая модель процессора.

Регистровая модель процессора (которую в литературе также называют


архитектурой) отображает все элементы памяти – запоминающие устройства и
регистры и используется для выбора типов и параметров элементов памяти
(рисунок 3).

Для хранения обрабатываемых данных в процессоре предусмотрен блок


регистров общего назначения, содержащий 8 (или 16) однобайтных регистров,
имеющих одинаковые свойства. Адрес РОН в этом случае должен иметь 4
разряда. Любой регистр может выполнять функцию аккумулятора, что расширяет
функциональные возможности системы команд. В соответствии с разработанной
системой синхронизации блок РОН должен обеспечивать асинхронное чтение и
синхронную запись данных.

Для модуля ОЗУ выбрана разрядность 8 бит, а емкость – 256 байт, при этом
адрес ячейки памяти должен иметь разрядность 8 бит. Модуль ОЗУ, подобно
блоку РОН, должен обеспечивать асинхронное чтение и синхронную запись
данных.

Для хранения программы вычислений предназначено ПЗУ, разрядность


которого в соответствии с заданной разрядностью команды составляет 2 байта, а
емкость выбрана равной 256 ячеек. При этом адрес команды должен иметь
разрядность 1 байт. ПЗУ должно работать в режиме асинхронного чтения 16-
разрядной команды k.

Для хранения адреса выполняемой команды ak предназначен 8-разрядный


счетчик команд, или программный счетчик, который входит в состав устройства
управления переходами (см. рисунок 1).

10
Блок ОЗУ данных ПЗУ команд Счетчик команд
РОН 7 0 15 0 7 0
7 0
ak
0 00 00 Команда
1 01 01 15 0
07 07
k
7
Признаки

F FF FF cf zf

Рисунок 3. Регистровая модель процессора.

В соответствии с заданием в процессоре необходимо формировать признаки


нуля и переноса – флаги cf, zf, для хранения которых должны быть
предусмотрены соответствующие триггеры.

11
4. Разработка системы команд.

Состав системы команд синтезированных RISC-процессоров выбирается


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

При разработке системы команд вначале выбирают метод адресации и


формат – деление кода команды на отдельные поля, содержащие информацию
определенного типа. Затем определяют функциональный состав проектируемой
группы команд и кодируют команды.

4.1. Команды с непосредственной адресацией.

При непосредственной адресации один из операндов находится в регистре


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

Поле k1 (4 разряда) содержит код операции, в котором один бит (например,


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

12
от 0 до 7, а максимально возможное количество команд с непосредственной
адресацией составит 8.

Код операции Адрес регистра Данные


15 12 11 8 7 0

k1 rx dd

Рисунок 4. Формат команд с непосредственной адресацией.

Поле rx (4 разряда) обозначает адрес РОН, в котором находится первый из


операндов, при этом максимальное количество адресуемых РОН равно 16. При
практической реализации проекта количество РОН будет уменьшено до 8 с целью
упрощения схемы.

Поле второго операнда dd - (8 разрядов), символы dd обозначают две 16-


ричные цифры или один байт данных в диапазоне от 00 до FF.

Выполним кодирование команды пересылки константы в регистр с


непосредственной адресацией. Примем код операции k1 = 0, а запись на
ассемблере в виде: mvi rx, dd. Мнемоника mvi образована от слов move -
пересылать и immediate – непосредственно. Буква i в мнемониках команд
процессоров фирмы Intel обычно обозначает непосредственную адресацию.
Заметим, применяют и другой вариант обозначения данных при
непосредственной адресации – знак «#». Операция, выполняемая данной
командой, записывается в виде:

rx = dd, что означает присваивание содержимому регистра rx значения dd


из команды.

Команда mvi r3, 2f, например, выполнит пересылку числа 2F 16 в регистр r3 и


будет иметь код 032F16 или 0000 0011 0010 11112. После выполнения команды

13
содержимое регистра r3 будет равно 2F16 независимо от кода, содержащегося в
этом регистре до выполнения команды.

Остальные команды арифметических и логических операций разработаны


подобным образом (таблица 1).

Таблица 1. Команды с непосредственной адресацией


Мнемоник
Код Операция Пояснение
а
0 rx d
mvi rx, dd rx= dd Пересылка в регистр константы
d
1 rx d
addi rx, dd rx=rx + dd Суммирование
d
2 rx d rx=rx +
adci rx, dd Суммирование с учетом переноса
d dd+cf
3 rx d
andi rx, dd rx=rx⋅d Логическая операция И
d
4 rx d
ori rx, dd rx=rx ∨d Логическая операция ИЛИ
d
5 rx d
xori rx, dd rx=rx ⊕d Логическая операция Исключающее ИЛИ
d

Рассмотрим кодирование следующей команды. Это суммирование с


непосредственной адресацией. Примем код операции суммирования k1 = 1.
Мнемонику указанной команды можно записать как addi, от слова addition -
сумма, и immediate – непосредственно. Запись на ассемблере команды
суммирования, с непосредственной адресацией имеет вид: addi rx, dd, а
выполняемую операцию можно представить в виде: rx = rx + dd, что означает
«новому содержимому регистра rx присвоить предыдущее значение кода этого
регистра, сложенное с константой dd ». Команда addi r2, 53 с кодом 1253 16,
прибавит к предыдущему коду регистра r2 число 5316.

14
4.2. Двухадресные команды с регистровой адресацией.

В двухадресных командах с регистровой адресацией в регистрах находятся


два операнда. При выполнении этих команд одновременно читается содержимое
двух регистров rx и ry, и сразу же выполняется операция, результат которой
записывается в первый из регистров rx. Исходное содержимое первого регистра
теряется.

Формат двухадресных команд с регистровой адресацией содержит 4 поля по


4 разряда, из которых 2 поля используются для адресации двух регистров,
содержащих операнды rx и ry, а оставшиеся 2 поля k1 и k2 для кодирования типа
адресации и конкретной команды (рисунок 5).

Первыйкод Адрес Адрес Второйкод


операции первогорегистра второгорегистра операции
15 12 11 8 7 4 3 0

k1 rx ry k2

Рисунок 5. Формат команд с регистровой адресацией.

Код k1 называют префиксом кода операции, он определяет тип адресации, а


код k2 кодирует конкретную команду. Для команд с регистровой адресацией
выберем код префикса k1 = 8. Набор и коды команд с регистровой адресацией
приведены в таблице 2.

Таблица 2. Двухадресные команды с регистровой адресацией


Код Мнемоника Операция Пояснение
8 rx ry mov rx, ry rx= ry Пересылка в регистр из регистра
0
8 rx ry add rx, ry rx=rx + ry Суммирование
1
8 rx ry adc rx, ry rx=rx + Суммирование с учетом переноса
2 ry+cf

15
8 rx ry and rx, ry rx=rx⋅ry Логическая операция И
3
8 rx ry or rx, ry rx=rx ∨ry Логическая операция ИЛИ
4
8 rx ry xor rx, ry rx=rx ⊕ry Операция Исключающее ИЛИ
5

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


команды mоv rx, ry, которая выполняет пересылку в регистр rx содержимого
регистра ry. В ассемблерной записи команды после слова mov (переслать) на
первом месте указан регистр, куда переслать (в rx), а на втором месте указан
регистр, откуда переслать (из ry). Регистр rx называют получателем, или
приемником данных, а регистр ry – источником данных.

Следующая в таблице 2 команда mоv add rx, ry выполняет суммирование


содержимого регистров rx и ry и записывает сумму в регистр rx. В ассемблерной
записи команды после слова add (суммировать) на первом месте указан регистр –
получатель, куда будет записан результат (в rx), а на втором месте указан регистр
– источник ry.

Команда add r4, r5, например, выполнит суммирование содержимого


регистров r4 и r5 с записью результата в регистр r4. В соответствии с таблицей 2
данная команда имеет код 8451. Первая 16-ричная цифра 8 определяет метод
адресации – регистровая, вторая цифра - 4 – адрес регистра первого слагаемого и
получателя результата, третья цифра - 5 – адрес регистра второго слагаемого,
последняя цифра - 1 – тип выполняемой операции – суммирование.

4.3. Одноадресные команды с регистровой адресацией.

Регистровая адресация используется не только в рассмотренных


двухадресных командах, но также и в одноадресных командах, формат которых
показан на рисунке 6.

16
Первый код Адрес регистра Данные
операции 11 8 7 0
15 12

k1 rx K2

Рисунок 6. Формат одноадресных команд с регистровой адресацией.

Код команды содержит префикс k1 (выбираем его равным 9), поле


адресации единственного регистра rx, который содержит исходное значение
операнда, а впоследствии - результат выполнения операции, и поле k2, которое
определяет конкретную операцию. Кодирование команд циклических сдвигов,
которые выполняют сдвиг байта данных по кругу приведено в таблице 3.

Таблица 3. Одноадресные команды с регистровой адресацией


Код Мнемоник Пояснение
а
9 rx 0 0 rrc rx Циклический сдвиг вправо
9 rx 0 1 rlc rx Циклический сдвиг влево

Максимальное количество команд данного типа равно 256, что позволяет


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

4.4. Команды обращения к памяти с косвенной адресацией.

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


памяти. При косвенной адресации в команде указан регистр, содержащий адрес
17
ячейки памяти, в которой находится операнд. Формат данных команд содержит 4
поля (рисунок 7). Данный метод адресации называют также «косвенная
регистровая», чтобы подчеркнуть, что указателем адреса является регистр.

Первыйкод Регистраоперанда Регистрадреса Второйкод


операции 11 8 7 4 операции
15 12 3 0

k1 rx ry k2

Рисунок 7. Формат команд с косвенной адресацией

Первая 16-ричная цифра кодирует метод адресации, пусть для команд с


косвенной адресацией код k1 = а16 = 10102. Вторая цифра содержит адрес, или
номер регистра rx, в котором находится операнд. Третья цифра определяет
регистр ry, содержащий адрес ячейки памяти, в которой находится операнд.
Четвертая цифра - это код k2, который определяет направление пересылки
операнда, и может принимать значения 0 или 1. Для загрузки операнда в регистр
из памяти примем k2 = 0, а для записи в память из регистра k2 = 1 (таблица 4).

Пересылку в регистр содержимого ячейки памяти называют загрузкой


регистра (load) и обозначают мнемоникой ld, а пересылку в ячейку памяти
содержимого регистра называют записью (ш) и обозначают st. Команда загрузки
регистра rx содержимым ячейки памяти, адрес которой предварительно был
записан в регистр ry, имеет вид: ld rx, (ry). Запись адреса регистра в круглых
скобках в ассемблерах процессоров фирмы Intel означает, что в регистре
содержится адрес. Заметим, в системах команд других микроконтроллеров в
подобных случаях используется символ @, имеющий смысл «адрес».

Таблица 4. Команды обращения к памяти с косвенной адресацией


Код Мнемоника Пояснение
а rx ry 0 ld rx, (ry) Загрузка в регистр rx операнда из ячейки памяти, адрес
18
которой содержится в ry
Запись в ячейку памяти, адрес которой содержится в ry,
а rx ry 1 st (ry), rx
операнда из регистра rx

Важное замечание. Положение адресов регистров rx и ry в коде команды


фиксировано и соответствует формату команды. Коду rx соответствуют разряды
11 – 8, а коду ry - разряды 7 – 4. Однако ассемблерная запись команды использует
другие правила, она учитывает направление пересылки и на первом после
мнемоники месте указывает получателя данных (куда переслать), а на втором –
источник (откуда).

Команда ld r1, (r2), например, будет иметь 16-ричный код a120 или
двоичный код 1010 0001 0010 0000. Она загрузит в регистр r1 содержимое ячейки
памяти, адрес которой заблаговременно был записан в регистр r2.

Команда st (r4), r3 будет иметь 16-ричный код a341 или двоичный код 1010
0011 0100 0001. Она запишет в ячейку памяти, адрес которой заблаговременно
был записан в регистр r4, содержимое регистра r3.

4.5. Команды переходов с прямой адресацией.

При прямой (или абсолютной) адресации команда содержит адрес ячейки


памяти (рисунок 8).

Первый код Второй код Адресперехода


операции операции 7 0
15 12 11 8

k1 k2 aa

Рисунок 8. Формат команд с прямой адресацией.

В данном проекте прямая адресация используется для команд безусловных


и условных переходов. Формат команды содержит два 4-разрядных поля кодов
операции k1, k2 (что является избыточным) и 8-разрядный адрес aa, на который
19
должен произойти переход. Набор команд переходов с прямой адресацией,
соответствующий заданию, приведен в таблице 5.

Команда jz 20, например, имеющая код f12016 или 1111 0001 0010 00002 ,
выполняет условный переход к команде, адрес которой в ПЗУ команд равен 20 16,
если после выполнения предыдущей команды получен флаг fz = 1.

Таблица 5. Команды переходов с прямой адресацией


Код Мнемоника Пояснение
f0aa jmp aa Безусловный переход к адресу аа
f1aa jz aa Условный переход к адресу аа, если fz = 1
f2aa jc aa Условный переход к адресу аа, если fc = 1

Разработанная система команд допускает изменения и дополнения,


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

20
5. Разработка процессора в САПР.

Сложные устройства представляют в виде иерархических проектов. При


разработке процессора в САПР целесообразно представлять модули верхних
уровней иерархии в форме схем, наглядно отображающих структуру и связи, а
для модулей нижнего уровня иерархии, менее сложных, использовать описания на
языке Verilog, позволяющие компактно представить алгоритмы
функционирования.

5.1. Разработка функциональной схемы процессора.

В процессоре, построенном по гарвардской архитектуре (рисунок 9),


обработку команд и данных выполняют различные устройства.

Обработку команд выполняет модуль управления переходами совместно с


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

Обработку данных выполняет АЛУ совместно с блоком РОН. Команда


имеет определенный формат и в отдельных полях в соответствии с методом
адресации содержит всю информацию, необходимую для ее выполнения. Тип
выполняемой операции и адреса регистров содержатся в определенных разрядах
команды, подключенных к блоку РОН и АЛУ, данные поступают из блока РОН
по шинам х и у.

Результат выполнения команды формируется на выходе АЛУ, и по шине


данных d_bus, подается параллельно на входы всех устройств, которые
21
предназначены для сохранения результата операции. Запись результата будет
выполнена только в одно устройство, на которое модуль синхронизации записи
выдаст синхроимпульс записи в соответствии с командой. Запись в регистр блока
РОН синхронизирует импульс wr (Write Register), запись в ОЗУ – импульс wm
(Write Memory), а запись в регистр признаков – wf (Write Flags).

Работу над проектом в САПР целесообразно начать с разработки и


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

c
zl zf
F Модуль управления и ak ПЗУкоманд k
сl сf счетчик команд

x zl
БлокРОН АЛУ
y сl

d_bus
c wr dm

wf Модуль синхронизации wm ОЗУданных


записи

Рисунок 9. Функциональная схема процессора.

22
5.2. Модуль управления переходами – control.

Модуль управления переходами - цифровой автомат, формирующий адрес


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

Комбинационная схема формирует сигнал перехода jmp в результате


анализа входных сигналов – команды k, признаков нуля zf и переноса cf.

Сигнал jmp = 1, если текущая команда является командой перехода и


условие выполняется. Система команд содержит три команды переходов:
безусловный переход, для которого старший байт команды (номера разрядов от
15 до 8) содержит код f016 = 111100002, условный переход при zf = 1 с кодом
операции f116 = 111100012 и условный переход при сf = 1 с кодом операции f2 16 =
111100102 (см. рисунок 8 и таблицу 5), поэтому алгоритм работы
комбинационной схемы описывается в виде:

jmp = 1, если

k[15:8] = 111100002, или если

k[15:8] = 111100012 и fz = 1, или если

k[15:8] = 111100102 и fc = 1.

В программный счетчик по спаду синхросигнала с записывается адрес


следующей команды ak, предназначенный для подачи на адресные входы ПЗУ,
который формируется по следующим правилам. Если условие перехода jmp = 1,
то адресу ak присваивается значение младшего байта команды, иначе (при jmp =
0) новому адресу присваивается увеличенное на 1 значение исходного адреса.

Используя описанные алгоритмы работы, можно построить схему или


составить описание (что значительно проще) модуля управления переходами.

23
В заголовке описания модуля управления переходами с именем control
(пример 1) перечислены все
// Пример 1 Модуль управления
входные и выходные сигналы.
module control (c, k, cf, zf, jmp, ak);
Входные сигналы c, cf, zf по
input c, cf, zf; input [15:0] k; умолчанию будут назначены как
output [7:0] ak; reg [7:0] ak; output jmp; одноразрядные типа wire, а

assign jmp = входной сигнал k описан как 16-


разрядный. Для выходного 8-
(k[15] & k[14] & k[13] & k[12])&
разрядного сигнала ak указан тип
((~k[10] & ~k[9] & ~k[8] )|
reg, так как этот сигнал будет
(~k[10] & ~k[9] & k[8] & zf) | выходным сигналом программного
(~k[10] & k[9] & ~ k[8] & cf)); счетчика. В описании указан также
always @ (negedge c) выходной сигнал jmp,
принимающий значение 1 при
if ( jmp) ak = k[7:0];
наличии безусловного или
else ak = ak+1; endmodule
условного перехода, который
может потребоваться при отладке.

Параллельный оператор присваивания с ключевым словом assign описывает


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

5.3. ПЗУ команд.

Для построения процессора требуется ПЛИС большой информационной


емкости, которая имеет встроенные блоки памяти (FLEX 10K или ACEX 1K
фирмы Altera). Поэтому при работе в САПР необходимо назначить тип ПЛИС,

24
выбрать из меню Assign/Device и указать семейство FLEX10K и тип устройства
AUTO.

Для модуля памяти (LPM_ROM), который использован в проекте,


предусмотрена возможность настройки портов и параметров для определенного
режима работы. После ввода символа LPM_ROM открывается окно
редактирования портов и параметров Edit Port/Parameters, содержащее два
раздела.

В разделе Ports необходимо настроить сигналы, которые будут


использоваться. Для разрабатываемого проекта необходимо, чтобы ПЗУ команд
работало асинхронно, и имело входной сигнал адреса и выходной сигнал данных.
Поэтому для сигналов address [LPM_WIDTAD-1..0] и q[LPM_WIDT-1..0]
необходимо выбрать статус Used и отсутствие инверсии None. Остальные
сигналы синхронизации inclock, outclock, а также сигнал разрешения (и
запрещения) работы памяти memenab следует указать как неиспользуемые
(unused). В обозначении символа на схеме этих сигналов не будет.

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


LPM_Address_Control – Unregistred (асинхронный, не фиксируемый в регистре),
LPM_NumWords – none (по умолчанию), LPM_OutData – Unregistred, LPM_Width
– 16 (разрядность команд, хранящихся в ПЗУ), LPM_WidthAd – 8 (разрядность
адреса). В строке LPM_File впоследствии необходимо указать путь к файлу
инициализации памяти (с расширением .mif).

Важное замечание. Для начала моделирования необходимо создать пустой


файл с именем, например, 1.mif, и записать его в каталог проекта. Впоследствии,
для записи программы в память, необходимо после вызова симулятора, не
нажимая в окне симулятора кнопку Start, вызвать из меню Initialize/Memory
Initialize. В результате откроется окно, в котором представлены адреса (Address) и
содержимое (Value) ячеек памяти. Кнопка Export позволяет сохранить
содержимое памяти в файле с расширением .mif, или модифицировать
25
существующий файл. Кнопка Import позволяет прочитать ранее созданный файл,
который можно подключить к проекту кнопкой OK.

5.4. Блок РОН.

Блок РОН, используемый в данном процессоре (рисунок 10), обеспечивает


одновременное чтение содержимого двух регистров (x и y) по двум адресам (ax и
ay). Такие устройства памяти называют двухадресными или двухпортовыми.

Для записи данных, поданных на вход dx, используют один из этих адресов
(ax). Чтение должно выполняться асинхронно, а запись – синхронно по фронту
синхроимпульса.

Рисунок 10. Блок РОН в графическом редакторе.

Блок РОН разработан как иерархический проект, модули которого описаны


на языке Verilog. Количество 8-разрядных регистров reg_8_bit выбрано равным 8.
Для одновременного асинхронного чтения по двум адресам ах и ау к выходам
регистров подключено два мультиплексора mux_bus, которые коммутируют

26
шины. Данные на выходах мультиплексоров x и y появляются после подачи
адресов ax и ay. Запись данных, поданных на 8-разрядную шину данных dx,
выполняется синхронно в один из регистров в соответствии с адресом ax. Данные,
предназначенные для записи, подаются по шине dx параллельно на входы данных
всех регистров. Запись данных произойдет только в один из регистров, на вход
синхронизации которого в соответствии с адресом ax поступит синхросигнал с
дешифратора – демультиплексора d_mux.

//Пример 2. Регистр 8 бит Регистр reg_8_bit. В блоке РОН (пример 2)


используются 8-разрядные регистры с
module reg_8_bit (c, d, q);
динамическим управлением. Входной 8-разрядный
input c;
код d записывается по фронту сигнала c и
input [7:0] d; формируется выходной код q. Работу регистра
output [7:0] q; описывает оператор последовательного
reg [7:0] q; присваивания с ключевым словом always,

always @ (posedge c) q=d; символом @ и условием срабатывания в круглых


скобках – по фронту сигнала – posedge. Выходной
endmodule
сигнал, формируемый оператором
последовательного присваивания, указан как
регистр reg.

Демультиплексор d_mux управляет записью данных (пример 3). Он


передает сигнал синхронизации на один из восьми выходов в соответствии с 3-
разрядным адресом ax. Выходные сигналы демультиплексора, обозначенные
буквами (ca, cb, … , ch), подключены к входам синхронизации отдельных
регистров.

Описание 8-разрядного демультиплексора выполнено с использованием


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

27
функционирования демультиплексора. Так, например, ca = 1 при с = 1 и при ах =
= 0002.

Мультиплексоры шин mux_bus (пример 4) позволяют выполнить


асинхронное чтение двух регистров одновременно по адресам ax и ay с выдачей
результата на шины x и y соответственно. Выходной код первого регистра
обозначен qa, следующего – qb, а последнего – qh. К выходам регистров
подключены два мультиплексора, один для формирования сигнала х, а другой –
для сигнала у.

// Пример 3. Демультиплексор //Пример 4. Мультиплексор шин


module d_mux module mux_bus
(ax, c, ca, cb, cc, cd, ce, cf, cg, ch); (a, da, db, dc, dd, de, df, dg, dh, q);
input [2:0] ax; input c; input [2:0] a;
output ca, cb, cc, cd, ce, cf, cg, ch; input [7:0] da, db,
assign ca = c & (ax == 3'b000); dc, dd, de, df, dg, dh;
assign cb = c & (ax == 3'b001); output [7:0] q;
assign cc = c & (ax == 3'b010); assign q =
assign cd = c & (ax == 3'b011) ; (a==0) ? da: (a==1) ? db:
assign ce = c & (ax == 3'b100); (a==2) ? dc: (a==3) ? dd:
assign cf = c & (ax == 3'b101); (a==4) ? de: (a==5) ? df:
assign cg = c & (ax == 3'b110); (a==6) ? dg: dh ;
assign ch = c & (ax == 3'b111); endmodule
endmodule

Описание мультиплексора содержит вложенные операторы условного


присваивания, выполняющие выбор варианта. В первом операторе после

28
//Пример 5. АЛУ двоеточия вместо ветви «Нет»
записано условие и следующий
module alu (x, y, k, cf, dm, q, cl, zl);
input [7:0 ] x; input [7:0] y; input cf; условный оператор и так далее.
input [15:0] k; input [7:0] dm;
output [7:0] q; reg [7:0] q; Для всех модулей, приведенных
output cl; reg cl; output zl; в виде описаний, необходимо создать
always
if ( k [15]==0) case (k [14:12]) проекты, выполнить компиляцию и
0: {cl,q}= {1'b0, k [7:0]}; создать символы, из которых строится
1: {cl,q} = x + k [7:0];
2: {cl,q} = x + k [7:0] + cf; схема блока РОН (рисунок 11) с
3: {cl,q} ={1'b0,( x & k [7:0])}; именем block_ron.
4:{cl,q} ={1'b0,( x | k [7:0])};
5: {cl,q} ={1'b0,( x ^ k [7:0])};
endcase else 5.5. Модуль АЛУ.
if (k[15:12] == 8) case (k [2:0])
0:{cl,q}={1'b0, y}; Модуль АЛУ совместно с
1:{cl,q} = x + y; блоком РОН выполняет все команды
2:{cl,q} = x + y+cf;
3:{cl,q} ={1'b0,( x & y)}; обработки данных. Кроме того, через
4:{cl,q} ={1'b0,( x | y)}; данный модуль выполняется команда
5: {cl,q} ={1'b0,( x ^ y)};
endcase else загрузки регистра данными из ОЗУ.
if (k[15:12] == 9) case (k [2:0])
0:{q,cl}={cf,x}; В соответствии с
1:{cl,q}={x,cf};
endcase else функциональной схемой процессора
if (k[15:12]==4'b1010)case (k [0]) входными сигналами АЛУ являются
0:q=dm; 1:q=x;
endcase код текущей команды k, сигналы x и y,
else q=0; представляющие собой содержимое
assign zl=(q==0);
endmodule регистров rx и ry блока РОН, флаг
переноса cf, сохраненный в регистре
после выполнения предыдущей
команды, а также данные с выхода
ОЗУ dm (Data Memory).

Модуль АЛУ формирует на выходе логический сигнал q, являющийся


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

29
значениями входных сигналов. В схеме процессора этот сигнал через шину
данных d_bus подается на входы устройств памяти (регистры, ОЗУ) для
запоминания. В модуле АЛУ также формируются логические сигналы – признаки
нуля zl и переноса cl, полученные в результате выполнения текущей команды.

Для описания комбинационных схем на языке Verilog предназначены


операторы параллельного типа с ключевым словом assign, но можно использовать
и последовательные операторы с ключевым словом always.

Если последовательный оператор содержит только ключевое слово always, а


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

Для формирования выходного сигнала АЛУ необходимо выполнить


дешифрирование кода операции и выполнить заданную команду. Код операции
содержит две части, одна из которых определяет метод адресации, а вторая –
конкретную команду. В описании модуля АЛУ определение метода адресации
выполняет условный оператор if, а определение типа команды – оператор
варианта case. Выполнение команд описывается операторами присваивания.

Описание содержит четыре части, начинающиеся с операторов if, в которых


описаны команды с различными методами адресации.

Условием выполнения первого оператора if является признак команд с


непосредственной адресацией - нулевое значение старшего бита команды (в
соответствии с п. 4.1). Вторую ступень дешифрации выполняет оператор варианта
case, селектором которого являются биты команды с 14 по 12, представленные в
описании как 3-разрядный вектор. Формирование выходных сигналов – признака
переноса cl и выходного кода q описывают операторы присваивания, в которых

30
указанные сигналы объединены в 9-разрядный вектор {cl,q} для того, чтобы
использовать поведенческое описание операции суммирования.

При нулевом значении селектора выполняется присваивание: {cl,q} = {1'b0,


k [7:0]}. Это загрузка регистра операндом из команды. В левой части оператора
присваивания записан оператор объединения: в фигурных скобках через запятую
записаны одноразрядный логический сигнал переноса cl (carry logyc) и 8-
разрядный выходной сигнала q. В правой части оператора записан также
объединенный вектор, содержащий константу 0 (в двоичной системе счисления) и
8-разрядный вектор данных из команды. Сигнал cl впоследствии записывается в
регистр признаков, а сигнал q выдается на шину данных d_bus (см. рисунок 9).

При значении селектора, равном 1, выполняется присваивание: {cl,q} = x +


k [7:0]. В левой части оператора присваивания записан оператор объединения. В
фигурных скобках через запятую записаны 1-разрядный логический сигнал
переноса cl и 8-разрядный выходной сигнала q. В правой части оператора
присваивания записаны слагаемые - сигнал x из блока РОН и операнд из команды,
находящийся в разрядах 7…0. Результат суммирования присваивается указанному
9-разрядному вектору.

Значение селектора, равное 2, соответствует операции суммирования с


учетом переноса {cl,q} = x + k [7:0] + cf. Суммируется сигнал х, операнд из
команды и входной перенос cf (старое значение признака переноса), а
формируется выходной перенос cl (новое значение признака переноса),,
объединенный с вектором q.

Для логических операций указано явно, что новое значение признака


переноса cl равно нулю.

Второй оператор if описывает команды с регистровой адресацией при


условии, что префикс k1, содержащийся в разрядах команды с 15 по 12, равен 8.
Выполняемую команду определяет вторая часть кода операции k2, расположенная

31
в разрядах 2 – 0, используемая как селектор варианта во вложенном операторе
case.

Третий оператор «case» описывает выполнение одноадресных команд с


регистровой адресацией, для которых префикс k1, содержащийся в разрядах
команды с 15 по 12, равен 9, а выполняемую команду определяет вторая часть
кода операции k2 в разрядах с 2 по 0.
// Пример 6. Устройство синхронизации
В качестве примера в этой группе
записи
команд предусмотрено две операции
module sync_wr (c, k, w_r, w_m );
сдвигов через перенос.
input c; input [15:0] k ;
output w_r, w_m ;
assign w_r =c & ( ~k[15] | ( k[15] & Четвертый оператор if
~k[14] & ~k[13] )| описывает выполнение команд
( k[15] & ~k[14] & k[13] & ~ k[12]
&~k[0])); обращения к памяти. В этих командах
assign w_m = c & k[15] & ~k[14] & k[13] операнд, который необходимо
&~ k[12]& k[0];
endmodule записать, выдается на выход АЛУ.
Косвенный адрес памяти содержится
в регистре у.

5.6. Устройство синхронизации записи данных (sync_wr).

Результат операции, выполненной в АЛУ, выдается на шину выходных


данных d_bus, к которой подключаются различные устройства памяти,
принимающие данные - РОН, ОЗУ, регистр признаков. Все получатели
подключены к источнику сигнала постоянно, однако, запись результата должна
быть выполнена только в определенное устройство в соответствии с кодом
команды.

Управление записью осуществляется подачей сигнала, синхронизирующего


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

32
Устройство синхронизации записи (пример 6) содержит подобно
дешифратору набор логических схем «И», на входы которых поступают
импульсы синхронизации и кодовые комбинации, соответствующие командам,
для которых должна выполняться запись. Выходами комбинационных схем
являются сигнал записи результата в РОН (wr_ron) и сигнал записи в память
(we_mem).

33
6. Разработка схемы процессора.

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


символы модулей и построить из них принципиальную схему процессора в виде
файла processor.gdf. Соединение модулей между собой выполняется в
соответствии с функциональной схемой (см. рисунок 9) и форматами команд.
Принципиальная схема процессора в графическом редакторе показана на рисунке
11.

Модуль control выдает на ПЗУ команд LPM_ROM адрес новой команды по


спаду синхросигнала с учетом анализа предыдущей команды и признаков
результата zf, cf.

Операции обработки данных выполняются в АЛУ совместно с блоком РОН.


Результат выполнения всех команд формируется на выходе АЛУ и подается по
шине данных d_bus на блок РОН и модуль ОЗУ LPM_RAM_DQ.

Выбор устройства, в которое по фронту синхросигнала выполняется запись


данных, выполняет модуль синхронизации записи sync_wr, на выходе которого
формируются сигналы разрешения записи в регистр w_r или в память w_m в
соответствии с выполняемой командой.

В качестве ОЗУ из библиотеки mega_lpm выбран параметризированный


модуль lpm_ram_dq, в котором имеются раздельные шины для входных и
выходных данных. После выбора модуля открывается окно редактирования
выводов и параметров модуля. В верхней части окна Edit Ports/Parameters
необходимо для выводов inclock и outclock выбрать Unused – неиспользуемый, а
для остальных выводов (шины адреса, входных и выходных данных) выбрать
Used. Необходимо установить следующие параметры: LPM_Address_Control –
Registred (фиксируемый в регистре), LPM_InData – Registred, LPN_NumWords –
none (по умолчанию), LPM_OutData – Unregistred, LPM_Width – 8 (разрядность

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

Рисунок 11. Схема процессора в графическом дизайнере.

35
7. Задание А.

Разработать программу для тестирования заданной группы команд - команд


сдвигов и привести в отчете результаты моделирования. Разработать программу
для тестирования заданной группы команд - команд сдвигов и привести в отчете
результаты моделирования.
В разработанной системе команд содержится две операции: rrcrx–
циклический сдвиг вправо через перенос с кодом операции 9rx 0 и rlc –
циклический сдвиг влево через перенос с кодом операции 9rx1.
В программе тестирования данной группы команд необходимо загрузить в
регистр константу, а затем выполнить сдвиги.
Проверим правильность выполнения операции сдвига константы0 e 16влево и
вправо в регистр r1.При сдвиге вправо содержимое младшего разряда операнда
будет записываться в триггер признака переносаcf, а исходное значение cfбудет
поступать в старший разряд операнда, а при сдвиге влево все происходит
наоборот, старший разряд перемещается в признак переноса cf, а из cfбудет
перемещаться в младший разряд операнда. Перед выполнением сдвига
необходимо установить признак cfв определенное состояние, а точнее сбросить.
Программа приведена в таблице 7.1.
Таблица 7.1. Программа по заданию А
№ Мнемоника Код
0 mov r1, #06 0106
1 rrc r1 9100
2 rrc r1 9100
3 rlc r1 9101
4 rlc r1 9101

36
Временные диаграммы, отражающие результаты моделирования, позволяют
выполнить анализ работы программы. Они представлены на рисунке 13.

Рисунок 13. Временная диаграмма арифметических операций.

Началом измеряемых интервалов является спад синхроимпульса. Его


отмечают маркером, а конец измеряемого интервала– указателем мыши.
Целью измерений является выяснение возможности повышения тактовой
частоты процессора. Моменты времени, для которых необходимо
определить задержки, отмечены на рисунке 7.2. Спад синхроимпульса,
являющийся началом отсчетов, отмечен маркером, для которого текущее
время равно 200 нс.
1. Программа не содержит переходов. В каждом цикле команды адрес
команды (шина ak) инкрементируется по спаду синхроимпульса с задержкой
9.895нс.
2. На шине команд появляются коды команд в соответствии с
программой с задержкой 28.645нс.
3. Анализ временных диаграмм показывает, что запись данных
производится в моменты времени, когда все изменения сигналов
завершились. Тактовая частота процессора может быть увеличена без
потери работоспособности.

37
8. Задание Б.

В памяти, начиная с адреса 00, запишите массив из 8 чисел W0 – W7,


которые вычисляются в соответствии с заданной формулой: WK=2*k+4.

При решении задачи на ассемблере (или в машинных кодах) необходимо


предусмотреть выполнение всех машинных команд на уровне регистров. Поэтому
первый этап решения данной задачи - назначение регистров для хранения
определенных переменных. Пусть в регистре r0 хранится индекс элемента
массива, используемый как указатель адреса при записи в память, а регистр r1
выполняет функцию аккумулятора. Затем составляется алгоритм и программа
(таблица 8.1).

Таблица 8.1. Программа по заданию Б

№ Мнемоника Код
0 mvi r0, 00 0000
1 mvi r1, 00 0100
2 mvi r2, 08 0208
3 mov r1, r0 8100
4 add r1, r0 8101
5 addi r1, 04 1104
6 st (r0), r1 a101
7 addi r0, 01 1001
8 addi r2, ff 12ff
9 jz 0b f10b
a jmp 03 f003
b jmp 0b f00b

38
Программа содержит цикл. Счетчиком цикла является сигнал y
(содержимое регистра ry). Для упрощения программы выход из цикла не
предусмотрен. Количество повторений цикла, а, следовательно, и количество
элементов в массиве определяет параметр End Time (в данном примере это 10
мкс). Работу программы отображают временные диаграммы, приведенные на
рисунке 14.

Рисунок 14. Временная диаграмма выполнения задания Б.

Период синхроимпульсов, устанавливаемый по умолчанию, равен 200 нс.


При этом в ОЗУ данных при параметре End Time, равном 10 мкс, формируется
массив из 8 элементов. Измерения временных задержек формирования сигналов,
выполненные в задании А, показывают, что задержка формирования данных
составляет приблизительно 50 нс, следовательно период синхросигнала можно
установить равным 100 нс в окне «Overwrite Clock».

На диаграммах можно пронаблюдать момент записи данных в регистр (по


фронту сигнала w_r). Диаграммы показывают, что установленная частота (F= 1/T
= 10МГц) близка к предельной. Для нахождения предельной частоты следует
уменьшать период синхросигнала до появления ошибок.

Массив чисел в ОЗУ данных, показанный на рисунке 15, соответствует


теоретическим данным.

39
Рисунок 15. Массив данных в ОЗУ.

40
9. Задание В.

Включите в систему команд дополнительную команду – инкремент


содержимого регистра inc rx.

Для включения в систему команд заданной команды incrx необходимо в


описании АЛУ изменить раздел одноадресных команд следующим образом:

if (k[15:12] == 9) case (k [2:0])

0:{q,cl}={cf,x};

1:{cl,q}={x,cf};

2: {cl,q}=x + 1;

Для заданной команды inc rx выберем машинный код 9 rx 0 2.

Код команды incrx выберем код 9 rx 0 2. Для тестирования команды


составлена программа, содержащая выполнение несколько команд incrx (код
команды 9002), которые увеличивают содержимое регистра r0 на единицу.

Рисунок 16. Временная диаграмма работы команды inc rx.

41
Заключение

В данном курсовом проекте был спроектирован процессор в системе


Quartus, а также были освоены методики проектирования сложных цифровых
устройств для реализации на основе ПЛИС на примере быстродействующего
синтезированного процессора.

42
Библиографический список

1. Корнеев В. В., Киселев А. В. Современные микропроцессоры. — 3-е


изд., перераб. и доп. — СПб.: БХВ - Петербург, 2003. - 448 е.: ил.

2. Стешенко В.Б. ПЛИС фирмы Altera: элементная база, система


проектирования и языки описания._М.: Издательский дом «Додэка-XXI» 2007.-
124c.

3. Кистрин А.В. Лекции «Схемотехническое проектирование».

4. Угрюмов Е.П. Цифровая схемотехника. СПб.: БХВ-Санкт - Петербург,


2000.

5. Зотов В. Ю. Проектирование встраиваемых микропроцессорных


систем на основе ПЛИС фирмы XILINX. - М.: Горячая линия - Телеком, 2006. -
520 с, ил.

6. В. В. Соловьев. Основы языка проектирования цифровой аппаратуры


VERILOG. — М.: Горячая линия-Телеком, 2014. — 205 с: ил.

43

Вам также может понравиться