实验四综合实验FIR滤波器的设计

实验四综合实验FIR滤波器的设计
实验四综合实验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、指出程序是使用的线性缓冲区法还是循环缓冲区法。

相关主题
相关文档
最新文档