【芯片测试】:斜坡直方图测试

目录

  • [斜坡直方图测试(Ramp Histogram Testing)](#斜坡直方图测试(Ramp Histogram Testing))
    • [ADC 静态特性测试完整指南](#ADC 静态特性测试完整指南)
    • 一、基础概念:理解ADC的"格子"
      • [1.1 ADC是什么](#1.1 ADC是什么)
      • [1.2 量化与LSB](#1.2 量化与LSB)
      • [1.3 转换点](#1.3 转换点)
    • [二、核心指标:DNL 与 INL](#二、核心指标:DNL 与 INL)
      • [2.1 DNL------微分非线性](#2.1 DNL——微分非线性)
      • [2.2 INL------积分非线性](#2.2 INL——积分非线性)
      • [2.3 合格标准](#2.3 合格标准)
      • [2.4 DNL 与 INL 的关系示例](#2.4 DNL 与 INL 的关系示例)
    • 三、为什么需要直方图测试
      • [3.1 传统方法的问题:伺服环路法](#3.1 传统方法的问题:伺服环路法)
      • [3.2 直方图测试的核心思路](#3.2 直方图测试的核心思路)
    • 四、斜坡直方图测试
      • [4.1 测试装置](#4.1 测试装置)
      • [4.2 核心原理](#4.2 核心原理)
      • [4.3 斜坡速率要求](#4.3 斜坡速率要求)
    • 五、参数设计与计算
      • [5.1 采样点数与测量分辨率的关系](#5.1 采样点数与测量分辨率的关系)
      • [5.2 测试参数完整推导示例](#5.2 测试参数完整推导示例)
      • [5.3 分辨率与速度的权衡](#5.3 分辨率与速度的权衡)
      • [5.4 高分辨率ADC的速度瓶颈](#5.4 高分辨率ADC的速度瓶颈)
    • [六、DNL 提取的完整五步流程](#六、DNL 提取的完整五步流程)
      • [第 1 步:去掉首尾码(Over-range Bins)](#第 1 步:去掉首尾码(Over-range Bins))
      • [第 2 步:计算理想平均次数](#第 2 步:计算理想平均次数)
      • [第 3 步:归一化](#第 3 步:归一化)
      • [第 4 步:减去 1,得到 DNL](#第 4 步:减去 1,得到 DNL)
      • [第 5 步:累加 DNL 得到 INL](#第 5 步:累加 DNL 得到 INL)
    • [七、从 DNL 重建转换曲线](#七、从 DNL 重建转换曲线)
      • [7.1 计算每个码的实际步长](#7.1 计算每个码的实际步长)
      • [7.2 计算转换点精确位置](#7.2 计算转换点精确位置)
      • [7.3 最终结论](#7.3 最终结论)
    • [八、本例 ADC 综合评价](#八、本例 ADC 综合评价)
    • 九、知识全景图
    • 十、关键公式速查

斜坡直方图测试(Ramp Histogram Testing)

ADC 静态特性测试完整指南


一、基础概念:理解ADC的"格子"

1.1 ADC是什么

ADC(Analog-to-Digital Converter,模数转换器)将连续的模拟电压转换为离散的数字码。

复制代码
连续模拟电压  →  [ADC]  →  离散数字码
    1.247V              →     0101

1.2 量化与LSB

3位ADC 为例,输出 2³ = 8 个码(000~111),将全量程(0 到 V_REF)均匀分为 8 格:

输入电压范围 数字输出码
0.000 ~ 0.125 V_REF 000
0.125 ~ 0.250 V_REF 001
0.250 ~ 0.375 V_REF 010
... ...
0.875 ~ 1.000 V_REF 111

关键定义:

  • LSB(Least Significant Bit):最低有效位对应的电压,即每格的理想宽度
  • 量化:把连续电压"取整"到最近的码
  • 理想ADC:每个码的步长完全等于 1 LSB

1.3 转换点

相邻两个码之间的边界电压称为转换点。N 位 ADC 有 2ᴺ - 1 个转换点,理想情况下相邻转换点间距均为 1 LSB。


二、核心指标:DNL 与 INL

2.1 DNL------微分非线性

DNL(Differential NonLinearity) 衡量每个码的实际步长与理想步长(1 LSB)的偏差:

DNL [ k ] = 实际步长 [ k ] − 1 LSB \text{DNL}[k] = \text{实际步长}[k] - 1\ \text{LSB} DNL[k]=实际步长[k]−1 LSB

直观理解:

  • DNL = 0:该码步长完美,等于 1 LSB
  • DNL > 0:步长偏大(阶梯偏宽)
  • DNL < 0:步长偏小(阶梯偏窄)
  • DNL = -1 LSB :步长为零,该码完全消失,称为缺失码(Missing Code)

2.2 INL------积分非线性

INL(Integral NonLinearity) 是 DNL 的累积求和,反映转换曲线整体偏离理想直线的程度:

INL [ k ] = ∑ i = 0 k DNL [ i ] \text{INL}[k] = \sum_{i=0}^{k} \text{DNL}[i] INL[k]=i=0∑kDNL[i]

直观比喻:

  • DNL = 每走一步偏了多少
  • INL = 走了 k 步后总共偏离了多远

2.3 合格标准

指标 合格条件 意义
DNL |DNL| < 0.5 LSB 无缺失码
INL |INL| < 1 LSB 线性度良好

2.4 DNL 与 INL 的关系示例

以本讲 3 位 ADC 为例:

DNL INL(累加)
1 0 0
2 +0.4 LSB +0.4 LSB
3 0 +0.4 LSB
4 0 +0.4 LSB
5 -0.4 LSB 0
6 0 0

码 2 步长偏宽 → INL 在码 2~4 处累积到 +0.4 LSB;码 5 步长偏窄 → INL 被"补回"到 0。


三、为什么需要直方图测试

3.1 传统方法的问题:伺服环路法

伺服环路法通过闭环反馈,让电路自动"锁定"到每一个转换点,再用高精度电压表读取该边界电压。

工作流程:

  1. 设定目标码 k
  2. ADC 输出 > k → 降低输入电压
  3. ADC 输出 ≤ k → 升高输入电压
  4. 反复震荡,收敛至转换边界
  5. 电压表读取精确边界值

致命缺点:每个边界单独测量,速度极慢。

N 位 ADC 有 2ᴺ - 1 个转换点需逐一测量。

3.2 直方图测试的核心思路

统计方法替代精密电压扫描:不逐点测量转换电压,而是通过统计每个输出码出现的次数,反推每个码的步长。

沙子比喻:把沙子均匀撒在尺子上,数每格的沙粒数 → 沙粒多的格子宽,沙粒少的格子窄。


四、斜坡直方图测试

4.1 测试装置

复制代码
斜坡信号发生器(0 → V_REF)  →  ADC  →  PC(记录输出码)
                                ↑
                          V_REF,采样率 fₛ

组成要素:

  • 斜坡信号源:产生从 0 线性上升到 V_REF 的缓慢斜坡
  • 被测 ADC:以固定采样率 fₛ 采样
  • PC:记录每次输出码,统计直方图

4.2 核心原理

斜坡匀速上升时,时间与电压成正比。某个码的区间(格子)越宽,斜坡在其中停留时间越长,被采样到的次数就越多:

采样次数 ∝ 码的实际步长 \text{采样次数} \propto \text{码的实际步长} 采样次数∝码的实际步长

现象 对应含义
某码采样次数多 步长偏大,DNL > 0
某码采样次数少 步长偏小,DNL < 0
某码采样次数 = 0 缺失码,DNL = -1 LSB

4.3 斜坡速率要求

斜坡变化速率必须远慢于 ADC 的采样速率,确保每个码区间内有足够多的采样点:

斜坡斜率 = 1 LSB n ⋅ T S \text{斜坡斜率} = \frac{1\ \text{LSB}}{n \cdot T_S} 斜坡斜率=n⋅TS1 LSB

其中 n 为每个码所需采样次数,Tₛ = 1/fₛ 为采样间隔。


五、参数设计与计算

5.1 采样点数与测量分辨率的关系

测量分辨率(resolution)指可分辨的最小 DNL 增量。每个码采集 n 次时,相差 1 次采样对应的 DNL 变化为 1/n LSB,因此:

n = 1 ε \boxed{n = \frac{1}{\varepsilon}} n=ε1

其中 ε 为期望的测量分辨率(单位:LSB)。

例:希望分辨率为 0.01 LSB → n = 1/0.01 = 100 次/码

5.2 测试参数完整推导示例

已知条件:

  • 采样率 fₛ = 100 kHz,采样间隔 Tₛ = 10 μs
  • 1 LSB = 10 mV
  • 目标分辨率:0.01 LSB
参数 计算过程 结果
每码采样数 n 1 / 0.01 100 次
每码持续时间 n × Tₛ = 100 × 10 μs 1 ms
斜坡斜率 1 LSB / 1 ms = 10 mV / 1 ms 10 mV/ms

5.3 分辨率与速度的权衡

分辨率越高 → 需要采样点越多 → 斜坡越慢 → 测试时间越长(以 fₛ = 100 kHz、8 位 ADC 为例):

目标分辨率 n = 1/ε 每码时间 8位ADC总时间(256码)
0.1 LSB 10 0.1 ms 25.6 ms
0.05 LSB 20 0.2 ms 51.2 ms
0.02 LSB 50 0.5 ms 128 ms
0.01 LSB 100 1 ms 256 ms
0.005 LSB 200 2 ms 512 ms

5.4 高分辨率ADC的速度瓶颈

总测试时间公式:

总测试时间 = 2 N × n f S \text{总测试时间} = \frac{2^N \times n}{f_S} 总测试时间=fS2N×n

16 位 ADC 为例(每码 100 次,采样率 100 kHz):

总测试时间 = 2 16 × 100 100,000 = 65,536 × 100 100,000 = 65.6 秒 \text{总测试时间} = \frac{2^{16} \times 100}{100{,}000} = \frac{65{,}536 \times 100}{100{,}000} = \textbf{65.6 秒} 总测试时间=100,000216×100=100,00065,536×100=65.6 秒

不同位数对比(每码 n = 100 次,fₛ = 100 kHz):

ADC 位数 码的数量 总测试时间 量产可行性
8 位 256 0.26 秒
12 位 4,096 4.1 秒
14 位 16,384 16.4 秒 ⚠️
16 位 65,536 65.6 秒
18 位 262,144 262 秒

位数每增加 1 位,测试时间翻倍。斜坡法对 ≥ 14 位的高精度 ADC 不适用于量产测试。


六、DNL 提取的完整五步流程

以 3 位 ADC 实测数据为例:

原始直方图数据:

采样次数
0 200(边界)
1 100
2 140
3 100
4 100
5 60
6 100
7 200(边界)

第 1 步:去掉首尾码(Over-range Bins)

移除码 0 和码 7。

原因:斜坡从 0 开始、到 V_REF 结束,首尾两个码受边界效应影响(实际范围超出量程),采样次数异常偏多,不反映真实步长。

剩余有效码:码 1 ~ 码 6

第 2 步:计算理想平均次数

H a v g = 总次数 有效码数 = 100 + 140 + 100 + 100 + 60 + 100 6 = 600 6 = 100 次 H_{avg} = \frac{\text{总次数}}{\text{有效码数}} = \frac{100+140+100+100+60+100}{6} = \frac{600}{6} = \textbf{100 次} Havg=有效码数总次数=6100+140+100+100+60+100=6600=100 次

这个 100 就是基准------代表步长完全理想时每个码应有的采样次数。

第 3 步:归一化

每个码的采样次数除以平均值:

归一化值 [ k ] = H [ k ] H a v g \text{归一化值}[k] = \frac{H[k]}{H_{avg}} 归一化值[k]=HavgH[k]

采样次数 归一化值
1 100 1.0
2 140 1.4
3 100 1.0
4 100 1.0
5 60 0.6
6 100 1.0

解读:归一化值 = 1.0 完美;> 1.0 步长偏大;< 1.0 步长偏小。

第 4 步:减去 1,得到 DNL

DNL [ k ] = H [ k ] H a v g − 1 \text{DNL}[k] = \frac{H[k]}{H_{avg}} - 1 DNL[k]=HavgH[k]−1

归一化值 DNL
1 1.0 0
2 1.4 +0.4 LSB
3 1.0 0
4 1.0 0
5 0.6 -0.4 LSB
6 1.0 0

验证:所有 DNL 之和 = 0 + 0.4 + 0 + 0 - 0.4 + 0 = 0

第 5 步:累加 DNL 得到 INL

INL [ k ] = ∑ i = 1 k DNL [ i ] \text{INL}[k] = \sum_{i=1}^{k} \text{DNL}[i] INL[k]=i=1∑kDNL[i]

DNL INL
1 0 0
2 +0.4 +0.4 LSB
3 0 +0.4 LSB
4 0 +0.4 LSB
5 -0.4 0
6 0 0

七、从 DNL 重建转换曲线

7.1 计算每个码的实际步长

码宽 [ k ] = DNL [ k ] + 1 LSB \text{码宽}[k] = \text{DNL}[k] + 1\ \text{LSB} 码宽[k]=DNL[k]+1 LSB

DNL 实际码宽
1 0 1.0 LSB
2 +0.4 1.4 LSB
3 0 1.0 LSB
4 0 1.0 LSB
5 -0.4 0.6 LSB
6 0 1.0 LSB

7.2 计算转换点精确位置

各转换点位置 = 前面所有码宽累加:

转换点 实际位置 理想位置 偏差(= INL)
1→2 1.0 LSB 1.0 LSB 0
2→3 2.4 LSB 2.0 LSB +0.4 LSB
3→4 3.4 LSB 3.0 LSB +0.4 LSB
4→5 4.4 LSB 4.0 LSB +0.4 LSB
5→6 5.0 LSB 5.0 LSB 0
6→7 6.0 LSB 6.0 LSB 0

转换点偏差 = INL,与累加 DNL 计算结果完全一致,互相验证。✓

7.3 最终结论

一次斜坡直方图测试可以得到:

输出信息 来源
每个码的 DNL 直接从直方图计算
每个码的实际步长 DNL + 1 LSB
每个转换点的精确位置 步长累加
每个码的 INL DNL 累加,或转换点与理想对比
完整的 ADC 转换曲线 所有转换点连线

八、本例 ADC 综合评价

指标 测量值 合格线 结论
最大 |DNL| 0.4 LSB < 0.5 LSB ✅ 合格,无缺失码
最大 |INL| 0.4 LSB < 1 LSB ✅ 合格,线性度良好

九、知识全景图

复制代码
[基础]
ADC → 量化 → LSB → 码与格子
        ↓
[误差指标]
DNL(每码步长偏差)→ INL(累积偏差)
        ↓
[为什么需要测试?]
制造误差 → 步长不均 → 需要量化误差大小
        ↓
[测试方法选择]
伺服环路法(精密/慢) ← → 直方图法(快速/统计)
        ↓
[斜坡直方图测试]
斜坡输入 → ADC采样 → 统计直方图
        ↓
[参数设计]
分辨率要求 → 每码采样数 n = 1/ε → 斜坡斜率 → 总测试时间
        ↓
[五步计算流程]
① 去掉首尾码
② 计算平均次数 H_avg
③ 归一化:H[k] / H_avg
④ 减 1:得到 DNL
⑤ 累加:得到 INL
        ↓
[最终输出]
DNL图 + INL图 + 完整转换曲线

十、关键公式速查

公式 说明
n = 1 / ε n = 1/\varepsilon n=1/ε 分辨率 ε(LSB)对应的每码采样数
每码时间 = n × T S \text{每码时间} = n \times T_S 每码时间=n×TS 斜坡在每个码上停留的时间
斜坡斜率 = 1 LSB n ⋅ T S \text{斜坡斜率} = \dfrac{1\ \text{LSB}}{n \cdot T_S} 斜坡斜率=n⋅TS1 LSB 斜坡的变化速率
总测试时间 = 2 N × n f S \text{总测试时间} = \dfrac{2^N \times n}{f_S} 总测试时间=fS2N×n N 位 ADC 的总测试时长
H a v g = ∑ k = 1 2 N − 2 H [ k ] 2 N − 2 H_{avg} = \dfrac{\sum_{k=1}^{2^N - 2} H[k]}{2^N - 2} Havg=2N−2∑k=12N−2H[k] 去掉首尾后的平均采样次数
DNL [ k ] = H [ k ] H a v g − 1 \text{DNL}[k] = \dfrac{H[k]}{H_{avg}} - 1 DNL[k]=HavgH[k]−1 从直方图计算 DNL
INL [ k ] = ∑ i = 1 k DNL [ i ] \text{INL}[k] = \sum_{i=1}^{k} \text{DNL}[i] INL[k]=∑i=1kDNL[i] 从 DNL 计算 INL
码宽 [ k ] = DNL [ k ] + 1 LSB \text{码宽}[k] = \text{DNL}[k] + 1\ \text{LSB} 码宽[k]=DNL[k]+1 LSB 实际步长

相关推荐
Meraki.Zhang2 个月前
【芯片测试】:SmarTest 8:Usage of Test Tables 运行机制总结
芯片测试·93k
Meraki.Zhang2 个月前
【芯片测试】:SmarTest 8 Binning 运行机制总结
芯片测试·bin·93k
Meraki.Zhang5 个月前
【芯片测试篇】:SmarTest 8 三温和三压测试程序的搭建
芯片测试·ate·93k
FORCREAT-苏州永创6 个月前
半导体静态电性测试系统如何实现对各类电子元器件的评估测试?
半导体·芯片测试·半导体功率器件·静态参数测试仪
FORCREAT-苏州永创6 个月前
从实验室到产线:苏州永创-STD2000X如何统一分立器件静态参数测试仪的“语言”?
半导体·芯片测试·测试系统·cmti·cmti测试系统·半导体功率器件·静态参数测试仪
FORCREAT-苏州永创6 个月前
探秘半导体“体检中心”:如何为一颗芯片做静态参数测试?
半导体·芯片测试·测试系统·cmti·cmti测试系统·半导体功率器件·静态参数测试仪
Meraki.Zhang10 个月前
【芯片测试篇】:93K测试机I2C的设置和调试
i2c·芯片测试·ate测试·93k
XINERTEL2 年前
如何利用仪表构造InfiniBand流量在数据中心测试中的应用
开发语言·php·数据中心·芯片测试·时延测试
北京锦正茂科技有限公司2 年前
晶圆测试是什么?为什么要进行晶圆测试?
半导体·芯片测试·晶圆测试·材料·探针台·测试系统