dsp带通滤波器设计.doc

上传人:wj 文档编号:7393446 上传时间:2023-05-11 格式:DOC 页数:8 大小:227KB
下载 相关 举报
dsp带通滤波器设计.doc_第1页
第1页 / 共8页
dsp带通滤波器设计.doc_第2页
第2页 / 共8页
dsp带通滤波器设计.doc_第3页
第3页 / 共8页
dsp带通滤波器设计.doc_第4页
第4页 / 共8页
dsp带通滤波器设计.doc_第5页
第5页 / 共8页
dsp带通滤波器设计.doc_第6页
第6页 / 共8页
dsp带通滤波器设计.doc_第7页
第7页 / 共8页
dsp带通滤波器设计.doc_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

dsp带通滤波器设计.doc

《dsp带通滤波器设计.doc》由会员分享,可在线阅读,更多相关《dsp带通滤波器设计.doc(8页珍藏版)》请在冰点文库上搜索。

dsp带通滤波器设计.doc

一、设计要求

试用DSP设计FIR滤波器,分别实现带通的功能,具体要求如下:

①滤波器的阶数≥5,截止频率自行选定,滤波系数用MATLAB确定。

②编制C54XDSP实现FIR滤波器的汇编源程序。

③用软件仿真器完成上述程序的模拟调试。

④以数据文件形式自行设定滤波器输入数据,以数据文件形式输出滤波结果,并与输入数据进行比较分析。

用软件仿真器有关工具显示FIR滤波器的输入输出波形,以证明滤波器滤波性能。

二、FIR滤波器的基本原理

数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。

一个线性位移不变系统的输出序列和输入序列之间的关系,应满足常系数线性差分方程。

FIR滤波器的差分方程为:

FIR滤波器的传递函数为:

直接由差分方程得出的实现结构如图1所示:

图1 横截型(直接型﹑卷积型)FIR滤波器的结构图

由上面的公式和结构图可知,FIR滤波算法实际上时一种乘法累加运算。

它不断地从输入端读入样本值,经过()后做乘法累加,输出滤波结果

三、FIR滤波器的设计

FIR滤波器的设计方法主要有窗函数法和频率采样法。

其中,窗函数法是最基本的方法。

本次设计采用窗函数法。

一般是先给定所要求的理想滤波器频率响应,由导出,我们知道,理想滤波器的冲击响应是无限长的非因果序列,而我们要设计的是是有限长的FIR滤波器,所以要用有限长序列来逼近无限长序列,设:

(3-1)

常用的方法是用有限长度的窗函数w(n)来截取即:

(3-2)

这里窗函数就是矩形序列RN(n),加窗以后对理想低通滤波器的频率响应将产生什么样的影响呢?

根据在时域是相乘关系,在频域则是卷积关系:

(3-3)

其中,为矩形窗谱,是FIR滤波器频率响应。

通过频域卷积过程看的幅度函数H(ω)的起伏现象,可知,加窗处理后,对理想矩形的频率响应产生以下几点影响:

(1)使理想频率特性不连续点处边沿加宽,形成一个过渡带,其宽度等于窗的频率响应的主瓣宽度。

(2)在截止频率的两边的地方即过渡带的两边,出现最大的肩峰值,肩峰的两侧形成起伏振荡,其振荡幅度取决于旁瓣的相对幅度,而振荡的多少,则取决于旁瓣的多少。

(3)改变N,只能改变窗谱的主瓣宽度,改变ω的坐标比例以及改变的绝对值大小,但不能改变主瓣与旁瓣的相对比例(此比例由窗函数的形状决定)。

(4)对窗函数的要求:

a、窗谱主瓣尽可能窄,以获取较陡的过渡带;

b、尽量减小窗谱的最大旁瓣的相对幅度;即能量集中于主瓣,使肩峰和波纹减小,增大阻带的衰减。

四、带通滤波器设计指标

本次要设计一个FIR带通滤波器,其采样频率fs=30000Hz,通带为3000Hz~5000Hz,即保留频率在3000Hz~5000Hz范围内的信号成分,幅度失真小于1dB;阻带边界频率为2000Hz和6000Hz,衰减大于40dB。

同时,FIR滤波器的阶数N=32。

五、设计思路及实现步骤

1.使用matlab获得输入信号数据,这里输入信号为f1=1500,f2=4000,f3=7000,采样频率为fs=30000Hz,采样点数为N=256,同时生成输入信号数据文件,matlab的参考程序如下:

clc;

clearall;

f1=1500;

f2=4000;

f3=7000;

fs=30000;

N=256;

T=1/fs;

n=[0:

N-1];

x1=0.08*sin(2*pi*f1*n*T);

x2=0.08*sin(2*pi*f2*n*T);

x3=0.08*sin(2*pi*f3*n*T);

xn=ceil(32768*(x1+x2+x3));

figure

(1);

plot(xn)

figure

(2)

yff=abs(fft(xn));

df=n*(fs/N);

plot(df,yff);

fid=fopen('indata.inc','w');

fprintf(fid,'.word%5.0f\n',xn);

fclose(fid);

部分输入信号数据为(共256个采样点):

.word0

.word6097

.word-431

.word1541

.word-1019

.word1

.word-2493

.word-5507

...

