dspFIR滤波器程序设计.docx

上传人:b****5 文档编号:7318518 上传时间:2023-01-22 格式:DOCX 页数:17 大小:81.91KB
下载 相关 举报
dspFIR滤波器程序设计.docx_第1页
第1页 / 共17页
dspFIR滤波器程序设计.docx_第2页
第2页 / 共17页
dspFIR滤波器程序设计.docx_第3页
第3页 / 共17页
dspFIR滤波器程序设计.docx_第4页
第4页 / 共17页
dspFIR滤波器程序设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

dspFIR滤波器程序设计.docx

《dspFIR滤波器程序设计.docx》由会员分享,可在线阅读,更多相关《dspFIR滤波器程序设计.docx(17页珍藏版)》请在冰豆网上搜索。

dspFIR滤波器程序设计.docx

dspFIR滤波器程序设计

 

沈阳工程学院

课程设计

 

设计题目:

FIR滤波器程序设计

 

系别自动控制工程系班级测控本071班

学生姓名杨薇学号4号

指导教师吕勇军职称教授

起止日期:

2010年7月12日起——至20010年7月16日止

 

沈阳工程学院

课程设计任务书

 

课程设计题目:

FIR滤波器程序设计

 

系别自动控制工程系班级测控本071

学生姓名杨薇学号04号

指导教师吕勇军职称教授

课程设计进行地点:

实训F430

任务下达时间:

10年7月12日

起止日期:

10年7月12日起——至10年7月19日止

教研室主任年月日批准

1.设计主要内容及要求;

编写正弦信号发生器程序。

要求:

1)研究FIR滤波器原理以及利用DSP实现的方法。

2)编写FIR滤波器的程序。

3)调试程序,观察结果。

2.对设计论文撰写内容、格式、字数的要求;

