- some new control signals in cop0_ctrl
- added exc-Flag in WB_stage - simplified int signals Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@428 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -213,7 +213,7 @@ package mips_types is
|
|||||||
end record;
|
end record;
|
||||||
|
|
||||||
type event_t is record
|
type event_t is record
|
||||||
Int : unsigned(5 downto 0);
|
Int : STD_LOGIC;
|
||||||
data_load_err : STD_LOGIC;
|
data_load_err : STD_LOGIC;
|
||||||
data_store_err : STD_LOGIC;
|
data_store_err : STD_LOGIC;
|
||||||
inst_load_err : STD_LOGIC;
|
inst_load_err : STD_LOGIC;
|
||||||
@@ -259,11 +259,13 @@ package mips_types is
|
|||||||
epc_wb : word_t;
|
epc_wb : word_t;
|
||||||
imem_addr : word_t;
|
imem_addr : word_t;
|
||||||
dmem_addr : word_t;
|
dmem_addr : word_t;
|
||||||
exc_left : STD_LOGIC;
|
exc_req : STD_LOGIC;
|
||||||
|
exc_ack : STD_LOGIC;
|
||||||
end record;
|
end record;
|
||||||
|
|
||||||
type cop0_ctrl_out_t is record
|
type cop0_ctrl_out_t is record
|
||||||
RE : STD_LOGIC;
|
RE : STD_LOGIC;
|
||||||
|
exc_inject : STD_LOGIC;
|
||||||
exc_commit : STD_LOGIC;
|
exc_commit : STD_LOGIC;
|
||||||
exc_pending : STD_LOGIC;
|
exc_pending : STD_LOGIC;
|
||||||
exc_exit : STD_LOGIC;
|
exc_exit : STD_LOGIC;
|
||||||
@@ -393,8 +395,9 @@ package mips_types is
|
|||||||
|
|
||||||
type WB_t is record
|
type WB_t is record
|
||||||
nop : STD_LOGIC;
|
nop : STD_LOGIC;
|
||||||
|
exc : std_logic;
|
||||||
|
events : event_t;
|
||||||
op : op_t;
|
op : op_t;
|
||||||
epc : word_t;
|
|
||||||
reg_wptr : reg_ptr_t;
|
reg_wptr : reg_ptr_t;
|
||||||
wreg_we : STD_LOGIC;
|
wreg_we : STD_LOGIC;
|
||||||
data : word_t;
|
data : word_t;
|
||||||
@@ -593,7 +596,7 @@ package body mips_types is
|
|||||||
function events_clr return event_t is
|
function events_clr return event_t is
|
||||||
variable result : event_t;
|
variable result : event_t;
|
||||||
begin
|
begin
|
||||||
result.Int := (others => '0');
|
result.Int := '0';
|
||||||
result.data_load_err := '0';
|
result.data_load_err := '0';
|
||||||
result.data_store_err := '0';
|
result.data_store_err := '0';
|
||||||
result.inst_load_err := '0';
|
result.inst_load_err := '0';
|
||||||
@@ -614,10 +617,7 @@ package body mips_types is
|
|||||||
begin
|
begin
|
||||||
result := '0';
|
result := '0';
|
||||||
|
|
||||||
for i in e.Int'range loop
|
result := result or e.Int;
|
||||||
result := result or e.Int(i);
|
|
||||||
end loop;
|
|
||||||
|
|
||||||
result := result or e.data_load_err;
|
result := result or e.data_load_err;
|
||||||
result := result or e.data_store_err;
|
result := result or e.data_store_err;
|
||||||
result := result or e.inst_load_err;
|
result := result or e.inst_load_err;
|
||||||
@@ -636,9 +636,7 @@ package body mips_types is
|
|||||||
function "or" (a, b : event_t) return event_t is
|
function "or" (a, b : event_t) return event_t is
|
||||||
variable result : event_t;
|
variable result : event_t;
|
||||||
begin
|
begin
|
||||||
for i in a.Int'range loop
|
result.Int := a.Int or b.Int;
|
||||||
result.Int(i) := a.Int(i) or b.Int(i);
|
|
||||||
end loop;
|
|
||||||
result.data_load_err := a.data_load_err or b.data_load_err;
|
result.data_load_err := a.data_load_err or b.data_load_err;
|
||||||
result.data_store_err := a.data_store_err or b.data_store_err;
|
result.data_store_err := a.data_store_err or b.data_store_err;
|
||||||
result.inst_load_err := a.inst_load_err or b.inst_load_err;
|
result.inst_load_err := a.inst_load_err or b.inst_load_err;
|
||||||
|
|||||||
Reference in New Issue
Block a user