Escolar Documentos
Profissional Documentos
Cultura Documentos
Implementao em VHDL
Moraes 03/maio/2011
Incrementada por Calazans em
maio/2013
Instrues suportadas
ADDU, SUBU, AND, OR, XOR, NOR
Formato R
ORI, LW, SW
Formato I
Hardware
Bloco de Controle
IR_out
control_unit
uins
MIPS_V0
incpc
pc
uins.ce
uins.rw
uins.wreg
uins.i
Puramente combinacional
Recebe cdigo objeto da instruo em execuo
Decodifica a instruo
Gera a microinstruo, ou seja, o conjunto de microoperaes
(sinais de controle) para:
library IEEE;
use IEEE.Std_Logic_1164.all;
use work.p_MI0.all;
entity control_unit is
port(ck, rst: in std_logic;
-- estes sinais so inteis nesta verso da
-- Unidade de Controle, pois ela combinacional
uins :
out microinstruction;
ir :
in reg32
);
end control_unit;
architecture control_unit of control_unit is
signal i : inst_type;
begin
uins.i <= i;
i <= ADDU
when ir(31 downto
SUBU
when ir(31 downto
AAND
when ir(31 downto
OOR
when ir(31 downto
XXOR
when ir(31 downto
NNOR
when ir(31 downto
ORI
when ir(31 downto
LW
when ir(31 downto
SW
when ir(31 downto
invalid_instruction ; --
assert i /= invalid_instruction
report "******************* INVALID INSTRUCTION *************"
severity error;
uins.ce
uins.rw
else '1';
uins.wreg
else '1';
end control_unit;
Esta atribuio
corresponde ao
processo de
decodificao da
instruo em si
Demais sinais de
controle
Bloco de dados
Cada cdigo objeto de uma instruo define seus operandos
Instrues tipo R:
op2 <= R2 when instR='1' else ext32; -- Mux: gera entrada inferior da ULA
Bloco de dados
Instruo ORI:
3 multiplexadores:
else
Bloco de dados
Instrues LW / SW
3 multiplexadores:
ENDEREO A
SOMA DO REG
BASE+DESLOCAMEN
TO
op2 <= R2 when instR='1' else ext32; -- Mux: gera segunda entrada da ULA
else
Cdigo VHDL
Cdigo VHDL
IR_out
uins
incpc
+4
D
ck
PC
rst
uins.ce
uins.rw
uins.wreg
uins.i
pc
i_address
address
data
Memria
de
Instrues
instruction
Memria de instrues
externa ao processador
ver testbench
Cdigo VHDL
Cdigo VHDL
ULA
BANCO DE REGISTRADORES
TOP