(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。

(2).学生应撰写的内容为:

中文摘要和关键词、目录、正文、参考文献等。

课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。

应做到文理通顺,内容正确完整,书写工整,装订整齐。

(3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。

(4).课程设计论文装订顺序为:

封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。

3.时间进度安排;

顺序

阶段日期

计划完成内容

备注

1

7月12日

教师讲解题目,学生查阅相关资料

2

7月13日

进行方案论证,确定程序流程和实现方法

3

7月14日

编写程序

4

7月15日

调试程序

5

7月16日

撰写论文,程序验收

沈阳工程学院

DSP技术与应用实例课程设计成绩评定表

系(部):

自动控制工程系班级:

测控本71学生姓名:

杨薇

指导教师评审意见

评价

内容

具体要求

权重

评分

加权分

调研

论证

能独立查阅文献,收集资料;能制定课程设计方案和日程安排。

0.1

5

4

3

2

工作能力

态度

工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,

0.2

5

4

3

2

工作量

按期圆满完成规定的设计任务,工作量饱满,难度适宜。

0.2

5

4

3

2

说明书的质量

说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。

0.5

5

4

3

2

指导教师评审成绩

(加权分合计乘以12)

加权分合计

指导教师签名:

年月日

评阅教师评审意见

评价

内容

具体要求

权重

评分

加权分

查阅

文献

查阅文献有一定广泛性;有综合归纳资料的能力

0.2

5

4

3

2

工作量

工作量饱满,难度适中。

0.5

5

4

3

2

说明书的质量

说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。

0.3

5

4

3

2

评阅教师评审成绩

(加权分合计乘以8)

加权分合计

评阅教师签名:

年月日

课程设计总评成绩

中文摘要

21世纪是数字化的时代,随着信息处理技术的飞速发展,数字信号处理技术逐渐发展成为一门主流技术,它在电子信息、通信、软件无线电、自动控制、仪表技术、信息家电等高科技领域得到了越来越广泛的应用。

相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用越来越广泛。

同时DSP(数字信号处理器)的出现和FPGA的迅速发展也促进了数字滤波器的发展,并为数字滤波器的硬件实现提供了更多的选择。

在数字信号处理应用中,数字滤波器占有十分重要的地位。

在信号传输和处理过程中,从接收到的信号中消除或者减弱噪声是十分重要的问题,而数字滤波器是整个数字信号处理系统完成这一目标的重要部分。

数字滤波器是一种常用的离散时间系统,其功能就是采取不同的软件或硬件,把输入序列通过一定的运算变换成输出序列。

常用的滤波器有无限长单位脉冲响应(IIR)滤波器和有限长单位脉冲响应(FIR)滤波器两种,和IIR滤波器相比,FIR滤波器可以得到严格的线性相位。

而且FIR滤波器可以用非递归方法实现,有限精度的计算不会产生振荡,同时由于量化舍入以及系数的不准确所引起的误差的影响比IIR滤波器要小得多。

再者FIR滤波器可采用FFT算法,在相同阶数下,运算速度可以快得多。

关键词FIR滤波器,MATLAB,DSP

 

1设计主要内容及要求

1.1设计题目:

FIR滤波器程序设计

1.2设计目的:

(1)掌握DSP常用指令、以及汇编程序的基本编写;

(2)熟悉FIR数字滤波器的基本实现方法。

1.3基本要求:

(1)研究FIR滤波器原理以及利用DSP实现的方法。

(2)编写FIR滤波器的程序。

(3)调试程序,观察结果。

 

2设计方框图

图2.1FIR滤波器实现流程图

 

3数字滤波器

3.1数字滤波器的定义

数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组(由模拟信号取样和量化的)数字量,其输出是经过变换(或说处理)的另一组数字量。

因此,它本身既可以用数字硬件装配成一台完成能给定运算的专用数字计算机,也可将所需的运算编成程序,让通用计算机来执行。

数字滤波器具有稳定性高、精度高、灵活性大等突出优点。

随着数字技术的发展,用数字技术实现滤波器的功能愈来愈得到人们的注意和广泛的应用。

3.1.1数字滤波器分类及区别

数字滤波器有两类:

IIR数字滤波器和FIR数字滤波器。

与IIR滤波器相比,FIR有以下优点:

(1)FIR可以很容易的设计成“线性相位”(经常是)。

简单的说,就是线性相位滤波器延迟输入信号,但是又不会使信号失真。

(2)使用FIR很方便。

在大部分的DSP微型处理器上都可以通过一个命令循环完成FIR计算。

(3)FIR适合多级应用。

有了多级功能,我们可以引发“毁灭”即减少样本率,或是引发“添加”即增加样本率,或是两者都引发。

无论是增加还是减少,FIR滤波器的使用都允许忽略一些计算,因此提供了计算机高效性的特征。

相比之下,如果使用IIR滤波器,那么每个输出结果必将是经过了独立的计算,即使是将被舍去的结果也是如此(所以,将在滤波器找中显示反馈)。

(4)FIR有理想的数值属性。

实际中,所有的DSP滤波器必须经过“有限-精确”计算才能完成任务。

也就是说,有限的字节数。

由于IIR反馈的使用,有限精确计算在IIR中将会引起显著的问题,但是FIR就没有反馈,所以他们可以使用较少的字节完成工作,设计者们也无需解决过多的关于不理想计算的问题了。

(5)FIR也可以通过部分的计算完成工作。

与IIR不同的是,FIR经常可以通过使用少于1.0的强度的协同因素完成任务。

{如果有需要的话,FIR滤波器的整体增益可以在输出时进行调试。

}当使用固定点的DSP时,这个设计就很贴心。

这种设计使得工作变得简单了很多。

与IIR相比,FIR有什么缺点:

与IIR滤波器相比,FIR滤波器有时需要更多的存储空间和/或计算来完成给出的滤波器响应特征。

并且,某些响应

3.1.2如何选择FIR滤波器

FIR滤波器的单位脉冲响应有限长,系统不存在非稳定现象,我们总能用因果稳定系统来实现FIR滤波器。

FIR的主要不足在于其较好的性能是以较高的阶数为代价换来的,对于相同的设计指标,FIR滤波器所要求的阶数比IIR滤波器高2~5倍,信号的延迟偏大。

因此,在保证相同性能的前提下,尽量降低其阶数是FIR数字滤波器设计的目标之一。

IIR滤波器传输函数极点可位于单位圆内的任何地方,因此可以用较低的阶数获得高的选择性,所用的存储单元少,所以经济而效率高。

但是这个高效率是以相位的非线性为代价的。

选择性越好相位特性越差,而现代图像、语声、数据通信对线性相位的要求是普遍的,远高于过去的模拟通信。

由于这个原因,促使具有线性相位的FIR数字滤波器得到大力发展和广泛应用。

3.2FIR滤波器

FIR滤波器是有限长单位冲击响应滤波器,在结构上是非递归型的。

它可以在幅度特性随意设计的同时,保证精确严格的线性相位。

线性相位特性在实际应用中非常重要,如在数据通信、图像处理、语音信号处理等领域,往往都要求具有线性相位特性。

3.2.1FIR滤波器的结构及其特点

有限冲激响应(FIR)滤波器的基本结构是一个分节的延时线,把每一节的输出加权累加,得到滤波器。

其横截型FIR滤波器的差分方程为

(3.1)

对式(3.1)进行Z变换,整理后可以得到FIR滤波器的传递函数为

(3.2)

图3.1所示是FIR滤波器的一般结构

图3.1FIR滤波器结构图

此FIR滤波器有几个特点:

①系统的单位冲激响应h(n)在有限个n值处不为零;②系统函数H(z)在│z│>0处收敛,在│z│>0处只有零点,有限z平面只有零点,而全部极点都在z=0处;③结构主要是非递归结构,没有输出到输入的反馈。

它的单位脉冲响应h(n)是一个有限长序列。

如果h(n)是实数,且满足偶对称或奇对称的条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n),则滤波器具有线性相位特性。

偶对称线性相位FIR滤波器(N为偶数)的差分方程表达式为:

(3.3)

线性相位FIR滤波器使用的最多的FIR滤波器。

FIR滤波算法实际上是一种乘法累加运算。

它不断输入样本,经延时

,乘法累加,再输出滤波结果y(n)。

4FIR滤波器算法的DSP实现

4.1TMS320C54x系列芯片对FIR滤波器算法的实现

TMS320C54x系列芯片在指令集和硬件结构上对滤波器算法,数字滤波滤波器是一种乘法累加运算,以往的通用处理器或单片机在进行此类乘加运算的时候,都会耗费大量的CPU和总线资源。

DSP作为专用信号处理芯片,它在结构上针对数字信号处理的特点进行了改进和优化,并且增加了特殊的指令专门用于数字处理。

首先是将数据区的两个数相乘以后,再与累加器中的值累加,运算结果仍保留于累加器中,而为下一次操作准备;其次,在硬件上设计了间接寻址时的循环寻址功能,即将滤波器系数保存于一个可循环寻址的数据缓冲区,寻址指针由低地址自动增长,当达到缓冲区顶部时,自动返回低地址重新寻址,这样配合单指令重复指令RPT,就可以快速实现卷积操作。

4.2FIR滤波器的DSP实现原理

4.2.1FIR传递函数结构设计

由(2-1)式可知,FIR滤波器的冲激响应为h(0),h

(1),……,h(N-1)。

x(n)表示滤波器在n时刻的输入,则n时刻的输出为:

y(n)=h(0)x(n)+h

(1)x(n-1)+……+h(N-1)x[n-(N-1)]

这是一个乘、加的过程,可以使用DSP中的MAC指令实现该运算。

4.2.2FIR滤波器实现方法

TMS320C54x片内没有I/O资源,CPU通过外部译码可以寻址64KWI/O单元。

有两条指令实现输入和输出:

PORTRPA,Seme;PA→Seme

PORTWSeme,PA;PA→Seme

这两条指令至少要2个字和2个机器周期。

如果I/O设备是慢速器件,则需要插入等待状态。

在DSP芯片中实现

(延时一个采样周期)算法是十分方便的,常用的方法有以下两种。

(1)用线性缓冲区法实现

线性缓冲区法,又称延迟线法。

其特点是:

1)对于N级的FIR滤波器,在数据存储区中开辟一个称之为滑窗的N个单元的缓冲区,存放最新的N个输入样本;2)从最老的样本开始,每读一个样本后,将此样本向下移位,读完最后一个样本后,输入最新样本至缓冲区的顶部。

