Line 1... |
Line 1... |
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
--
|
--
|
-- The decoder unit.
|
-- The decoder unit.
|
-- Implements the instruction opcodes and controls all units of the T400 core.
|
-- Implements the instruction opcodes and controls all units of the T400 core.
|
--
|
--
|
-- $Id: t400_decoder.vhd,v 1.6 2006-06-05 14:20:34 arniml Exp $
|
-- $Id: t400_decoder.vhd,v 1.7 2008-05-01 19:49:55 arniml Exp $
|
--
|
--
|
-- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
|
-- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
|
--
|
--
|
-- All rights reserved
|
-- All rights reserved
|
--
|
--
|
Line 92... |
Line 92... |
|
|
|
|
library ieee;
|
library ieee;
|
use ieee.numeric_std.all;
|
use ieee.numeric_std.all;
|
|
|
use work.t400_comp_pack.t400_opc_table;
|
use work.t400_mnemonic_pack.all;
|
|
|
architecture rtl of t400_decoder is
|
architecture rtl of t400_decoder is
|
|
|
signal cyc_cnt_q : unsigned(2 downto 0);
|
signal cyc_cnt_q : unsigned(2 downto 0);
|
signal ibyte1_q,
|
signal ibyte1_q,
|
ibyte2_q : byte_t;
|
ibyte2_q : byte_t;
|
|
|
signal opcode_s : byte_t;
|
signal opcode_s : byte_t;
|
signal second_cyc_q : boolean;
|
signal second_cyc_q : boolean;
|
|
signal mnemonic_rec_s : mnemonic_rec_t;
|
signal mnemonic_s,
|
signal mnemonic_s,
|
mnemonic_q : mnemonic_t;
|
mnemonic_q : mnemonic_t;
|
signal multi_byte_s,
|
signal multi_byte_s,
|
multi_byte_q : boolean;
|
multi_byte_q : boolean;
|
signal last_cycle_s : boolean;
|
signal last_cycle_s : boolean;
|
Line 254... |
Line 255... |
when icyc_en_i else
|
when icyc_en_i else
|
ibyte1_q;
|
ibyte1_q;
|
|
|
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
-- Opcode decoder table
|
-- Opcode decoder table
|
|
--
|
|
mnemonic_rec_s <= decode_opcode_f(opcode => opcode_s,
|
|
opt_type => opt_type_g);
|
|
--
|
|
mnemonic_s <= mnemonic_rec_s.mnemonic;
|
|
multi_byte_s <= mnemonic_rec_s.multi_byte;
|
|
--
|
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
opc_table_b : t400_opc_table
|
|
generic map (
|
|
opt_type_g => opt_type_g
|
|
)
|
|
port map (
|
|
opcode_i => opcode_s,
|
|
mnemonic_o => mnemonic_s,
|
|
multi_byte_o => multi_byte_s
|
|
);
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
-- Process decoder_ctrl
|
-- Process decoder_ctrl
|
--
|
--
|
Line 861... |
Line 860... |
|
|
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
-- File History:
|
-- File History:
|
--
|
--
|
-- $Log: not supported by cvs2svn $
|
-- $Log: not supported by cvs2svn $
|
|
-- Revision 1.6 2006/06/05 14:20:34 arniml
|
|
-- interface comments added
|
|
--
|
-- Revision 1.5 2006/05/28 15:32:14 arniml
|
-- Revision 1.5 2006/05/28 15:32:14 arniml
|
-- execute virtual NOP at location 0x0ff when vectoring to interrupt routine
|
-- execute virtual NOP at location 0x0ff when vectoring to interrupt routine
|
--
|
--
|
-- Revision 1.4 2006/05/27 19:14:18 arniml
|
-- Revision 1.4 2006/05/27 19:14:18 arniml
|
-- interrupt functionality added
|
-- interrupt functionality added
|