有限冲击响应FIR滤波器的设计完美版.docx

上传人:b****8 文档编号:9927106 上传时间:2023-02-07 格式:DOCX 页数:12 大小:117.64KB
下载 相关 举报
有限冲击响应FIR滤波器的设计完美版.docx_第1页
第1页 / 共12页
有限冲击响应FIR滤波器的设计完美版.docx_第2页
第2页 / 共12页
有限冲击响应FIR滤波器的设计完美版.docx_第3页
第3页 / 共12页
有限冲击响应FIR滤波器的设计完美版.docx_第4页
第4页 / 共12页
有限冲击响应FIR滤波器的设计完美版.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

有限冲击响应FIR滤波器的设计完美版.docx

《有限冲击响应FIR滤波器的设计完美版.docx》由会员分享,可在线阅读,更多相关《有限冲击响应FIR滤波器的设计完美版.docx(12页珍藏版)》请在冰豆网上搜索。

有限冲击响应FIR滤波器的设计完美版.docx

有限冲击响应FIR滤波器的设计完美版

……………………………………装………………………………………订…………………………………………线………………………………………

专业班级学号成绩

有限冲击响应FIR滤波器的设计

一、设计目的

1、掌握数字滤波器的设计过程;

2、了解FIR的原理和特性;

3、熟悉设计FIR数字滤波器的原理和方法;

4、学习FIR滤波器的DSP实现原理;

5、学习使用ccs的波形观察窗口观察输入、输出信号波形和频谱变化情况。

二、设计容

1、通过MATLAB来设计一个低通滤波器,对它进行模拟仿真确定FIR滤波器系数;

2、用DSP汇编语言进行编程,实现FIR运算,对产生的合成信号,滤除信号中高频成分,观察其滤波前后的波型变化。

三、设计原理

滤波器就是在时间域或频域,对已知激励产生规定响应的网络。

使其能够从信号中提取有用的信号,抑制并衰减不需要的信号,滤波器的设计实质上就是对提出的要求给出相应的性能指标.再通过计算,使物理可实现的实际滤波器响应特性逼近给出的频率响应特性。

FIR数字滤波器是一种非递归系统,其传递函数为:

H(z)=Y(Z)/X(Z)=∑b(n)z-n

由此可得到系统的差分方程为:

y(n)=∑h(i)x(n-i)

其激响应h(n)是有限长序列,它其实就是滤波器系数向量b(n),N为FIR滤波器的阶数.

在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,易做到严格的线性相位特性。

为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h(n)=h(N-1-n)或h(n)=h(N-1-n)。

这样,当N为偶数时,偶对称线性相位F讯滤波器的差分方程表达式为

Y(n)=∑h(i)(x(n-i)+x(N-1-n-i))

由上可见,FIR滤波器不断地对输入样本x(n)延时后,再做乘法累加算法,将滤波器结果y(n)输出。

因此,FIR实际上是一种乘法累加运算。

而对于线性相位FIR而言,利用线性相位FIR滤波器系数的对称特性,可以采用结构精简的FIR结构将乘法器数目减少一半。

FIR滤波器的单位脉冲h(n)是一个有限长序列。

若h(n)为实数,且满足偶对称或是奇对称的条件,则FIR滤波器具有相位特性,FIR数字滤波器具有以下几个特点:

FIR滤波器无反馈回路,是一种无条件稳定系统。

四、总体方案设计

1、有给定的设计参数,滤波器系数可由MATLAB中的函数产生。

2、在CCS中采用汇编源程序来实现FIR数字滤波器

步骤1):

创建工程文件project/new/myproject保存时加后缀。

2):

在file/new/sourcefile进行汇编语言并将其添加到工程文件。

3):

编译汇编project/build生成out文件。

4):

file/loadprogram。

5):

执行文件。

五、主要参数

滤波器阶数为17,a1=a15=0,a2=a14=158,a3=a13=264,a4=a12=-290,a5=a11=-1406,a6=a10=3187,a7=a9=9287,a8=12272。

六、设计步骤

1、启动CCS,在CCS中建立一个汇编源文件、建立一个C源文件和一个命令文件,并将这三个文件添加到工程,再编译并装载程序。

