Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
novy_kurs.doc
Скачиваний:
2
Добавлен:
30.08.2019
Размер:
515.58 Кб
Скачать

Описания лабораторных работ. Лабораторная работа №1. Формирование памяти инструкций.

Цель работы. Получение представления о формировании потока инструкций в RISC-процессоре. Ознакомление с программированием на VHDL.

Постановка задачи. Необходимо построить схему блока, содержащую память инструкций и программный счетчик. Блок памяти инструкций представлен в виде простейшего КЦУ, к выходу которого подключены два 8-разрядных регистра. Обращение к регистрам возможно при активном уровне «1» на разрешающем входе. На вход КЦУ поступают адреса от программного счетчика. Каждый адрес, таким образом, вызывает определенный программный код, который отображается в выходном буфере. Максимальный объем проектируемой памяти – восемь 16-разрядных ячеек, поэтому строим 4-разрядный счетчик, младший разряд которого формирует тактовую частоту для исполнительного блока, а три старших разряда – адреса на блок памяти. Проектируемая схема изображена на рис.1.1.

Задание на работу в лаборатории.

  1. Открыть свою папку в пакете Quartus II и создать в ней проект для лабораторной работы №1.

  2. Открыть VHDL-файл и записать в него текст прогр.1.1, ставя в соответствие каждому выделенному адресу сформированный код, записанный на лекции. Сохранить файл под именем raminst и установить его приоритет.

  3. Откомпилировать файл программы и проверить с помощью временных диаграмм. На диаграммах установить интервалы: adr_i =20ns (20, 40 и 80 ns). Создать библиотечный модуль файла raminst.vhd.

  4. Открыть файл графического редактора и, основываясь на работе в прошлом семестре, построить в нем синхронный 4-разрядный суммирующий счетчик. Сохранить файл под именем count и установить его приоритет.

  5. Откомпилировать файл и проверить с помощью временных диаграмм. На диаграммах установить интервал sync =20ns. Создать библиотечный модуль файла count.bdf.

  6. Открыть VHDL-файл и записать в него текст прогр.1.2 для 8-разрядного двухбуферного параллельного регистра. Сохранить файл под именем reg8 и установить его приоритет.

  7. Откомпилировать файл и проверить с помощью временных диаграмм. На диаграммах установить интервал clk_i =20ns, ena и ctrl постоянно установить в «1», data_i сформировать произвольно. Создать библиотечный модуль файла reg8.vhd.

  8. Открыть файл графического редактора и объединить в нем модули согласно рис.1.1. Сохранить файл под именем проекта, установить его приоритет.

  9. Откомпилировать файл и проверить с помощью временных диаграмм. На диаграммах установить интервалы: sync =20ns, eninst=400ns. Продемонстрировать диаграммы преподавателю. Создать библиотечный модуль файла.

Отчет должен содержать: схему блока – рис.1.1, схему счетчика, программы для накопителя и регистров; временную диаграмму работы блока.

Прогр.1.1

library ieee;

use ieee.std_logic_1164.all;

entity raminst is

port(

adr_i: in bit_vector(3 downto 1);

data_out: out bit_vector(15 downto 0)

);

end raminst;

architecture BBB of raminst is

begin

p0: process (adr_i)

begin

case adr_i is

when "000"=>data_out<="0100000100010010";

when "001"=>data_out<="0100001000001110";

when "010"=>data_out<="1010011010000000";

when "011"=>data_out<="1000001011000000";

when others=>data_out<="0000000000000000";

end case;

end process;

end ;

Прогр.1.2

library ieee;

use ieee.std_logic_1164.all;

entity reg8 is

port(

data_i: in std_logic_vector(7 downto 0);

clk_i: in std_logic;

ena : in std_logic;

ctrl : in std_logic;

data_out: out std_logic_vector(7 downto 0)

);

end reg8;

architecture arch of reg8 is

signal regist: std_logic_vector(7 downto 0);

begin

process (clk_i)

begin

if(rising_edge(clk_i)) then

if(ena ='1') then

regist <= data_i;

end if;

end if;

end process;

data_out <= regist when ctrl = '1' else "ZZZZZZZZ";

end arch;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]