FPGA > САПР > Основы Verilog: Курс лабораторных работ

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

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

soft processor

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

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

На рисунке 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. Проверьте работоспособность устройства с помощью моделирующей программы.


Комментарии: