【ADC 测试技术】:2. 正弦波直方图测试

发布时间:2026/5/24 1:57:10

【ADC 测试技术】:2. 正弦波直方图测试 正弦波直方图测试——突破斜坡精度瓶颈系列《从原理到实测ADC 测试技术深度解析》第二篇难度进阶关键词正弦波直方图、PDF 校正、MATLAB、sparkle code、噪声掩盖一、斜坡测试的天花板上一篇我们介绍了基于斜坡信号的直方图测试它原理清晰实现简单。但在实际工程中这种方法面临一个根本性的硬件瓶颈商用斜坡信号发生器的线性度通常只有 810 位。这意味着当我们用一个本身就有 0.5 LSB10 位等效非线性误差的斜坡信号去测试一个 12 位的 ADC 时测试结果中的误差会被信号源的非线性所污染我们无法分辨哪些 DNL/INL 来自 ADC 本身哪些来自测试信号。结论斜坡直方图测试在实践中只适合测试分辨率低于 10 位的 ADC。那么对于 12 位、16 位甚至更高精度的 ADC我们该用什么测试信号二、为什么正弦波是更好的选择正弦波信号配合适当的带通滤波器滤除谐波分量后可以获得极高的信号纯度谐波失真可低至 -100 dBc 以下远优于斜坡信号。这使得正弦波成为高精度 ADC 静态测试的首选输入信号。然而正弦波信号的概率密度函数PDF并不像斜坡那样均匀——它呈现一种浴缸形bath-tub shape的分布。2.1 为什么是浴缸形对于幅度为A AA、频率为f x f_xfx​的正弦信号v ( t ) A sin ⁡ ( 2 π f x t ) v(t) A\sin(2\pi f_x t)v(t)Asin(2πfx​t)在过零点附近信号变化最快d v / d t dv/dtdv/dt最大ADC 在此区间内采集到的样本数最少在正负峰值附近信号变化最慢d v / d t dv/dtdv/dt趋近于零ADC 在此区间内采集到的样本数最多因此如果我们直接对正弦波输入的 ADC 输出做直方图会得到两端高、中间低的浴缸形分布而不是理想 ADC 应有的平坦分布。这意味着我们**不能再用频次偏差直接等于 DNL**这个简单结论必须先对正弦波的 PDF 进行校正。三、正弦波 PDF 校正原理3.1 理论基础正弦波的理论 PDF 为p ( v ) 1 π A 2 − v 2 , − A v A p(v) \frac{1}{\pi \sqrt{A^2 - v^2}}, \quad -A v Ap(v)πA2−v2​1​,−AvA其中A AA是正弦波幅度。累积分布函数CDF为F ( v ) 1 π arcsin ⁡ ( v A ) 1 2 F(v) \frac{1}{\pi} \arcsin\left(\frac{v}{A}\right) \frac{1}{2}F(v)π1​arcsin(Av​)21​对于 ADC 的第k kk个输出码字其理论上应该被采到的样本比例正比于该码字对应的电压区间在正弦波 CDF 上的投影。关键结论通过测量的累积直方图可以反推出正弦波的 CDF 值再利用arccos ⁡ \arccosarccos变换将其线性化为等效的均匀分布进而计算 DNL。具体地将累积直方图归一化后通过以下变换得到线性化的量化区间宽度T [ k ] − cos ⁡ ( π ⋅ CumHist [ k ] TotalSamples ) T[k] -\cos\left(\pi \cdot \frac{\text{CumHist}[k]}{\text{TotalSamples}}\right)T[k]−cos(π⋅TotalSamplesCumHist[k]​)相邻T TT值之差h [ k ] T [ k ] − T [ k − 1 ] h[k] T[k] - T[k-1]h[k]T[k]−T[k−1]即正比于第k kk个码字的实际量化区间宽度。四、MATLAB 实现逐行解析以下是课程中给出的完整 MATLAB 函数我们逐行解读function[dnl,inl]dnl_inl_sin(y)% 输入 yADC 对正弦波输入的量化输出向量% 输出 dnl, inlDNL 和 INL单位 LSB第一步确定直方图的码字范围minbinmin(y);maxbinmax(y);取输出中出现的最小和最大码字作为直方图的边界。第二步计算直方图hhist(y,minbin:maxbin);统计每个码字出现的次数得到原始直方图向量h。第三步计算累积直方图chcumsum(h);对直方图逐元素累加得到累积直方图CDF 的离散近似。第四步反余弦变换——线性化T-cos(pi*ch/sum(h));这是整个算法的核心。将归一化的累积直方图值域 01通过− cos ⁡ ( π ⋅ x ) -\cos(\pi \cdot x)−cos(π⋅x)映射到[ − 1 , 1 ] [-1, 1][−1,1]从而消除正弦波 PDF 的非均匀性得到等效的线性化转换电平序列。第五步计算各码字的线性化区间宽度hlinT(2:end)-T(1:end-1);相邻T TT值之差即线性化后每个码字的宽度对应于实际量化区间的相对大小。第六步截断首尾过量程码trunc2;hlin_trunchlin(1trunc:end-trunc);与斜坡测试一样去掉首尾至少 2 个码字若输入未完全覆盖全量程则去更多避免边界效应影响结果。第七步计算 LSB 大小并得到 DNLlsbsum(hlin_trunc)/length(hlin_trunc);dnl[0,hlin_trunc/lsb-1];用有效码字的平均线性化宽度作为 1 LSB 的参考归一化后减 1即得 DNL。第八步检查缺失码并计算 INLmisscodeslength(find(dnl-0.99));inlcumsum(dnl);DNL -0.99 LSB 的码字视为缺失码missing code。INL 由 DNL 累积求和得到。五、测试结果示例5.1 MATLAB 仿真模型B6;% 6位 ADCrange2^(B-1)-1;th-range:range;% 理想量化阈值th(20)th(20)0.7;% 在第20个阈值处引入 0.7 LSB 误差fs1e6;fx494e3pi;% 非整数比避免量化噪声相关Cround(100*2^B/(fs/fx));t0:1/fs:C/fx;x(range1)*sin(2*pi*fx.*t);yadc(x,th)-2^(B-1);[dnl,inl]dnl_inl_sin(y);结果DNL在引入误差的码字附近出现 ±0.7 LSB 的峰值与设定误差完全吻合INL在对应位置出现 0.7 LSB 的台阶累积效应清晰可见5.2 真实 ADC 测试结果示例12 位 ADC对一个真实的 12 位高速 ADC 进行正弦波直方图测试典型结果如下指标测试值DNL1.3 / -1.0 LSBINL1.7 / -0.69 LSB缺失码DNL -0.99 时判定INL 超过 1 LSB 意味着该 ADC 在某些输入区间的转换误差较大需要引起关注。六、正弦波直方图的关键问题是否需要知道幅度和偏置这是工程师在初次接触正弦波直方图测试时最常问的问题。答案不需要上述 PDF 校正算法只依赖于累积直方图的相对形状而不依赖于正弦波的绝对幅度或直流偏置。只要正弦波信号能够覆盖 ADC 的大部分量程使两端的过量程码能被截断算法就能正确工作。这一特性极大地简化了测试系统的校准要求。七、直方图测试的三大局限性无论是斜坡还是正弦波直方图测试都有一些固有的局限性必须了解7.1 假设单调性Monotonicity直方图测试隐含地假设 ADC 的转换特性是单调的——输入电压增大时输出码字不会减小。若 ADC 存在码字翻转Code Flip——即某个输出码字在输入增大时反而跳到更小的值——直方图无法检测到这种异常因为翻转的码字仍会被正常统计。应对方法直接观察 ADC 的时域输出序列寻找异常跳变。7.2 动态 Sparkle 码Sparkle 码是指 ADC 在稳定输入下偶发性输出一个远离正常值的错误码字例如…, 123, 123, 123, 0, 124, 124, …这个偶发的0会使 code 0 的计数略微增加code 123 的计数略微减少在直方图上只显示为极小的 DNL 误差无法被有效识别。应对方法直接监视 ADC 的输出序列寻找突变的孤立码字。7.3 噪声被平均掉如果 ADC 在某个输入电平附近存在内部噪声输出会在相邻码字之间随机抖动例如…, 9, 9, 9, 10, 9, 9, 9, 10, 9, 10, 10, 10, …这种噪声会使码字 9 和 10 的计数各增加约一半对方的应有计数在直方图上相互抵消DNL 看起来接近零。噪声被完全平均掉了看不见了。应对方法配合动态频谱测试见本系列后续文章通过 SNR 指标量化噪声水平。7.4 “INL 不会说谎”上述三种情况都可能导致 DNL 看起来正常但实际 ADC 有问题。这时INL 往往是更可靠的指示器。注意Sparkle 码本身在直方图上只产生极微小的DNL/INL 误差这正是它难以被直方图测试检出的原因应通过直接观察 ADC 时域输出序列来发现。而噪声导致的缺失码则不同——INL 对此更为敏感DNL 图因噪声被抹平看起来平坦正常但 INL 图会清晰显示出缺失码造成的阶梯状偏移一个典型例子某 ADC 的 DNL 因噪声弥散几乎看不出异常但 INL 图清晰显示出 5 个缺失码导致的持续阶梯状突变。这正是 PDF 作者所说的INL 通常不说谎INL usually does not lie。实践原则DNL 和 INL 必须同时查看不能只看其中一个。八、小结要点内容正弦波优势信号纯度远高于斜坡适合 10 位以上高精度 ADC浴缸形PDF正弦波在端点附近密度高中间低需要校正校正方法累积直方图 →− cos ⁡ ( π ⋅ x ) -\cos(\pi \cdot x)−cos(π⋅x)变换 → 线性化不需要标定幅度算法只依赖相对形状三大局限无法检测码字翻转、Sparkle 码难以识别、噪声被平均实践原则DNL 和 INL 必须同时分析下一篇《动态测试基础——DFT/FFT 频谱分析原理》静态测试告诉我们 ADC 在低频下的线性特性但它无法揭示 ADC 在高频输入时的性能退化。接下来我们进入动态测试领域从 DFT 的基本性质讲起理解频谱分析如何成为 ADC 动态性能的照妖镜。

相关新闻