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板一致

 DDR3控制器

 

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。

 DDR3控制器

 

3、 删除mcb_traffic_gen相关例化代码,编写自己的DDR3测试代码,并例化

4、 编写DDR3测试代码,需参考Spartan-6 FPGA Memory Controller中的读写时序,主要参考,主要包含命令、数据、地址,本测试中,由于采用了128bit的单端口,所以每写一个数据,地址线需要加8,若涉及到突发读写,则地址线也要相应按8的倍数增加。

5、最后添加chipscope,完成测试

 DDR3控制器