ug586学习笔记 7系列 Xilinx mig物理层接口
7系列FPGA MIG ddr3 有两个时钟输入,参考时钟clkref和系统时钟sysck;参考时钟clkref用来做delay控制,延迟ddr3接口时钟的相位;
系统时钟通过pll输出各种时钟,驱动DDR3接口的模块和用户侧时钟。
校准逻辑或存储器控制器所请求的命令作为PHY控制字被发送到PHY控制块,同时作为地址/控制/命令out_FIFO的输入。每个地址/控制/命令信号必须具有四个存储器时钟周期的值,因为每个PHY_Clk周期需要四个存储器时钟周期。FPGA逻辑不需要在到PHY控制块的有效命令之间的长等待时间期间发出NOP命令,因为专用PHY中的地址/命令的默认值可以根据需要设置为0或1。
DDR3地址、命令发送框图如上所示,由 phaser、OUT_FIFO、ODDR、OSERDES组成;
CK输出通过ODDR输出差分信号;
因为地址/控制/命令是SDR信号,OSERDES采用单数据速率(SDR)模式;
mem_ref_clk频率与ddr3接口频率相同,前者通过phaser产生分频时钟OCLKDIV和OCLK驱动OSERDES,OCLK驱动ODDR模块,产生读使能驱动OUT_fifo;
从OUT_FIFO输出到FPGA引脚的地址/命令路径的时序图如上图所示。
如下图DDR3写地址/命令等控制字时序所示,DDR3地址/命令等控制字由ck上升沿接收。
每个IN/OUT_FIFO具有一个存储器元件的存储阵列,该存储阵列被布置为10组。在写入期间,OUT_FIFO从校准逻辑或存储器控制器接收每个DQ位的八位数据,并将数据写入PHY_Clk时钟域中的存储阵列,该时钟域是DDR2或DDR3 SDRAM时钟频率的1/4。
DQS、DQ、DM输出和输入到FPGA io接口如上图所示,接收端 DQ 8位穿行数据通过iserdes 得到2个4bit数据写入fifo,其中iserdes使用rdclk和2分频时钟rdivbclk两个时钟驱动iserdes;
OUT_FIFO从8位串行化为4位,并将4位数据输出到OCLKDIV域中的OSERDES,该OCLKDV域是DDR2或DDR3 SDRAM时钟频率的一半。OSERDES进一步将4位数据串行化为OCLK中的串行DDR数据流
领域PHASER_OUT时钟输出OCLK用于时钟DQ位,而OCLK_DELAYED输出用于时钟DQS,以在写入期间实现DQS及其相关DQ位之间的90°相位偏移。在写均衡期间,OCLK和OCLK_DELAYED一起移位,以使每个DDR2或DDR3组件处的DQS与CK对齐。
上图为DDR3从read数据到write 数据的时序图,read操作时,DQS与DQ数据边沿对齐;wirte操作时,DQS与DQ数据中心对齐;写操作使用相移90°的时钟驱动DQS。
以上图片都是从UG586和DDR3标准截取,下面地址可以下载:
https://download.csdn.net/download/weixin_39577718/87021590