3. 实时数据接口设计
任务载荷FPGA的实时性,很大程度上取决于它与ADC/DAC之间的数据通道是否“够宽、够稳、够确定”。本节围绕四类典型接口展开:并行LVDS、高速串行JESD204B、通用高速串行Aurora,以及ADC/DAC器件侧的采样与时钟约束。理解它们的差别,比记住某一段代码更重要。
一、先分清四类接口的定位
LVDS是低压差分信号,常用于中低速并行数据、时钟与同步信号传输,例如14位ADC以200 MSPS输出时,若采用DDR双边沿,单对数据线速率约200 Mbps,需要7对数据线加1对随路时钟。它的优点是延迟确定、协议简单;缺点是线数随位宽和速率线性增长,PCB布线压力大。
JESD204B是面向高速ADC/DAC的串行链路标准,用少量高速SerDes通道替代大量并行线。它把采样数据按帧、多帧组织,通过8B/10B编码、对齐字符和确定性延迟机制,实现多通道同步采集。典型场景是4通道250 MSPS、14位ADC,若每通道线速率10 Gbps,则只需少量收发器即可完成。
Aurora是Xilinx提供的轻量级点对点串行协议,适合板间或芯片间自定义数据流传输。它不规定采样格式,只负责把用户数据可靠地搬过SerDes,常用于FPGA到FPGA、FPGA到预处理板的实时数据搬运。
ADC/DAC侧则要关注采样率、位宽、输出格式、时钟相位和建立保持窗口。接口选型不是越高速越好,而是要与数据率、通道数、同步要求、PCB层数和器件能力匹配。
二、LVDS并行接口的FPGA收发实现
LVDS接收的关键是“源同步”概念:ADC在输出数据的同时输出随路时钟,FPGA用该时钟采样数据。以14位、200 MSPS、DDR输出为例,数据在时钟上下沿各更新一次,单对线速率200 Mbps。FPGA侧通常使用ISERDESE2把串行位流还原为并行字,再经IDELAYE2调整采样点。
实现时先确定数据眼图中心。假设PCB走线等长控制在±5 mil,时钟与数据偏斜约20 ps,在200 Mbps下单位间隔UI为5 ns,20 ps仅占0.4%,余量充足。若速率提升到800 Mbps,UI变为1.25 ns,同样偏斜占比升至1.6%,此时必须用IDELAY逐位扫描,找到误码率最低的抽头值。常见做法是发送PRBS7测试码,扫描IDELAY从0到31,记录误码数,取误码窗口中心作为最终抽头。
数据对齐方面,ADC输出常带帧同步信号或训练码。FPGA可用状态机检测同步字,例如检测到0x7FFE后,将后续数据按14位边界重组。若使用Xilinx SelectIO,可调用selectio_wiz IP,配置数据位宽14、DDR模式、时钟频率100 MHz(对应200 Mbps),并勾选IDELAY校准。
三、JESD204B链路建立与确定性延迟
JESD204B的链路建立分几个阶段:代码组同步、初始通道对齐、用户数据阶段。以4通道ADC、每通道线速率10 Gbps、8B/10B编码为例,FPGA的GT收发器先完成CDR锁定,再检测K28.5对齐字符。当连续收到4个正确对齐字符后,进入初始通道对齐,通过发送ILAS序列确定多帧边界和通道间偏斜。
确定性延迟是JESD204B的核心。它要求每次上电后,从ADC采样到FPGA输出数据的延迟固定。实现上需要保证:SYSREF与器件时钟同源;SYSREF满足建立保持要求;各通道FIFO的释放时刻由SYSREF对齐。若SYSREF抖动过大,延迟会漂移,多通道采集就会出现相位不一致。
一个可执行的检查流程是:先用ILA抓取rx_sync和rx_aligned信号,确认链路进入DATA状态;再抓取sysref与rx_frame_boundary,测量两者相位关系;最后注入单音信号,比较各通道FFT相位差。若相位差稳定且小于1个采样周期,说明确定性延迟成立。
四、Aurora接口的实时数据搬运
Aurora适合把FPGA采集到的数据搬到另一片FPGA或预处理板。它提供AXI4-Stream接口,用户只需把数据打成帧,Aurora负责CRC、重传和通道绑定。配置时选择线速率、通道数、接口位宽。例如线速率6.25 Gbps、4通道、64位用户接口,理论吞吐约25 Gbps,扣除协议开销后有效带宽约20 Gbps。
实时性方面,Aurora的帧间隔和FIFO深度会影响延迟。若每帧携带1024字节,帧间隔100 ns,则单帧传输时间约1024×8/25 Gbps≈328 ns,加上帧间隔,端到端延迟约0.5 μs。对于载荷数据处理,这个量级通常可接受。若要求更低延迟,可减小帧长、提高线速率或使用流模式。
五、接口选型与验证要点
| 接口 | 典型速率 | 线数 | 同步能力 | 适用场景 |
|---|---|---|---|---|
| LVDS | ≤1 Gbps/对 | 多 | 强,随路时钟 | 中低速ADC、控制信号 |
| JESD204B | 3~12 Gbps/通道 | 少 | 确定性延迟 | 高速多通道ADC/DAC |
| Aurora | 1~25 Gbps | 少 | 帧同步 | 板间/芯片间数据搬运 |
验证时建议分三层:物理层看眼图与误码率,链路层看对齐状态与FIFO溢出,系统层看端到端延迟与通道相位。只有三层都通过,接口才算真正可用。实际工程中,先保证时钟和电源干净,再调IDELAY和SYSREF,最后才优化吞吐,顺序颠倒往往事倍功半。