XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习

目录

  • 1 简介
  • 2 IP核自定义
    • 2.1 设置IP核参数
      • 2.1.1 Pin Compatible FPGAs
      • 2.1.2 Memory Selection
      • 2.1.3 Controller Options
      • 2.1.4 AXI Parameter
      • 2.1.5 Memory Options
      • 2.1.6 FPGA Options
      • 2.1.7 Extended FPGA Options
      • 2.1.8 IO Planning Options
      • 2.1.9 Pin Selection
      • 2.1.10 System Signals Selection
      • 2.1.11 Summary
      • 2.1.12 Simulation Options
      • 2.1.13 PCB infomation
      • 2.1.14 Design Notes
  • 3 产生示例设计
    • 3.1 文件结构
  • 4 关于IP核的架构
    • 4.1 结构框图
    • 4.2 用户接口
    • 4.3 存储器控制器
    • 4.4 PHY
      • 4.4.1 整体结构
      • 4.4.2 I/O 架构
        • 4.4.2.1 控制路径
        • 4.4.2.2 数据路径
  • 参考资料

这里只学习DDR3 和 DDR2 SDRAM Memory Interface。

1 简介

Xilinx 7系列FPGA 存储器接口解决方案(MIS)IP核 组合了 预先设计的控制器(pre-engineered controller) 和 物理层(physical layer,PHY)接口。这个物理层接口连接【用户设计】或【AMBA AXI4(Advanced eXtensible Interface 4)】接口的DDR3、DDR2 SDRAM器件。

2 IP核自定义

2.1 设置IP核参数

2.1.1 Pin Compatible FPGAs

  1. 选择MIG IP核
    XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第1张图片

  2. 确定芯片信息,next
    XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第2张图片

  3. 设置IP核名称,接口
    XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第3张图片

  4. Pin Compatible设置是否要兼容其他型号的FPGA,当然只有相同Pin package的FPGA才可选。
    XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第4张图片

2.1.2 Memory Selection

选择存储芯片类型,DDR3 SDRAM
XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第5张图片

2.1.3 Controller Options

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第6张图片

这个页面最多分为9个部分。分区的数量取决于所选择的存储器类型。

  • Frequency
    控制器工作频率,范围取决于FPGA器件。我们的DDR是PC3-1600 SDRAM,我这里直接设置为最高工作频率800MHz。

  • PHY to Controller Clock Ratio
    这个特性决定了物理层时钟频率和控制器以及用户时钟的比例。因为双倍数据速率特性,所以2:1比例的用户接口数据总线宽度是物理层存储器接口宽度的4倍,而4:1比例的总线宽度是物理存储器接口宽度的8倍。2:1的比率具有更低的延迟。4:1的比率对于最高的数据速率是很有必要的。
    SO-DIMM固定为4:1,而且物理层数据位宽为64bit,所以我们用户层的数据位宽为2*4*64=512bit

  • VCCAUX_IO

  • Memory Type
    选择SODIMM

  • Memory Part
    这部分的设置需要格外注意,因为我们的存储器条肯定不在器件库里面的,所以必须选择Create Custom PartXIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第7张图片

    这里的时序参数就是在XIlinx MIG 控制DDR3 SO-DIMM存储器条(一):存储器条SO-DIMM规范与存储器颗粒时序参数中找的参数。
    为什么一定要选择row address = 16的模板器件?
    用户手册说的是根据需求从Row、Column和Bank选项中选择合适的值。但是如果选择其他模板器件,新建了自定义器件,地址位宽改成了16,确实可以修改保存,甚至到了锁引脚这一步都是对的,但是最终产生的输出文件地址位宽是错的,仍然是模板器件的地址位宽。不知道是不是BUG。

  • Memory Voltage
    选择存储器器件的电压。这里需要看原理图,硬件工程师怎么设计的就怎么选。虽然存储器颗粒的数据手册说支持多种电压。

  • Data Width
    默认64位

  • ECC
    默认

  • Data Mask
    此选项在选定时分配数据掩码引脚。取消选择该选项以释放数据掩码引脚并提高引脚效率。此外,对于不支持数据掩码的存储器器件,此功能是禁用的。

  • Number of Bank Machines
    Bank Machine的数量,越少资源利用率越低,性能越差。

  • ORDERING
    这个特性允许存储器控制器重新排序命令,以提高存储器总线的效率。

2.1.4 AXI Parameter

未使用

2.1.5 Memory Options

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第8张图片

  • input Clock Period
    IP核内部的PLL的输入时钟,基于存储器工作时钟计算出来的一个可选列表。这里选择200MHz。
  • Read Burst Type and Length
    选Sequential顺序突发。
  • Output Driver Impedance Contorl
    设置DRAM上的输出驱动器阻抗。所列出的选择是由所选的特定DRAM决定的。RZQ 240Ω。例如,选择RZQ/6,输出驱动器阻抗为40Ω。
  • RTT
    选择器件或DIMM接口上的DQ、DQS/DQS#和DM信号的终端电阻(On Die Termination, ODT)标称值。数据速率在1333Mbps以上时必须设置为RZQ/6 i(40欧姆)。在2插槽的存储器配置中,这个值在写入时用于未被写入的插槽,也在读取时用于未选择的插槽。利用板级仿真选择最优值。
    我们的数据速率为800MHz*64bit大于1333Mbps,选择RZQ/6。
  • Controller Chip Select Pin
    使能引脚。只有1rank器件可以选择disable,此时输出一个低电平。默认使能。
  • Memory Address Mapping Selection
    地址排布方式。

2.1.6 FPGA Options

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第9张图片

  • System Clock
    选择时钟类型(Single-Ended, Differential, 或 No Buffer)sys_clk信号对。当选择No Buffer时,不会在RTL 代码中实例化IBUF基本单元,不会为系统时钟分配引脚。其余两种则会将时钟接到引脚并添加对应的BUFFER。
    如果MIG为No Buffer选项生成的设计在没有执行更改的情况下实现,设计可能会在实现中失败,因为没有为sys_clk_i信号实例化ibuf。因此,对于No Buffer场景,sys_clk_i信号需要连接到一个内部时钟。这里我接到了一个Clock wizard的输出时钟,所以选择No Buffer。
  • Reference Clock
    此选项选择时钟类型(Single-Ended, Differential, No Buffer 或 Use System Clock)的clk_ref信号对。
    Use System Clock选项只在当系统时钟为199MHz~201MHz时可选。参考时钟频率基于数据速率,IP核添加了一个MMCM来创建高于1,333 Mb/s的ref_clk频率。当选择No Buffer选项时,IBUF原语不会在RTL代码中实例化,也不会为参考时钟分配引脚。
  • System Reset Polarity
    选择复位信号的有效极性。
  • Debug Signals Contorl
    选择此选项将使校准状态和用户端口信号被端口映射到example_top模块中的ILA和VIO。这有助于使用Vivado Design Suite调试特性监控用户界面端口上的数据流。
    可选可不选。
  • Sample Data Depth
    该选项为Vivado调试逻辑中使用的ILA模块选择Sample Data深度。当存储器控制器的调试信号选项为ON时,可以选择此选项。
  • Internal Vref
    内部VREF可以用于数据组字节,以允许使用VREF引脚进行正常的I/O使用。内部VREF应该只用于800Mb/s或以下的数据速率。所以我们勾选不了。
  • IO Power Reduction
    该选项通过在控制器处于空闲状态时自动禁用DQ和DQS ibuf来降低平均I/O功耗。
  • XADC Instantiation
    当启用时,该选项指示MIG核心实例化XADC和温度轮询电路的温度监视器功能。如果已经在设计的其他地方使用了XADC,则可以禁用此选项。在这种情况下,必须定期采样设备温度,并将其驱动到存储器接口顶级用户设计模块中的device_temp_i总线上。如果device_temp_i信号未连接,则实例化XADC。否则将不实例化XADC。

关于这一页的设置,有必要先学习一下这个IP核的时钟架构:

PHY设计要求使用PLL模块来产生各种时钟,并且在整个设计中使用全局和本地时钟网络来分配时钟。PHY也需要一个同一bank的MMCM作为PLL。这个MMCM补偿了BUFG到PHY的insertion delay(即时钟传播延迟,从Clock源到时序组件Clock输入端的延迟时间)。

