Содержание: Доработка процессорного модуля, созданного на предидущей работе. Расширение сиcтемы команд, подключение внешнего модуля памяти команд и других переферийных устройств
Теоретические сведения
Целью данной лабораторной работы является доработка простого процессорного модуля, разработанного в лабораторной работе № 5. В данной работе мы избавимся от внешнего счетчика и расширим систему команд процессорного модуля (смотри таблицу 1).
Таблица 1.Расширение системы команд процессорного модуля
Команда ld(load) позволяет загрузить в регистр RX данные из ячейки памяти, адрес которой указан в регистре RY. Команда st(store) позволяет сохранить данные из регистра RX в ячейке памяти, адрес которой указан в регистре RY. Заключительная команда mvnz(moveifnotzero) – выполнение команды mvпри соответствующем условии. Таким условием является неравенство 0 содержимого регистра G.
Структурная схема процессорного модуля показана на рисунке 2.
Рисунок 2.Структурная схема процессорного модуля
Как и в предыдущем варианте, регистры R0 – R6 выполняют функцию регистров общего назначения, а регистр R7 теперь выполняет функцию счетчика. Этот счетчик используется для формирования адреса ячейки памяти, по которому считывается очередная команда (в предыдущем задании для этой цели использовался внешний счетчик). В данном случае, регистр R7 выполняет функцию процессорного счетчика команд (programcounter, PC). После установки процессора в исходное состояние (системный сброс) в РС записывается нулевой адрес. В начале выполнения каждой команды (в нулевом такте) содержимое РС используется как адрес для чтения очередной команды из блока памяти. Команда записывается в регистр IR, а значение РС увеличивается, указывая на адрес следующей команды (в случае выполнения команды mviсчетчик команд будет указывать на адрес хранения непосредственной константы, а после ее чтения – на адрес следующей команды). Для увеличения значения РС используется сигналincr_pc, выполняющий функцию разрешения счета. В данном процессорном модуле имеется возможность непосредственной загрузки значения в счетчик команд с помощью инструкций mvили mvi (обращение к нему осуществляется как к регистру R7). В этом случае используется сигнал R7in для параллельной загрузки данных в этот регистр. Поэтому, процессорный модуль может переходить к выполнению команды, записанной в любой ячейке памяти. Естественно, содержимое счетчика команд можно сохранять в любом другом регистре с помощью командыmv. На рисунке 3 показан пример программы, в котором РС используется для организации цикла (знак % указывает на комментарии).
|
|
Рисунок 3.Пример программы на языке ассемблер
В данном примере команда mvR5,R7 записывает в РС адрес ячейки памяти, в которой располагается команда subR4,R2. Команда mvnzR7,R5 заставляет исполнять команду subдо тех пор, пока содержимое регистра R4 не станет равно 0. Часто такие программы используются для формирования временных задержек.
|
|
Как показано на рисунке 2, в данном процессорном модуле присутствуют еще два дополнительных регистра. Регистр ADDR используется для хранения адреса обращения к внешнему устройству (например, блоку памяти). Регистр DOUT используется для хранения данных, которые процессор передает во внешнее устройство. Один из примеров использования регистра ADDR – хранение адреса ячейки памяти, к которой обращается процессор для чтения очередной команды. В этом случае, содержимое РС передается по шине Bus, и записывается в регистр ADDR, с которого затем поступает на блок памяти. С помощью этого же регистра процессор может считывать данные из любой ячейки памяти. И данные, и команды поступают на входную шину DIN процессора. Процессор имеет возможность сохранять данные во внешней ячейке памяти. Для этого, в регистр ADDR записывается адрес этой ячейки, в регистр DOUT – сохраняемые данные, и устанавливается в состояние логической «1» триггер W (write), разрешающий запись.
На рисунке 4 показан способ подключения данного процессорного модуля к блоку памяти и другим внешним устройствам. Изображенный на рисунке блок памяти поддерживает операции чтения и записи, имеет входные шины адреса и данных и входной сигнал разрешения записи (wr_en). Дополнительно, на блок памяти поступает сигнал тактовой частоты Clock, синхронизирующий входные сигналы addr, data и wr_en. Такой тип памяти носит названиесинхронное ОЗУ (synchronous RAM). На рисунке 4 изображен еще дополнительный внешний 16-разрядный регистр, который может быть подключен к внешним светодиодам LEDs. Для того, чтобы процессорный модуль мог обращаться и к блоку памяти, и к внешнему регистру, на схеме присутствуют ряд дополнительных логических элементов, выполняющих функцию дешифратора адреса.
|
|
Рисунок 4.Подключение процессорного модуля к блоку памяти
Если старшие разряды шины адреса А15А14А13А12 = 0000, процессор обращается к блоку памяти (используются n младших разрядов шины адреса). Если старшие разряды шины адреса А15А14А13А12 = 0001, тогда процессор обращается к внешнему регистру.
Задание 1
1. Создайте проект, реализующий модернизированное процессорное устройство. В качестве используемой микросхемы укажите EP2C35F672C6 семейства Cyclone II.
2. Проверьте работоспособность устройства с помощью моделирующей программы (функциональное моделирование).
|
|
3. Для реализации блока памяти используйте мегафункциюRAM: 1-PORT (папка Memory Compiler). Укажите в настройках, что данный блок памяти содержит 128 16-разрядных слов. Для инициализации блока памяти создайте файл inst_mem.mif.
4. Проверьте работоспособность проекта с помощью отладочного модуля DE2. Для подачи сигнала Run используйте переключатель SW17, для подачи сигнала Resetn – кнопку KEY0, для подачи сигнала Clock – внешний кварцевый генератор 50МГц. Подключите внешний регистр, показанный на рисунке 4, к светодиодам LEDR15 – LEDR0.
Задание 2
1. Добавьте к процессорному блоку дополнительное внешнее устройство – seg7_scroll. Устройство должно содержать регистры, непосредственно подключенные к семисегментным индикаторам модуля DE2.
2. Доработайте программу процессора (файл MIF) – процессор должен выводить надписи на семисегментные индикаторы.
3. Проверьте работоспособность проекта с помощью отладочного модуля DE2.
Задание 3
1. Добавьте к процессорному блоку дополнительное внешнее устройство – port_n. Устройство должно содержать регистры, непосредственно подключенные к переключателям SW модуля DE2.
2. Доработайте программу процессора (файл MIF) – процессор должен считывать состояние переключателей с помощью команды ld.
3. Проверьте работоспособность проекта с помощью отладочного модуля DE2.
Дата добавления: 2018-04-04; просмотров: 383; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!