afa007007 发表于 2011-3-21 10:26:53

如何用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,很是郁闷,请高手指点下。

snow37023702 发表于 2011-4-1 10:49:51

为什么不用ip核呢?

哦十全_至芯学员 发表于 2011-4-1 13:48:13

楼上说的对啊,你完全可以使用IP核。quartus里有自带的双向端口的ram。使用IP核不但省资源,而且其代码是最优化的。而自己编写的ram可综合性太差。

zxopenljx 发表于 2021-5-29 15:56:42

如何用verilog写双向端口的ram
页: [1]
查看完整版本: 如何用verilog写双向端口的ram