上述过程可以用N=6的线性缓冲区存储器图来说明,如图3.1所示。

图中线性缓冲区顶部是储存器的低地址单元,底部为高地址单元,参看图4.1(a),当第一次执行

时,由ARx指向线性缓冲区的底部,并开始取数,运算。

每次乘法累加运算之后,还要将该数据向下(高地址)移位。

求得y(n)以后,从I/O口输入一个新数据x(n+1)至线性缓冲区的顶部单元,再将ARx指向底部单元,开始第二次执行

,如图4.1(b)所示。

之后,再计算y(n+2)……

数据存储器数据存储器数据存储器

顶部→PORTR→PORTW→

 

*ARx→

*ARx-→*ARx-→*ARx-→

(a)(b)(c)

图4.1N=6的线性缓冲区存储器图

(2)用循环缓冲区法实现

循环缓冲区法有如下三个特点:

A、对于N级的FIR滤波器,在数据存储区中开辟一个也称为滑窗的N个单元的缓冲区,存放最新的N个输入样本;

B、每次输入新的样本时,以新样本改写滑窗中的最老的数据,而滑窗中的其它数据不需要移动;

C、利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲区地址首尾相邻。

虽然循环缓冲区中新老数据不很直接明了,但是利用循环缓冲区实现

的有点还是很明显的:

