mirror of
https://github.com/stnolting/neorv32.git
synced 2025-04-23 21:57:33 -04:00
[amo_ctrl] allow error already during 1st operation (load)
This commit is contained in:
parent
9c010e39bd
commit
1bf38b17d9
1 changed files with 4 additions and 3 deletions
|
@ -782,7 +782,6 @@ architecture neorv32_bus_amo_ctrl_rtl of neorv32_bus_amo_ctrl is
|
|||
cmd : std_ulogic_vector(3 downto 0);
|
||||
rdata : std_ulogic_vector(31 downto 0);
|
||||
wdata : std_ulogic_vector(31 downto 0);
|
||||
ack : std_ulogic;
|
||||
end record;
|
||||
signal arbiter, arbiter_nxt : arbiter_t;
|
||||
|
||||
|
@ -830,7 +829,9 @@ begin
|
|||
when S_READ_WAIT => -- wait for read-access to complete
|
||||
-- ------------------------------------------------------------
|
||||
arbiter_nxt.rdata <= sys_rsp_i.data;
|
||||
if (sys_rsp_i.ack = '1') or (sys_rsp_i.err = '1') then
|
||||
if (sys_rsp_i.err = '1') then -- abort if error
|
||||
arbiter_nxt.state <= S_IDLE;
|
||||
elsif (sys_rsp_i.ack = '1') then
|
||||
arbiter_nxt.state <= S_EXECUTE;
|
||||
end if;
|
||||
|
||||
|
@ -871,7 +872,7 @@ begin
|
|||
|
||||
-- response switch --
|
||||
core_rsp_o.data <= sys_rsp_i.data when (arbiter.state = S_IDLE) else arbiter.rdata;
|
||||
core_rsp_o.err <= sys_rsp_i.err when (arbiter.state = S_IDLE) or (arbiter.state = S_WRITE_WAIT) else '0';
|
||||
core_rsp_o.err <= sys_rsp_i.err when (arbiter.state = S_IDLE) or (arbiter.state = S_WRITE_WAIT) or (arbiter.state = S_READ_WAIT) else '0';
|
||||
core_rsp_o.ack <= sys_rsp_i.ack when (arbiter.state = S_IDLE) or (arbiter.state = S_WRITE_WAIT) else '0';
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue