实验四综合实验FIR滤波器的设计
数字信号处理技术应用设计性实验任务书
项目: 基于DSP 的FIR 带通滤波器设计
一. FIR 滤波器的基本结构及设计方法
设h(n)(n=0,1,2,,N-1)为滤波器的冲激响应,输入信号为x(n),则FIR 滤波器就是要实现差分方程
1
式(1)就是FIR 滤波器的差分方程.FIR 滤波器的最主要的特点是没有反馈回路,因此,它是无条件稳定系统.它的单位脉冲响应h(n)是一个有限长序列.由上面的方程可见,FIR 滤波算法实际上是一种乘法累加运算,它不断地输入样本x(n),经延时做乘法累加,再输出滤波结果y(n)[1].对式(1)进行Z 变换,整理后可得FIR 滤波器的传递函数为
2
由式(2)可以看出,FIR 滤波器的一般结构如图
FIR 滤波器的设计方法有窗函数设计法和频率采样设计法"窗函数设计法的基本思想是要选取某一适合的理想频率特性选择性滤波器,然后将它的脉冲响应截断以得到一个线性相位和因果的FIR 滤波器"因此,这种方法的重点在于选择某种恰当的窗函数和一种合适的理想滤波器"设所希望得到的滤波器的理想响应为
3
那么FIR 滤波器的设计就是在于寻找一个传递函数:()j H e
4
5
由于h d(n)的矩形频率特性,故h d(n)一定是无限长的序列,而且是非因果的"要设计的FIR滤波器其h(n)必然是有限长的,所以要用有限长h(n)的来逼近无限长的h d(n),最有效的方法是截断h d(n),或者说用一个有限长的窗口函数序列w(n)来截取h d(n),即
6 因而,窗口函数序列的形状及长度选择很关键。在设计过程中,可由所设计滤波器的过渡带宽和阻带最小衰减的要求选定窗函数w(n)的形状"
二.基于DSP的FIR带通滤波器设计
设计一个FIR型带通滤波器,其设计参数:滤波器阶数为90,截止频率是[4π/15 2π/3]采用布莱克曼窗。
1滤波器系数的确定(用MATLAB)
close all;clear;
wp=[4/15 2/3]
hn=fir1(90,wp,blackman(90+1))
%以下为绘图部分
n=0:90;
figure(1)
stem(n,hn,'.');
xlabel('n');ylabel('h(n)');
figure(2)
freqz(hn,1,512) 滤波器的单位脉冲响应h(n)
00.10.2
0.30.40.50.60.7
0.80.91
-6000
-4000-200002000Normalized Frequency (?π rad/sample)
P h a s e (d e g r e e s )
0.1
0.2
0.30.40.50.60.70.80.9
1
-150
-100-50050Normalized Frequency (?π rad/sample)
M a g n i t u d e (d B )
滤波器的频率特性图
在命令窗口输入命令b=round(hn*2^15),将系数转换成Q15格式,并将其放置在DSP 汇编程序的coff.inc 文件中。 其中coff.inc 内容如下: N .set 91 coff:
.word 0 , 0 , 1 , 1 , -2 , 0 , -4 , -8 , 11 , 11
.word 0 , 21 , -14 , -56 ,
5 , 0 , -7 , 121 , 4
6 , -98
.word 0 , -120 , -186 , 216 , 186 , 0 , 277 , -174 , -628 , 47
.word 0 , -61 , 1058 , 381 , -797 , 0 , -936 , -1459 , 1719 , 1538
.word 0 , 2712 , -2007 , -9626 , 1279 , 13108 , 1279 , -9626 , -2007 , 2712
.word 0 , 1538 , 1719 , -1459 , -936 , 0 , -797 , 381 , 1058 , -61
.word 0 , 47 , -628 , -174 , 277 , 0 , 186 , 216 , -186 , -120
.word 0 , -98 , 46 , 121 , -7 , 0 , 5 , -56 , -14 , 21
.word 0 , 11 , 11 , -8 , -4 , 0 , -2 , 1 , 1 , 0
.word 0
2、产生滤波器输入信号的文件
用MATLAB产生混合信号,程序如下:
clear;
clear all
fs=200;
f1=10;
f2=40;
f3=80;
t=0:128;
N=512;
s=sin(2*pi*f1*t/fs)+sin(2*pi*f2*t/fs)+sin(2*pi*f3*t/fs);%混合信号y=fft(s,N);
f=(0:length(y)-1)'*fs/length(y);
y1=abs(y);
subplot(2,1,1);
plot(s);
title('混合信号')
subplot(2,1,2);
plot(f,y1);
title('混合信号的频率特性')
其幅频相频曲线如图:
将系数转换成Q15格式b=round(1/3*s*2^15),注意将信号幅度减小到1/3,目的是为了使其幅度小于1,并将其放置在DSP汇编程序的inputdata.inc文件中。
其中inputdata.inc内容如下:
M .set 129
INPUT:
.word 0 , 20184 , 2452 , 12805, -6420,10923, 27196 , 4869 , 10388 , -13433 .word 0,13433, -10388 , -4869 , -27196 , -10923 , 6420 , -12805 , -2452 , -20184
.word 0 , 20184 , 2452 , 12805 , -6420 , 10923 , 27196 , 4869 , 10388 , -13433 .word 0 , 13433 , -10388 , -4869 , -27196 , -10923 , 6420 , -12805 , -2452 , -20184 .word 0 , 20184 , 2452 , 12805 , -6420 , 10923 , 27196 , 4869 , 10388 , -13433 .word 0 , 13433 , -10388 , -4869 , -27196 , -10923 , 6420 , -12805 , -2452 , -20184
.word 0 , 20184 , 2452 , 12805 , -6420 , 10923 , 27196 , 4869 , 10388 , -13433
.word 0 , 13433 , -10388 , -4869 , -27196 , -10923 , 6420 , -12805 , -2452 , -20184 .word 0 , 20184 , 2452 , 12805 , -6420 , 10923 , 27196 , 4869 , 10388 , -13433 .word 0 , 13433 , -10388 , -4869 , -27196 , -10923 , 6420 , -12805 , -2452 , -20184
.word 0 , 20184 , 2452 , 12805 , -6420 , 10923 , 27196 , 4869 , 10388 , -13433 .word 0 , 13433 , -10388 , -4869 , -27196 , -10923 , 6420 , -12805 , -2452 , -20184
.word 0 , 20184 , 2452 , 12805 , -6420 , 10923 , 2
3、编写应用FIR数字滤波器的汇编程序
.title "FIR2.ASM"
.mmregs
.def start
.bss y,1
PA0 .set 0
PA1 .set 1
KS .set 256
.sect "IODA TA"
OUTPUT .space KS*16
.copy "inputdata.inc"
.data
.copy "coff.inc"
xn .usect "xn",N
b0 .usect "b0",N
STACK .usect"STACK",10h
.text
start: STM #STACK+10H,SP
SSBX FRCT
STM #b0,AR1
RPT #N-1
MVPD table,*AR1+
STM #xn+N-1,AR2
STM #b0+N-1,AR3
STM #N,BK
STM #-1,AR0
LD #xn,DP
STM #INPUT,AR4
STM #OUTPUT,AR5
LD *AR4+,A
STL A,@xn
STM #M-1,BRC
RPTB loop-1
FIR2: RPTZ A,#N-1
MAC *AR2+0%,*AR3+0%,A
STH A,*AR5+
;BD FIR2
LD *AR4+,A
STL A,*AR2+0%
loop: B loop
.end
链接文件
MEMORY
{
PAGE 0:
EPROM: org=0E000H l en=1000H
VECS: org=0FF80H l en=0004H PAGE 1:
SPRAM: org=0060H len=01ffH
DARAM: org=0300H len=4000H }
SECTIONS
{
.text:>EPROM PAGE 0
.data:>EPROM PAGE 0
.bss:>SPRAM PAGE 1
xn:>DARAM PAGE 1
b0:align(128)>DARAM PAGE 1
STACK:>DARAM PAGE 1
IODATA:>DARAM PAGE 1
.vectors:>VECS PAGE 0
}
三、验证设计结果
利用CCS软件的菜单view->Graph->Time/Frequency显示如下各波形图:
输入信号时域
输入信号频域
输出时域波形
输出频域波形
滤波器时域
滤波器频域
从以上图形可以看出此滤波器性能良好!
四、思考题
1、为什么DSP适合做数字信号处理。(从硬件和软件两方面回答)
2、指出程序是使用的线性缓冲区法还是循环缓冲区法。