EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转——双口RAM之战 5 a$ A$ _+ M Y4 ]
5 K" V' `0 M# n& z
在前面的课程我们学习了RAM,接下来我们一起来学习另外一个IP核,双口RAM的使用。 首先新建一个工程 接着调出我们需要的双口RAM,点击TOOL→ ![]() 点击NEXT 按上图选择后就可以点击NEXT 按上图选择后就可以点击NEXT 按上图选择后就可以点击NEXT(选择RAM的地址深度是1024与数据位宽是8) 按上图选择后就可以点击NEXT(选择读跟写拥有自己的独立时钟) 按上图选择后就可以连续点击2次Finsh(输出不带寄存器输出) * L @) T. \4 w3 F
由于RAM是可读写的存储器,所以我们可以建立一个RAM控制器,先把数据写入到RAM,然后再读出来,仿真验证读写是否正确,控制器具体代码如下:
4 u% r+ L+ B) g8 J
0 H( e( h5 b4 @4 |( Q1 P$ W0 p. p6 |: q: n# s. A; ~9 R
接着通过顶层调用两个模块: 测试程序如下: 编译整个工程 由于没有输出信号,所以可以发现我们FPGA的逻辑占用资源是0 的。
( V/ I7 H: X S9 u! z/ E 仿真波形图: 由上图可以发现,双口RAM的结构,是可以解决跨时钟域的问题,在a_clk的时钟下,a端口的数据不断写入,而b_clk的时钟下,b端口不断把数据读出来,而且跟a端口写入的数据是相同的。 , w( P& `4 C: R- G' ]
|