JESD204B/C接口:高速ADC/DAC与FPGA之间的链路建立(Code Group Synchronization)与确定性延迟调整
扫描二维码
随时随地手机看文章
在雷达、医学成像等高速数据采集系统中,JESD204B/C协议已成为连接ADC/DAC与FPGA的主流标准。相比传统的LVDS并行总线,它解决了PCB布线拥挤的痛点,但引入了“链路建立”与“确定性延迟”两大新挑战。本文将深入解析代码组同步(CGS)机制,并揭秘如何通过弹性缓冲区(Elastic Buffer)实现多通道的确定性延迟调整。
一、链路建立的三大阶段:从“握手”到“传数”
JESD204B链路建立是一个严格的状态机过程,分为CGS、ILAS和DATA三个阶段。理解这一流程是调试链路故障的基础。
1.1 代码组同步(CGS)阶段
这是链路的“物理层握手”。FPGA(接收端)拉低SYNC信号,ADC(发送端)检测到SYNC低电平后,开始持续发送/K28.5/字符(即Comma字符)。
// FPGA侧SYNC控制逻辑示例(状态机片段)
always @(posedge device_clk) begin
case (jesd_state)
STATE_CGS: begin
if (rx_data == K28_5 && cgs_cnt < CGS_THRESHOLD)
cgs_cnt <= cgs_cnt + 1;
else if (cgs_cnt >= CGS_THRESHOLD)
jesd_state <= STATE_ILAS; // CGS完成,进入ILAS
end
// ... 其他状态
endcase
end
FPGA的SerDes模块利用K28.5完成字节对齐(Byte Alignment)和时钟数据恢复(CDR)。当连续收到足够数量的K28.5(通常≥4个)且无误码时,FPGA拉高SYNC,宣告CGS成功。
1.2 初始通道对齐序列(ILAS)阶段
SYNC变高后,ADC在下一个本地多帧时钟(LMFC)边界开始发送ILAS序列。ILAS通常包含多个多帧(Multi-Frame),其核心作用是:
• 传递链路参数:通过第二个多帧携带L(通道数)、F(每帧字节数)、K(每多帧帧数)等关键配置。
• 建立帧边界:FPGA利用ILAS中的控制字符(如/R/、/A/)校准内部帧计数器,确保与ADC发送端严格对齐。
1.3 用户数据(DATA)阶段
ILAS校验无误后,链路进入稳定数据传输状态。若传输过程中出现严重误码导致失步,状态机会自动跳回CGS阶段进行链路重建。
二、确定性延迟的“锚点”:SYSREF与LMFC
“确定性延迟”是指从ADC采样数据到FPGA端数据可用的时间差是固定且可重复的(即使在多次上电复位后)。这是多片ADC同步采样的基石。
2.1 全局同步信号SYSREF
在Subclass 1模式下,系统需要一个全局的SYSREF信号(通常由时钟芯片产生)。它的作用类似于“发令枪”,在上升沿或下降沿瞬间,所有ADC和FPGA内部的LMFC计数器被强制复位到相同的相位。
// 时钟芯片配置示例(伪代码)
// 设置SYSREF为单脉冲模式,与Device Clock边沿对齐
lmk04828_config(SYSREF_MODE, PULSE_SINGLE);
lmk04828_config(SYSREF_DIV, DEVICE_CLK_DIV / (K*F)); // K*F为多帧长度
关键约束:SYSREF必须满足相对于Device Clock的建立/保持时间窗口,否则会导致不同芯片的LMFC相位不一致。
2.2 弹性缓冲区(Elastic Buffer)与延迟调整
由于PCB走线长度差异,多通道数据到达FPGA的时间会有“歪斜(Skew)”。JESD204B利用弹性缓冲区来吸收这种差异。
- 工作原理:每个通道的SerDes数据先写入独立的弹性缓冲区。FPGA根据ILAS阶段确定的LMFC边界,在固定的释放点(Release Point)同时读取所有通道的缓冲区数据。
- 延迟调整:通过配置接收缓冲区延迟(RBD)寄存器,可以微调释放点相对于LMFC边沿的位置。增大RBD会增加系统延迟但提高稳定性;减小RBD可追求最小延迟,但需确保所有通道的数据均已到达(避免Underflow)。
三、实战:Xilinx FPGA IP核配置要点
以Vivado平台为例,配置JESD204B IP核时需重点关注以下参数以实现确定性延迟:
1. Subclass:必须选择Subclass 1(支持确定性延迟)。
2. SYSREF Usage:选择“Continuous”或“One-shot”,需与ADC数据手册一致。
3. RX Buffer Delay (RBD):初始建议设置为K(多帧帧数)的一半,如32。在实际调试中,通过ILA抓取bufstatus信号,逐步减小RBD直至找到不出现Underflow的最小值,以实现低延迟优化。
四、常见链路故障排查
故障现象 可能原因 解决方案
SYNC无法拉高 时钟质量差、K28.5误码 检查Device Clock抖动,确认ADC发送功率
ILAS校验失败 FPGA与ADC链路参数(L,F,K)不匹配 核对IP核配置与ADC寄存器配置
多通道数据错位 SYSREF未对齐、RBD设置过小 测量SYSREF时序,增大RBD或重新校准相位
周期性误码 弹性缓冲区释放点落在数据窗口边缘 微调RBD或调整PCB走线延迟
五、结语
JESD204B/C的链路建立(CGS/ILAS)是数据可靠传输的前提,而确定性延迟(SYSREF+Elastic Buffer)则是多通道系统同步的灵魂。工程师在调试时,务必先确保CGS阶段的时钟质量,再通过ILA抓取SYSREF与LMFC的相位关系来精调延迟。只有掌握了这两大核心机制,才能真正驾驭高速数据转换接口。





