Line 1... |
Line 1... |
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
--
|
--
|
-- The Decoder unit.
|
-- The Decoder unit.
|
-- It decodes the instruction opcodes and executes them.
|
-- It decodes the instruction opcodes and executes them.
|
--
|
--
|
-- $Id: decoder.vhd,v 1.6 2004-04-14 20:53:33 arniml Exp $
|
-- $Id: decoder.vhd,v 1.7 2004-04-15 22:06:05 arniml Exp $
|
--
|
--
|
-- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
|
-- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
|
--
|
--
|
-- All rights reserved
|
-- All rights reserved
|
--
|
--
|
Line 228... |
Line 228... |
signal int_executed_s : boolean;
|
signal int_executed_s : boolean;
|
signal int_pending_s : boolean;
|
signal int_pending_s : boolean;
|
|
|
-- pragma translate_off
|
-- pragma translate_off
|
signal istrobe_s : std_logic;
|
signal istrobe_s : std_logic;
|
|
signal injected_int_q : std_logic;
|
-- pragma translate_on
|
-- pragma translate_on
|
|
|
begin
|
begin
|
|
|
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
Line 1769... |
Line 1770... |
f1_q <= '0';
|
f1_q <= '0';
|
mb_q <= '0';
|
mb_q <= '0';
|
t0_dir_q <= '0';
|
t0_dir_q <= '0';
|
-- pragma translate_off
|
-- pragma translate_off
|
istrobe_s <= '0';
|
istrobe_s <= '0';
|
|
injected_int_q <= '0';
|
-- pragma translate_on
|
-- pragma translate_on
|
|
|
elsif clk_i'event and clk_i = clk_active_c then
|
elsif clk_i'event and clk_i = clk_active_c then
|
if en_clk_i then
|
if en_clk_i then
|
|
|
Line 1801... |
Line 1803... |
-- T0 direction selection
|
-- T0 direction selection
|
if ent0_clk_s then
|
if ent0_clk_s then
|
t0_dir_q <= '1';
|
t0_dir_q <= '1';
|
end if;
|
end if;
|
|
|
end if;
|
|
|
|
-- pragma translate_off
|
-- pragma translate_off
|
-- Instruction Strobe ---------------------------------------------------
|
-- Instruction Strobe -------------------------------------------------
|
if clk_mstate_i = MSTATE5 and last_cycle_s then
|
if clk_mstate_i = MSTATE5 and last_cycle_s and
|
|
injected_int_q = '0' then
|
istrobe_s <= '1';
|
istrobe_s <= '1';
|
else
|
else
|
istrobe_s <= '0';
|
istrobe_s <= '0';
|
end if;
|
end if;
|
|
|
|
-- Marker for injected instruction ------------------------------------
|
|
if opc_inj_int_s then
|
|
injected_int_q <= '1';
|
|
elsif clk_mstate_i = MSTATE5 and last_cycle_s then
|
|
injected_int_q <= '0';
|
|
end if;
|
-- pragma translate_on
|
-- pragma translate_on
|
|
|
end if;
|
end if;
|
|
|
|
end if;
|
|
|
end process regs;
|
end process regs;
|
--
|
--
|
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
|
|
-- pragma translate_off
|
-- pragma translate_off
|
Line 1846... |
Line 1856... |
|
|
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
-- File History:
|
-- File History:
|
--
|
--
|
-- $Log: not supported by cvs2svn $
|
-- $Log: not supported by cvs2svn $
|
|
-- Revision 1.6 2004/04/14 20:53:33 arniml
|
|
-- make istrobe visible through testbench package
|
|
--
|
-- Revision 1.5 2004/04/07 22:09:03 arniml
|
-- Revision 1.5 2004/04/07 22:09:03 arniml
|
-- remove unused signals
|
-- remove unused signals
|
--
|
--
|
-- Revision 1.4 2004/04/04 14:18:53 arniml
|
-- Revision 1.4 2004/04/04 14:18:53 arniml
|
-- add measures to implement XCHD
|
-- add measures to implement XCHD
|