时经历的路径与数据不同,所以在端口处会有所变化。而如果OSERDESE2,则该路径与数据完全一致,然后通过ODELAYE2进行的调整就更有目的性。
5. DATA 6. OSERDESE2
介绍了OSERDESE2的详细时序图和工作方式,并且使用了一种前置寄存器的方法防止OSERDESE2输出错误数据,即消除在复位后,OSERDESE2可能短暂输出无效数据的情况。插入前置寄存器的输出电路如下图。文中还详细介绍了如何正确使用复位和使能信号。
LVDS 4x Asynchronous Oversampling Using 7
Series FPGAs
本应用案例介绍了通过7系列FPGA实现过采样的具体方法。
本案例中,通过MMCME2_ADV、ISERDESE2、IODELAYE2、IBUFDS_DIFF_OUT实现4倍于1.25G的过采样。该过程主要有以下重点。
? 通过IBUFDS_DIFF_OUT生成输入信号的两个拷贝,即复制。 ? 通过IODELAYE2将其中一路延时0,另一路延时45度。
? 每一路使用ISERDESE2进行串并转换,ISERDESE2配置在OVERSAMPLING模式。 通过上述过程可以实现4倍于SERDES时钟的过采样,SERDES时钟的使用方式为DDR,如下图所示。下图中,DATA为0度移位的数据,DATA为45度移位的数据。CLK为0度移位时钟,通过DDR采样;CLK90为90度移位时钟,通过DDR采样。假设数据率为1.25Gb/s,则时钟频率为625MHz,等效采样速率为5Gb/s。
XAPP523中,除了介绍上述过采样方法外,还非常详细的描述了如何实现数据恢复单元(data recovery unit-DRU),如何实现bit skip,以及时钟和数据的控制。DRU部分详细介绍了如何在并行数据中进行沿检测,找到相对于时钟的稳定数据,并通过状态机控制从过采样数据中找到正确的数据。
具备了上述功能后,XAPP523介绍的不仅仅是一种过采样方法,而是在通信中如何进行过采样,并从过采样数据中恢复正确数据的方法。同时该文档对使用MMCM、ISERDESE2、IODELAYE2、IBUFDS_DIFF_OUT非常有帮助,尤其是MMCM和ISERDESE2。
7 Series FPGAs Memory Interface Solutions v2.0
参考ug586_7Series_MIS.pdf。
该文档介绍7系列FPGA存储器接口,包括DDR3、DDR2、QDRII+、RLDRAMII、LPDDR2等等。其他存储器很少使用,以下内容主要与DDR3相关,来源章节为:“DDR3 and DDR2 SDRAM Memory Interface Solution”。
1. Introduction
7系列FPGA的存储器接口IP核是pre-engineered controller和physical layer(PHY)的组合,可用于连接DDR3、DDR2和用户设计,以及AMBA advanced extensible interface(AXI4) slave interfaces。AXI接口与Altera的Avalon接口类似。
管脚分配可在掌握规则后自行分配,也可以让软件自动分配。在生成MIG核时,可以产生example,可使用与example同样的管脚分配。见“Creating ISE Project Navigator Flow for MIG ExampleDesign”。
2. Features
在PHY使用新的hardware blocks,如PHASER_IN、PHASER_OUT、PHY control block和I/O FIFO等。
控制器和用户接口工作在存储器时钟频率的1/4。
3. Getting Started with the CORE Generator Tool
注意:该章节介绍如何通过CORE Generator Tool生成MIG核。此外MIG核可通过Vivado Design Suite生成。这两种生成方式的不同,可参考最后一个章节。
本章节详细介绍如何通过CORE Generator Tool生成MIG核,具体步骤不做记录,以下仅对个别需要关注的点进行记录。
1) MIG核接口类型
与Altera一样,其DDR3接口分为两种,一种是AXI4接口,一种是user interface(UI)。AXI4接口只支持verilog。
2) Clock ratio与bus width
如果应用层时钟频率是存储器物理时钟频率的1/2,则数据位宽为物理位宽的4倍;如果应用层时钟频率是存储器物理时钟频率的1/4,则数据位宽为物理位宽的8倍。
3) VCCAUX_IO电压
在高性能应用中,VCCAUX_IO必须设置为2.0V,低频应用中可设置为1.8V。 4) Dual rank存储器与最高工作频率
对于dual rank存储器,FPGA所支持的频率必须降低一个存储器速度等级。比如1600的dual rank,FPGA所支持的最高频率为1333。同理,1066将为800。
5) 内部VREF的选择
VREF管脚可以用于正常的I/O。如果MIG核使用内部VREF,则DDR3数据率必须控制在800Mb/s以下。
6) XADC与温度监控
XADC Instantiation选项使能后,MIG将初始化FPGA上的XADC和一个temperature polling circuit用于温度监控。如果XADC在设计中已经使用,则该选项禁止。在这种情况下,需要将设备温度进行周期采样,并送到存储器接口的device_temp_i总线。
7) sys_clk
系统时钟类似于Altera中的参考时钟。系统时钟源应为低抖动时钟源,单端、差分均可,且必须位于存储器接口的同一column。
8) ref_clk
参考时钟用于IDELAY控制,时钟频率为200MHz,可以由FPGA内部产生,也可以连接至一个外部源。单端、差分均可。
9) MIG核文件说明
最终生成MIG核包括3个文件夹,docs、example_design和user_design。其中example_design包括设计实例,其中rtl文件夹中包括实例,example_top.v/vhd中描述如何连接用户设计和MIG核。
在example_design/par中包括3个文件,example_top.ucf、create_ise.bat和ise_flow.bat。这些文件包括对工程的约束,可供参考。
具体的描述可参考“Directory Structure and File Descriptions”章节。 10) MIG核的约束检查
? 接口必须分布在最多3个连续bank上。
? 接口必须分布在同一列(column)。
? 如果所选器件采用的是SSI(silicon interconnect technology)技术,则接口所在bank
必须在同一SLR区域。
? 同一DQS组的应在同一byte group。 ? DQS分配至DQSCC I/O。
? 只有使用内部VREF时,才可以使用VREF管脚。
? 地址信号不能和数据相关信号混杂(除ddr3_reset_n外)。 ? 系统时钟必须分配到SR/MR CC I/O。
? 如果系统时钟是单端的,必须检查所在bank的参考电压。 ? 参考时钟必须分配到SR/MR CC I/O。
? 状态信号中,sys_rst必须分配在使用内部VREF的bank,或者分配在没有未使用
VREF管脚的bank
? 状态信号应该分配在非存储器bank。因为存储器使用的bank的I/O标准与存储器
接口不兼容。状态信号的I/O标准是1.8V或以上的LVCMOS。
? 状态信号可以分配在任意column,不过推荐分配在靠近存储器bank的地方。 11) Quick Start Example Design章节
该章节介绍如何使用example快速开始设计。下图是example的结构图,可以参考此图阅读example的源代码,学习如何使用DDR3的MIG核。
12) Modifying the Example Design章节