应
用
笔
记
AN018 用过采样和求均值提高 ADC 分辨率
相关器件
本应用笔记适用于下列器件
C8051F000
C8051F001 C8051F002 C8051F005 C8051F006 C8051F010 C8051F011
C8051F012 C8051F015 C8051F016 C8051F017
引言
很多应用需要使用模/数转换器
ADC
进行测量 这些应用所需要的分辨率取决于信号的动
态范围
必须测量的参数的最小变化和信噪比
SNR
因此 很多系统使用较高分辨率的片外ADC
然而也可以通过使用一些技术来达到较高的分辨率和SNR 本应用笔记介绍用过采样和求均值的方
法来提高模数转换的分辨率和SNR
过采样和求均值技术可以在不使用昂贵的片外ADC的情况下提
高测量分辨率
本应用笔记讨论如何使用过采样和求均值的方法来提高模/数转换
ADC
测量的分辨率 另
外
本文最后的附录A
B和C分别给出了对ADC噪声的深入分析
最适合过采样技术的ADC噪声
类型和使用过采样和求均值技术的示例代码
关键点
可用过采样和求均值技术提高测量分辨率 不必采用昂贵的片外ADC
过采样和求均值对SNR和测量分辨率的改善是以增加CPU时间和降低数据吞吐率为代价的
对于白噪声的情况
过采样和求均值可以改善信噪比
x(t)
x[n] x[n]+e[n]
OSR
输入信号
采样
频率(fs)
e[n](噪声)
过采样和平均
低通滤波器 降采样
(n+w)
位
输出数据
(软件累加和转储)
n
位
ADC
图 1. 用过采样和求均值使测量分辨率增加
W
位
AN018
用过采样和求均值提高
ADC
分辨率
数据转换器噪声源
ADC 转换时可能引入很多种噪声
例如 热噪声 杂色噪声 电源电压变化 参考电压变化
由采样时钟抖动引起的相位噪声以及由量化误差引起的噪声 由量化误差引起的噪声通常被称为量
化噪声
这些噪声源的噪声功率是可以变化的 有很多技术可用于减小噪声 例如 精心设计电路
板和在参考电压信号线上加旁路电容
但是 ADC 总是存在量化噪声 所以一个给定位数的数据转
换器的最大 SNR 由量化噪声
不使用过采样技术时 定义 在正确的条件下 过采样和求均值会
减小噪声和改善 SNR
这将有效地提高测量分辨率的位数 图 1 所示的系统可以用 Cygnal 的片内
ADC 和一个软件子程序来实现
软件程序先采样一组样本 然后求这些样本的平均值 滤波 而
得到结果
提高 ADC 测量的分辨率
很多应用需要测量大动态范围的信号值 还可能需要用高分辨率测量某个参数的微小变化 例
如
ADC 要测量很大的温度范围
还要求系统对小于 1 度的变化做出响应 这样的系统可能需要
16 位的测量分辨率
使用 Cygnal 的片内 12 位 ADC 并采用过采样和求均值技术即可达到以 16 位
分辨率测量某个参数的目的
而不必使用昂贵的片外 16 位 ADC
某些应用要使用 ADC 分析带有高频成分的信号
这样的系统也会从过采样和求均值技术受益
根据奈奎斯特定理 所要求的采样频率为奈奎斯特频率
f
n
= 2
·
f
m
其中
f
m
是输入信号的最高频率
方程 1. 奈奎斯特频率
采样频率
f
s
高于 f
n
则为过采样 过采样能提高测量分辨率 关于过采样提高测量分辨率的
原理请参见附录 A
根据要增加的分辨率计算过采样率
为了增加有效位数
ENOB
信号被过采样 或者说 ADC 以高于系统所需采样频率 f
s
的速率
对信号采样
所需要的采样频率由系统对参数测量所要求的频度 输出数据字的速率 决定 或者
是奈奎斯特频率 f
n
每增加一位分辨率
信号必须被以 4 倍的速率过采样
s
w
os
ff ⋅= 4
其中
w 是所希望增加的分辨率位数 f
s
是初始采样频率要求
f
os
是过采样频率
方程 2. 增加测量分辨率的过采样频率
附录 A 中介绍了方程 2 的一个导出方程
2 AN018-1.1 MAY01
AN018 用过采样和求均值提高 ADC 分辨率
假设一个系统使用 12 位的 ADC 每秒输出一个温度值
1Hz
为了将测量分辨率增加到 16
位 我们按下式计算过采样频率
HzHzf
os
256)(14
4
=⋅=
因此
如果我们以 f
s
=256Hz 的采样频率对温度传感器进行过采样
我们将在所要求的采样周
期内收集到足够的样本
对这些样本求均值便可得到 16 位的输出数据 为此 我们先累加 将 256
个连续样本加在一起 然后将总和除以 16 或将总和右移 4 位 这样的过程通常被称为
抽取
这样得到的结果是 16 位的有用数据 所做的操作被称为
累加和转储
一旦我们计算得到由 256 个
样本
对本例而言 所产生的结果 我们将对数据进行保存或处理 然后开始为下一个输出字采集
样本
注
用于累加过采样数据和进行除法运算的存储器单元的字节数必须足够多 以免发生溢出或
截断错误
附录 C 中给出了一个过采样和求均值的例子
在该例中 用片内 12 位 ADC 对片内温度传感
器采样
得到 16 位的测量结果 有关过采样对噪声的影响和提高分辨率的更深入的讨论见附录 A
根据要增加的
SNR
计算过采样率
在不进行过采样和求均值时
ADC 测量的 SNR 理论极限是由模数转换过程中固有的量化噪声
决定的
因为量化误差取决于 ADC 的分辨率位数 见方程 5 所以最好情况下的 SNR 值是数据
转换有效位数的函数
计算公式如下
76.1)02.6()(
+⋅=
ENOBdbSNR
其中
ENOB
是测量值的有效位数
方程 3. SNR 为 ENOB 的函数
方程 3 对
满度
输入有效 这就是说输入信号的动态范围必须与 ADC 的参考电压一致 否则实
际 SNR 比用方程 3 计算出来的值要低
如果用于测量某个参数的 ADC 是 12 位的并且不采用过采样技术
则最佳 SNR 值 方程 3 计
算
为 74dB 如果我们想得到更高的 SNR 则必须根据给定的 SNR 用方程 3 计算所需要的 ENOB
一旦我们知道所要求的 ENOB 即可用方程 2 计算所需要的过采样频率
例如
如果一个给定应用所要求的 SNR 为 90dB 则我们至少需要 16 位的分辨率 使用一个
12 位的 ADC 并根据方程 2 计算 我们知道必须以 256 倍的频率进行过采样
过采样和求均值法何时有效
过采样和求均值法的有效性取决于主要噪声源的特性 最关键的要求是噪声源应为白噪声 请
见附录 B 中对于能用过采样和求均值法改善的噪声源特性的讨论
要考虑的关键点是[2] [3]
噪声必须逼近白噪声
在整个有用频带内具有平均分布的功率谱密度
噪声幅度必须足够大 能引起输入信号样本之间的随机变化 变化幅度至少为两个相邻代
AN018-1.1 MAY01 3
AN018 用过采样和求均值提高 ADC 分辨率
码之间的距离 即 1 LSB 见附录 A 中的方程 5
输入信号可以用一个在两个相邻 ADC 代码之间具有等概率分布的随机变量表示
注 过采样和求均值不能补偿
ADC
的积分非线性误差
INL
过采样和求均值技术对相关或不能用白噪声模拟的噪声
例如 反馈系统的噪声 不起作用
另外 如果量化噪声的功率大于自然白噪声 例如热噪声 过采样和求均值技术也不会奏效
ADC
的分辨率较低时就属于这种情况
大多数使用 12 位 ADC 的应用都可以从过采样和求均值技术获益
有关这一问题的更深入的讨论请见附录 B
实例
本应用笔记的附录 C 中给出了一个使用过采样和求均值技术的例子 该程序使用 Cygnal 的片
内
100ksps 12 位 ADC 对片内温度传感器执行 16 位精度的测量
从硬件 UART 输出数据
根据方程 2
过采样率为 256 所提供的代码 在
AN018_SW.c
中 将 256 个连续的 ADC
样本累加到变量 accumulator
在完成累加后 又将 accumulator 右移 4 位并将结果存入变量 result
中
在得到计算结果后 accumulator 被清空 清 0 准备进行下一次计算 对 ADC 样本的累加是
在 ADC 转换完成中断服务程序
ADC_isr
中完成的
分辨率提高
我们使用过采样和求均值技术将对温度传感器的测量精度从 12 位提高到 16 位 让我们对温度
测量中的分辨率提高进行一下比较
片内温度传感器的满度输出略小于 1 伏
假设使用 2.4V 的参考电压
V
ref
我们可以计算对
于 12 位和 16 位测量的代码宽度和温度分辨率
可测量的最小温度变化
12 位温度分辨率
在不采用过采样技术的情况下 我们将得到 12 位的温度测量结果 温度每变化一个摄氏度
片内温度传感器的电压将变化 2.8mV 在使用 2.4V 的 V
ref
且 PGA 增益为 2 时 电压分辨率是 使
用附录 A 中的方程 5
CV
о
/293
22
4.2
12
µ=
⋅
=∆
∆ 是方程 5 中定义的代码宽度
分母中的因数 2 是考虑到 PGA 的增益为 2
12 位测量的温度分辨率是
每个 ADC 码所代表的摄氏度数
C/code.
mV.
C
code
V
res
T
o
o
10460
82
293
12
=⋅=
µ
T
res12
是
12
位测量的温度分辨率
因此
对于每个 ADC 码 我们可以测量的最小温度变化是 0.104 摄氏度 或者说大于十分之
4 AN018-1.1 MAY01
©2001Cygnal Integrated Products, Inc.
AN018 用过采样和求均值提高 ADC 分辨率
一度 可能我们会需要更高的温度分辨率以便能分辨百分之一度 通过使用过采样和求均值技术
我们可以用同一个 12 位 ADC 达到这个分辨率
16 位温度分辨率
用过采样和求均值技术使有效位数
ENOB
增加到 16 位时 新的分辨率计算如下
CV
o
/3.18
16
2
2.1
µ==∆
这样
我们可以测量的最小温度变化是
codeC
mV
C
code
V
T
res
/0065.0
8.2
3.18
16
o
o
=⋅=
µ
T
res16
是
16
位测量的温度分辨率
在采用过采样和求均值技术的情况下 我们用同一个片内 12 位 ADC 可以测量的最小温度变化
是 0.007 摄氏度
这就允许我们以高于百分之一度的精度对温度进行测量
数据吞吐率降低
吞吐率是指每单位时间我们能得到的输出数据字的个数 如果一个 ADC 的最大采样速率是
100ksps
在不采用过采样和求均值技术的情况下我们可以得到 100ksps 的输出字速率 但是 如果
我们为达到较高的分辨率而采用过采样和求均值技术 抽取 吞吐率将降低到初始值除以过采样
率
OSR
见方程 7 在我们所提供的例子中 过采样率为 256 我们的输出字速率将是
100ksps/256=390 个样本/秒
390Hz
由此可以看出 对于给定的采样速率 应在分辨率和吞吐率
之间权衡
另一个需要考虑的问题是 增加分辨率需要增加采样速率和计算时间 因此在每个采样
周期
1/f
s
内 CPU 的带宽降低
小结
如果 ADC 噪声近似为白噪声 就可以使用过采样和求均值技术来提高 SNR 和测量分辨率 该
技术适用于静态直流测量和含有较高频率成分的输入信号的测量
方程 2 说明 每增加一位分辨率
可以通过用 4 倍的过采样频率采样来达到
而分辨率每增加一位将使 SNR 增加 6 dB 方程 3 这
些都是以牺牲吞吐率和增加 CPU 带宽为代价的
AN018-1.1 MAY01 5