ЛР8 > Разработка простого процессорного модуля на Verilog

soft processor

Тема: Разработка процессорного модуля, базовая структура и принципы работы, система команд

 Структура курса лабораторных работ: Основы Verilog 

 1. Знакомство со средой моделирования ModelSim
 2. Исследование комбинационных устройств
 3. Комбинационные устройства
 4. Исследование последовательностных логических устройств 
 5. Исследование арифметических устройств
 6. Исследование конечных автоматов
 7. Исследование многофункциональных устройств
 8. Простой процессорный модуль

Теоретические сведения

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

Эти данные, через 16-разрядный мультиплексор, поступают в различные регистры: R0, …, R7 и A. Мультиплексор позволяет передавать данные из одного регистра в другой. Выход мультиплексора называется шиной (bus), т.к. этот термин часто употребляется для каналов передачи данных от одной системы в другую.

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

Рисунок 1. Процессорный модуль – структура

Система может выполнять различные операции на каждом такте, которые задаются устройством управления. Это устройство определяет месторасположение исходных данных, которые должны быть поданы на шину, и в какой из регистров они должны быть загружены. Например, если устройство управление получило сигналы R0 out и Ain, это значит, что мультиплексор должен передать содержимое R0 на шину, а по следующему активному фронту сигнала тактовой частоты эти данные должны быть записаны в регистр A.

Подобная система называется процессором. Он выполняет действия, описанные в виде команд. В таблице 1 представлен перечень команд, поддерживаемых разрабатываемым нами процессором. В левом столбце указаны имена команд и их операнды. Используемый синтаксис RX ← [RY] говорит о том, что содержимое регистра RY должно быть загружено в регистр RX. Команда mv (пересылка) позволяет копировать данные из одного регистра в другой. Команда mvi (непосредственная загрузка), представленная выражением RX ← D говорит о том, что 16-разрядная константа D должна быть загружена в регистр RX.

Таблица 1. Система команд процессора

Каждая команда кодируется и сохраняется в регистре IR, используя 9-разрядный формат IIIXXXYYY, где III представляет команду, XXX представляет регистр RX, а YYY представляет регистр RY. Конечно, для кодирования нашей системы команд достаточно двух бит, но три бита выбраны для возможности дальнейшего расширения. Как видно из рисунка1, регистр IR непосредственно подключен к девяти разрядам 16-разрядного входного порта DIN . Для команды mvi полеYYY не используется, и константа #D подается на входной 16-разрядный порт DIN сразу же после записи команды mvi в регистр IR.

Для выполнения таких команд, как сложение и вычитание понадобится более одного такта, из-за большого количества необходимых пересылок данных. Для этого устройство управления использует двухразрядный счетчик, показанный на рисунке1, управляющий порядком следования команд. Процессор выполняет команду, пришедшую на вход DIN, по сигналу Run и отвечает сигналом Done, когда команда выполнена. В таблице 2 приведены управляющие сигналы, которые выдаются во время выполнения команд из таблицы 1, и соответствующие им тактовые моменты времени. Обратите внимание, только управляющие команды сохраняются в регистре IRin во время нулевого такта, поэтому он и не показан в данной таблице.

Таблица 2. Управляющие сигналы, устанавливаемые при выполнении команд

Задание 1

1. Создайте проект, реализующий процессорное устройство.

2. Проверьте работоспособность устройства с помощью моделирующей программы (с использованием тестового файла).

 

Задание 2

1. Доработайте процессорное устройство, созданное в задании 1. Добавьте к нему блок памяти, как показано на рисунке 2, для хранения выполняемой программы.

Рисунок 2. Добавление блока памяти к процессорному устройству.

2. В данном устройстве счетчик Counter используется для формирования адреса блока памяти Memory. Процессорное устройство и блок памяти работают каждый со своей тактовой частотой – Pclock и MClock, соответственно.

3. Для записи программы в блок памяти создайте тестовый файл инициализации содержимого блока памяти

4. Проверьте работоспособность устройства с помощью моделирующей программы.