PHY中的时钟产生、分配电路和网络驱动块大致可分为四个独立通用的功能:

  • 内部(FPGA)逻辑
  • 写路径(输出)I/O逻辑
  • 读路径(输入)和延迟I/O逻辑
  • IDELAY参考时钟

DDR3设计,需要一个MMCM来产生IDELAY参考时钟。如果设计的频率>667MHz, IDELAY参考时钟可以是300MHz或400MHz(取决于FPGA速度等级)。MIG实例化一个MMCM来产生300MHz或400MHz。

PHY需要一个MMCM和一个PLL。PLL用于产生大部分内部逻辑的时钟,其中包括移相器(phaser)的频率参考时钟,以及在多I/O bank implementation中保持PHY控制块同步所需的同步脉冲。

DDR3 SDRAM时钟频率在400Mhz~933Mhz之间时,两个phaser频率参考时钟与存储器时钟频率相同。当DDR2或DDR3 SDRAM时钟频率400MHz以下,其中一个phaser的频率参考时钟与存储器时钟同频,第二个phaser参考时钟频率必须2x或4x存储器时钟频率,使其满足的400Mhz~933Mhz的范围要求。两个phaser频率参考时钟必须由相同的PLL产生,所以它们彼此是同相的。freq_refclk的相位根据操作频率和存储接口引脚选择的bank而变化。

  • 存储器接口使用HP bank,且存储器频率大于等于400MHz时,相位是337.5°。
  • HP bank,200–400MHz(不含400MHz),相位是315°
  • 低电压器件,HP bank,大于等于400MHz,相位是337.5°。
  • 低电压器件,HP bank,200–400MHz(不含400MHz),相位是0°。

当然,这些都是IP核自动识别设置的。

PLL乘(M)和除(D)值的默认设置是让系统时钟输入频率等于存储器时钟频率。这个1:1的比例不是必需的。PLL输入分频器(D)可以是任何约束条件的有效值。约束条件:PLL乘(M)的值必须在1到16之间。存储器时钟的PLL输出分频器(O)必须是2(800Mb/s以上),和4(400到800 Mb/s)。sync_pulse必须是mem_refclk频率的1/16,占空比必须是1/16或6.25%

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第10张图片

有上面的时钟架构图就很明了了。所以说,我们的系统频率sys_clk设置为200MHz,然后产生IDELAY 参考时钟的MMCM的输入时钟ref_clk直接选择使用系统时钟,这样是最简洁的。

  • 内部(FPGA)逻辑时钟:时钟由一个MMCM输出,频率取决于我们选的数据位宽比例。
  • 写路径(输出)I/O逻辑时钟:时钟由PHASER_OUT驱动,给每个byte组的OUT_FIFO、OSERDES/ODDR。产生一个byte clock (OCLK),与移相器的频率参考时钟同频。divided byte clock(OCLKDIV)输出频率为一半。delayed byte clock (OCLK_DELAYED)移相90°。
  • 读路径(输入)和延I/O逻辑时钟:ICLK是频率参考时钟的延迟版本,它与DQS相位对齐。ICLKDIV用于将数据捕获到ISERDES中的第一级触发器中。ICLKDIV对齐到ICLK,是ISERDES中最后一排触发器的并行传输时钟。
  • IDELAY参考时钟:提供200MHz ref_clk。然后MMCM会产生IDELAYCTRL的时钟。IDELAYCTRL模块持续校准I/O区域中的IDELAY元素,以适应不同的环境条件。

2.1.7 Extended FPGA Options

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第11张图片

  • DCI Cascade
    此选择使能在高性能 bank可用的VRN/VRP引脚为地址/控制和reset_n端口分配。
    这直接使能就完事了。
  • Internal Termination for High Range Banks
    内部终端选项,可以设置为40、50、60Ω或禁用。此选择仅适用于high range bank。

2.1.8 IO Planning Options

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第12张图片

2.1.9 Pin Selection

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第13张图片

以锁ddr3_dq[0]为例,xdc约束为:

set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[0]}]
set_property SLEW FAST [get_ports {ddr3_dq[0]}]
set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[0]}]
set_property PACKAGE_PIN AB17 [get_ports {ddr3_dq[0]}]

