EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转——双口RAM之战
6 ^ A. d) ^$ A8 B2 K) x) u7 Y8 W) l+ _7 }5 I5 E/ c
在前面的课程我们学习了RAM,接下来我们一起来学习另外一个IP核,双口RAM的使用。 首先新建一个工程 接着调出我们需要的双口RAM,点击TOOL→ ![]() 点击NEXT 按上图选择后就可以点击NEXT 按上图选择后就可以点击NEXT 按上图选择后就可以点击NEXT(选择RAM的地址深度是1024与数据位宽是8) 按上图选择后就可以点击NEXT(选择读跟写拥有自己的独立时钟) 按上图选择后就可以连续点击2次Finsh(输出不带寄存器输出) 3 L0 r2 L9 p% z g& s
由于RAM是可读写的存储器,所以我们可以建立一个RAM控制器,先把数据写入到RAM,然后再读出来,仿真验证读写是否正确,控制器具体代码如下:
, I6 M4 T' y9 W; a- j! f7 w& t; E; n: l
0 ^4 j, A Z+ f. c2 k 接着通过顶层调用两个模块: 测试程序如下: 编译整个工程 由于没有输出信号,所以可以发现我们FPGA的逻辑占用资源是0 的。 & J2 E: D6 \! m, W
仿真波形图: 由上图可以发现,双口RAM的结构,是可以解决跨时钟域的问题,在a_clk的时钟下,a端口的数据不断写入,而b_clk的时钟下,b端口不断把数据读出来,而且跟a端口写入的数据是相同的。
8 `3 r, O0 c( O& `$ Z |