您好,欢迎来到九壹网。
搜索
您的当前位置:首页有限冲击响应FIR_滤波器的设计完美版综述

有限冲击响应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

- 11 -

太原理工大学现代科技学院 课程设计

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

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 保存时加后缀。

- 11 -

太原理工大学现代科技学院 课程设计

2):在file/new/sourcefile进行汇编语言并将其添加到工程文件。3):编译 汇编 链接project/build生成out文件。 4):file/load program。 5):执行文件。

五、主要参数

滤波器阶数为17 , a1=a15=0,a2=a14=158,a3=a13=2,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 .global start .def start,_c_int00 INDEX .set 1 KS .set 256

N .set 17 COFF_FIR .sect \"COFF_FIR\" .word 0 .word 158

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

;FIR滤波器系数

- 11 -

太原理工大学现代科技学院 课程设计

.word 2 .word -290 .word -1406 .word -951 .word 3187 .word 9287 .word 12272 .word 9287 .word 3187 .word -951 .word -1406 .word -290 .word 260 .word 158 .word 0 .data

INPUT .copy \"firin.inc\" ;模拟输入在数据存储区0x2400 OUTPUT .space 1024 ;输出数据在数据区0x2500 ;FIR_DP .usect \"FIR_VARS\;D_FIN .usect \"FIR_VARS\;D_FOUT .usect \"FIR_VARS\ COFFTAB .usect \"FIR_COFF\DATABUF .usect \"FIR_BFR\BOS .usect \"STACK\TOS .usect \"STACK\ .text .asg AR0,INDEX_P .asg AR4,DATA_P ;输入数据x(n)循环缓冲区指针 .asg AR5,COFF_P ;FIR系数表指针 .asg AR6,INBUF_P ;模拟输入数据指针 .asg AR7,OUTBUF_P;FIR滤波器输出数据指针 _c_int00 b start nop nop

start: ssbx FRCT STM #COFFTAB,COFF_P RPT #N-1 ;将FIR系数从程序存储器移动 MVPD #COFF_FIR,*COFF_P+ ;到数据存储器 STM #INDEX,INDEX_P STM #DATABUF,DATA_P RPTZ A,#N-1 STL A,*DATA_P+ ;将数据循环缓冲区清零

- 11 -

太原理工大学现代科技学院 课程设计

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 RPTBD LOOP-1 STM #N,BK ;FIR循环缓冲区大小 LD *INBUF_P+,A ;装载输入数据 FIR_FILTER: STL A,*DATA_P+% RPTZ A,N-1 MAC *DATA_P+0%,*COFF_P+0%,A STH A,*OUTBUF_P+ LOOP:

EEND B EEND .end

2、链接程序 fir.obj

-m fir.map -o fir.out

MEMORY { PAGE 0: ROM1(RIX) :ORIGIN=0080H,LENGTH=100H

PAGE 1: 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 : {}>ROM1 PAGE 0

.data : {}>INTRAM1 PAGE 1 FIR_COFF: {}>INTRAM2 PAGE 1 FIR_BFR : {}>INTRAM3 PAGE 1

- 11 -

太原理工大学现代科技学院 课程设计

}

.stack : {}>B2B PAGE 1

3、执行程序

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

0000:0080 FIR.ASM:46:75$, ___text__, .text, _c_int00 --------- ---- --- -------------- --------- ---- --- -------------- 0000:0084 start

--------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- 0000:0095 FIR_TASK

--------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- 0000:00A0 FIR_FILTER --------- ---- --- -------------- --------- ---- --- -------------- --------- ---- --- -------------- 0000:00A5 EEND, LOOP --------- ---- --- --------------

0000:00A7 COFF_FIR, etext, ___etext__ --------- ---- --- --------------

八、实验结果及分析

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

- 11 -

太原理工大学现代科技学院 课程设计

滤波前的波形输入

- 11 -

太原理工大学现代科技学院 课程设计

滤波前的波形输出

- 11 -

太原理工大学现代科技学院 课程设计

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

- 11 -

太原理工大学现代科技学院 课程设计

滤波后频谱图

- 11 -

太原理工大学现代科技学院 课程设计

九、设计总结

在这次DSP课程设计中,我受益匪浅!这期间学到了更多CCS软件的知识,同时也对这个软件的操作更加熟悉。用DSP 实现FIR数字滤波,具有稳定性好、准确度高、灵活性好、不受环境影响等优点。

在完成这个设计的过程中我遇到了好多操作问题,好多次都想放弃,因为有了老师的悉心指导和同学的热心帮助,才能坚持把它完成了!这也使我意识到合作的重要性,还有解决一个个难题后的喜悦,难以言表!

这次的DSP设计提到的不仅是我们的专业知识,还有一个大学生应该具有正确的学习、生活态度:认真、严谨、坚持、交流等等。“细节决定成败!”再次被验证,特别是编程的时候。任何一的小小的失误都会造成严重的后果。同时学会了不找借口,遇到问题不找借口浪费时间,要细心认真地解决问题,更不能放弃,一定要坚持不懈的才能成功!

- 11 -

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务