Projeto processador

Disponível somente no TrabalhosFeitos
  • Páginas : 9 (2221 palavras )
  • Download(s) : 0
  • Publicado : 10 de abril de 2013
Ler documento completo
Amostra do texto
UNIVERSIDADE FEDERAL DE MINAS GERAIS
LABORATÓRIO DE SISTEMAS DIGITAIS

Projeto de um pequeno processador dedicado em VHDL

Alunos: Lucas Corrêa Aranha
Leandro Rodrigues

Curso: Engenharia de Controle e Automação

INTRODUÇÃO

Nosso objetivo é projetar um pequeno processador de 4 bits em VHDL que realize uma sequência de tarefas, utilizando o método de projeto RTL.
As tarefaspoderão ser selecionadas através de quatro botões: Bot0, Bot1, Bot2 e Bot3, e o processador será formado basicamente por um comparador e por um banco de registradores de quatro bits. As tarefas propostas são as seguintes:
* Ao selecionarmos Bot0, todos os registradores do banco serão zerados;

* Ao selecionarmos Bot1, será mostrado qual o maior valor dentre os valores armazenados nosregistradores do banco através dos LEDs do kit;

* Ao selecionarmos Bot2, será mostrado qual o menor valor dentre os valores armazenados nos registradores do banco através dos LEDs do kit;

* Ao selecionarmos Bot3, os valores dados em uma entrada de 4 bits serão memorizados em um dos registradores, que será escolhido por meio da combinação dos bits de duas chaves, de forma a identificar oendereço Addr de 2 bits (os valores serão registrados em um dos quatro registradores indicados pelas duas chaves).

Projeto e método RTL

O método RTL (Register Transfer Level) é um método de projeto que pode ser dividido em quatro etapas:
Etapa 1 – Criar uma máquina de estados finitos de alto nível;
Etapa 2 – Criar o caminho de dados com os componentes que serão utilizados no projeto;
Etapa 3– Conectar o caminho de dados à unidade de controle;
Etapa 4 – Obter uma máquina de estados finitos de unidade de controle.
De acordo com a tarefa selecionada, nosso processador poderá se encontrar em um dos cinco estados a seguir:
Estado reset – (Bot = 0001) zera todos os registradores do banco;
Estado maior – (Bot = 0010) faz a comparação entre todos os valores armazenados nos registradorese retorna o maior;
Estado menor – (Bot = 0100) faz a comparação entre todos os valores armazenados nos registradores e retorna o menor;
Estado gravar – (Bot = 1000) armazenar dados em um endereço de um dos 4 registradores do banco, que será selecionado através de duas chaves;
Estado inicial - (Bot = outros valores, que não os já mostrados acima) os leds voltam aos valores inicias. Issoassegura que apenas um dos botões será apertado e apenas uma tarefa por vez será selecionada. Se o botão voltar a zero, as saídas dos registradores também voltam ao estado inicial.
É importante observar que antes que possamos realizar as comparações de menor e maior devemos, logicamente, armazenar valores nos quatro registradores (estado gravar - Bot = 1000).

A máquina de estados obtida para oprocessador é a seguinte:

Gravar

Bot3 = 1 Bot3 = 0
Bot2 = 1 Bot0 = 1
Menor Inicial Reset
Bot2 = 0 Bot0 = 0
Bot1 = 1 Bot1 = 0

Maior

Nas aulas anteriores já havíamos feito os códigos do comparador, do registrador e dobanco de registradores, que serão necessários para fazer o processador executar as tarefas requeridas. A seguir temos todos os códigos em VHDL utilizados no projeto com as respectivas simulações, e o modo como reunimos o comparador e o banco de registradores para formar o processador.

Código em VHDL do comparador
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entityCOMP is
generic( gen: natural:= 4);
port (
A : in std_logic_vector(gen-1 downto 0);
B : in std_logic_vector(gen-1 downto 0);
maior : out std_logic_vector(gen-1 downto 0);
menor : out std_logic_vector(gen-1 downto 0);
clk : in std_logic
);
end COMP;
architecture logic of COMP is
begin
process (A,B,clk)
begin
if (clk' event and clk='1' ) then
if (A > B) then
maior...
tracking img