跳转到主要内容

HDMI数据的接收发送实验(四)

概述

    在之前我们使用IP核自带的example design进行仿真测试,实现了一次突发的仿真验证,之后我们需要做一个双DDR的流水线操作,这样就需要再例化一次DDR4 IP,DDR4仿真模型也需要多例化一个。并将新例化的DDR4 IP的物理接口绑定到DDR4的仿真模型上。这样就可以实现同时使用两个DDR4来读写数据的仿真。

建立仿真

    将官方例程的顶层代码,也就是物理接口例化到tb文件,这里含有两个DDR4的接口信号。

打开sim_tb_top,可以看到DRAM_WIDTH的位宽为8,那么向下边找到DRAM_WIDTH==8的条件,如图3所示,这个条件下是我们要使用的仿真代码。

我们有两组DDR4接口数组,每组都是一个接口数组,每个接口的数据位宽为8(通过参数CONFIGURED_DQ_BITS设置)。每组数组的大小由RANK_WIDTH和NUM_PHYSICAL_PARTS的乘积决定。

   这里定义了两个这样的数组,分别命名为iDDR4_0和iDDR4_1。

   这意味着我们有两个DDR4控制器,每个控制器管理多个DDR4接口(每个接口对应一个物理部件和一个Rank的组合)。如图4所示。

将原工程的数组名称写改为我们定义的iDDR4_0。图5为DDR4_0绑定的物理接口。

这样关于仿真文件已经修改完成。接下来验证两个DDR4同时读写的功能。

双DDR4同时读写验证

    上一章中测试模块的突发长度为127,将之前的测试模块复制一份,将接口信号连接到DDR4_1上。可以将突发长度修改为255,这样就可以同时控制两个DDR4的读写。

功能验证

   整体波形:

共两个模块的波形,分为两部分,上部分为DDR4_0的读写波形,下部分为DDR4_1的读写波形,可以看到他们是同时进行的写,当各自的DDR4都写完后,再读DDR4,。

    读写DDR4_0波形。

DDR4_0读写了128个数据。可以通过截图看到最后读出的数据为127。

    读写DDR4_1波形

DDR4_1读写了256个数据。可以通过截图看到最后读出的数据为255。

总结

  本章节介绍了如何在仿真中例化两个DDR4_IP核,通过仿真模型绑定各自的管脚,实现两个DDR4的分开控制。并进行了功能的验证。这样可以对以后使用两个DDR4的工程仿真打下基础。

文章来源:威视锐科技