如何用verilog写双向端口的ram
最近刚刚开始学习fpga,由于项目需要,想要设计一块RAM,数据线是双向的。下面是我写的代码module ram(data,r_wr_n,addr,clk)
inout data ;
input addr;
input r_wr_n,clk;
reg ram;
reg datareg;
assigndata= (r_wr_n) ? datareg:16'hz;
always@(posedge clk)
begin
if(r_wr_n)datareg<= ram;
else ram= data ;
end
endmodule
上面的代码在quartus下仿真,显示不出data数值,但data_result显示的结果是正确的。
但是在硬件环境下,我可以读出数据,但不知道读出的数据是否正确,也不知道写进的数据是否正确;
写进的数据,再读出不正确,全0,要嘛全FFFF,很是郁闷,请高手指点下。 为什么不用ip核呢? 楼上说的对啊,你完全可以使用IP核。quartus里有自带的双向端口的ram。使用IP核不但省资源,而且其代码是最优化的。而自己编写的ram可综合性太差。 如何用verilog写双向端口的ram
页:
[1]