它不需要移动数据,不存在一个机器周期中要求能够进行一次读和一次写的数据存储器,因而可将循环缓冲区定位在数据存储器的任何位置(线性缓冲区要求定位在DARAM中)。

所以,在可能的情况下,建议尽量采用循环缓冲区。

因为本次设计输入样本N=5个,所以采用线性缓冲区和直接寻址的方法来进行FIR滤波器的实现。

4.3用线性缓冲区和直接寻址方法实现FIR滤波器

在数据存储器中存放系数h0~h4,并设置线性缓冲区存放输入数据,如图3.2所示

 

数据存储器

y

y(n)

XN

x(n)

XNM1

x(n-1)

XNM2

x(n-2)

XNM3

x(n-3)

XNM4

x(n-4)

H0

h0

H1

h1

H2

h2

H3

h3

H4

h4

图4.2直接寻址线性缓冲区数据分配

 

5FIR滤波器设计的调试与仿真结果

5.1硬件调试中要注意到的问题

在本系统的硬件调试中主要测试步骤如下:

(1)首先测量电路板的电源和地是否有短路现象,电路板上所采用器件多为小封装器件,管脚间距小,容易出现短路现象,焊接完成后要认真检查。

(2)系统上电检测,上电前应该首先检查电源的正负极性及输入电压的幅度,然后上电。

上电后应快速检测电路板上主要电源芯片的输出电压和DSP内核电压,以免损坏电路板上器件。

(3)检测系统的复位信号是否工作正常,系统在复位后部分器件会检测自身的工作状态。

(4)用示波器查看系统中主要的时钟信号的波形,包括DSP输入时钟信号、DSP输出时钟信号、ADC和DAC的系统时钟信号及帧同步时钟信号(需要结合DSP的开发环境和仿真器进行测试)。

(5)测量所准备的测试信号源的工作电压和工作频率是否在系统的允许范围内。

5.2软件调试中要注意到的问题

(1)定点数的定标

在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。

在滤波器的实现过程中,考虑到在数字信号处理中的大量运算是乘法和累加,应尽量采用纯整数或纯小数运算,即全部变量都用Q0或Q15格式。

这样做的好处是操作简单、编程方便。

(2)计算的精度和结果溢出

在FIR数字滤波器的实现中,一个必须注意的问题是计算的精度和结果溢出问题。

由于在滤波器设计时,滤波器的系数都是小数,为了获得较高的精度和整数化系数,一般都要对求出来的系数乘一个较大的数,然后再调整。

这样导致在计算中有可能累加器溢出;另一个问题是计算后累加器中的结果数值为32位,而物理的存储器位数高16位,在存储处理结果时,通常的做法是将低16位结果直接丢弃不用,只取高16位作为计算结果,但这样做带来的后果是精度降低。

因而在考虑滤波器设计时,必须综合考虑输入信号的幅度,并仔细分析中间值的大小,调整滤波器的系数,在不影响计算速度的情况下,提高计算精度。

5.3仿真结果

FIR滤波器的设计方法主要有窗函数法和频率采样法,其中,窗函数法是最基本的方法。

一般使用的窗函数法有Hanning窗、Blackman窗和Kaiser窗等。

利用上述窗函数,可以利用Matlab工具很方便地设计出逼近理想特性的FIR滤波器,然后将此FIR系数放入DSP程序中。