2、设置波形时域观察窗口,得到其滤波前后波形变化图;

3、设置频域观察窗口,得到其滤波前后频谱变化图。

七、源程序

1、汇编源文件

;一个FIR滤波器源程序fir.asm

.mmregs

.globalstart

.defstart,_c_int00

INDEX.set1

KS.set256;模拟输入数据缓冲区大小

N.set17

COFF_FIR.sect"COFF_FIR";FIR滤波器系数

.word0

.word158

.word264

.word-290

.word-1406

.word-951

.word3187

.word9287

.word12272

.word9287

.word3187

.word-951

.word-1406

.word-290

.word260

.word158

.word0

.data

INPUT.copy"firin.inc";模拟输入在数据存储区0x2400

OUTPUT.space1024;输出数据在数据区0x2500

;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;输入数据x(n)循环缓冲区指针

.asgAR5,COFF_P;FIR系数表指针

.asgAR6,INBUF_P;模拟输入数据指针

.asgAR7,OUTBUF_P;FIR滤波器输出数据指针

_c_int00

bstart

nop

nop

start:

ssbxFRCT

STM#COFFTAB,COFF_P

RPT#N-1;将FIR系数从程序存储器移动

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;数据缓冲区指针指向x[n-(N-1)]

STM#COFFTAB,COFF_P;

FIR_TASK:

STM#INPUT,INBUF_P

STM#OUTPUT,OUTBUF_P

STM#KS-1,BRC

RPTBDLOOP-1

STM#N,BK;FIR循环缓冲区大小

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

2、程序

fir.obj

-mfir.map

-ofir.out

MEMORY

{

PAGE0:

ROM1(RIX):

ORIGIN=0080H,LENGTH=100H

PAGE1:

INTRAM1(RW):

ORIGIN=2400H,LENGTH=0200H

INTRAM2(RW):

ORIGIN=2600H,LENGTH=0100H

INTRAM3(RW):

ORIGIN=2700H,LENGTH=0100H

B2B(RW):

ORIGIN=0070H,LENGTH=10H

}

SECTIONS

{

.text:

{}>ROM1PAGE0

.data:

{}>INTRAM1PAGE1

FIR_COFF:

{}>INTRAM2PAGE1

FIR_BFR:

{}>INTRAM3PAGE1

.stack:

{}>B2BPAGE1

}

3、执行程序

------------------------------

0000:

0080FIR.ASM:

46:

75$,___text__,.text,_c_int00

------------------------------

------------------------------

0000:

0084start

------------------------------

------------------------------

------------------------------

------------------------------

------------------------------

------------------------------

------------------------------

------------------------------

------------------------------

0000:

0095FIR_TASK

------------------------------

------------------------------

------------------------------

------------------------------

------------------------------

------------------------------

0000:

00A0FIR_FILTER

------------------------------

------------------------------

------------------------------

0000:

00A5EEND,LOOP

------------------------------

0000:

00A7COFF_FIR,etext,___etext__

------------------------------

八、实验结果及分析

1、设置波形时域观察窗口,得到其滤波前后波形变化图

滤波前的波形输入

滤波前的波形输出

 

2、设置频域观察窗口,得到其滤波前后频谱变化图

滤波前频谱图

滤波后频谱图

九、设计总结

在这次DSP课程设计中,我受益匪浅!

这期间学到了更多CCS软件的知识,同时也对这个软件的操作更加熟悉。

用DSP实现FIR数字滤波,具有稳定性好、准确度高、灵活性好、不受环境影响等优点。

在完成这个设计的过程中我遇到了好多操作问题,好多次都想放弃,因为有了老师的悉心指导和同学的热心帮助,才能坚持把它完成了!

这也使我意识到合作的重要性,还有解决一个个难题后的喜悦,难以言表!

这次的DSP设计提到的不仅是我们的专业知识,还有一个大学生应该具有正确的学习、生活态度:

认真、严谨、坚持、交流等等。

“细节决定成败!

”再次被验证,特别是编程的时候。

任何一的小小的失误都会造成严重的后果。

同时学会了不找借口,遇到问题不找借口浪费时间,要细心认真地解决问题,更不能放弃,一定要坚持不懈的才能成功!

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

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1