0 引言
在数字系统互联设计中,高速串行传输方式正逐步替代并行传输方式成为主流。作为串行传输标准的一种,低电压差分信号传输(LVDS)接口具有高速率、低功耗、低噪声和低电磁干扰等优点,广泛应用于高速数字系统设计中。而在实际应用中,采用现场可编程门阵列(FPGA)实现高速LVDS是一种性价比较高的技术途径。
随着半导体工艺的进步,FPGA的性能和集成度在不断提高,在FPGA芯片中均集成SelectIO资源,通过配置逻辑资源和I/O,可以生成支持LVDS标准的接口,实现高速LVDS接口互联通信。在传统的LVDS互连设计中,均采用同步采样方式,在发送端,一组数据伴随一个时钟同时传输,在接收端,利用一个时钟去采集数据。在Xilinx最新的7系列器件中,支持一种异步过采样方法,当采样的数据时钟相近时(±100ppm)利用SelectIO资源中的ISEKDES2原语可以实现4X最高频率为1.25Gbps的异步过采样。
本文介绍了一种基于FPGA实现异步LVDS过采样的技术,重点对系统组成、ISERDESE2、时钟采样、数据恢复单元、时钟同步状态机等关键技术进行了描述,并基于Xilinx FPGA进行了验证,传输速率达到了1.25Gbps。
1 异步过采样系统组成
本文采用Xilinx公司的7系列FPGA作为核心器件,基于SelectIO资源实现了1.25Gbps的4X异步LVDS过采样技术。系统中包括ISERDESE 2、OSERDESE2、IDELAYE2、IDELAYCTRL、MMCME2、数据恢复单元(DRU)和时钟对齐状态机等功能单元,如图1所示。
对于输入的1.25Gbps数据流,复制成两路进入ISERDESE2,实现4X采样。ISERDESE2/OSERDESE2负责完成输入数据的串并/并串转换。
MMCME2负责将外部输入的125MHz时钟倍频产生各种不同的时钟,提供给ISERDESE2/OSERDESE2、DRU、时钟对状态机等逻辑使用。其中,CLK和CLK90频率为625MHz,通过BUFIO提供给ISERDESE2/OSERDESE2使用,IntClk和IntClkDiv分别为625MHz和312.5MHz,通过BUFG提供给DRU、ISERDESE2/OSERDESE2并行端、内部FPGA控制等逻辑使用。ClkRef为310MHz,提供给IDELAYCTRL使用。
DRU负责完成ISERDESE2串行端数据和并行端数据之间的跨时钟域设计。时钟对齐状态机负责实现BUFG和BUFIO不同时钟域之间的相位对齐。
2 关键设计
2.1 ISERDESE2
相对于Virtex-5系列FPGA中的ISERDES和Virtex-6系列FPGA中的ISERDESE1相比,7系列FPGA中的ISERDESE2实现下述的不同功能:
(1)提供IDDR触发器功能;
(2)提供一种专用的串并转换器,该转换器有特殊的时钟和逻辑特征,用于高速源同步应用;
(3)支持存储器模式,可支持QDR、DDR3等不同的存储器接口;
(4)支持过采样模式。
在以前的设计中,过采样是通过FPGA内部的SLICE触发器实现的,而在7系列FPGA中,过采样是通过配置ISERDESE2实现的,如图2所示。
2.2 时钟采样
MMCME2产生两个时钟CLK和CLK90用于ISERDESE2,两个时钟的正沿和负沿均被使用,相当于四个时钟。对于输入数据流,通过IBUFDS DIFFOUT复制成两路,一路的相位没有变化,另外一路通过IDELAYE2相位偏移45°。相位偏移过的数据送入从ISERDESE2,实现了双倍的数据采样率。
通过组合四个时钟相位和两路数据,实现了八个时钟采样相位,如图3所示。
如图3所示,通过IDELAYE2实现输入数据的相位变化,而IDELAYE2的变化是通过IDELAYCTRL控制的。CLK和CLK90工作频率为625MHz,0°、90°、180°和270°的时钟沿位置分别在0、400、800和1200ps。输入数据流频率为1.25Gbps,相位偏移45°时,数据必须延迟
200ps。IDELAYCTRL设计频率为310MHz,单拍延迟为52ps,为了实现200ps的延迟,需延迟4拍。因此,对于主ISERDESE2,IDELAY VALUE值设为0,对于从ISERDESE2,IDELAY VALUE值设为4。
2.3 DRU
用于ISERDESE2的CLK和CLK90均为局部时钟,只能工作在固定的I/O区域。ISERDESE2输出数据必须从局部时钟域(BUFIO)搬到全局时钟域(BUFG)中进行,需要进行跨时钟域(CDC)操作。
CDC操作在FPGA逻辑中以寄存器组形式实现。DRU中实现了CDC寄存器组和一些比较逻辑。
2.3.1 边沿检测
输入FPGA的数据流的采样和比较点见图4。
数据流通过CLK0、CLK90、CLK180和CLK270四个时钟进行采样,采样点发生在时钟和数据流向交叉时,这些采样点依据格式Qx[M or S]x进行命名。其中,Qx表示ISERDESE2的输出Q1、Q2、Q3或Q4,Mx或Sx表示数据输出来源于主ISERDESE2或从ISERDESE2。
连接采样点的E4[0]到E4[3]表示DRU比较数据和寻找数据边沿的位置。四个位置点的公式为:
DRU边沿检测电路如图5所示。检测电路展示了数据从ISERDESE2到DRU逻辑的流程,为了优化时序,在ISERDESE2和逻辑之间增减了一级寄存器。同时也展示了从ISERDESE2的Q4输出端时如何存储上一次的采样点并和新一次采样进行比较。
2.3.2 数据选择
当完成数据比较和边沿检测后,DRU需要对比较的数据进行处理。在设计中,采用一个简单的状态机,依据数据边沿的位置和它迁移的位置,选择远离数据边沿的位置作为采样点。
由于电压和温度的变化,源时钟和接收时钟之间抖动、相位的不同,理想的采样点应该是左右移动的。也就是说E4[0]到E4[3]的等式值总是变化的,依据这些变化值,状态机状态发生迁移,如图6所示。
表1给出了数据选择的对应关系,其中,EQ表示当前状态机的位置,DQ表示互连逻辑中使用的采样值。在过采样模式下的每个ISERDESE2是通过两组IDDR触发器实现的,因此DO表示应该使用哪一组触发器作为最理想的采样点。
2.4 时钟对齐状态机
在设计中,BUFIO和BUFG两个时钟域之间的相位关系不确定。为了在不同的时钟域之间传输数据,需要实现CDC逻辑,两个时钟之间相位必须对齐。时钟对齐电路采用了一个FPGA I/O区域内所有的I/O管脚具有相同时序特性的原理。
一个OSERDESE2被BUFG时钟域的时钟(IntClk、IntClkDiv)驱动,并且装载一个固定的数据模板。OSERDESE2在IntClk频率下输出一个时钟模板。通过反馈路径,时钟模板被相邻的ISERDESE2捕获,ISERDESE2工作在BUFIO时钟域。通过这种技术,可以测量不同的两个时钟之间的相位关系。使用MMCM中有一个小的状态机,可以实现独立的相位改变的能力,BUFG时钟发生相位改变,以适应BUFIO时钟域的相位。
3 仿真与验证
本论文采用XC7K325T芯片异步LVDS过采样进行设计和实现,并采用ISIM13.3进行仿真验证,采用ISE13.3进行综合、布局布线、生成bit文件。
将生成的bit文件下载到Xilinx评估版KC705中,并进行测试、验证。实际测试结果表明:基于FPGA的异步LVDS过采样系统功能正确,传输速率达到了1.25Gbps。
4 结束语
本文针对LVDS接口,研究并实现了一种基于FPGA的LVDS过采样技术,重点对LVDS过采样中系统组成、ISERDESE2、时钟采样、数据恢复单元、时钟同步状态机等关键技术进行了描述,并基于Xilinx评估板进行了验证。经严格测试验证表明:基于FPGA实现的异步LVDS过采样技术功能正确,传输速率达到1.25Gbps。