Vivado下配置DDR3的MIG IP核————官网案例学习

本文详细指导了如何在MIG7Series中配置DDR3接口,包括选择接口类型、设置时钟频率、信号线参数、阻抗匹配和引脚分配,以及生成并测试官方示例。重点强调了系统时钟选择和XADC温度补偿的应用。
摘要由CSDN通过智能技术生成

1.双击 Memory Interface Generator(MIG 7 Series)

2.next

3.注意下面箭头处无需勾选,倘若勾选,则是选择AXI接口,本次使用的是native接口

4.next,此处无需考虑兼容其他器件。

5.选择DDR3

6.第一个箭头,是指DDR3能够运行的周期(2500ps),即最大频率(400MHz)。尽管此芯片可以实现的最大频率(1/125*1000=800MHz),但是,由于此芯片所能提供的最大速度为400MHz,因此填写2500ps。

第二个箭头,代表DDR3的型号。MT41J是指镁光的一种DDR3型号。

第三个箭头,因为我们是两片DDR3芯片,所以是32位。

第四个箭头,选择normal,这样的好处是可以节省资源,其他默认不变。

上面打勾的是进行掩膜。可以防止数据误写入。

下面两幅图,是对黄色字及上面红线的解释说明。

7.箭头是指系统时钟,这个时钟是工作时钟可以选择200MHz,也可以是其他的。红色框更加有利于MIG核进行数据写入DDR3中。

8.第一个箭头,表示是对system clk的操作,有三种选择(Differential、Singled-Ended和No buffer).前两种表示FPGA外部电路提供的时钟信号(差分时钟,单端时钟),最后一种代表的是FPGA内部经由锁相环生成的时钟信号。一般在设计开发板,为了节约引脚数目,此信号会由FPGA内部锁相环生成更为方便。

第二个箭头是指参考时钟有四种,前三种和系统时钟的配置是一致的。第四种表示,如果系统时钟也是200MHz二者可以共用一个时钟。这也就说明,参考时钟是固定200Hz。这里需要注意2020.2版本的设置IP核时有Bug,第二次打开,系统时钟会变化为400MHz,因此参考时钟找不到Use System Clock选项。

第三个箭头是XADC进行温度采集的,百度翻译如下:
内存接口使用 XADC 模块的温度读数来执行温度补偿,并使读取的 DQS 保持在数据窗口的中心。每个设备有一个 XADC 块。如果 XADC 当前未在设计中的任何位置使用请启用此选项以实例化模块。如果已使用 XADC请禁用此 MIG 选项。然后,用户需要向顶层 12 位 device_temp_i 输入端口提供温度值。有关详细信息,请参阅答复记录 51687 或 UG586。

9.这个是设置信号线的阻抗匹配,和开发板的设置有关,一般阻抗越大,其线宽越窄,更加有利于布线,这里根据开发板PCB布线自行设置。

10.引脚分配问题。根据开发板引脚原理图进行配置即可,我使用的是正点原子达芬奇Pro,从他家的官网可以找到其ddr3引脚管理(ddr3_xdc.ucf)

11.进行配置

12.一路next,accept即可。

13.选择Global。

14.生成官方example,之所以这样操作,是考虑到后面可以能会按照同一流程,进行DDR3的配置,不同工程,不同器件。首先运行一下官网案例,观察能否初始化成功,然后再将官网案例打包成一个类似于RAM的形式,进行数据操作。

15.运行官网案例进行仿真,在上一个博客中,已经介绍了vivado和modelsim联动,有兴趣可以看看。vivado的仿真也能用,但是速度太慢,还容易导致电脑宕机。标白处为初始化信号,在此版本下,花了106us才完成初始化。

至此MIG的Native官方案例生成成功。

16.注意带宽的设置

MIG IP核的输入数据带宽应与,输出数据带宽一致。

输入数据带宽:用户端数据带宽:100M*256bits=25,600Mbits

输出数据带宽:DDR3数据带宽:400M*2*32bits=25,600Mbits

带宽一致没有问题。

这里

主要参考:小白fpga、1_【正点原子】达芬奇Pro之FPGA开发指南 V2.1.pdf

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是Vivado Mig IP核DDR3的各个引脚功能: 1. clk:DDR3时钟输入,用于时序控制。 2. rst:复位输入,用于复位DDR3控制器。 3. ddr3_addr:DDR3地址输入,用于指定存储器位置。 4. ddr3_ba:DDR3 bank地址输入,用于指定存储器的bank位置。 5. ddr3_ras_n:行地址选择信号,低电平表示行地址有效。 6. ddr3_cas_n:列地址选择信号,低电平表示列地址有效。 7. ddr3_we_n:写使能信号,低电平表示写操作有效。 8. ddr3_dq:数据输入/输出信号,用于传输数据。 9. ddr3_dqs_p/n:数据时钟输入/输出信号,用于同步数据传输。 10. ddr3_dm_p/n:数据掩码输入/输出信号,用于指示数据的有效位。 11. ddr3_odt:输出驱动器电阻控制信号,用于控制输出驱动器的电阻值。 12. ddr3_ck_p/n:DDR3时钟输入/输出信号,用于同步时序。 13. ddr3_ck_n_p/n:DDR3时钟输入/输出信号,用于同步时序。 14. ddr3_reset_n:复位信号,用于控制DDR3控制器的复位。 15. ddr3_vref:内部参考电压输入,用于控制输出驱动器的电压参考值。 16. ddr3_zq:内部ZQ校准信号输入,用于校准输出驱动器的阻抗。 17. ddr3_alert_n:DDR3警报信号,用于指示DDR3控制器的状态。 18. ddr3_cke:时钟使能信号,用于控制时钟输入的使能。 19. ddr3_cs_n:芯片选择信号,用于选择DDR3存储器芯片。 20. ddr3_odt_p/n:输出驱动器电阻选择信号,用于选择输出驱动器的电阻值。 21. ddr3_zio_p/n:输出阻抗选择信号,用于选择输出阻抗的值。 22. ddr3_zio_p/n:输出阻抗选择信号,用于选择输出阻抗的值。 23. ddr3_parity:奇偶校验信号,用于校验数据的正确性。 24. ddr3_init_calib_complete:初始化和校准完成信号,用于指示DDR3控制器的状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值