图5.1仿真图

总结

期末考试虽然结束了,但是我们不能放松,一周的DSP课程设计,让我们有了更多的收获,课设的过程虽然是艰辛的,但是我们收获很多,首先,我们再一次的加深巩固了对已有的知识的理解及认识;其次,我们将课本知识运用到了实际设计,使得所学知识在更深的层次上得到了进一步深化

虽然一周的时间很短,但在学习的过程中,我们收获到了许多新的知识。

通过在图书馆查阅资料,对本来不熟悉的知识有了进一步了解。

在开始设计时,还是遇到了很多困难。

一些细节方面的问题,不断出现。

随着时间推移,在老师的讲解,和同学讨论的共同努力下,还是完成了整个设计。

我觉得每一次课程设计都是对我们的一个锻炼,都是对能力的一种提升。

这次设计,涉及到很多有关于数字信号处理方面的知识,所以我们在做DSP设计的同时,也复习了数字信号处理方面的知识,巩固了所学,又获得了新知。

通过老师的指导,同学的帮助和在图书馆查找资料,借阅大量图书,和自主学习,我学到了许多知识,并增加了以后对DSP学习的信心。

 

致谢

感谢我的指导老师吕老师在此次课程设计中给予我热情而耐心的指导。

吕老师不仅在我的开始毫无头绪时给了我很多提示,纠正了我许多错误,还指导了我应该去查找哪些方面的资料去完善这次设计,弥补出现的设计漏洞。

使我的设计有一个明确的主导思想,能够顺利而有条不紊地进行。

其次我要感谢我的同学们,无论是否和我一组的同学,都热心的给与我很多帮助。

在我设计出现障碍不能继续进行的时候,通过和他们一起讨论研究,最终攻克了许多难题,并且因为交流思想心得,也学到了许多新知识。

最后感谢学校图书馆给我们提供了很丰富的资源,可以让我们去查找资料,开扩了眼界,也提高了我们的自学能力。

由于知识水平的局限和时间的仓促,设计中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正.。

最后再次衷心感谢老师的悉心指导和同学们的热心帮助!

 

参考文献

[1]赵红怡.DSP技术与应用实例.北京:

电子工业出版社.第二版,2008

[2]靳希,杨尔滨,赵玲.信号处理原理与应用.北京:

清华大学出版社.2004

[3]雷勇.DSP系统设计与实践.北京:

电子工业出版社.2004

[4]张长森.数字信号处理.北京:

中国电力出版社.2007

附录

主程序

.title"yw.asm"

.mmregs

STACK.usect"STACK",10H

.def_main

.bssy,5

XN.usect"XN",1

XNM1.usect"XN",1

XNM2.usect"XN",1

XNM3.usect"XN",1

XNM4.usect"XN",1

H0.usect"H0",1

H1.usect"H0",1

H2.usect"H0",1

H3.usect"H0",1

H4.usect"H0",1

.data

table:

.word7FFFh

.word0

.word0

.word0

.word0

.word1*32768/10

.word-3*32768/10

.word5*32768/10

.word-3*32768/10

.word1*32768/10

.text

_main:

SSBXFRCT

STM#XN,AR1

RPT#9

MVPDtable,*AR1+

STM#XN+4,AR3

STM#H0+4,AR4

STM#5,BK

STM#-1,AR0

LD#XN,DP

STM#y,AR2

FIR1:

LD@XNM4,T

MPY@H4,A

LTD@XNM3

MAC@H3,A

LTD@XNM2

MAC@H2,A

LTD@XNM1

MAC@H1,A

LTD@XN

MAC@H0,A

STHA,*AR2+

ST#0H,@XN

BFIR1

.END

Cmd程序

MEMORY

{PAGE0:

EPROM:

org=0E000Hlen=1000H

PAGE1:

SPRAM:

org=0060Hlen=0020H

DARAM:

org=0080Hlen=1380H

}

SECTIONS

{

.text:

>EPROMPAGE0

.data:

>EPROMPAGE0

.bss:

>SPRAMPAGE1

x:

align(8){}>DARAMPAGE1

h:

align(8){}>DARAMPAGE1

}

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

当前位置:首页 > 高等教育 > 理学

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

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