集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 4557|回复: 3

如何用verilog写双向端口的ram

[复制链接]
afa007007 发表于 2011-3-21 10:26:53 | 显示全部楼层 |阅读模式
最近刚刚开始学习fpga,由于项目需要,想要设计一块RAM,数据线是双向的。下面是我写的代码
module ram(data,r_wr_n,addr,clk)
inout [15:0] data ;
input [7:0]  addr;
input r_wr_n,clk;

reg [15:0]   ram[2**8-1:0];
reg [15:0]   datareg;

assign  data  = (r_wr_n) ? datareg:16'hz;
always@(posedge clk)
     begin
       if(r_wr_n)  datareg  <= ram[addr];
       else   ram[addr]  = 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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-28 23:45 , Processed in 0.063310 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表