ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

时间交织 ADC 的三大误差:Offset、Gain、Timing 到底从哪里来?

时间交织 ADC 的三大误差:Offset、Gain、Timing 到底从哪里来? 1. 为什么时间交织 ADC 一定会遇到“通道不一致”最近在做两个5 GS/s ADC 交织成 10 GS/s的高速采集项目时一个问题很快就会冒出来理论上明明很简单。ADC0 每隔 200 ps 采一次ADC0● ● ● ● 0 200 400 600 psADC1 相对 ADC0 错开 100 psADC1 ● ● ● ● 100 300 500 700 ps最后在 FPGA 里交替排列合并● ● ● ● ● ● ● ● 0 100 200 300 400 500 600 700 ps于是得到10 GS/s 等效采样率。如果两路 ADC 完全理想这件事到这里就结束了。但现实是世界上几乎不存在两条完全一样的模拟通道。哪怕 ADC0 和 ADC1 是同一个型号甚至集成在同一颗芯片内部它们的直流偏置、增益、实际采样时刻也不可能完全一致。于是就有了时间交织 ADC 里最经典的三类通道失配Offset Mismatch偏置失配Gain Mismatch增益失配Timing Skew采样时间失配这三个问题也是后面做 TIADC 校准时最常碰到的东西。2. 三种误差到底是什么先不讲复杂公式直接说人话。假设理想 ADC 应该把输入 (x) 转换成[yx]但真实 ADC 更接近[y(1g)xo]其中(o)Offset也就是输出整体往上或往下偏(g)Gain Error也就是输入被稍微放大或缩小。时间上还有一个误差[x(t)\rightarrow x(t\Delta t)]其中(\Delta t)实际采样时刻与理想采样时刻之间的偏差。所以一条实际 ADC 通道可以粗略理解成[y(1g)x(t\Delta t)o]这一个简单模型基本已经把时间交织 ADC 最重要的三个误差放进去了。3. Offset Mismatch两路 ADC 的“零点”不一样先看 Offset。假设模拟输入是 0 V。理想情况下ADC00 ADC10但真实情况可能是ADC03 LSB ADC1-3 LSB这说明即使输入完全一样两颗 ADC 输出的基准位置也不同。这就是Offset Mismatch。放到交织数据里就很明显了ADC0 3 3 3 ADC1 -3 -3 -3 合并 3 -3 3 -3 3 -3 ...你会发现最终输出产生了一个正、负、正、负、正、负……的周期性变化。对于两路交织系统这种“一高一低”的误差每两个采样点重复一次。如果交织后的总采样率为[f_s10\text{ GS/s}]那么这个误差对应的典型频率就是[\frac{f_s}{2}5\text{ GHz}]因此两路 TIADC 中的Offset mismatch 往往会在 (f_s/2) 附近产生明显的杂散分量。这也是为什么做 FFT 时如果在 Nyquist 位置附近看到异常分量Offset mismatch 是值得优先排查的方向之一。Offset 从哪里来它可能来自ADC 内部比较器或放大器的直流偏置差异模拟输入通道的共模或偏置不一致器件制造工艺带来的失配温度变化PCB 两路模拟前端的不一致。所以 Offset 并不是 FPGA “算出来”的问题。FPGA 更多是在数字域估计并补偿它。4. Gain Mismatch同一个输入两路 ADC 测出来的幅度不一样第二种是 Gain Mismatch。假设输入信号在某个采样时刻理想值为1.000但两路 ADC 增益略有区别ADC00.99 ADC11.01那么交织以后相邻采样点会出现一种规律ADC0采的点稍微小一点 ADC1采的点稍微大一点 ADC0采的点稍微小一点 ADC1采的点稍微大一点 ……可以粗略画成理想包络 ───────────────── ADC0 ● ● ● ↓ ↓ ↓ 偏小 偏小 偏小 ADC1 ● ● ● ↑ ↑ ↑ 偏大 偏大 偏大这实际上相当于原信号被一个周期性的增益误差调制了。而周期性误差最容易在 FFT 中变成离散杂散。对于两路交织 ADC如果总采样率为 (f_s)输入频率为 (f_{in})Gain mismatch 常见的镜像杂散位置可以理解为[f_{spur} \left|\frac{f_s}{2}-f_{in}\right|]如果[f_s10\text{ GHz}]输入[f_{in}1.2\text{ GHz}]那么可能出现的交织镜像位置就是[5-1.23.8\text{ GHz}]频谱可能类似幅度 ^ | 主信号 | ● | | | | ● Gain mismatch spur | | | ------------------------------------ Frequency 1.2 3.8 5 GHz需要注意这里讨论的是理想化的两通道交织失配模型。实际 FFT 频谱中还会同时存在谐波、噪声、时钟杂散和其他非理想因素不能看到一个 spur 就直接断定一定是 Gain mismatch。Gain 误差从哪里来常见来源包括ADC 内部采样电容、放大器等器件失配两路参考电压存在差异模拟前端增益不一致巴伦、放大器、衰减器存在通道差异PCB 走线和器件参数存在偏差。所以高速采集系统里即使两个 ADC 的配置寄存器完全一样也不代表它们的实际模拟增益完全一样。5. Timing Skew真正让高速 TIADC 头疼的问题第三种是Timing Skew。这个概念非常重要。对于两个 5 GS/s ADC理想情况下ADC00 ps ADC1100 ps ADC0200 ps ADC1300 ps但真实系统可能变成ADC00 ps ADC1103 ps ADC0200 ps ADC1303 psADC1 比理想位置晚了 3 ps。这 3 ps 就是通道之间的Timing Skew。注意Timing Skew 本质上是采样时间偏差而不是简单的固定 Phase Error。为什么这两个概念不能直接画等号因为同样是 3 ps 时间误差对不同输入频率造成的相位影响完全不同。对于正弦信号[x(t)A\sin(2\pi ft)]时间偏差 (\Delta t) 对应的相位变化为[\Delta\phi2\pi f\Delta t]所以同样是[\Delta t3\text{ ps}]输入频率越高等效相位偏差越大。这就是一个非常关键的工程结论Timing Skew 对高频输入比对低频输入更加敏感。举个简单例子。3 ps 对 100 MHz 输入来说影响可能还比较小。但对于 4 GHz 输入[\Delta\phi2\pi\times4\times10^9\times3\times10^{-12}]约等于[0.0754\text{ rad}\approx4.32^\circ]只有 3 ps到了 4 GHz 输入时已经对应超过 4° 的相位差。对于一个想做几 GHz 高频采集的 TIADC 系统来说几 ps 已经不能算“小误差”了。6. Timing Skew 到底从哪里来很多新人第一反应是是不是 PCB 两根时钟线没等长这当然可能是一个原因但不是全部。Timing Skew 可能来自整条时钟链路时钟源 │ ↓ Clock Buffer / PLL │ ├────────→ ADC0 Clock │ └────────→ ADC1 Clock │ ↓ ADC内部采样任何一级的不一致都可能贡献采样时间偏差。例如时钟 Buffer 不同输出之间的 skewPCB 时钟走线长度不同连接器、过孔带来的延迟差异ADC 内部 aperture delay 不一致两路采样时钟相位生成误差温度和电压变化导致延迟漂移。这里还要区分一个经常和 Timing Skew 混在一起的概念Clock Jitter。Timing Skew 更强调两个通道之间相对稳定的采样时刻偏差。而随机 Jitter 更像理想100 ps 实际 101 ps 99 ps 102 ps 98 ps ……它会随机变化。两者对频谱的影响并不完全一样校准方法也不同。静态或慢变化的 Timing Skew 可以估计和补偿但真正随机的时钟抖动不可能靠简单数字校准完全消除。7. 三种误差放在一起看对于两路 5 GS/s ADC 交织成 10 GS/s可以把三类问题简单总结成误差本质直观表现典型频谱影响Offset Mismatch两路零点不同一路整体偏高一路偏低(f_s/2) 附近杂散Gain Mismatch两路增益不同一路幅度大一路幅度小产生交织镜像 spurTiming Skew两路采样时刻不准采样点位置偏移产生交织 spur高频更严重如果把 FPGA 后面的校准思路也放进来可以简单理解成ADC0 ──┐ │ ADC1 ──┴─→ 数据对齐 │ ├─→ Offset 估计/补偿 │ ├─→ Gain 估计/补偿 │ ├─→ Timing 估计/补偿 │ ↓ 数据重排 │ ↓ FFT / DDC / DSP当然真实系统里的校准顺序和算法会根据器件架构不同而变化这里只是帮助建立整体认识。8. 新人容易搞错的地方误区一两颗 ADC 型号一样就不存在通道失配不可能。即使同一型号、同一芯片内部模拟电路也会受到工艺、电压、温度以及布局差异影响。时间交织 ADC 的关键问题之一本身就是解决这些通道之间的不一致。误区二Timing Skew 就是一个固定相位误差不准确。Timing Skew 的基本单位应该是ps、fs……它描述的是时间偏差。只有针对某一个确定输入频率时才能把这个时间偏差换算成对应的相位偏差。误区三只要 FPGA 把 ADC0、ADC1 交替排列好频谱就会很干净远远不够。数字顺序正确只解决了ADC0 → 偶数点 ADC1 → 奇数点但如果两路之间存在 Offset、Gain、Timing mismatchFFT 中仍然可能出现明显的交织杂散。所以真正的 TIADC 系统往往是数据拼起来很容易把两颗 ADC“校成像一颗 ADC”才难。9. 总结这一篇先记住 5 件事时间交织 ADC 最大的问题之一是不同 ADC 通道不可能完全一致。Offset Mismatch 表示两路 ADC 的直流零点不同两通道系统中常在 (f_s/2) 附近形成特征杂散。Gain Mismatch 表示两路增益不同会让原信号产生周期性幅度调制从而形成交织镜像 spur。Timing Skew 是采样时间偏差而不是简单的固定相位误差并且输入频率越高通常越敏感。两个 5 GS/s ADC 交织虽然可以得到10 GS/s 等效采样率但真正获得干净频谱还需要解决 Offset、Gain、Timing 等通道失配问题。下一篇我们先从最容易理解的一类开始《ADC 交织中的 Offset Mismatch它为什么会在频谱上产生杂散》下一篇会直接从Offset、-Offset、Offset、-Offset……这样一个非常简单的序列出发看它为什么经过 FFT 后会在固定的位置长出一根 spur并进一步讨论 FPGA 里最简单的 Offset 估计和补偿方法。关键词FPGA、ADC、时间交织ADC、TIADC、Offset Mismatch、Gain Mismatch、Timing Skew、FFT
返回列表