4、多通道触发对齐:多ADC/DAC通道的触发延迟补偿、skew校准方法、TDC(时间数字转换器)应用

多通道触发对齐,说白了就是让所有ADC或DAC通道在同一时刻“听令”。

我早年做过一个16通道的相控阵接收机项目。板子调完,自检全过,一上系统发现波束指向偏了3度。查了三天,最后发现是通道间的触发skew差了2.3ns。2.3ns,光速也就走了69厘米,但相控阵的波束已经歪到姥姥家了。

从那以后,我对触发对齐这件事就特别较真。

4.1 触发延迟的来源

多通道系统里,触发信号从源头到每个ADC/DAC的路径不可能完全等长。常见的延迟来源有这几类:

延迟来源 典型量级 说明
PCB走线长度差 10 ps ~ 500 ps FR4上每英寸约170 ps,走线绕一下就有差异
缓冲器/扇出芯片 50 ps ~ 2 ns 不同通道的缓冲器传播延迟不一致
时钟域同步 1 ~ 2个时钟周期 异步触发跨时钟域时,同步器引入不确定性
ADC内部采样保持 100 ps ~ 1 ns 不同芯片的孔径延迟不一致

关键指标:多通道触发skew通常要求小于采样周期的1/10。对于1 GSPS的ADC,skew必须控制在100 ps以内。这不是一个宽松的指标。

4.2 触发延迟补偿方法

补偿的思路其实很简单:测出每条通道的延迟差,然后想办法把它补回来。我常用的方法有三种。

4.2.1 可编程延迟线

在触发路径上插入可编程延迟芯片,比如ON Semiconductor的MC100EP195,步进10 ps,范围可达10 ns。每个通道独立调节,直到所有通道对齐。

// 伪代码:自动延迟校准流程
for each channel ch in [0..N-1]:
    set_delay(ch, 0)
    send_test_trigger()
    measure_skew(ch, reference_ch)
    
    // 二分法逼近
    step = MAX_DELAY / 2
    while step > MIN_STEP:
        if skew > TARGET:
            set_delay(ch, current + step)
        else:
            set_delay(ch, current - step)
        step /= 2
        measure_skew(ch, reference_ch)
    
    store_calibrated_delay(ch)

我的经验:延迟线芯片的温漂不可忽视。我见过一个项目,实验室调好,到现场温度升了20度,skew又跑偏了。建议在FPGA里做个温度补偿查找表,或者定期重校准。

4.2.2 FPGA内部IODELAY

如果不想额外加芯片,Xilinx的IODELAY或Intel的DDIO可以做到每通道精细调节。IODELAY的步进约78 ps(取决于参考时钟),32个tap,总范围约2.5 ns。

用IODELAY的好处是:不需要外部器件,PCB布线简单。缺点是:范围有限,而且每个tap的延迟会随PVT变化。

4.2.3 相位插值

对于更高精度的需求,可以用相位插值器。它把参考时钟分成多个相位,然后选择最合适的那个。步进可以做到1 ps以下。

我有个朋友做量子计算的控制系统,要求通道间skew小于5 ps。他们用的就是相位插值+闭环反馈,效果很好,就是贵。

4.3 Skew校准方法

补偿是手段,校准是前提。你得先知道skew有多大,才能去补。校准方法分两大类:

4.3.1 基于测试信号的校准

给所有通道同时注入一个已知的测试信号,然后比较各通道的采样结果。常用的测试信号有:

  • 阶跃信号:上升沿陡峭,通过检测过零点的时间差来推算skew。适合ADC通道。
  • 正弦波:通过比较相位差来推算skew。适合DAC通道。
  • 伪随机序列:通过互相关计算延迟差。抗噪声能力强。

具体做法:

  1. 断开外部输入,切换到校准模式
  2. 所有通道同时采样测试信号
  3. 以通道0为参考,计算其他通道的相对延迟
  4. 将延迟值写入补偿寄存器
  5. 验证:再次采样,确认skew在容忍范围内

注意:测试信号的路径必须与正常信号路径一致,否则你校准的是测试路径的skew,而不是信号路径的skew。我曾经犯过这个错,校准完发现实际信号还是歪的。

4.3.2 基于TDC的实时校准

TDC(时间数字转换器)可以精确测量两个事件之间的时间差。在多通道系统中,我们可以用TDC实时监测触发信号的到达时间。

基本架构是这样的:

基于TDC的多通道触发对齐架构 触发源 扇出 通道1 通道2 通道N TDC 校准控制器 延迟补偿 TDC测量各通道触发到达时间 → 校准控制器计算补偿值 → 延迟补偿模块调整触发路径

TDC的精度决定了校准的上限。市面上常见的TDC芯片,比如TDC-GP22,分辨率可以做到90 ps。FPGA内部也可以用进位链实现TDC,分辨率在10~50 ps之间,但线性度不如专用芯片。

4.4 TDC应用实例

我去年做了一个64通道的超声成像系统,要求通道间skew小于200 ps。我们用了FPGA内部的TDC来做实时校准。

具体实现:

  • 每个通道的触发路径上引出一个抽头到TDC
  • TDC测量每个抽头相对于参考通道的延迟
  • 校准控制器根据测量结果调整每个通道的IODELAY tap值
  • 每10秒自动重校准一次,补偿温漂

效果:校准前最大skew 1.8 ns,校准后降到85 ps以内。图像质量提升很明显。

避坑指南:我曾经把TDC的参考时钟和系统时钟混用,结果TDC测量结果一直跳。后来发现TDC需要独立的低抖动参考时钟,否则测量噪声会淹没skew信号。分开供电、分开走线,这是基本操作。

4.5 多通道对齐的终极方案

如果预算和面积允许,我建议用以下组合方案:

环节 推荐方案 精度
粗调 PCB等长走线 + 扇出芯片 ±500 ps
细调 FPGA IODELAY / 可编程延迟线 ±50 ps
测量 专用TDC芯片 ±10 ps
闭环 定期自动校准 长期稳定

这个方案我在三个项目里用过,效果都很稳定。当然,如果你的系统只有两三个通道,走线等长+IODELAY就够用了,没必要上TDC。

嗯,多通道触发对齐这件事,说难不难,说简单也不简单。关键是要理解延迟的来源,选对测量手段,然后闭环补偿。做到这三点,你的多通道系统就能整齐划一地干活了。