DDR3控制器
开发板:AX516
FPGA:spartan
首先,完成约束文件的修改,使之与自己的硬件设备一致,一般有以下几点:
1、 VCCAUX 电压修改
CONFIG VCCAUX=3.3; # Valid values are 2.5 and 3.3
2、 系统时钟输入的周期,需要跟PCB板上的晶振频率一样。
NET "memc3_infrastructure_inst/sys_clk_ibufg" TNM_NET = "SYS_CLK3";
TIMESPEC "TS_SYS_CLK3" = PERIOD "SYS_CLK3" 20 ns HIGH 50 %;
3、 修改部分管脚电压和位置,如时钟、复位管脚等
接下来完成顶层文件的设置,一般有以下几点:
1、 复位极性与PCB板一致
2、 根据板子上的时钟修改DDR3时钟配置部分,我使用的时钟输入为50Mhz,由于在MIG中设置了 DDR3 的频率为312.5MHz,且DDR3是上下沿采样,所以FPGA内部 DDR3控制器的时钟需要625MHz(即DDR3读写控制模块的时钟是625,由开发板上的PLL得到),所以这里先把时钟频率倍频25, 再分频2,得625Mh的CLKOUT0和CLKOUT1, 再分频 8分别得到 user interface 的时钟和 calibration 的时钟 78.125Mhz。
3、 删除mcb_traffic_gen相关例化代码,编写自己的DDR3测试代码,并例化
4、 编写DDR3测试代码,需参考Spartan-6 FPGA Memory Controller中的读写时序,主要参考,主要包含命令、数据、地址,本测试中,由于采用了128bit的单端口,所以每写一个数据,地址线需要加8,若涉及到突发读写,则地址线也要相应按8的倍数增加。
5、最后添加chipscope,完成测试