对于MSP430单片机中的A/D过采样率的理解一直比较模糊,今天认真的研究了一下,终于弄清楚了,
现在写出来,欢迎大家前来拍砖。
===============================================================================
MSP430单片机中有很多A/D采样模块使用的是具有∑-△结构的SD16或者SD16_A模块,该模块中具有过
采样率(OSR,Oversampling ratio)的设置寄存器。这个寄存器不同的设置值在A/D采样的过程中到
底会产生怎样的影响呢?
在TI的手册中我们可以知道,OSR是SINC3梳状滤波器的一个参数,首先,来学习一下梳状滤波器。
1、 梳状滤波器的定义:是由许多按一定频率间隔相同排列的通带和阻带,只让某些特定频率范围的
信号通过。梳状滤波器其特性曲线像梳子一样,故称为梳状滤波器。
2、 梳状滤波器是一种最简单的FIR滤波器,其单位脉冲响应h(n)全为1,
h(n)=1 ,0≤n≤N-1;0 其它
传输函数的Z变换形式: H(z)=∑z^-n=(1-z^-N)/(1-z^-1) ,n=0...N-1
上式中,N为滤波器的节数。
这样得到的滤波器阻带衰减较小,不能满足实际的需要。为了提高滤波器的阻带衰减,可采用修正的
梳状滤波器形式: H(z)=((1-z^-N)/(N*(1-z^-1)))^k
上式中,N为滤波器的节数,K为滤波器的阶数。引入K以后,其阻带衰减特性成K倍增大,而且阻带边
缘变得更为陡峭,使滤波器的特性变得更好。
3、 在∑-△A/D转换器中,∑-△调制器的输出经梳状滤波器滤波抽取后量化噪声的频谱密度保持了
没有抽取前的形式,即保持了∑-△调制器噪声成型的频谱特性。但采样间隔增大的N倍(即数据率减
少了N倍),等效量化台阶减少了NK倍。若N为2的整数幂N=2m,则相当于经过滤波抽取后,其分辨率由
输入的1bit变成了mK bit。
4、 梳状滤波器的设计:梳状滤波器是一种固定形式的滤波器,它包括以下三个参数的选择:1)单
级滤波器的节数N;2)滤波器的阶数K;3)滤波器系数及运算的有限字长。
单级滤波器的节数N:等于∑-△A/D中的第一级的抽取率。
滤波器的阶数K:等于∑-△调制器的回路数。
滤波器系数及运算的有限字长:若不计归一化因子N-K,则滤波器系数均为正整数,且∑h(n)=N^K
,n=0...N-1
因此可用
b=K*log2N=Km
位的二进制码来表示滤波器的系数。同时,若∑-△调制器的输出为1bit数(仅0,1两个状态),则
滤波器输出 y(n)=∑h(m)x(n-m) ,m=0...N-1
显示有 0≤y(n)≤N^K
因此上式的滤波器运算亦可用mK位的二进制进行,不会出现截尾误差和溢出。
综上,可以选择滤波器的有效字长为mK。实际这也就是梳状滤波器输出的有效分辨率。
现在我们言归正传。
在TI的手册中我们可以知道,从∑-△调制器的1bit数据流通过SINC3梳状滤波器进行滤波。OSR是
SINC3梳状滤波器的一个参数,该滤波器的Z变换形式为: H(z)=( (1-z^-OSR)/(OSR*(1-z^-1)) )^3
对比上面的公式易知,OSR=N=2^m,K=3。
当OSR=256=28时,梳状滤波器输出的有效分辨率长度为: b=Klog2N=Km=3*8=24
当OSR=1024=210时,梳状滤波器输出的有效分辨率长度为b=3*10=30bit。
由此可见,OSR的值影响A/D采样后的输出结果的有效分辨率长度,即精度。因此,可以在不增加A/D
前端复杂程度的基础上,通过增加OSR的值达到提高输出精度的目的。
在SD16中,OSR的取值为{32,64,128,256},所以SD16的滤波器输出精度最高为24bit,最低为
15bit。
在SD16_A中,OSR的值为{32,64,128,256,512,1024},所以SD16_A的滤波器输出精度最高为
30bit。
由于SD16和SD16_A的输出寄存器均为16bit,对于滤波器输出精度高于16bit的,根据寄存器的设置,
截取滤波器输出结果的16bit;滤波器输出精度不足16bit的,根据寄存器的设置,对不足的位补0。
综上,过采样率OSR在SD16或SD16_A的A/D采样模块中,能够影响转换结果的精度,OSR值越大,输出
结果精度越高,反之,精度越低。
(由于原文是在word中编排,有很多公式复制后不能正常显示)
参考文献:梳状滤波器在∑-△ A/D中的应用
扩展阅读:MSP430-AD12的个人深入了解