求助:这个读写地址怎么没有自动加一呢
时间:10-02
整理:3721RD
点击:
写了一个很简单的同步fifo,但是仿真的时候读写地址都没有自动加一,一直保持0,大家帮帮忙看看是什么原因哪?写跟读类似,就没贴出来。
fifo_read : process(reset,clk)
begin
if reset = '0' then
rd_addr <= 0;
data_buffer <= (others => '0');
elsif rising_edge(clk) then
if (rd_pulse = '1' and empty = '0') then --read request and fifo not empty
data_buffer <= fifo_memory(rd_addr);
rd_addr<=rd_addr+1;
if (rd_addr=m-1) then rd_addr<=0;
end if;
end if;
if (rd_req='1') then
fifo_out <=data_buffer;
else fifo_out <=(others=>'Z');
end if;
end if;
end process;
其中m是fifo的深度。
汗...,原来是rd_req和wr_req的问题。咋自己瞅半天都看出来问题在哪,一发出来就突然想到了呢,看来灵感是逼出来的哇
fifo_read : process(reset,clk)
begin
if reset = '0' then
rd_addr <= 0;
data_buffer <= (others => '0');
elsif rising_edge(clk) then
if (rd_pulse = '1' and empty = '0') then --read request and fifo not empty
data_buffer <= fifo_memory(rd_addr);
rd_addr<=rd_addr+1;
if (rd_addr=m-1) then rd_addr<=0;
end if;
end if;
if (rd_req='1') then
fifo_out <=data_buffer;
else fifo_out <=(others=>'Z');
end if;
end if;
end process;
其中m是fifo的深度。
汗...,原来是rd_req和wr_req的问题。咋自己瞅半天都看出来问题在哪,一发出来就突然想到了呢,看来灵感是逼出来的哇
汗一个,抢个沙发吧
re
ding!
