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,最低为5bit。
在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值越大,输出结果精度越高,反之,精度越低。