把所有的引脚用一个xdc/ucf文件锁好,然后导入就行,不然一个一个锁好了出什么意外就崩溃了。

2.1.10 System Signals Selection

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第14张图片

2.1.11 Summary

Next

2.1.12 Simulation Options

Accept->Next

2.1.13 PCB infomation

Next

2.1.14 Design Notes

Generate

3 产生示例设计

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第15张图片

3.1 文件结构

路径[IP 组件名称]_ex\[IP 组件名称]_ex.srcs\sources_1\ip\[IP 组件名称]\[IP 组件名称]下,文件夹结构为:

├─docs
├─example_design
│ ├─par
│ ├─rtl
│ │ └─traffic_gen
│ └─sim
└─user_design
├─constraints
└─rtl
├─clocking
├─controller
├─ecc
├─ip_top
├─phy
└─ui

  • example_design/rtl
    示例设计顶层文件。

    • traffic_gen
      产生测试命令和数据流的模块。
  • example_design/par
    示例设计的约束文件

  • example_design/sim
    包含DDR3的模型文件以及仿真的模型和脚本。

  • user_design

    • rtl 和 xdc 文件夹
    • 顶级封装模块.v/vhd
    • 顶层模块_mig.v/vhd 和 _mig_sim.v/vhd

4 关于IP核的架构

4.1 结构框图

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第16张图片

  • User FPGA Logic
    用户逻辑通过用户接口连接到存储器控制器。
  • AXI4 Slave Interface Block
    AXI4从接口将AXI4事务映射到UI(user interface),从而为存储器控制器提供一个行业标准总线协议接口。
  • User Interface Block and User Interface
    UI块将UI呈现给User FPGA Logic块。它通过呈现平面地址空间和缓冲读写数据,为 native interface提供了一个简单的替代方案。就是说将行地址与列地址组合成了一个User_addr。可以很方便的使用。
  • Memory Controller and Native Interface
    存储器控制器(MC)的前端为UI块提供 native interface。 native interface允许用户设计提交存储器读和写请求,并提供将数据从用户设计移动到外部存储器设备的机制,反之亦然。存储器控制器的后端连接到物理接口,并处理该模块的所有接口要求。存储器控制器还提供了一个重新排序选项,可以对接收到的请求重新排序,以优化数据吞吐量和延迟。
  • PHY and the Physical Interface
    PHY的前端连接存储器控制器。PHY的后端连接到外部存储设备。PHY处理所有存储设备的信号排序和时序。
  • IDELAYCTRL
    在任何bank中使用IDELAY都需要一个IDELAYCTRL。IDELAY与数据组(DQ)相关联。任何使用这些信号的bank/clock region 都需要一个IDELAYCTRL。
    MIG工具实例化一个IDELAYCTRL,然后使用IODELAY_GROUP属性(参见iodelay_ctrl.v模块)。基于此属性,Vivado在设计中根据需要适当地复制IDELAYCTRL。如果跨bank了,vivado自己例化对应bank的IDELAYCTRL。
    IDELAYCTRL参考频率由MIG工具设置为200 MHz、300 MHz或400Mhz,取决于存储器接口频率和FPGA的速度等级。根据所设置的IODELAY_GROUP属性,Vivado复制IDELAYCTRL用于每个存在IDELAY块的 region。
    当用户自己创建一个多控制器设计时,每个MIG输出都有使用原语实例化的组件。这违反IDELAYCTRL和IODELAY_GRP属性的使用规则。IDELAYCTRL只需要有一个组件的实例化,并且属性设置正确,并允许工具根据需要进行复制。

4.2 用户接口

除了基本的读写数据、地址,再学习一些控制信号。

