【ADC 测试技术】:1. 直方图法测量 ADC 的 DNL 与 INL

【ADC 测试技术】:1. 直方图法测量 ADC 的 DNL 与 INL 静态测试基础——直方图法测量 ADC 的 DNL 与 INL系列《从原理到实测ADC 测试技术深度解析》第一篇难度入门 / 基础关键词ADC 测试、直方图、DNL、INL、斜坡信号一、为什么我们需要直方图测试在对 ADC模数转换器进行静态性能测试时最直观的方法是逐个测量每个码字的转换边界Code Boundary给 ADC 施加一个精确可调的直流电压通过伺服回路Servo Loop逐步逼近每一个量化跳变点记录对应的电压值再计算出 DNL 和 INL。这种方法原理清晰但有一个致命缺点——速度极慢。对于一个 N 位 ADC共有2N−12^N - 12N−1个转换边界需要逐一测量。每次测量都需要伺服回路收敛到稳定状态加上高精度电压表的读数时间整体测试耗时随分辨率指数级增长。对于 16 位以上的高精度 ADC 而言这种方法在生产测试中几乎不可接受。直方图测试Histogram Testing正是为了解决这一问题而生的。它的核心思想是不去主动找每一个转换边界而是施加一个已知概率分布的输入信号通过统计 ADC 输出码字的出现频次反推出每个量化区间的实际宽度进而计算 DNL 和 INL。二、伺服回路Servo Loop简介在介绍直方图法之前有必要了解它所取代的传统方法——码边界伺服Code Boundary Servo。伺服回路的工作原理如下向 ADC 施加一个初始电压读取输出码字 A将 A 与目标码字 B 输入数字比较器比较器输出驱动两路电流源i1i_1i1​、i2i_2i2​对积分电容C1C_1C1​充放电积分器输出经R2R_2R2​、C2C_2C2​低通滤波后作为 ADC 输入回路不断调整直到 ADC 输出恰好在 A 与 B 之间反复跳变此时用高精度电压表读取 ADC 输入端电压即为该转换边界的精确值这一方法精度高但每测一个边界都需要等待回路收敛对2N2^N2N个码字逐一操作耗时极长。直方图法通过一次连续扫描完成所有码字的统计从根本上解决了效率问题。三、斜坡直方图测试原理3.1 测试设置斜坡直方图测试的硬件搭建非常简单斜坡信号发生器 ──→ ADC ──→ PC采集并统计输出码字 ↑ V_REF, f_S测试时向 ADC 施加一个速度远慢于采样时钟的线性斜坡信号电压范围覆盖 ADC 的整个输入量程0 到VREFV_{REF}VREF​。在斜坡扫描过程中ADC 持续以采样率fSf_SfS​进行采样PC 端记录每个输出码字出现的次数形成直方图。3.2 基本原理由于斜坡是线性的理想情况下ADC 的每个量化区间宽度相同斜坡在每个区间内停留的时间也相同因此每个码字被采样的次数Code Count也应该相同。若某个码字的实际量化区间比理想宽斜坡在该区间停留的时间就更长采样次数就更多反之则更少。这就是直方图法的核心逻辑码字出现频次的偏差直接反映了对应量化区间宽度的偏差也就是 DNL。3.3 测试参数计算示例以一个具体例子说明参数选择参数数值ADC 采样率fSf_SfS​100 kHz采样周期TST_STS​10 μs1 LSB 对应电压10 mV期望测量分辨率0.01 LSB每个码字所需样本数nnn100 个每个码字需要 100 个样本每个样本间隔 10 μs因此斜坡在每个 LSB 区间内停留时间为tper code100×10 μs1 mst_{per\ code} 100 \times 10\ \mu s 1\ mstpercode​100×10μs1ms斜坡斜率为Slope10 mV1 ms10 mV/ms\text{Slope} \frac{10\ mV}{1\ ms} 10\ mV/msSlope1ms10mV​10mV/ms四、DNL 提取的完整五步流程下面以一个3 位理想 ADC和含非理想特性的 3 位 ADC为例演示 DNL 提取的全过程。Step 1采集原始直方图施加斜坡信号后统计每个输出码字07出现的次数得到原始直方图。对于理想的 3 位 ADC假设总采集样本覆盖了全量程包含首尾过量程码去掉首尾两个过量程码code 0 和 full-scale code有效码字为 16共 6 个。为什么要去掉首尾码过量程码overrange bins的计数包含了斜坡进入/退出量程的时间不代表真实的量化区间宽度必须排除。Step 2计算平均计数nˉ有效总样本数有效码字数6006100 次/码\bar{n} \frac{\text{有效总样本数}}{\text{有效码字数}} \frac{600}{6} 100 \text{ 次/码}nˉ有效码字数有效总样本数​6600​100次/码Step 3归一化将每个码字的实际计数除以平均计数Normalized Count[k]Count[k]nˉ\text{Normalized Count}[k] \frac{\text{Count}[k]}{\bar{n}}Normalized Count[k]nˉCount[k]​理想码字归一化值 1偏宽码字归一化值 1偏窄码字归一化值 1Step 4减去 1得到 DNLDNL[k]Normalized Count[k]−1\text{DNL}[k] \text{Normalized Count}[k] - 1DNL[k]Normalized Count[k]−1结果的单位是 LSB。正值表示该码字的量化区间比理想宽负值表示比理想窄。Step 5由 DNL 重建 INL每个码字的实际宽度为W[k]DNL[k]1 LSBW[k] \text{DNL}[k] 1\ \text{LSB}W[k]DNL[k]1LSB将各码字的宽度累加可以重建出 ADC 的完整转换特性曲线再与理想直线端点连线作差即得到INLINL[k]∑i1kDNL[i]\text{INL}[k] \sum_{i1}^{k} \text{DNL}[i]INL[k]i1∑k​DNL[i]五、一个含非理想特性的 3 位 ADC 实例假设某 3 位 ADC 在某个码字处存在 0.4 LSB 的 DNL 误差另一码字存在 -0.4 LSB 的 DNL 误差。经过上述五步处理后DNL 图呈现 ±0.4 LSB 的偏差与实际引入的误差吻合INL 图由于 DNL 的累积效应INL 峰值出现 0.4 LSB 的偏差这验证了直方图法能够准确还原 ADC 的静态非线性特性。六、斜坡测试的速度瓶颈直方图法虽然比逐点测量快得多但对于高分辨率 ADC测试时间仍然不可忽视。以 16 位 ADC 为例Ttest216 码×100 次/码100,000 次/秒6,553,600100,000≈65.6 秒T_{test} \frac{2^{16}\ \text{码} \times 100\ \text{次/码}}{100{,}000\ \text{次/秒}} \frac{6{,}553{,}600}{100{,}000} \approx 65.6\ \text{秒}Ttest​100,000次/秒216码×100次/码​100,0006,553,600​≈65.6秒接近1 分 6 秒这对量产测试来说仍然是个负担。此外斜坡信号还有另一个根本性问题商用斜坡信号发生器的线性度通常只能达到 810 位。也就是说用斜坡信号测试 10 位以上的 ADC 时信号本身的非线性误差会污染测试结果导致测量值失真。这就引出了下一篇要讨论的内容——正弦波直方图测试。七、小结要点内容直方图法核心思想统计输出码字频次频次偏差 量化区间宽度偏差 DNL斜坡测试优点原理简单DNL 直接读出DNL 提取步骤去首尾 → 求均值 → 归一化 → 减1 → 得 DNLINL 计算DNL 的累积求和斜坡测试局限线性度仅 810 位高精度 ADC 需要更纯净的测试信号下一篇《正弦波直方图测试——突破斜坡精度瓶颈》我们将介绍如何用正弦波替代斜坡信号解决高精度 ADC 的静态测试难题并深入讲解正弦波 PDF 校正算法与 MATLAB 实现。