2.基于Matlab工具箱Signal中的fir1函数设计FIR带通滤波器,选择Hamming窗函数法,进而获取FIR带通滤波器的系数b,并保存为firin.inc数据文件。

这里FIR滤波器的阶数N=32。

实现代码如下:

w1=3000/15000*2;

w2=5000/15000*2;

b=fir1(32,[w1,w2],'bandpass');

fp=fopen('firin.inc','wt');

fprintf(fp,'.word%20.0f\n',b*32768);

fclose(fp);

滤波器系数为:

B0=-4,B1=-0,B2=7,B3=183,B4=-109,B5=-488,B6=328,B7=495,B8=-195,B9=260,

B10=-1180,B11=-1433,B12=4086,B13=1879,B14=-7292,B15=-876,B16=8709,

B17=-876,B18=-7292,B19=1879,B20=4086,B21=-1433,B22=-1180,B23=260,

B24=-195,B25=495,B26=328,B27=-488,B28=-109,B29=183,B30=7,B31=-0,

B32=-4

同时,通过Matlab中的滤波器设计工具fdatool,可以得到满足设计要求的FIR带通滤波器的幅度图如下示(相应设计参数见下图数据):

3.基于CCS2.0配置为C5400后,创建fir工程,将1、2步骤中生成的输入信号数据文件indata.inc和滤波器系数文件firin.inc添加在fir工程所在的文件夹中,然后给工程中添加FIR数字滤波器的汇编程序fir.asm如下:

.mmregs

.globalstart

.defstart,_c_int00

INDEX.set1

KS.set256

.copy"indata.inc"

.copy"firdata.inc"

.data

OUTPUT.space1024

FIR_DP.usect"FIR_VARS",0

D_FIN.usect"FIR_VARS",1

D_FOUT.usect"FIR_VARS",1

COFFTAB.usect"FIR_COFF",N

DATABUF.usect"FIR_BFR",N

BOS.usect"STACK",0fh

TOS.usect"STACK",1

.text

.asgAR0,INDEX_P

.asgAR4,DATA_P

.asgAR5,COFF_P

.asgAR6,INBUF_P

.asgAR7,OUTBUF_P

_c_int00:

Bstart

NOP

NOP

start:

STM#COFFTAB,COFF_P

RPT#N-1

MVPD#COFF_FIR,*COFF_P+

STM#INDEX,INDEX_P

STM#DATABUF,DATA_P

RPTZA,#N-1

STLA,*DATA_P+

STM#(DATABUF+N-1),DATA_P

STM#COFFTAB,COFF_P

FIR_TASK:

STM#INPUT,INBUF_P

STM#OUTPUT,OUTBUF_P

STM#KS-1,BRC

RPTBDLOOP-1

STM#N,BK

LD*INBUF_P+,A

FIR_FILTER:

STLA,*DATA_P+%

RPTZA,N-1

MAC*DATA_P+0%,*COFF_P+0%,A

STHA,*OUTBUF_P+

LOOP:

EENDBEEND

.end

4.对应以上FIR滤波器的汇编程序编写链接文件fir.cmd如下:

fir.obj

-mfir.map

-ofir.out

MEMORY

{

PAGE0:

ROM1(RIX):

ORIGIN=0080h,LENGTH=1000h

PAGE1:

INTRAM1(RW):

ORIGIN=2400h,LENGTH=0200h

INTRAM2(RW):

ORIGIN=2600h,LENGTH=0100h

INTRAM3(RW):

ORIGIN=2700h,LENGTH=0100h

INTRAM4(RW):

ORIGIN=2800h,LENGTH=0040h

B2B(RW):

ORIGIN=0070h,LENGTH=10h

}

SECTIONS

{

.text:

{}>ROM1PAGE0

.data:

{}>INTRAM1PAGE1

FIR_COFF:

{}>INTRAM2PAGE1

FIR_BFR:

{}>INTRAM3PAGE1

FIR_VARS:

{}>INTRAM4PAGE1

.stack:

{}>B2BPAGE1

}

六、实验结果及截图

1.将程序编译链接无误后加载程序,然后运行程序,然后在入口地址为0x00a0下查看输入信号波形,输入混频信号的时域和频域波形图如下:

图1三种叠加信号的时域波形

图2三种叠加信号的频域图

2.在入口地址为0x2400下查看输出信号波形,下面为输入混频信号经过设计的FIR器滤波后的时域(图3)和频域(图4)波形的输出图像:

图3经FIR滤波器滤波后的信号时域图

图4经FIR滤波器滤波后的信号频域图

七、总结

通过图2与图4的分析比较,可以很清楚地看出,本次设计的FIR滤波器滤可以较好的滤除噪声信号,保留目标信号。

进而说明了该FIR滤波器满足设计要求。

通过本次带通滤波器的设计,我受益匪浅,通过自己亲自动手操作初步掌握了CCS的运行机制。

最开始我只是照着书上的程序原搬硬套,出现了不少错误,然后静下心仔细研究程序后,终于找出了错误的所在根源,经过反复调试,程序终于运行无误,成功的产生了期待的结果。

虽然我在本科学过DSP,但是在老师这学期的细心、认真、不厌其烦地讲授下,让我对DSP以及汇编程序有了一个新的认识,达到了温故知新的效果,谢谢老师!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2