历史上的今天
今天是:2024年10月19日(星期六)
2020年10月19日 | 单片机A/D采样的过程_梳状滤波器的认识
2020-10-19 来源:elecfans
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值越大,输出结果精度越高,反之,精度越低。
史海拾趣
|
DSP研发应用不断发展,嵌入式处理器在过去几年来技术也在不断进步,在医疗影像领域之中有广泛的应用。随着技术的不断发展,嵌入式处理器能帮助医疗仪器达到更快的诊断速度、更高的准确度,同事护理的成本也相应降低,使患者自我护理逐渐成 ...… 查看全部问答> |
|
我用的是C#写的,写在paint事件中,运行不到那里 我就改到构造函数中去绘制同样也没有显示出来 public ucDrawLine() { InitializeComponent(); &nb ...… 查看全部问答> |
|
驱动的makefile、sourse还有ini文件该怎么写? 请问一下,文件系统过滤驱动程序编译需要的makefile和source文件怎么来写,我编写时是使用的ifs kit中sfilter过滤驱动中的原文件修改。但编译后nms翻译提示没有时间戳和可能过期,还有安装后重起进不了系统。请高手 ...… 查看全部问答> |
|
小弟在看ARM的汇编的时候,发现里面的指令用法不明白!! 如: MOVEQ R0,#1 BEQ POW_END 这里的执行条件EQ,什么意思? MOVHS R0,#0 这条语句中HS什么意思? 望大侠赐教!!!… 查看全部问答> |




