搭建适合自己的DDR3仿真平台

 

 

之前调试DDR都是下载板子直接观测ChipScope验证。最近需要搭建自己的DDR仿真平台。尝试在IP核里的sim文件为基础,修改添加适合自己的仿真平台。具体过程如下。

按照硬件对应的片子生成DDR3 IP,去掉IPcore,添加生成的RTL代码

 

以下主要利用IP核生成的仿真文件搭建适合自己的仿真平台。

  • 添加文件到工程

DDR3生成的仿真文件夹在“...\ipcore_dir\IP_DDR3\example_design\sim”里文件如下:

这里主要用到的文件为3个.V和一个.vh。

将这3个.V和一个.vh复制到自己的工程源文件夹(“...\sim”)里,如下图:

添加这4个文件到工程中:

  • 修改sim_tb_top.v文件

注意这两个信号SIM_BYPASS_INIT_CAL和SIMULATION这两个信号,在sim_tb_top.v文件里定义为:

parameter SIMULATION            = "TRUE";

parameter SIM_BYPASS_INIT_CAL    = "FAST";

 适用于仿真模式,在implementation时应该是

parameter SIMULATION            = "FALSE";
parameter SIM_BYPASS_INIT_CAL    = "OFF";

修改1:屏蔽P84到P106

修改2:由于我在内部额外添加了DCM,外部输入时钟为100MHz,实际输入给你DDR3的时钟为200MHz,所以将CLKIN_PERIOD改为10000,但是这个定义不用传到下一层。这里只为了方便仿真激励的产生。DDR3的CLKIN_PERIOD还是使用内部默认定义,没有修改。

修改3:屏蔽掉自带的仿真实例化模块:example_top,改为自己的DDR3模块

自己生成的DDR3模块添加了测试接口tirg0,trig1,start,Frame_Length等信号。时钟接口由单端改为差分。自己的DDR3模块包括一个DCM,一个用户封装的fifo接口,还有DDR3核源文件。

***同时要注意在实例化DDR3.v时,以下6个信号必须给定,这写信号会影响仿真,不影响实际下板子运行。

我最开始自认为这几个信号没有用到,就直接没有声明,导致仿真时DDR3在初始化完成后只写了25个地址的数据后,DDR3_CS_N信号就为2’bX,造成后续写失败。如下图:

修改4:屏蔽两个系统函数$finish,以便让仿真继续持续运行。

  • 添加ddr3_model_parameters.vh文件到仿真软件目录下:C:\questasim_10.0b\verilog_src\ovm-2.1.1\src。不然仿真可能会出现找不到这个.vh文件。

在ISE里打开sim软件,添加需要观测的信号,运行仿真。

 

至此,自己的仿真平台搭建完成。

ddr3_model.v模型文件里默认定义的地址位宽是15。如果想仿真更多的地址空间,需要修改ddr3_model.v里的MEM_BITS定义。

    // Size Parameters
P184    parameter MEM_BITS         =      15; // Set this parameter to control how many write data bursts can be stored in memory.  The default is 2^10=1024.

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值