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

Тема: Разработка процессорного модуля, базовая структура и принципы работы, система команд
Структура курса лабораторных работ: Основы Verilog 1. Знакомство со средой моделирования ModelSim |
Теоретические сведения
На рисунке 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. Проверьте работоспособность устройства с помощью моделирующей программы.