XILINX MIG核到底怎么配置:玩转DDR

一、先了解几个时钟

        如上图,包含了四个时钟:

        1)系统时钟,即MIG核工作时钟,通常命名sys_clk;

        2)参考时钟,即MIG核参考时钟,通常命名ref_clk,必须是200MHz;

        3)DDR芯片工作时钟,由FPGA输出给DDR的差分时钟,可以命名ddr_clk;

        4)用户时钟,MIG核输出给用户端的时钟,通常命名ui_clk。

        注意1:ddr_clk与ui_clk有比例关系,ddr_clk:ui_clk = 4:1或2:1,当ddr_clk=800MHz时,只能是4:1。

        注意2:用户数据位宽如何计算,例如ddr_clk=800MHz时,ui_clk = 200MHz,ddr物理位宽为16bit(2片ddr菊花链连接就是32bit),上下沿采集(2倍),因此用户数据位宽=800*32*2/200=256bit。

        注意3:256bit/32bit=8,所有ddr用户地址每次加8。

二、MIG核的配置

(1)配置界面1

        如果是zynq,需要用到ps的话就勾选,否则不勾选,本工程选的zynq芯片但是没有用PS,则不勾选。

(2)配置界面2

        默认不勾选。

(3)配置界面3

        跟所选DDR类型有关,本工程选择DDR3。

(4)配置界面4

        1:DDR芯片工作时钟(ddr_clk);

        2:选择所使用的DDR型号;

        3:本工程使用MT41K256M16TW-107 AAT,如果2中没有实际应用的DDR型号,现在列表中选择一个相似的名称,可通过3对实际使用的DDR命名,并结合实际封装进行配置,如下;

        4:2片ddr菊花链连接就是32bit。

(5)配置界面5

        用户数据宽度,见前述计算方式,不再赘述。(注意:配置界面1没有勾选AXI则无此界面,忽略就行)。

(6)配置界面6

        提供给MIG核的系统时钟,通常与参考时钟相同200MHz,注意每次重新打开mig核,这个值都会变化,一定要重新配置成200MHz(VIVADO的bug)。

(7)配置界面7

        时钟结合实际来就行。

(8)配置界面8

(9)配置界面9

        选择DDR物理管脚约束方式。

(10)配置界面10

        导入——>验证——>下一步。也可在Pin Number列做适当修改后再验证——>下一步。

三、仿真

(1)ready信号

        如上2个图,ddr读出数据需要23(24?)个时钟周期(rdy拉高时的周期数)。

(2)app_wdy_data与app_rdy

        如上图,写指令与写数据是两个通道,app_wdy_data与app_rdy不需要关联上,官方时序图与官方案例仿真对应不上。(猜测:MIG内部有类似fifo的功能,可以将写入的数据缓存,等待app_rdy拉高再写入对应的地址?)

(3)app_wdf_end、app_wdf_wren、app_en、app_cmd

        上5张图中,注意app_wdf_end、app_wdf_wren、app_en、app_cmd时序,在读写期间如果一直拉高会报错!!!!!

四、工程实践

(1)搭建工程

        往DDR写一组数,然后读出来,配置如前。

        在implementation时可能会报如上错误,则缺啥补啥,在如下路径中搜索相应文件添加到那个路径下即可。

(2)上板测试

1)写功能

        写时序ila如下,跟UG手册一致。

2)读功能

        读时序ila如下,跟UG手册一致。

五、参考

Xilinx vivado DDR3 MIG IP核中系统时钟、参考时钟解释及各个时钟的功能详解

DDR3(MIG核配置&官方demo&FPGA代码实现及仿真)

DDR原理及MIG IP核使用记录

FPGA:DDR保姆级教程、轻松掌握DDR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值