信号 方向 描述
app_cmd[2:0] input 为当前请求选择命令。Read:3’b001;Write:3’b000
app_en input app_addr[]、 app_cmd[2:0]、app_sz和app_hi_pri 输入的使能
app_rdy output 表示UI准备好接收命令
app_hi_pri input 高有效,提高了当前请求的优先级。
app_sz input 保留,应该接0。
app_correct_en_i Input 纠正单比特数据错误。只有使能ECC后有效
app_sr_req input 保留,应该接0
app_sr_active output 保留
app_ref_req input 请求向DRAM发出一个刷新命令。
app_ref_ack output 内存控制器已将请求的刷新命令发送到PHY接口。
app_zq_req input 表示一个ZQ校准命令被发送到DRAM。
app_zq_ack output 内存控制器已将请求的ZQ校准命令发送到PHY接口。
ui_clk output UI时钟是DRAM时钟的一半或四分之一。
init_calib_complete output 当校准完成时,PHY断言init_calib_complete。
app_ecc_multiple_err[7:0] output 此信号适用于启用ECC并与app_rd_data_valid同时有效。如果从外部内存中读取的数据在一个读突发中有两个比特错误,那么app_ecc_multiple_err[3:0]信号是非零的。SECDED算法不会纠正相应的读取数据,而是将该信号置1上,以便在UI上通知读取的数据损坏
app_ecc_single_err[7:0] Output 如果从外部内存中读取的数据在每一拍读突发中有一个比特错误。那么app_ecc_single_err信号是非零的

4.3 存储器控制器

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第17张图片

这一部分太深入了,只能了解了解。

  • Bank Machines
    Bank Machine相当于DRAM的bank。给定的Bank Machine在任何给定时间管理单个DRAM银行。但是,Bank Machine的分配是动态的,所以没有必要为每个物理bank都配备一台Bank Machine。可以配置bank的数量来在area和 performance之间进行权衡。
  • Rank Machines
    Rank Machine相当于DRAM的Rank。Rank Machine监视Bank Machine的活动,并跟踪rank或特定于器件的时序参数。例如,Rank Machine监视在一个时间窗口内发送给rank的activate命令的数量。在允许的activate数被发送后,Rank Machine产生一个抑制信号,阻止Bank Machine再向rank发送任何的activate,直到时间窗口移动到允许更多的activate为止。
  • Column Machine
    单个Column Machine生成管理DQ数据总线所需的时序信息。尽管可以有多个DRAM rank,因为只有单个DQ总线,所有DRAM rank中的所有column都作为单个单元进行管理。Column Machine监视Bank Machine发出的命令,并产生抑制信号返回到Bank Machine,使DQ总线被有序地利用。
  • Arbitration Block
    Arbitration Block接收从Bank Machine向DRAM阵列发送命令的请求。行命令和列命令是独立仲裁的。对于每个命令机会,Arbitration Block选择一个行和一个列命令转发到物理层。Arbitration Block采用轮循协议,以保证向前处理。
  • Reordering

4.4 PHY

PHY提供于外部DDR2或DDR3 SDRAM的物理接口。PHY产生符合存储器器件接口时序以及顺序的信号。包含clock-,address-以及产生控制的逻辑,写和读数据路径以及在上电后初始化SDRAM的状态逻辑。此外,PHY包含校准逻辑来执行读写数据通路的时序训练,以满足系统静态和动态延迟。

PHY以一个单一的HDL codebase的形式 提供给DDR2和DDR3,然后MIG工具通过顶层HDL parameter以及XDC约束定义SDRAM类型以及其他设计参数。

4.4.1 整体结构

7系列FPGA PHY由专用块和软校准逻辑组成。专用块是用back-to-back互连结构的,以最小化 构建高性能物理层 所需的时钟和数据路径路由。I/O bank中的byte group clock专用时钟结构有助于最小化 byte group clock驱动 锁驱动的负载数量。byte group clock是由phaser块驱动的。phaser块(PHASER_IN和PHASER_OUT)是多级可编程延迟线环路,可以动态跟踪DQS信号变化并提供精确的相位调整。

每个7系列FPGA I/O bank都有专用块,其中包括一个PHY控制块,四个PHASER_IN和PHASER_OUT块,四个IN/OUT_FIFOs, IOLOGIC (ISERDES, OSERDES,ODDR、IDELAY)和IOB。一个I/O bank中有4个byte group,每个byte group包含PHASER_IN和PHASER_OUT, IN_FIFO和OUT_FIFO,以及12个IOLOGIC和IOB块。一个byte group中12个IOI中的10个用于DQ和DM位,另外两个IOI用于实现差分DQS信号。

