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通道。
- 伪随机序列:通过互相关计算延迟差。抗噪声能力强。
具体做法:
- 断开外部输入,切换到校准模式
- 所有通道同时采样测试信号
- 以通道0为参考,计算其他通道的相对延迟
- 将延迟值写入补偿寄存器
- 验证:再次采样,确认skew在容忍范围内
注意:测试信号的路径必须与正常信号路径一致,否则你校准的是测试路径的skew,而不是信号路径的skew。我曾经犯过这个错,校准完发现实际信号还是歪的。
4.3.2 基于TDC的实时校准
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。
嗯,多通道触发对齐这件事,说难不难,说简单也不简单。关键是要理解延迟的来源,选对测量手段,然后闭环补偿。做到这三点,你的多通道系统就能整齐划一地干活了。