基于DSP C54x的数字滤波器设计
发布时间:2008/5/29 0:00:00 访问次数:446
一个实际的应用系统中,总存在各种干扰。使用dsp进行数字信号处理时,可以从噪声中提取信号,即对一个具有噪声和信号的混合源进行采样,然后经过一个数字滤波器,滤除噪声,提取有用信号。在系统设计中,滤波器的好坏将直接影响系统的性能。
数字滤波器设计
对于数字滤波器的系统函数可以表示为:
可以直接写成表示输出与输入的关系,即常系数线性差分方程,以下是iir滤波器的表达式:
当全部,即系统函数和单位抽样响应,则系统是fir。
其滤波结构图如图1所示—横向滤波结构。
图1 横向滤波器结构图
fir滤波算法实际上是一种乘法累加运算。它不断输入样本,经延时z-1,作乘法累加,再输出滤波结果y(n)。在这里使用fir滤波器,它有以下几个特点:
?系统的单位冲激响应h(n)在有限个n值处不为零;
?系统函数h(z)在z>0处收敛,在z>0处只有零点,有限z平面只有零点,而全部极点都在z=0处;
?结构主要是非递归结构,没有输出到输入的反馈。
本设计中ftsk输入数据中包含频率为800hz,1200hz,1600hz,2021hz,中心频率为1600hz,提取该频率的信号。利用matlab设计一个带通滤波器。具体参数为:采样频率为22050hz,通带宽度为250hz,则fpass1=1475hz,fpass2=1725hz,衰减1db,过渡带为200hz,则fstop1=1275hz,fstop2=1925hz,阻带衰减为30d b。运行matlab获得126阶的带通滤波器,并提取系数。
用线性缓冲区和带移位双操作数寻址方法实现fir滤波器
在这里介绍用线性缓冲区法实现z-1,其特点是:
?对于n级的fir滤波器,在数据存储区中开辟一个称之为滑窗的n个单元的缓冲区,存放最新的n个输入样本。
?从最老的样本开始,每读一个样本后,将此样本向下移位。读完最后一个样本后,输入最新样本至缓冲区的顶部。
在这里n=126,y(n)=
在数据存储区中存放系数a0~a125,并设置线性缓冲区存放输入数据。
具体实现程序如下:
.title “simfir126.asm”
.global _firinit ;两个汇编程序,可作为c语
言的调用,一个是初始化滤波器
.global _asmfir ;另一个是滤波器执行程序
.mmregs
x .usect “data1”,127
.bss data1,1
size .set 127
.data
coef ;从matlab中获得的滤波器系数
;滤波器初始化
_firinit:
ssbx frct
stm #x+(size-1),ar2
stm #(size-2),ar0
ret
;滤波器执行:
_asmfir:
stl a,*ar2+0
rptz a,#(size-2)
macd *ar2-,coef,a
sth a,*ar2
ld *ar2+,a
nop
nop
retd
nop
nop
.end
simulator仿真结果分析与硬件调试
仿真在系统调试中起着重要作用,ti公司也提供软件仿真器(simulator)来调试程序。其中提供的探测点(probe point)功能非常强大,它是一个开发算法的工具,将计算机文件数据传送到目标板的buffer提供dsp软件应用,同时可以将计算结果输出到计算机文件中供分析,也可以通过ccs提供的图形窗口观察输入输出数据情况。
在本设计中利用ccs提供的断点和探测点,指定ftsk数据文件的输入点,进行相关设定,同时利用ccs提供的图形窗口观察输入和输出的波形与频谱。运行程序,分别得到输入波形和频谱图(图2),输出波形和频谱图(图3)下面分别对这两个图形进行分析。
图2 输入信号的波形和频谱图
图3 输出信号的波形和频谱图
由图2输入信号的波形图可以看出,输入是有四个不同频率调制的波形。左边第一种图形在一个周期内占大约1格,而一格所占的时间为0.00605/10=0.605ms,所以周期大约为t1=0.605*1=0.605ms,频率为1652hz。最右边的图形一个周期内约占0.8格,t2=0.605*0.8=0.484ms,频率约为2066hz。中间的两个图形在一个周期内分别约占2格和1.3格,周期分别约为t3=0.605*2=1.21ms,频率约为826hz,t4=0.605*1.3=0.7865ms,频率约为1271hz。这四个频率与输入的800hz,1200hz,1600hz,2021hz基本相同。由图中的输入频谱同样可以看出有四个频率的输入波形,其频率分别约为2756*3/10=826.8hz,2756*4.5/10=1240hz,2756*6/10=1653hz,2756*7.5/10=2067hz,与输入的800hz,1200h
一个实际的应用系统中,总存在各种干扰。使用dsp进行数字信号处理时,可以从噪声中提取信号,即对一个具有噪声和信号的混合源进行采样,然后经过一个数字滤波器,滤除噪声,提取有用信号。在系统设计中,滤波器的好坏将直接影响系统的性能。
数字滤波器设计
对于数字滤波器的系统函数可以表示为:
可以直接写成表示输出与输入的关系,即常系数线性差分方程,以下是iir滤波器的表达式:
当全部,即系统函数和单位抽样响应,则系统是fir。
其滤波结构图如图1所示—横向滤波结构。
图1 横向滤波器结构图
fir滤波算法实际上是一种乘法累加运算。它不断输入样本,经延时z-1,作乘法累加,再输出滤波结果y(n)。在这里使用fir滤波器,它有以下几个特点:
?系统的单位冲激响应h(n)在有限个n值处不为零;
?系统函数h(z)在z>0处收敛,在z>0处只有零点,有限z平面只有零点,而全部极点都在z=0处;
?结构主要是非递归结构,没有输出到输入的反馈。
本设计中ftsk输入数据中包含频率为800hz,1200hz,1600hz,2021hz,中心频率为1600hz,提取该频率的信号。利用matlab设计一个带通滤波器。具体参数为:采样频率为22050hz,通带宽度为250hz,则fpass1=1475hz,fpass2=1725hz,衰减1db,过渡带为200hz,则fstop1=1275hz,fstop2=1925hz,阻带衰减为30d b。运行matlab获得126阶的带通滤波器,并提取系数。
用线性缓冲区和带移位双操作数寻址方法实现fir滤波器
在这里介绍用线性缓冲区法实现z-1,其特点是:
?对于n级的fir滤波器,在数据存储区中开辟一个称之为滑窗的n个单元的缓冲区,存放最新的n个输入样本。
?从最老的样本开始,每读一个样本后,将此样本向下移位。读完最后一个样本后,输入最新样本至缓冲区的顶部。
在这里n=126,y(n)=
在数据存储区中存放系数a0~a125,并设置线性缓冲区存放输入数据。
具体实现程序如下:
.title “simfir126.asm”
.global _firinit ;两个汇编程序,可作为c语
言的调用,一个是初始化滤波器
.global _asmfir ;另一个是滤波器执行程序
.mmregs
x .usect “data1”,127
.bss data1,1
size .set 127
.data
coef ;从matlab中获得的滤波器系数
;滤波器初始化
_firinit:
ssbx frct
stm #x+(size-1),ar2
stm #(size-2),ar0
ret
;滤波器执行:
_asmfir:
stl a,*ar2+0
rptz a,#(size-2)
macd *ar2-,coef,a
sth a,*ar2
ld *ar2+,a
nop
nop
retd
nop
nop
.end
simulator仿真结果分析与硬件调试
仿真在系统调试中起着重要作用,ti公司也提供软件仿真器(simulator)来调试程序。其中提供的探测点(probe point)功能非常强大,它是一个开发算法的工具,将计算机文件数据传送到目标板的buffer提供dsp软件应用,同时可以将计算结果输出到计算机文件中供分析,也可以通过ccs提供的图形窗口观察输入输出数据情况。
在本设计中利用ccs提供的断点和探测点,指定ftsk数据文件的输入点,进行相关设定,同时利用ccs提供的图形窗口观察输入和输出的波形与频谱。运行程序,分别得到输入波形和频谱图(图2),输出波形和频谱图(图3)下面分别对这两个图形进行分析。
图2 输入信号的波形和频谱图
图3 输出信号的波形和频谱图
由图2输入信号的波形图可以看出,输入是有四个不同频率调制的波形。左边第一种图形在一个周期内占大约1格,而一格所占的时间为0.00605/10=0.605ms,所以周期大约为t1=0.605*1=0.605ms,频率为1652hz。最右边的图形一个周期内约占0.8格,t2=0.605*0.8=0.484ms,频率约为2066hz。中间的两个图形在一个周期内分别约占2格和1.3格,周期分别约为t3=0.605*2=1.21ms,频率约为826hz,t4=0.605*1.3=0.7865ms,频率约为1271hz。这四个频率与输入的800hz,1200hz,1600hz,2021hz基本相同。由图中的输入频谱同样可以看出有四个频率的输入波形,其频率分别约为2756*3/10=826.8hz,2756*4.5/10=1240hz,2756*6/10=1653hz,2756*7.5/10=2067hz,与输入的800hz,1200h
上一篇:ST CAN滤波车用微控制器