下图显示在单个I/O bank中可用的专用块。一个PHY控制块 与 I/O bank中的所有四个PHASER_IN和PHASER_OUT块 通信。

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第18张图片

存储器控制器以及校验逻辑与专用的PHY进行通信,他们所处的慢时钟域是DDR2 或 DDR3 存储器时钟的4或2分频。

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第19张图片

4.4.2 I/O 架构

4.4.2.1 控制路径

校准逻辑或存储控制器请求的命令作为PHY控制字发送到PHY控制块,并同时输入到address/control/command OUT_FIFO。每个address/control/command信号必须有四个存储器时钟周期的值,因为每个PHY_Clk周期包含四个存储器时钟周期。

有三种类型的命令:

  • 写命令包括写和带自动预充电写。这两个写命令的PHY控制字中的PHY命令值是相同的(0x01)。不同之处在于输入到OUT_FIFO的地址值。地址位A10为1,表示地址OUT_FIFOs中带有自动预充电的写入。
  • 读取命令包括读和带自动预充电读。这两个读命令的PHY控制字中的PHY命令值是相同的(0x11)。不同之处在于输入到OUT_FIFO的地址值。地址位A10为1,用于OUT_FIFOs地址中带有自动预充电的读取。
  • 非数据类命令包括模式寄存器置位(Mode Register Set)、刷新(Refresh)、预充电(Precharge)、所有bank预充电(Precharge All Banks),激活(Activate),不操作( No Operation),取消选择(Deselect),ZQ校准长(ZQ Calibration Long),ZQ校准短(ZQ Calibration Short)。所有这些命令的PHY控制字中的PHY命令值是相同的(0x100)。RAS_N、CAS_N、WE_N、bank地址和地址指输入到与这些命令关联的OUT_FIFO是不同的。

address/control/command 路径示意图OSERDES使用单倍数据速率,因为address/control/command是SDR信号。

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第20张图片

4.4.2.2 数据路径

数据路径示意图如下。数据路径包括写数据路径和读数据路径。7系列FPGA中的数据路径完全在专用逻辑中实现,使用IN/OUT_FIFO与FPGA逻辑连接。IN/OUT_FIFO除了提供时钟域跨越功能之外,还提供数据路径serialization/deserialization,从而允许FPGA逻辑在低频率下工作,最高可达DDR2或DDR3 SDRAM时钟频率的1/4。

XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第21张图片

每个IN/OUT_FIFO都有一个存储阵列,存储单元排列为10组,宽度为8,深度为8。在写入过程中,OUT_FIFO从校准逻辑或内存控制器接收每个DQ位的8位数据,并将数据写入PHY_Clk时钟域的存储阵列,这是DDR2或DDR3 SDRAM时钟频率的1/4。

OUT_FIFO从8位串行化到4位,并将4位数据输出到OSERDES位于OCLKDIV域中,是DDR2或DDR3 SDRAM时钟频率的一半。OSERDES进一步将4位数据串行化为OCLK域中的串行DDR数据流。PHASER_OUT时钟输出OCLK用于时钟DQ位,而
OCLK_DELAYED输出用于时钟DQS,以实现写入过程中DQS和相关DQ位之间的90°相位偏移。在写调平期间,OCLK和
OCLK_DELAYED被移位到一起,以使每个DDR2或DDR3组件的DQS与CK对齐。

IN_FIFO从给定字节组中的每个DQ位ISERDES接收4位数据,并将它们写入存储阵列。通过将两个4位数据包写入一个8位内存单元,IN_FIFO用于进一步解串数据。这个8位并行数据输出在PHY_Clk时钟域,是DDR2或DDR3 SDRAM时钟频率的1/4。IN_FIFO的每个读取周期包含在一个突发长度为8的内存读取事务中读取的所有字节数据。将数据总线的宽度输入到专用的当FPGA逻辑以DDR2或DDR3 SDRAM时钟频率的1/4运行时,PHY是DDR2或DDR3 SDRAM的8倍。

参考资料

  1. ug586_7series_MIS
  2. ds176_7series_MIS

欢迎关注我的个人公众号:
XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习_第22张图片

你可能感兴趣的:(接口与协议学习,Vivado,DDR3,MIG,内存条)