DDR3(3):IP核写

非 Y 不嫁゛ 提交于 2019-12-04 07:02:16

  调取的 DDR3 控制器给用户端预留了接口,用于实现对该 IP 核的控制,本篇介绍一下 DDR3 IP核写。

  在生成 DDR3 IP 核的界面中,可以找到 User Guide 手册,DDR3 的使用将围绕这个手册来展开。

 

一、接口框图

  打开 User Guide 第 90 页,可以看到 DDR3 IP 核的接口框图如下所示。可以看到,中间部分就是我们调取的 DDR3 IP 核,它预留了两组总线,右边一组直接绑定在 DDR3 芯片端口,其总线信号名称均以 ddr 开头,这部分总线只需要在 top 层设为端口即可,无需自己写代码控制。而左边一组则是留给用户端逻辑,其总线信号名称多以 app 开头,这些信号则需我们自己来编写实现。

 

二、总线详解

  对于 User Interface用户端逻辑信号, User Guide 第92页里有个汇总表,我们简单翻译一下。

1、命令总线(表格红色部分),其时序图如下所示。

2、写总线(表格黄色部分),其时序图如下所示。共有 3 种传输模式。模式 1 指的是命令和数据同时发送到 IP 核,模式 2 指的是数据提前于命令发送到 IP 核,模式 3 指的是数据落后于命令发送到 IP 核。模式 1 和 2 均可稳定传输,而模式 3 必须满足一个条件,即数据落后命令的时间不能超过两个时钟周期。一般来说,模式 2 比较常用,时序设计相对容易。

  关于 app_wdf_end 信号,该信号表示:当前突发写的最后一个数据。我们此次 DDR3 IP 核的突发长度为 8 ,1 个的长度是 16bit。本次 DDR3 IP 核调取时,我们选取的 “物理层 - 用户端” 的速率为 4:1,每次发送的有效数据为 128 bit,app_wdf_data 本就是128 bit的,因此 1 次突发写就完成了数据的写入,app_wdf_end 和 app_wdf_en 时序上同步了。

  而如果选取的 “物理层 - 用户端” 的速率为 2:1,那每次发送的有效数据为 64 bit,app_wdf_data 本是128 bit的,因此需要 2 次突发才能完成数据的写入,app_wdf_end 就看得更清楚了。

3、读总线(表格黄色部分)

  见下一篇博客。

4、其他总线(表格白色部分)

  本次设计没有使用到,不作讲解。

 

三、写控制模块设计

  本次设计均学自《威三学院FPGA教程》,具体代码就不贴了。

 

调试 Modelsim 小技巧:sim --- sim_1 --- behav --- modelsim中打开 top_ddr3_hdmi_tb_compile.do 文件,将最后一句 quit -force 删除掉,即可不关闭 Modelsim 调试仿真。

 

参考资料:威三学院FPGA教程

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!