Merge pull request #22 from antonblanchard/store-fix

Stores need to wait for wishbone write ack
pull/19/head
Anton Blanchard 5 years ago committed by GitHub
commit 0832fed06c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -81,16 +81,15 @@ begin
m_tmp.cyc <= '1'; m_tmp.cyc <= '1';
m_tmp.stb <= '1'; m_tmp.stb <= '1';


l_saved <= l_in;

if l_in.load = '1' then if l_in.load = '1' then
m_tmp.we <= '0'; m_tmp.we <= '0';


l_saved <= l_in;
state <= WAITING_FOR_READ_ACK; state <= WAITING_FOR_READ_ACK;
else else
m_tmp.we <= '1'; m_tmp.we <= '1';


w_tmp.valid <= '1';

data := l_in.data; data := l_in.data;
if l_in.byte_reverse = '1' then if l_in.byte_reverse = '1' then
data := byte_reverse(data, to_integer(unsigned(l_in.length))); data := byte_reverse(data, to_integer(unsigned(l_in.length)));
@ -100,12 +99,6 @@ begin


assert l_in.sign_extend = '0' report "sign extension doesn't make sense for stores" severity failure; assert l_in.sign_extend = '0' report "sign extension doesn't make sense for stores" severity failure;


if l_in.update = '1' then
w_tmp.write_enable <= '1';
w_tmp.write_reg <= l_in.update_reg;
w_tmp.write_data <= l_in.addr;
end if;

state <= WAITING_FOR_WRITE_ACK; state <= WAITING_FOR_WRITE_ACK;
end if; end if;
end if; end if;
@ -154,6 +147,13 @@ begin


when WAITING_FOR_WRITE_ACK => when WAITING_FOR_WRITE_ACK =>
if m_in.ack = '1' then if m_in.ack = '1' then
w_tmp.valid <= '1';
if l_saved.update = '1' then
w_tmp.write_enable <= '1';
w_tmp.write_reg <= l_saved.update_reg;
w_tmp.write_data <= l_saved.addr;
end if;

m_tmp <= wishbone_master_out_init; m_tmp <= wishbone_master_out_init;
state <= IDLE; state <= IDLE;
end if; end if;

Loading…
Cancel
Save