Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Задание на моделирование



Задание на моделирование

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

Процессор будет иметь исполнительный блок, содержащий 4 регистра. Регистры 8-разрядные. Регистр с младшим адресом, R0, всегда хранит «0». Арифметико-логическое устройство, АЛУ, будет содержать только 8-разрядный сумматор. Выходы регистров подключаются к сумматору через мультиплексоры. Таким образом, проектируемый процессор может выполнять команды обмена с пространством памяти, команды внутренних пересылок и команды сложения. Как упоминалось ранее, обмен с пространством памяти пока не затрагиваем. Нас будут интересовать пересылки и сложение. Адресация таких действий может быть как регистровая (источник и приемник адресуются по регистрам), так и непосредственная (источник представлен 8-разрядным операндом в структуре команды). Формат команды 16 разрядов.

В этом формате выделяем следующие поля:

Р15 Р14 Р13 определяют код операции

1) 0 0 0 – запись операнда в память,

2) 0 0 1 – чтение операнда из памяти,

3) 0 1 0 – пересылка с непосредственной адресацией,

4) 0 1 1 – сложение с непосредственной адресацией,

5) 1 0 0 – пересылка с регистровой адресацией,

6) 1 0 1 – сложение с регистровой адресацией.

Первые 4 случая предполагают наличие операнда в структуре команды. Адресный операнд представим 4-разрядным, а операнд данных – 8-разрядным. Случаи 5 и 6 предполагают использование младшего байта команды под формирование кода.

Определим адресные поля источников и приемников. Команды с регистровой адресацией предполагают наличие двух источников: команда пересылки для RISC-процессора суммирует содержимое источника с нулем (R0) и записывает в приемник, для команды сложения второй источник может служить приемником. Выделяем для адресации разряды:

Р11 Р10 – адрес первого источника,

Р9 Р8 – адрес второго источника,

Р7 Р6 – адрес приемника.

Для случаев с непосредственной адресацией приемник адресуется по Р9 Р8. Для сложения с непосредственной адресацией непосредственный операнд по умолчанию должен записываться в R1, т.е. на разрядах Р11 Р10 в это случае должна присутствовать запись 01.

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

MOV dat1, R1;

MOV dat2, R2;

ADD R1, R2;

MOV R2, R3

Введем значения непосредственных операндов. Пусть dat1=18, dat2=14. Запишем коды для этих команд. Неиспользуемые разряды заполним нулями.

Р15 Р14 Р13 Р12 Р11 Р10 Р9 Р8 Р7 Р6 Р5 Р4 Р3 Р2 Р1 Р0  
                               
                               
                               
                               
Так как наш процессор будет выполнять лишь 4 команды, блок памяти инструкций для него можно представить в виде простейшего КЦУ, к выходу которого подключены два 8-разрядных регистра. На вход КЦУ поступают адреса от программного счетчика. Каждый адрес, таким образом, вызывает определенный программный код, который отображается в выходном буфере. Для настоящего цикла работ строим память на восемь 16-разрядных состояний. Минимальная единица информации для стандартной процессорной системы – байт, поэтому программный счетчик должен иметь 4 разряда. Управление блоком памяти производится тремя старшими разрядами, младший разряд подает тактовый сигнал на исполнительный блок. Структура полученного блока памяти инструкций представлена на рис.1. Программы для КЦУ и регистров – прогр.1 и прогр.2. Сигнал eninst=1 дает разрешение на обращение к памяти инструкций. Первая лабораторная работа настоящего цикла посвящена построению блока памяти и счетчика команд.

Записанный выше код инструкций содержит адреса направлений действий схемы (коды операций) и адреса устройств, непосредственно в этой операции участвующих (источников и преемников). Теперь нам необходимо построить управляющее устройство, формирующее сигналы управления на исполнительный блок. В состав этого устройства входят 4 дешифратора. Основной дешифратор получает код операции и управляет дешифраторами, определяющими местонахождение операндов, а также выводом операнда данных на внутреннюю шину данных, а адресного операнда на позиции, определяющие адрес в пространстве памяти данных. Управление формируется соответственно: для операнда данных – в случае команд переноса и сложения с непосредственной адресацией, для адресного операнда – в случае команд обращения к области памяти данных.

Так как команда пересылки MOV R(s),R(d) исполняется по принципу: R(d)<=R(s) + R(0), то для такой команды необходимы два источника: регистр нуля и регистр общего назначения. Кроме того, два источника могут понадобиться и для случая использования команды сложения двух операндов с занесением результата в третий регистр: ADD R(s1),R(s2),R(d). Поэтому договоримся, что два дешифратора определяют источники по разрядам кода Р11,Р10 и Р9,Р8; а один дешифратор определяет приемник по разрядам кода Р7,Р6. В случае, когда команда имеет только один операнд – источник, приемник определяется по разрядам Р9,Р8, т.е. с помощью дешифратора второго источника. Управление дешифратором первого источника получает активный уровень в случае исполнения команд: сложения (все адресации) и переноса с регистровой адресацией. Управление дешифратором второго источника получает активный уровень в случае исполнения команд сложения и переноса с регистровой адресацией. Управление дешифратором приемника получает активный уровень в случае исполнения команд сложения и переноса с любыми видами адресации.

Кроме того для команд сложения при любой адресации и переноса с регистровой адресацией блок управления формирует сигнал активизации АЛУ,

Полученная структура, включающая блок памяти, построенный ранее, представлена на рис.2. Программы для дешифраторов – прогр.3 и прогр.4. Построением блока устройства управления займемся на второй лабораторной работе.

Исполнительное устройство нашего процессора состоит из блока регистров и АЛУ. Построим блок регистров. Он включает в себя четыре 8-разрядных буферных регистра. Первый регистр всегда хранит «0», поэтому его входы данных не подключены к общей шине. В R0 может храниться только значение операнда источника. Следующие три регистра (R1, R2, R3) используются для общего назначения. Их входы данных подключены к общей шине, на которую может поступать как значение непосредственного операнда источника, так и содержимое выхода сумматора АЛУ. Простейшей развязкой этих сигналов в нашем случае может служить блок элементов 2ИЛИ. У каждого регистра буфер записи может быть включен только в том случае, если этот регистр служит приемником операнда (позиции приемник или второй источник). Полученная структура представлена на рис.3. Построению блока регистров посвящена третья лабораторная работа.

Второй блок решающего устройства – АЛУ. В нашем случае в него входит только 8-разрядный сумматор, два мультиплексора, собирающие выходы блока регистров, и триггер, хранящий состояние бита переноса. Полученная структура представлена на рис.4. Сумматор строится по программе – прогр.7, которая основана на прогр.5 и прогр.6. Прогр.5 описывает одноразрядный сумматор для нулевого разряда – без входа переноса, прогр.6 – одноразрядный сумматор, имеющий вход переноса. Построение блока АЛУ производится в процессе четвертой лабораторной работы.

В пятой лабораторной работе полученные в процессе предыдущих работ модули объединяются согласно рис.5. Полученное устройство программируется в кристалл Cyclone EP1C6T144C6.

Все работы выполняются в пакете Quartus II. В нем уже выполнялись работы в предыдущем семестре, поэтому основные действия известны. Стоит привести лишь некоторые замечания, необходимые для проведения настоящих работ. Все проекты необходимо держать в одной общей папке. Каждый проект будет состоять из нескольких файлов. Перед компиляцией каждого файла необходимо установить его приоритет в данном проекте. Для этого необходимо включить навигатор проекта – первая иконка справа от окна названия проекта в верхнем меню. В открывшемся слева окне открыть список файлов проекта кнопкой File (средняя кнопка внизу открывшегося окна). Выбрать из списка необходимый файл и установить его приоритет (клик правой клавишей мыши, выбрать Set as Top Level Entity). Каждый проект необходимо оформлять как отдельный модуль (File –> Create/Update -> Create Symbol Files for Current File). При создании каждого нового проекта не забывайте в окне ADD FILES добавить уже созданные файлы, на основе которых будет строиться ваш проект. Если вы пропустили это на этапе формирования имени проекта, можете добавить через верхнее меню Project -> Add/Remove Files in Project





Дата публикования: 2014-11-29; Прочитано: 214 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...