Xilinx Vertex5 DDR2 SDRAM IP核仿真教程

在项目中使用Xilinx DDR2 SDRAM IP核之前,首先对该IP核进行仿真以了解IP核的时序和工作方式。
本人最近在使用Vertex5 版本的ddr2 SDRAM核,并使用ISE14.7版本生成;仿真工具使用modelsim SE.虽说官方有文档告诉我们如何进行仿真该IP核,但是具体到实践中还是走了不少弯路,写此博客的目的就是将仿真该IP核的过程记录下来,防止自己以后遗忘,同时如果能给看到这篇文章的人一点帮助也是极好的。废话不多说,下面进入正题:
生成IP核的过程不再赘述。在生成IP核以后,可以看到在工程目录下有三个文件夹docs、example_design、user_design.在这里我们使用example_design里面的文件。我们将用到example_design文件夹里面的 rtl 和 sim 文件夹里面的.v文件。
第一步:新建modelsim工程,在工程空白处右键点击,选择add to project -> Existing File. 点击Browse,选择Xilinx的工程目录下的rtl和sim文件夹里面的.v文件(不是.v的文件不需要)。
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
点击OK.

第二步:导入文件完成之后就可以对工程里面的文件进行编译。然后你就会出错!
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
原因是在ddr2_model_c0.v和ddr2_model_c1.v(我这里用到了两个ddr2控制器,单控制器的话就只有ddr2_model.v),错误信息告诉我们里面有很多变量没有定义。真的吗?当然不是!原因是ddr2_model.v文件里面包含了一个参数文件,就是sim文件夹里面的ddr2_model_parameters.vh,这个参数文件里面包含了各种各样的参数以适应不同的ddr2 sdram 芯片。打开ddr2_model.v我们看到里面有一句include代码包含了参数文件,我们将包含文件的路径改为绝对路径即可。例如我的就改为:
`include “D:/Project_of_Software/Xilinx/MY_PROJECTS/ddr2_sdram_sim/ddr2_sdram_sim/ipcore_dir/ddr2_sdram_sim/example_design/sim/ddr2_model_parameters_c0.vh”
保存并重新编译,发现全部通过
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程

第三步:对工程进行仿真。
当你信心满满进行仿真,以为会直接出结果的时候,会发现自己错了。。。
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
你会出现各种vsim-3033的错误。原因是你的modelsim没有添加Xilinx的仿真库,所以里面的很多unit modelsim不认识。所以需要加入库文件。当你点击start simulation时出现
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
点击Libraries标签,点击Add,找到编译好的Xilinx库,添加unisims_ver和unisim库文件夹(此处注意,必须先添加unisims_ver库文件夹,然后再添加unisim库文件夹,不然会报错。因为需要先编译unisims_ver库文件夹里面的文件)。然后回到Design标签:
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
点击OK。发现还是有错…
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
原因是没有找到glbl.v文件,这个文件是用来配置仿真环境的。在
C:\Xilinx\14.7\ISE_DS\ISE\verilog\src文件夹里面,直接找到这个文件,然后添加到工程里面去,重新编译,这时候如果直接start simulation还是会出错,下面我们采用命令的形式进行操作。在sim文件夹中包含一个sim.do文件,这里面包含了仿真所需的各种命令。

第四步:使用命令进行仿真。
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
打开sim.do文件,我们刚才一直在做的事事实上将71行之前的事情做完了,现在我们拷贝
73和74行的命令到modelsim底端的Transcript窗口中
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
这里我们同样需要修改为绝对路径(注意将“’\”改为“/”)。回车。最后再将第77行命令拷贝
点击回车,终于可以运行了
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
然后拷贝83行将信号添加到波形图里面,手动写:run -all 命令即可出现波形。
Xilinx Vertex5 DDR2 SDRAM IP核仿真教程
我们可以看到phy_init_done信号由低变高,说明IP核初始化完毕,可以正常进行读写操作。
至此,Xilinx ddr2 SDRAM IP核仿真成功。