前言
在现代高速数据采集系统中,随着 ADC 采样率的不断提升(从几十 MHz 到几百 MHz 甚至更高),传统的并行 CMOS/LVDS 接口因占用引脚过多、布线困难等问题逐渐被串行 LVDS 接口取代。TI(德州仪器)的许多多通道 ADC(如 ADS528x, ADS529x 系列)都采用了这种接口。
然而,串行 LVDS 接口虽然减少了 PCB 走线数量,却给 FPGA 接收端的设计带来了巨大的挑战:如何在几百 Mbps 甚至 Gbps 的速率下,稳定地实现位同步(Bit Alignment)和帧同步(Frame Alignment)?
1. 认识串行 LVDS 接口
一个典型的高速 ADC 串行 LVDS 接口通常包含以下三类信号:
- 串行数据 (Serial Data, D0...DN-1):ADC 的采样数据通过一对或多对 LVDS 线串行输出。
- 位时钟 (Bit Clock, LCLK/DCLK):通常是DDR(双沿采样) 格式。频率通常是
采样率 × 串行化倍数 / 2。 - 帧时钟 (Frame Clock, ADCLK/FCLK):频率等于 ADC 的采样率 (fs)。它的上升沿通常与串行数据的第一个 bit(或字边界)对齐,用于辅助并行数据的恢复。
接口变种:One-wire interface:每个 ADC 通道只需一对 LVDS 传数据(速率高)。Two-wire interface:采样率极高时,每个通道的数据拆分到两对 LVDS 上传输(降低单线速率)。
2. 接收端捕获方案 (Receiver Capture Schemes)
FPGA 接收端的核心任务有两个:
- 位同步:利用位时钟(Bit Clock)正确锁存高速串行数据。
- 字/帧对齐:利用帧时钟(Frame Clock)恢复出正确的并行数据字。
2.1 难点:时钟与数据的偏斜 (Skew)
在理想情况下,数据边缘和时钟边缘是对齐的。但在实际硬件中,PCB 走线延时、FPGA 内部布线延时、以及器件本身的 Skew,会导致数据和时钟无法满足建立/保持时间(Setup/Hold Time)。
2.2 解决方案一:使用延迟元件 (Delay Elements)
- 原理:利用 FPGA 内部的 IO 延迟模块(如 Xilinx 的 IDELAY),对输入的位时钟或数据进行微调。
- 实现:通过动态调整延迟,使时钟沿落在数据'眼图'的中心。
注意:需考虑 PVT(工艺、电压、温度)变化对延迟 Tap 精度的影响。
2.3 解决方案二:使用 PLL 多相时钟
- 原理:利用 FPGA 的 PLL 生成多个相位的时钟(例如 0°, 45°, 90°… 315°)。
- 边缘选择逻辑:ADC 发送Deskew Test Pattern(通常是
101010...)。FPGA 用所有相位的时钟去采样,找出能稳定采到正确数据的相位窗口,并选择窗口中间的那个时钟相位作为采样时钟。
3. 帧对齐逻辑 (Frame Alignment)
即使位数据捕获正确,并行转换后的数据可能依然是错位的(Bit Shifted)。例如 12-bit 数据,你可能采到了上一个样本的最后 1 位和当前样本的前 11 位。
3.1 帧时钟的作用
理想情况下,直接用帧时钟(Frame Clock)去锁存串转并后的数据即可。但如果帧时钟相对于数据有较大的滞后或超前(超过 1 个 Bit 周期),就会导致错位。
3.2 使用 SYNC Pattern 进行校正
TI ADC 通常提供 (例如 12-bit 模式下发送 )。


