软件环境
本次使用vivado 2018.3 和modelsim 10.6c 进行ddr3 app接口的读写时序仿真和测试
DDR3 介绍
DDR3 SDRAM(Double-Data-Rate Three Synchronous Dynamic Random Access Memory)是 DDR SDRAM 的第三代产品,相较于 DDR2,DDR3 有更高的运行性能与更低的电压。DDR SDRAM 是在SDRAM 技术的基础上发展改进而来的,同 SDRAM 相比,DDR SDRAM 的最大特点是双沿触发,即在时钟的上升沿和下降沿都能进行数据采集和发送,同样的工作时钟,DDR SDRAM 的读写速度可以比传统的SDRAM 快一倍。
通过查找资料 DDR3 的时序非常复杂,如果直接写 DDR3 的控制器代码,工作量大,性能难以保证。可以使用 Xilinx 公司 FPGA 自带的 DDR3 MIG IP 核来实现 DDR3 读写测试,从而大大降低了 DDR3 的开发难度。
MIG IP核介绍
上图为MIG IP 核的结构图,可以看到MIG IP 核对外有两组接口,左侧是用户使用的接口,我们只有充分掌握了这个接口才能操作 MIG。右侧为 DDR 物理芯片接口,负责产生具体的操作时序,并直接操作芯片管脚。DDR 物理芯片接口 我们只用负责分配正确的管脚,其他不用关心。
以上是用户端的信号,我们并不需要去掌握所有信号,只要掌握我们所需要使用的信号。
如上图所示,写数据有三种方法可以写入正确的数据,后面我将使用第1种方法进行ddr3的写入数据。
如上图所示,当发出读命令后,我们只需等待数据有效信号(app_rd_data_valid)拉高,为高表明
此时数据总线上的数据是有效的返回数据。需要注意的是,在发出读命令后,有效读数据要晚若干周期才
出现在数据总线上。
MIG IP核 配置
1、打开vivado点击 ip catalog
2、搜索mig,选择mig IP核
3、点击next
4、如下图所示选择“Create Design”,在“Component Name”一栏设置该 IP 元件的名称,这里取默
认软件的名称,再往下选择控制器数量,默认为“1”即可。 AXI4 接口不勾选,使用app接口。
5、如下图所示,主要是让我们选择可以兼容的芯片,默认不勾选,即不需要兼容其他的FPGA 芯片。配置完成点击“Next”。
6、如下图所示,我们选择ddr3 sdram。配置完成点击“Next”。
7、如下图所示,配置完成点击“Next”。
Clock Period:DDR3 芯片运行时钟周期,这个参数的范围和 FPGA 的芯片类型以及具体类型的速度等级有关。
PHY to Controller Clock Ratio:DDR3 物理芯片运行时钟和 MIG IP 核的用户端(FPGA)的时钟之比一般有 4:1 和 2:1 两个选项。由于 DDR 芯片的运行时钟是 400Mhz,因此 MIG IP 核的用户时钟(ui_clk)就是 100Mhz。一般来说高速传输的场合选择 4:1,要求低速的场合选择 2:1。当 DDR3 时钟选择选择了 350M 到最高的 400M,比例默认只为 4:1,低于 350M 才有 4:1 和 2:1 两个选
VCCAUX_IO:这是 FPGA 高性能 bank(High Performance bank)的供电电压,Vccaux_io 必须设置为2.0V 以实现最高数据速率。在 FPGA 高范围 bank(High Range banks)中无法使用 Vccaux_io。
Memory Type:DDR3 储存器类型选择。
Memory Part:DDR3 芯片的具体型号。
Memory Voltage:是 DDR3 芯片的电压选择。
Data Width:数据位宽选择.
ECC:ECC 校验使能,数据位宽为 72 位的时候才能使用。
Data Mask:数据屏蔽管脚使能。勾选它才会产生屏蔽信号,
Number of Bank Machines:Bank Machine 的数量是用来对具体的每个或某几个来单独控制的,选择
多了控制效率就会高,相应的占用的资源也多.
ORDERING:该信号用来决定 MIG 控制器是否可以对它收到的指令进行重新排序,选择 Normal 则
允许,Strict 则禁止。
8、如下图所示,配置完成点击“Next”。
Input Clock Period:MIG IP 核的系统输入时钟周期,该输入时钟是由 FPGA 内部产生的.
Read Burst Type and Length:突发类型选择,突发类型有顺序突发和交叉突发两种,其突发长度固定为 8。
Output Driver Impdance Control:输出阻抗控制。
RTT:终结电阻,可进行动态控制。
Controller Chip Select Pin:片选管脚引出使能。选择 enable,表示把片选信号 cs#引出来,由
外部控制。
BANK_ROW_COLUMN:寻址方式选择。
9、如下图所示,配置完成点击“Next”。
System Clock:MIG IP 核输入时钟。
Reference Clock:MIG IP 核参考时钟。
System Reset Polarity:复位有效电平选择。
Debug Signals Control:该选项用于控制 MIG IP 核是否把一些调试信号引出来,它会自动添加到 ILA,
这些信号包括一些 DDR3 芯片的校准状态信息。
Sample Data Depth:采样深度选择。
Internal Vref:内部参考管脚,表示将某些参考管脚当成普通的输入管脚来用。
IO Power Reduction:IO 管脚节省功耗设置。选择“ON”,开启。
XADC Instantiation:XADC 模块例化。使用 MIG IP 核运行的时候需要进行温度补偿,可以直接选择
XADC 模块的温度数据引到 MIG IP 核来使用,否则需要额外提供温度数据,选择“Enable”。
10、如下图所示,内部高性能 bank 端接匹配阻抗的设置,默认 50 欧姆即可,配置完成点击“Next”。
11、如下图所示,ddr3的管脚绑定,Pin/Bank Selection Mode:管脚模式选择。选择第二种,继续点击“Next”按钮,
绑定管脚后,后点击“Validate”,此时会跳出对话框,表明已经验证通过,点击“OK”,此时“Next”变成可选,点击“Next”完成管脚分配
12、如下图所示,软件默认设置,直接点击“Next”。
13、如下图所示, DDR3 IP 配置的总结,没有问题 直接点击“Next”。
14、如下图所示, 选择“Accept”,直接点击“Next”。
15、如下图所示, PCB 信息选项卡,直接点击“Next”。
16、如下图所示, MIG IP 核设计的汇总,直接点击“Generate”。
到这完成了 MIG IP 核的配置
DDR3 仿真测试
1、ddr3 读时序仿真
连续读出8个数据
2、ddr3 写时序仿真
连续写入8个数据
后续会补充上板测试的结果。