基于DSP的FIR滤波器的实现.docx
- 文档编号:11127203
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:13
- 大小:113.49KB
基于DSP的FIR滤波器的实现.docx
《基于DSP的FIR滤波器的实现.docx》由会员分享,可在线阅读,更多相关《基于DSP的FIR滤波器的实现.docx(13页珍藏版)》请在冰豆网上搜索。
基于DSP的FIR滤波器的实现
《基于DSP的FIR滤波器的实现》
课程设计报告
专业:
电子信息工程
班级:
学号:
姓名:
指导教师:
二零一零年一月十日
引言…………………………………………………………………2
一、课程设计目的及要求…………………………………………2
二、FIR滤波器的DSP实现………………………………………2
三、FIR滤波器的数学模型………………………………………4
3.1.滤波系统的差分方程………………………………………4
3.2.卷积和运算的实现………………………………………4
四、设计内容及汇编程序清单…………………………………5
4.1.方波的产生………………………………………………5
4.2.编写fir.asm,fir.cmd程序…………………………………6
4.3.软件仿真……………………………………………………7
五、注意事项………………………………………………………10
六、课程设计总结………………………………………………………10
七、参考文献……………………………………………………………12
引言
数字信号处理(DigitalSignalProcessing——DSP)是一门涉及许多学科且广泛应用于许多领域的新兴学科。
DSP包括两重含义数字信号处理技术(DigitalSignalProcessing)和数字信号处理器(DigitalSignalProcessor)。
随着微电子技术、信息技术和计算机技术的迅猛发展,数字信号处理技术应运而生,发展迅速,并且日趋完善和成熟。
数字信号处理已成为一门极其重要的学科和技术领域,数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
数字信号处理(DSP)是利用计算机或专用处理设备,以数值计算的方法、对信号进行采集、滤波、增强、压缩、估值和识别等加工处理,借以达到提取信息和便于应用的目的,其应用范围涉及几乎所有的工程技术领域。
数字滤波器是数字信号处理的重要组成部分,可作为应用系统对信号的前置处理。
同时用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受外界影响等优点外,还具有灵活性好的特点,可对DSP芯片编程来实现数字滤波的参数修改,进而十分方便地修改滤波器的特性。
因此基于DSP的数字滤波被广泛应用于语音、图像、软件无线电等领域,具有广阔的发展空间。
数字信号处理的应用中,按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、无限长冲击响应(IIR)与有限长冲击响应(FIR)等等。
一、设计目的和要求
学习数字滤波器的DSP实现原理和C54x编程技巧,掌握DSP系统的构成及软件设计方法,编写DSP汇编语言程序,掌握CCS软件的调试方法,并通过CCS的图形显示工具观察输入/输出信号波形以及频谱变化。
本设计旨在研究FIR滤波器的DSP实现方法。
软件仿真利用C语言产生一个方波信号数据文件fir_in.dat,利用CCS的探针和中断调试功能读入数据文件作为FIR滤波器的输入信号,经FIR滤波后输出正弦信号fir_out.dat文件,然后将该输出文件用CCS的图形显示工具显示输入和输出的波形。
二、FIR滤波器的DSP实现
在DSP系统设计中,开发工具是必不可少的。
TI公司的CCSIDE(CodeComposerStudioIntegratedDevelopmentEnvironment)可以提供环境配置、源程序编辑、编译连接、程序调试、跟踪分析等各个环节,以加速软件开发进程,提高工作效率。
它把编译、汇编、链接等工具集成在一起,用一条命令即可完成全部的汇编工作。
另外把软、硬件开发工具集成在其中,使程序的编写、汇编、程序的软/硬件仿真和调试等开发工作在统一的环境中进行,给开发工作带来极大的方便。
DSP分为定点和浮点两种,而TMS320C54x是目前普遍使用的定点DSP芯片。
它是TI公司的第五代产品,是继TMS320C1X和TMS320C2X之后的第三代定点DSP处理器.它的核心中央处理器(CPU)以TMS320C25的核心CPU为基础,增强型哈佛结构大幅度地提高了整体性能。
TMS320C5X工作速度是TMS320C25的2倍以上,对于TMS320C1X和TMS320C2X具有源代码向上兼容特性.这种兼容性保留了过去开发的软件,便于系统升级到更高性能的DSP系统.TMS320C54具有以下优点:
(1)改进的哈佛结构围绕一组程序总线,三组数据总线和四组地址总线建立的哈佛结构,使得性能和多功能性都得以提高。
(2)乘加流水线为核心的数据通路:
卷积和运算的基本操作就是乘法与加法,DSP则将相乘及累加统一考虑,构成以乘法器、加法器流水线为中心的运算部件。
(3)特殊的指令:
指令RPT由数据存储器指定重复次数,指令MACD可以一次完成相乘并带数据移位的累加,因此使得每一级FIR滤波器只需一个指令周期。
(4)指令系统的多级流水线:
采用多级流水线操作方式,可以把指令周期减小到最小值,同时也就增加了数字信号处理器的吞吐量。
(5)模块化结构的设计,使器件得到了更快的发展,最新的IC制造工艺,提高了芯片性能,降低了功耗,最新的静态设计技术使得芯片具有更低的功耗和更强的辐射能力。
这些优点使得C54X特别适用于远程通信时嵌入式应用的需要。
可用于数字蜂窝通信、个人通信系统、个人数字助理(PDA)、ATM交换机、数字无线通信、调制解调器等领域。
三、FIR滤波器的数学模型
3.1.滤波系统的差分方程
FIR滤波算法实际上是一种乘法累加运算。
它不断地输入样本x(n),经延时做乘法运累加,再输出滤波结果y(n)。
y(n)=a(n)*x(n)=
式中:
i是FIR滤波器的抽头数;x(n-i)是延时,i个抽头的输入信号;N是滤波器的阶数;y(n)表示滤波器的输出序列。
滤波器就是寻求一个可实现的系统函数H(z),使其频率响应H(ejω)满足所希望得到的频域信号。
图表1为横截型FIR滤波器DSP实现的结构图和它的差分。
由于FIR滤波器没有反馈回路,因此它是无条件稳定系统,其单位冲激响应h(n)是一个有限长序列。
图1 FIR滤波器的结构图
3.2.卷积和运算的实现
(1)a(n)序列N个点数值的存储
由于a(n)是根据滤波性能要求已经设计好的有限长单位冲激响应,故其N个点的数值是已知的,因此可以存放在ROM或RAM当中,且对应着N个不同的地址,便于寻址。
(2)输入序列x(n)的移位寄存
输入序列x(n)是不断变化的,因此只能对其进行移位寄存,寄存器的个数为N,即N个寄存器中分别存放着x(n)、x(n-1)……x(n-N+1),它们都随着n的变化而变化。
(3)乘法器
用以完成两个数值的乘法,即a(i)x(n-i),也就是将存储器中N地址所对应的N个固定数值a(i)分别与N个移位寄存器中的不断变化的N个变化数值x(n-i)相乘。
(4)累加器
用以实现N个乘积的累加,即将当前x(n)所对应的N个乘积进行累加,所得到的和就是y(n)。
当滤波器的下一个输入值即x(n+1)到来时,累加器清零,并重新将下一组x(n+1)所对应的N个乘积进行累加,所得到的和就是y(n+1)。
四、设计内容及汇编源程序清单
4.1.方波的产生
用C语言产生一个方波信号数据文件fir_in.dat,该方波信号持续一段时间为高电平,持续一段时间为低电平。
当对其循环连续读取时,就可得到续输入的方波信号。
………………………………C语言程序fir_dat.c……………………………………
#include“stdio.h”
main()
{FILE*fw;
IntI,j,t;
fw=fopen(“d:
fir_in.dat”,”wt”);
fprintf(fw,”16511000\n”);
for(i=0;i<512;i++)
{
j=i+1%20;
if(j<10)
t=-9000;
else
t=9000;
fprintf(fw,”0x%04x\n”,t);
}
fclose(fw);
}
在C环境下运行上述程序可得512个数据,其方波为了10个点低电平信号,10个点的高电平信号,如此循环交替进行就得到方波,其输出数据文件见附录,图中只截取了512点一个周期的数据。
将fir_in.dat文件另存为fir_out.dat,打开该文件,删除所有数据便得到空的输出数据文件。
4.2.编写fir.asm,fir.cmd程序。
本设计中编写y(n)=a0x(n)+a1x(n-1)+a2x(n-2)+a3x(n-3)+a4x(n-4)+a5x(n-5)+a6x(n-6)的程序,N=7。
其中,存放a0~~a6的系数表以及存放数据的循环缓冲区均设在DARAM中。
a0=0.1,a1=0.2,a2=0.3,a3=0.4,a4=0.5,a5=0.6,a6=0.7
……………………用循环缓冲区实现FIR滤波器的源程序清单…………………
.title“FIR2.ASM”;给汇编程序取名
.mmregs;定义存储器映像寄存器
.defstart;定义标号start的起始位置
.bssy,1;滤波器输出单元
xn.usect“xn”,7;自定义7个单元空间的数据段xn
b0.usect“a0”,7;自定义7个单元空间的数据段a0
PA0.set0;设置数据输出端口I/O,PA0=0
PA1.set1;设置数据输入端口I/O,PA1=1
.data
table:
.word1*32768/10;a1=0.1
.word2*32768/10;a2=0.2
.word3*32768/10;a3=0.3
.word4*32768/10;a4=0.4
.word5*32768/10;a5=0.5
.word6*32768/10;a6=0.6
.word7*32768/10;a7=0.7
.text
start:
SSBXFRCT;小数乘法
STM#a0,AR1;AR1指向a0
RPT#6;从程序存储器table开始的地址传送
MVPDtable,*AR1+;7个系数至数据空间a0开始的数据段
STM#xn+6,AR2;AR2指向x(n-6)
STM#a0+6,AR3;AR3指向a6
STM#7,BK;设置循环缓冲区长度BK=7
STM#-1,AR0;AR0=-1,双操作数减量
LD#xn,DP;设置数据存储器页指针的起始位置
PORTRPA1,@xn;从I/O输入端口PA1输入数据到xn
FIR2:
RPTZA,#6;A清零,重复执行下条指令循环
*AR2+0%,*AR3+0%,A;系数与输入数据双操作数相乘并相加
STHA,@y;保存结果的高字节到y(n)
PORTW@y,PA0;输出结果到PA0
BDFIR2;执行完下两条指令后循环
PORTRPA1,*AR2+0%;输入新数据到新缓冲区
.end
……………………………相应链接命令文件……………………………………
FIR2.obj
vectors.obj
-oFIR2.out
-mFIR2.map
-estart
MEMORY
{
PAGE0:
EPROM:
org=0E000h,Len=1000h
VECS:
org=0FF80h,Len=0080h
PAGE1:
SPRAM:
org=0060h,Len=0020h
DARAM:
org=0080h,Len=1380h
}
SECTIONS
{
.text:
>EPROMPAGE0
.data:
>EPROMPAGE0
.bss:
>SPRAMPAGE1
xn:
align(8){}>DARAMPAGE1
b0:
align(8){}>DARAMPAGE1
.vections:
VECSPAGE0
}
4.3.软件仿真
(1)产生fir.out可执行文件。
在TI的DSP开发环境CCS2.0下,建立工程文件fir.pjt。
加入fir.asm文件和fir.cmd文件,经汇编和连接产生fir.out可执行文件。
(2)设置断点和探针。
汇编和连接完成后,装入fir.out可执行文件,在fir.asm中设置断点和探针,将探针点与输入数据文件fir_in.dat和输出文件fir_out.dat连接在一起。
断点设置在STHA,@y这一行。
(3)探针与数据文件的连接。
点击FILE/FILEI/O…菜单中选项,打开I/O对话框。
如图2所示。
该图
图2FIR滤波器输入数据的设置
所示有FileInput选项卡和FileOutput选项卡可供选择,其中FileInput选项卡可用于连接输入数据文件,FileOutput选项卡用于连接输出数据文件。
选中FileInput选项卡,点击“AddFile”选项,在弹出的FileInput对话框中,在FIR目录下打开数据文件fir_in.dat,然后修改“Address”选项的参数为“xn”,这是读取的数据在存储器中的存放地址,修改“Length”参数为了1。
此设置表示程序执行到探针点时,将从fir_in.dat文件中读取一个数据,并将数据存入xn开始的存储器中。
选中“WrapAround”,可在读取完fir_in.dat中的数据后,又从fir_in.dat第一个数据开始循环读取该数据文件。
点击图2中的“AddProbePoint”选项卡,弹出Break/ProbePoint界面。
选择“Probepoint”选项卡进行探针连接。
点击Probepoint标题下的fir.asmline32-Noconnection,激活该栏后,“Location”栏将显示,fir.asm32,表示探针点设在该文件中的39行,然后在选项“Connection”栏中点击,出现数据文件fir_in.dat和它所在的路径,点击该行将它选中。
再点击“Replace”选项,使Probepoint标题下显示为fir.asmline32-FILEIN:
D:
\…\fir_in.dat。
最后按确定回到图2所示界面。
这时可看到“Probe”选项自动修改为“connected”,表示探针已经与数据文件成功相连。
输出数据文件fir_in.dat的连接与前述输入文件的操作方法相同,只是少了“WrapAround”选项,“Address”选项的参数为“y”,Probepoint标题下显示为fir.asmline35-FILEIN:
D:
\…\fir_out.dat。
点击“确定”退出设置。
图3探针点与数据文件的连接
(4)设置图形显示窗口。
为显示输入信号图形,选取View/Graph/Time/Frequency菜单,打开输入图形显示窗口,将StartAddress的地址改为xn,将DisplayDataSize项设置为1,将DSPDataType改为16-bitsignedinteger。
再建一个输出图形显示窗口,将StartAddress的地址改为y,其它与输入图形窗口相同。
5)运行程序fir.out。
选用Debug/Animate项运行程序,得到如图4和图5所示的2个波形。
在DisplayType行选FFTMagnitude。
运行Animate可得如图6和图7所示的两个波形。
图4图5
图6图7
五、注意事项
设计线性相位FIR滤波器时,相位采样为一确定函数式,当为奇数时,幅度采样关于点偶对称,当为偶数时,关于点奇对称.应当注意,设计高通和带阻滤波器时,只能取奇数。
当冲击响应满足下列条件时,FIR滤波器具有对称结构,为线性相位滤波器:
h(n)=h(N-1-n)这种对称性,可使得乘法器数量减半:
对n价滤波器,当n为偶数时,乘法器的个数为n/2个;当n为奇数时,乘法器的个数为(n+1)/2个。
在电路实现中,乘法器占用的逻辑单元数较多。
乘法器的增加,意味着电路成本增加,另外对电路的工作速度也有影响。
六、课程设计总结
随着集成电路技术的发展,各种新型的大规模和超大规模集成电路不断涌现集成电路技术与计算机技术结合在一起,使得对数字信号处理系统功能的要求越来越强。
DSP技术就是基于VLSI技术和计算机技术发展起来的一门重要技术,DSP技术已在通信、控制信号处理、仪器仪表、医疗、家电等很多领域得到了越来越广泛的应用.在数字信号处理中数字滤波占有极其重要的地位。
数字滤波在语音信号、图象处理模式识别和谱分析等领域中的一个基本的处理技术。
数字滤波与模拟滤波相比数字滤波具有很多突出的优点,主要是因为数字滤波器是过滤时间离散信号的数字系统,它可以用软件(计算机程序)或用硬件来实现,而且在两种情况下都可以用来过滤实时信号或非实时信号。
尽管数字滤波器这个名称一直到六十年代中期才出现,但是随着科学技术的发展及计算机的更新普及,数字滤波器有着很好的发展前景。
通过这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,与人合作共同提高,都受益非浅。
在此,感谢于老师的悉心指导,也同样谢谢其他各组同学的无私帮助。
七、参考书目:
[1]陈后金,薛健,胡健,《数字信号处理》,高等教育出版社,2004
[2]陈金鹰,《DSP技术及应用》,机械工业出版社,2004
[3]孙宗瀛,《DSP原理设计与应用》,清华大学出版社,2002
[4]张雄伟,曹铁勇,《DSP芯片的原理与开发应用》,电子工业出版社,2000
[5]潘松,黄继业,王国栋,《现代DSP技术》,西安电子科技大学出版社,2003
[6]张雄伟,曹铁勇,《DSP芯片的原理与开发应用》,电子工业出版社,2000
[7]赵红怡,《DSP技术与应用实例》,电子工业出版社,2003
[8]朱铭锆,《DSP应用系统设计》,电子工业出版社,2002
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DSP FIR 滤波器 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)