Формирование устройства управления

Санкт-Петербургский Государственный Университет Телекоммуникаций

Им проф. М.А. Бонч-Бруевича

Кафедра «Программной инженерии и Вычислительной Техники»

Курсовой проект

По дисциплине «Вычислительная и микропроцессорная техника»

Тема: «Проектирование и программирование в кристалл FPGA микропроцессор, выполняющий команды, указанные в выданном варианте задания»

Выполнил: Напсоков Б.Р.

Группа ИКТВ-31

Факультет ИВО

Номер выполненного варианта 3

Проверила: __________Желтова Е.А

(Подпись)

Санкт-Петербург

Содержание

Содержание. 2

Задание. 3

Часть №1. 3

Часть №2. 6

Часть №3. 9

Часть №4. 11

Часть №5. 15

Задание:

Вариант 3

IN port, R1;

CMP R0, R1;

ASR R1;

ASR R1;

Программа предполагает ввод данных в регистр 1 с тумблеров, сравнение с «0» для получения флагов состояний и арифметический сдвиг содержимого регистра вправо на два разряда. (При арифметическом сдвиге освобождающиеся разряды заполняются знаком числа.) Содержимое регистра выводится на сегментные индикаторы, содержимое триггеров флагов – на светодиоды.

Часть №1

Формирование памяти инструкций.

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

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

Программа 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<="0000000100000000";

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

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

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

when others=>data_out<="0000000000000000";

end case;

end process;

end ;

Программа 1.2

library ieee;

use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity cnt4 is

port(

clk: in std_logic;

ena : in std_logic;

res : in std_logic;

q: out std_logic_vector(3 downto 0)

);

end cnt4;

architecture arch of cnt4 is

signal cnt: std_logic_vector(3 downto 0);

begin

process (clk,res)

begin

if (res = '0') then cnt<=(others=>'0');

elsif(rising_edge(clk)) then

if(ena ='1') then

cnt <=cnt + "0001";

end if;

end if;

end process;

q <= cnt;

end arch;

Программа 1.3.

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;

Схема устройства:

Формирование устройства управления - student2.ru

Временная диаграмма устройства:

Формирование устройства управления - student2.ru

Часть №2.

Формирование устройства управления.

Цель: получение представления о дешифрации потока инструкций в RISC-процессоре.

Постановка задачи. Необходимо построить устройство, посылающее сигналы управления на исполнительный блок. Из структуры кода команды следует, что такое устройство должно иметь основной дешифратор на 3 адресных входа, куда поступает код операции, и дешифраторы адресов источников и приемников. Эти дешифраторы будут иметь по два адресных входа и вход управления подключением, управляемый основным дешифратором. Так как команда пересылки 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, т.е. с помощью дешифратора второго источника.

Основной дешифратор управляет также выводом операнда данных на внутреннюю шину данных, а для команд сложения и переноса с регистровой адресацией формирует сигнал активизации АЛУ (выход en_add).

Программа 2.1

library ieee;

use ieee.std_logic_1164.all;

entity dec is

port(

adr_i: in bit_vector(2 downto 0);

data_out: out bit_vector(7 downto 0)

);

end dec;

architecture BBB of dec is

begin

p0: process (adr_i)

begin

case adr_i is

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

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

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

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

when "100"=>data_out<="00010000";

when "101"=>data_out<="00100000";

when "110"=>data_out<="01000000";

when "111"=>data_out<="10000000";

end case;

end process;

end ;

Программа 2.2

library ieee;

use ieee.std_logic_1164.all;

entity dec1 is

port(

adr_i: in bit_vector(1 downto 0);

en: in bit;

data_out: out bit_vector(3 downto 0)

);

end dec1;

architecture BBB of dec1 is

begin

process (adr_i)

begin

if (en = '1') then

data_out(0)<=(not(adr_i(0)))and(not(adr_i(1)));

data_out(1)<=(adr_i(0))and(not(adr_i(1)));

data_out(2)<=(not(adr_i(0)))and(adr_i(1));

data_out(3)<=(adr_i(0))and(adr_i(1));

elsif (en ='0') then

data_out(3 downto 0)<="0000";

end if;

end process;

end ;

Схема устройства:

Формирование устройства управления - student2.ru

Временная диаграмма работы устройства:

Формирование устройства управления - student2.ru

Часть №3

Наши рекомендации