许多实际高速采样系统,如电气测试与测量设备、生命系统健康监护等,不能接受较高的ADC转换误差率。这些系统要在很宽的噪声频谱上寻找极其罕见或极小的信号。误报警可能会引起系统故障。因此,我们必须能够量化高速ADC转换误差率的频率和幅度。
CER与BER
首先,让我们理清误差率描述中的两大差异。转换误差率(CER)通常是ADC关于模拟电压采样的判断不正确的结果,因此,与转换器输入的满量程范围相比较,其相应的数字码也不正确。ADC的误码率(BER)也能描述类似的误差,但就我们的讨论而言,我们把BER定义为纯数字接收错误;如果没有这种错误,那么转换的码数据就是正确的。这种情况下,正确的ADC数字输出未能被FPGA或ASIC等下游逻辑器件正确接收到。代码出错的程度及其出现的频率就是本文余下部分要讨论的内容。
仅仅阅读数据手册中的技术参数,可能难以掌握ADC转换误差。使用转换器数据手册中的单个数据,当然可以对转换误差率进行某种估计,但该数据量化的到底是什么呢?您无从判断多大的样本偏差可被视为错误,无法确定试验测量或仿真的置信度。必须将“错误”定义限定在已知出现频率所对应的幅度以内。
误差源
有多种误差源会造成ADC转换错误,内部和外部均有。外部误差源包括系统电源毛刺、接地反弹、异常大的时钟抖动和可能有错的控制命令。ADC数据手册中的建议和应用笔记通常会说明避开这些外部问题的最佳系统布局做法。ADC内部误差源主要可归因于亚稳态或模拟域中各级之间的残余处理传递,以及数字域和物理层中的输出时序误差。ADC设计团队在器件开发过程中必须分析这些挑战。
图1. 对于满量程上模拟分辨率的各个位,理想ADC样本都有单一数字输出(左图)。实际ADC输出行为的一个例子(右图)显示了与内部和外部噪声相关的某种模糊性。
在一组比较器中,当比较器基准电压精确等于或极其接近待比较的电压时,便可能发生亚稳态状况。比较电压在幅度上越接近基准电压,比较器作出全面判断所需的时间就越长。如果二者之间的电压差非常小或为0,比较器可能没有足够的时间来最终判定比较电压是高于还是低于基准电压。当该样本的转换完成时,比较器输出可能处于亚稳第三态,而不是清晰地判定一个有效逻辑输出1或0。这种犹豫不定会波及整个ADC,可能引起转换错误。
图2. 对于满量程上模拟分辨率的各个位,理想ADC样本都有单一数字输出(左图)。实际ADC输出行为的一个例子(右图)显示了与内部和外部噪声相关的某种模糊性。
在流水线型ADC架构中,还有其他潜在转换误差源,即在级间边界传递处,残余电压从上一级传送到下一级。例如,若两级之间有未校正的增益匹配误差,则残余电压的传递会在后续级中产生误差。此外,负责将一个电压发送到下一ADC级的残余DAC中的毛刺也可能在稍后的处理中引起意外的干扰误差。任何无源元件中都存在的热噪声是所有ADC固有的噪声分量,它决定了ADC处理的绝对噪底。在详细测定ADC的过程中,必须审视和量化所有这些可能的误差源,确保转换器运行时没有任何落差。
噪声分量
折合到输入端的噪声是ADC转换缺陷的一个固有分量,其中包括ADC输入端的热噪声。常常利用ADC输入端开路或浮空情况下的数字输出码直方图来对其进行量化。ADC数据手册通常会说明并显示此噪声。下面的图形给出了此噪声幅度的例子,其在本例中为[N] ± 11。
图3. 输入端开路或浮空时,理想ADC会采样输出一个中间电平失调码,如左侧直方图所示。实际ADC会有折合到输入端的噪声,其在对数尺度上应表现为高斯形状的弯曲直方图(右侧)。
ADC的积分非线性(INL)是ADC满量程输入范围内实际样本编码相对于理想输出的传递函数。ADC数据手册通常也会说明此信息并给出其曲线。与理想编码的最大偏差通常用某一数量的LSB来表示。下面是INL曲线示例。虽然它反映了一定量的绝对误差,但在大部分16位或稍低分辨率的高速ADC中,INL通常只有0到3个码。它不是转换器实际误差率的主要贡献因素。
图4. INL曲线示例,在所有ADC编码上测量,与理想样本相比,最大误差为±1 LSB或±1个码,对ADC转换误差而言基本上可忽略不计。
测试方法
针对长期CER检测,测试方法可以使用非常低的ADC输入频率(相对于时钟速率而言)。在任何两个相邻样本点之间构成一条直线,正弦波斜率可近似为该直线的斜率。类似地,略高于采样速率的输入频率会混叠为低频。对于这种情况,有一个可预测的理想解决方案能让各相邻样本处于前一样本的±1个码内。输入信号频率和编码采样时钟频率必须锁定,保持可预测的相位对齐。如果此相位不是恒定值,对齐就会异相,测量数据将没有用处。因此,为了计算理想转换结果,样本(N + 1) – sample(N)应相差一个码,幅度不超过1。
所有ADC固有的可预测小转换误差源包括积分非线性、输入噪声、时钟抖动和量化噪声。所有这些噪声贡献都可以累加以获得最差限值,若超过此限值,误差将被视为来自两个相邻转换样本。16位ADC的输出编码数是12位转换器的24或16倍。因此,该扩展分辨率会影响用于限制转换误差率测试的编码数。在其他一切都相同时,16位ADC的限值将被12位ADC宽16倍。
可使用ADC内置自测(BIST)功能并根据热噪声、时钟抖动和其他系统非线性来确定误差阈值。当超过误差限值时,可在ADC内核中标记特定样本及其对应的样本数和误差幅度。使用内部BIST的一大好处,是它将误差源界定在ADC内核本身,排除了专属于数字数据传输输出的接收位错误引起的误差。一旦明确误差阈值,便可执行涉及ADC、链路以及FPGA或ASIC的完整系统测量,以便确定全分量CER。
图5. ADC转换误差率与其热噪声的关系通常只能通过晶体管级电路仿真获得。上图为一个12位ADC的示例图,要实现10-15的CER,其必须能承受8 Σ的热噪声
现在看看如何计算热噪声贡献:
SNR = 20log(VSIGNAL/VNOISE)
VNOISE = VSIGNAL × 10^(–SNR/20)
为得出ADC的均方根噪声,必须调整 VFULLSCALE:
VNOISE = (VFULLSCALE/(2 × (2) × 10^(–SNR/20)
利用以下公式计算AD9625的热噪声限值,它是一款12位2.6 GSPS ADC,设计满量程范围(FSR)为1.1 V,SNR为55,2.508 MHz混叠输入 频率。
热噪声限值 = 8 × VINpp × 10 ^ (SNR/20)/2√(2)
= 3.39 mV ~ ±12个码
本例中,对于10-15误差限值,单单热噪声的8Σ分布就能贡献最多±12个码。这应针对ADC的折合到输入端总噪声测量进行测试。注意:数据手册中的折合到输入端噪声可能不是基于足够大的样本规模(用于10-15测试)而测得的。折合到输入端噪声包含所有内部噪声源,包括热噪声。
为了明确界限以尽可能包含所有噪声源,包括测试设备,我们使用内部BIST来测量误差幅度分布。利用AD9625的内部BIST,以2.5 GSPS运行,混叠AIN频率为80 kHz,接近ADC满量程,使用标称电源和温度条件执行CER测量,为期20天。
假设模拟电压转换为数字表示的所有ADC处理都是理想的。数字数据仍然需要精确传输,并在信号链的下游FPGA或ASIC中的下一级处理中精确接收。这一级的数字混乱通常由位错误或误码率来定义。然而,ADC的数据眼图输出的综合特性可以在PCB走线末端直接测量,并与JESD204B接收器眼罩比较,从而非常好地了解输出质量。
在1 Σ内以2.6 GSPS运行时,为了确立10-15的CER,10的15次方个样本,需要让此测试连续运行4.6天。对于更大的Σ,要确立更高的置信度,此测试需要运行更长时间。测试需要非常稳定的测试环境和干净的电源。被测转换器的电压源如有任何毛刺未被抑制,将导致测量错误,测试将不得不从头再来。
可利用一个FPGA计数器来记录两个相邻样本的幅度差超过阈值的情况,把该样本算作一次转换错误。计数器必须累计整个测试期间的错误总数。为了确保系统的工作行为符合预期,误差幅度和理想值也应记录在直方图中。测试所需时间取决于采样速率、期望的测试转换误差率和置信度要求。小于10-15的CER和95%的置信度至少需要连续测试14天。通过外推到实测值以外可以估计CER,但置信度会降低。
测量ADC的CER是一个破费时间的过程,您可能会想,是否能够基于已知测量结果进行外推。好消息是可以这样做。然而,有利必有弊,读者要擦亮眼睛。当我们不断地利用这种方法对误差率进行合理的数学估计时,估计的置信度会越来越低。例如,若置信度不到1%,那么知道10-18的误差率可能也没有什么用。
对于任何给定样本,转换误差阈值可能累计达到4或5个LSB。根据ADC分辨率、系统性能和应用的误差率要求,该值的大小可能略有不同。使用此误差带与理想值进行比较后,超出此限值的样本将被视为转换错误。ADC的误差带可通过调整阈值并监视典型性能数据来测试。最后使用的测试限值为缺陷的均方根和,其中主要是ADC热噪声。
采样值相对于理想值的测试数据直方图类似于离散式泊松分布图。泊松分布与二项式分布的主要区别在于,泊松分布没有固定的试验次数。相反,它使用固定的时间或空间间隔,并记录其中的成功次数,这与上述CER测试方法相似。记录到的任何样本如超出根据理想值算得的误差限值,就会被视为真正的码错误。
图6. 利用ADC样本与理想输出码相比较的长期直方图,我们可以检测任何超出计算限值的偏差。该直方图类似于泊松分布图。
系统
懂得单个转换器的CER之后,我们便可计算一个包含许多转换器的高级同步系统的误差率。许多系统工程师会问:在一个使用大量ADC的大型复杂系统中,累积ADC转换误差率将是多少?
因此,对于高级多信号采集系统,第二考虑事项就是确定一系列(而不是某一个)转换器的转换误差率。乍看之下,这似乎是一个令人怯步的任务。幸运的是,测得或算得单个ADC的CER之后,将此误差率外推到多个ADC并不是那么困难。这样,函数就变成基于系统所用转换器数目的概率扩张方程。
首先,求出单个转换器不发生错误的概率。它仅比1略小一点,即1减去误差率值(1–CERSINGLE)。其次,系统中有多少个ADC,便将该概率自乘多少次,即(1–CERSINGLE)#ADCs。最后,将1减去上述值,便可得出系统会出错的误差率。我们得到以下方程:
CERMULTIPLE =1-(1–CERSINGLE)#ADCs
考虑一个使用99个ADC,单个ADC的CER为10-15的系统。
1 – CERSINGLE = 0.999999999999999
CERMULTIPLE = 1 – (0.999999999999999) 99
= 9.8999999999995149000000000799095 × 10–14 (~about 10–13)
可以看出,现在的CERMULTIPLE值几乎比CERSINGLE(10-15)大100倍。由此可以得知,含有99个ADC的系统的转换误差率大致等于单个ADC的CER乘以系统中的ADC数量。从根本上说,它高于单个ADC的转换误差率,既受单个ADC转换误差率的限制,也受系统所用转换器数量的限制。因此,我们可以得出结论:包含许多ADC的系统与单个ADC相比,总转换误差率会显著提高。
图7. 使用多个转换器的系统的CER正比于单个转换器的CER乘以ADC数量。
确定ADC转换误差可能很困难,但仍是可实现的。第一步是确定系统中的转换误差大致有多大。然后需要确定一组适当的有界误差限值,包括预期ADC操作的非线性良性源。最后,特定测量算法可实现大部分或全部测试。测量结果可外推到测试界限之外,以获得额外的近似。