基于FPGA的IP核RAM的设计和调用

介绍IP核:

IP(知识产权)核将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等做成一个“黑盒”或者可修改参数的模块,供设计者使用。IP核包括硬IP与软IP。调用IP核能避免重复劳动,大大减轻设计人员的工作量。

首先,使用Xilinx ISE建立一个RAM的IP核。

步骤如下:

1)用ISE Project Navigator 新建一个工程,命名为IP_RAM,右击工程,进入IP核生成界面,展开Memories & Storage Elements, 展开RAMs & ROMs,可以找到Block Memory Generator。打开这个Generator,来到如图界面,左边是当前将要创建的Memory的输入输出。稍后的设置会调整这些端口。点击Next.




2)选择Simple Dual Port RAM,如果两个端口时钟相同也可以勾选Common Clock简化输入输出以及内部设计。

可以看到左边的端口有了地址端口ADDRA,ADDRB,输入DINA,输出DOUTB。还有A口写使能WEA,以及两个端口的CLKA和CLKB。如下图示:

扫描二维码关注公众号,回复: 1148779 查看本文章




3)再下一步,设置Port A Options。包括数据宽度Write Width,和存储单元个数Write Depth。如图设置128个存储单元,对应的地址线7根。Port B只需要自动跟随A的设置即可(读端口)。

如下图示:




4)在第四步,下面的Memory Initialization设置存储器的初始化。勾选Load Init File以选择coe文件。下面相对详细地说明.coe文件。




注:

coe文件实质上是文本文件。我们使用记事本新建并编辑。

先写memory_initialization_radix=进制;

再写memory_initialization_vector=各单元数据逗号隔开;

编辑好后,保存并修改后缀为coe。

如下图,本RAM的coe文件为:


上面的初始化文件是我手动输入的,等学会了Matlab操作,再专门添上此知识点。

如果导入成功,则会显示COE File Contents窗口,且没有红色的错误提示。

可以上下滚动查看各个Index的初始值是否符合预期。


5)

然后点击Generate。需要等待一段时间。完成后,我们就可以在代码中使用这个名称的模块了。

比如我新建的这个是Ram,那么我就可以 Ram myram(.CLKA(clk)...)去调用它了。




RAM的IP核建立正式结束。


猜你喜欢

转载自blog.csdn.net/reborn_lee/article/details/80481386
今日推荐