在上一节中了解了DDR4 IP核的接口信号,这一节主要讲述如何建立DDR4的仿真模型。
1.添加空白的仿真文件,选择SystemVerilog类型,如图1所示。
2.把ddr_top模块例化到ddr_top_tb仿真模块中,因为我们要产生100MHz的时钟作为激励,所以把时钟尺度改为1ps/1ps,这样更方便使用整数产生时钟。如图2所示。
3.接下来我们右键点击ddr4 ip核,打开示例工程Example Design,这是vivado自带的ddr4例化仿真测试工程。如图3所示。
4.打开示例工程,双击imports文件,如图4所示。
5.选择图5中的蓝色文件,右键点击复制,这些文件是ddr4的仿真模型和接口信号等配置信息。
6.在原工程的仿真目录下创建import文件,用来存放刚刚复制的ddr4的仿真模型和一些头文件。建立的文件位置如图6所示。将选中的文件复制到创建的import文件中。
7.将选中的文件复制到创建的import文件中。如图7所示。
8.添加仿真文件,选中import文件下的所有文件并添加。如图8所示。
9.添加仿真文件后,需要将其中几种文件类型更改为Verilog Header。更改后如图9所示。
按照图10所示更改文件类型。
10.在仿真文件中添加ddr4仿真模型在示例工程中,我们通过DQ_WIDTH=8可以找到ddr4仿真模型的例化接口。接下来回到我们自己创建的工程中,打开仿真顶层模块,
(1)将arch_package模块引用到仿真文件中:import arch_package::*;
(2)我们把interface.sv模块中的接口引用进来并声明IDDR4[0:1]:
DDR4_if #(.CONFIGURED_DQ_BITS(16)) iDDR4[0:1]();
(3)再将ddr4_model模块例化进来:
(4)
(5)model_enable为使能信号。
(6)DQ突发长度为16,但我们在ddr4中的数据位宽为32位,所以需要将ddr4_model模块例化2次,并且可以通过interface.sv模块可以看到ddr4仿真模型的接口,这样就可以将ddr4 ip核的接口与ddr4仿真模型的接口相连。仿真模块代码:
使用simulation仿真,配置正确的情况下c0_init_calib_complate信号拉高后表示初始化成功。如图11所示
文章来源:威视锐科技