赵 鑫,赵 赟
(中国船舶集团有限公司第七二三研究所,江苏 扬州 225101)
JESD204B是一种高速串行传输协议,目前是模数转换器(ADC)采样数据传输中重要的接口标准,广泛用于高速模数转换器与后端数字信号处理设备间的数据传输[1-2]。此类应用场景需保证整个链路延迟要固定,但是实际中存在的不稳定因素极大地阻碍了确定性延迟的实现。因此,通过一定的设计和算法,使得最差的链路在重复上电或者重建链路的时候都能实现确定性延迟成为必要。本文提出了一种基于JESD204B的采样系统设计方案,主要应用于雷达、电子对抗系统中的高速采样和数字信号处理领域。
整个采样系统包含整机时钟源、时钟分发板、多块采样板和多块信号处理板[3],其中单块采样板可由多片现场可编程门阵列(FPGA)和多片ADC根据设计需求组合,同样结构的采样板卡可进行堆叠,通过背板VPX架构组成采样系统,增加采样通道,增强采样能力,如图1所示。
图1 采样系统原理框图
多ADC同步的实现依赖整机时钟源、时钟分发板,而整个链路延迟由ADC发送端延迟、ADC至FPGA物理链路延迟、FPGA接收端延迟三部分组成。ADC发送端和FPGA接收端延迟可通过寄存器层面优化,ADC至FPGA物理链路延迟可通过硬件电路设计优化,再配合调节接收端缓冲器释放点从而达到整个链路的最小确定性延迟。
时钟分发板卡同步时钟电路选用LMK04828芯片搭建,外部VCXO选取CRYSTEK的CVHD-950X-122.88,低相噪线性电源取TI的TPS7A4700;ADC选用4片TI的芯片ADC12DJ3200,FPGA选用2片Xilinx的芯片Virtex-7 XC7VX690T,每片FPGA作为数据接收端对应2片ADC12DJ3200。
整机系统时钟源Clkin假设为8 M,输入时钟分发板卡的LMK04828经PLL2输出4路ADC的采样时钟DevClk_ADC 2.56 G,4路ADC的参考时钟SYSREF_ADC 8 M,2路FPGA的工作时钟DevClk_FPGA 128 M,2路FPGA的参考时钟SYSREF_FPGA 8 M[4]。
如图2所示,8 M时钟SYSREF反馈至PLL1的鉴相器完成和Clkin鉴相锁相功能,R1/N1=K/1,K为整数,防止分频模糊,保证输出的6路SYSREF全部相位一致;再通过LMK04828的SYSREF沿触发同步所有的DevClk分频器,无需外部同步信号即可使输出的6路DevClk相位一致。
调整PLL1和PLL2的环路滤波器参数,净化时钟源,压低相噪,获得最好的输出时钟同步性能,C1取100 nF,C2取680 nF,R2取39 kΩ,PLL2的环路滤波器参数C1取0.047 nF,C2取3.9 nF,R2取0.62 kΩ。
单块采样板由4片ADC+2片FPGA组合而成,时钟分发板送出的ADC端的采样时钟DevClk_ADC和参考时钟SYSREF_ADC布线均无需严格控制PCB等长设计;FPGA端的DevClk_FPGA和SYSREF_FPGA布线也无需严格控制硬件电路等长设计。多块采样板卡进行组合,结合时钟分发板卡、背板VPX架构组成采样系统,时钟分发板卡输出的参考时钟SYSREF和采样时钟DevClk以LVPECL差分电平标准或同相射频线缆方式传输至各单块采样板。
时钟分发板卡能够产生多路同相时钟SYSREF和多路同相时钟DEVCLK,分别输入到各片ADC和FPGA中。ADC发送端通过寄存器设置调整ADC端参考时钟相对采样时钟的位置,确保满足建立保持时间[5-6],计算ADC多帧大小M=F×K(F为每帧的字节数,K为1个多帧的帧数)。FPGA接收端确定多帧数据到达的最大安全窗口,通常要落在本地多帧时钟(LMFC)边沿的前后N个核时钟周期区间,换算成字节常量即N×4到M-N×4之间,如图3所示。读取接收端每条Lane的buffer_adjust值进行调整,使多帧数据到达的时间点处于安全窗口内,以获得最好的稳定性,确保最差的链路在重复上电或者重建链路时都能实现确定性延迟。最后,配合调节接收端弹性缓冲器释放点取得最小确定性延迟。
图3 多帧数据到达接收端的安全窗口
为实现最小确定性延迟,要确保多ADC之间同步,每片ADC可调节SYSREF_ADC的采样位置,使每片ADC具有相同的TTXLMFC,保持状态一致。TTXLMFC为发送端即ADC中LMFC到SYSREF_ADC上升沿之间的时间间隔。每片FPGA的SYSREF_FPGA通过D触发器输入JESD204B RX core,再通过DEVCLK_FPGA下降沿采样,使每片FPGA具有相同的RRXLMFC,保持状态一致。RRXLMFC为接收端即FPGA中LMFC到SYSREF_FPGA上升沿之间的时间间隔。
多帧数据到达FPGA接收端的位置通常要远离LMFC边沿,否则ADC端或者物理链路上的一点干扰抖动,都有可能产生大小为1个LMFC周期的延迟变化,所以安全窗口要有一定的冗余设计,如图4所示。如果前端输出抖动小于4个字节,那么远离LMFC边沿8个字节区间内为宜;如果前端输出抖动超过4个字节,那么安全窗口需进一步缩小。
图4 多帧数据到达接收端非安全窗口引发的错拍
读取接收端每条Lane的buffer_adjust值,根据读取的最小值buf_fill调整LMFC相对SYSREF的位置,使多帧数据到达时间点处于安全窗口内。SYSREF_HANDLING寄存器最多可使LMFC相对SYSREF延迟16个核时钟周期,1个核时钟周期相当于4个字节。当最小值buf_fill小于4个字节时,设置SYSREF_HANDLING寄存器值为2,可使LMFC延迟2个核时钟周期;当最小值buf_fill在4~8个字节之间时,设置SYSREF_HANDLING寄存器值为1,可使LMFC延迟1个核时钟周期;当最小值buf_fill大到接近前一个LFMC边沿,这里可通过设置SYSREF_HANDLING寄存器值使LMFC延迟3~4个甚至更多核时钟周期,使多帧数据到达时间点跳入前一个LFMC的安全窗口内,缩减端到端的固定延迟。
接收端缓冲器释放点默认在LMFC边沿释放,可在缩减端到端的固定延迟基础上进一步提前释放,以达到最小确定性延迟。如图5所示。TADC为数据采样输出时间,TLANE为数据链路传输时间,TFPGA为数据接收处理时间。通过设置接收端rx_buffer_delay(RBD)的值将释放点从LMFC边沿移动适当数量的核时钟周期,并确保仍然落在LMFC周期的有效区域之内,从而提前释放弹性缓冲区的数据[7]。
图5 接收端弹性缓冲器释放点的有效区
本设计中ADC选取传输模式中的JMODE 3模式,即12位、双通道、16 lane,采样时钟取2.56 Gsps,K取4,F取8,根据fSYSREF=fBITRATE/(10×F×K×n),参考时钟SYSREF取8 MHz[8]。
主要利用VIVADO软件调用JESD204B相关IP核搭建工程,SDK软件负责应用程序模块,录得采样数据,再利用MATLAB软件做相关指标分析,软件流程如图6所示。
图6 软件流程
通过SPI配置ADC12DJ3200,为确保满足建立保持时间,读取寄存器SYSREF_POS[23∶0]。其中0x02E[7∶0]= b10000000,0x02D[7∶0]= b00000011,0x02C[7∶0]= b00000001。通过24 bit采样窗,将正常采样点记为0,有风险的采样点记为1。因此选择长0中最中间的位置,配置寄存器SYSREF_SEL值为15,即为SYSREF_ADC的最优采样位置,配置SYSREF_ZOOM寄存器值为1,即步进值为77 ps,即SYSREF_ADC相对DEVCLK_ADC移动77 ps×15,最大化满足建立和保持时间,同时调节LMFC相对SYSREF_ADC的位置一致确保同步。
计算多帧大小M=F·K,K取4,F取8,M为32,多帧数据到达接收端的最大安全窗口为8~24之间。FPGA端SYSREF_FPGA通过D触发器输入JESD204B RX core,并利用DEVCLK_FPGA的下降沿采样,确保满足建立和保持时间,同时调节LMFC相对SYSREF_FPGA的位置一致确保同步。如图7所示,2片ADC四通道分属于2块采样板卡,经过不断的重复上电,不断的重复测试,通道两两相减相位差固定,证明实现了不同板间多ADC同步。
图7 多ADC同步验证
读取接收端每片ADC每条Lane的buffer_adjust值,ADC1的为{28,28,32,28,28,32,28,32},ADC2的为{24,24,28,28,28,28,28,28},进行调整使多帧数据到达的时间点处于安全窗口内,从读出的值看出数据到达时间点接近前一个LMFC沿,并不在安全窗口内,容易引发一个LMFC周期的误差,设置ADC1的SYSREF_HANDLING寄存器值为0x10501,设置ADC2的SYSREF_HANDLING寄存器值为0x10601,使其跳进前一个LMFC周期内并落在安全窗口8~24之间,ADC3,ADC4依此类推。
调整缓冲器延迟参数(RBD)将释放点从LMFC边沿移动适当数量的帧时钟,并使之保持在LMFC周期的有效区域之内,这里取8,进一步缩小确定性延迟。
本文通过硬件设计和软件调节方式实现采样系统多ADC同步和各链路最小确定性延迟,并且经过长时间、反复上电测试,采样系统运行稳定可靠,增加了采样通道,增强了采样能力,具有较高的实际应用价值。