数字滤波器.docx
- 文档编号:15810140
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:20
- 大小:129.51KB
数字滤波器.docx
《数字滤波器.docx》由会员分享,可在线阅读,更多相关《数字滤波器.docx(20页珍藏版)》请在冰点文库上搜索。
数字滤波器
学号成绩
《DSP技术》课程论文
题目数字滤波器的DSP实现
作者班级
院别专业
完成时间
一、概述
1.1数字滤波器的研究现状
DSP技术一般指将DSP处理器用于完成数字信号处理的方法与技术。
目前的DSP芯片以其强大的数据处理功能在通信和其他信号处理领域得到广泛注意并已成为开发应用的热点技术。
许多领域对于数字信号处理器的应用都是围绕美国德州仪器所开发的DSP处理器来进行的。
DSP芯片是一种特别适合于进行数字信号处理运算的微处理器。
主要应用是实时快速的实现各种数字信号处理算法,如卷积及各种变换等。
对于一般的数字滤波器,按照单位冲激响应可分为无限长冲激响应IIR(InfiniteImpulseResponse)系统和有限长冲激响应FIR(FiniteImpulseResponse)系统。
在IIR系统中,用有理分式表示的系统函数来逼近所需要的频率响应,即其单位冲激响应h(n)是无限长的;而在FIR系统中,则用一个有理多项式表示的系统函数去逼近所需要的频率响应,即其单位冲激响应h(n)在有限个n值处不为零。
IIR滤波器由于吸收了模拟滤波器的结果,有大量的图表可查,可以方便、简单、有效地完成设计,效果很好,但是其相位特性不好控制,必须用全通网络进行复杂的相位较正,才能实现线性相位特性的要求。
FIR滤波器则可在幅度特性随意设计的同时,保证精确、严格的线性相位特性。
这在要求相位线性信道的现代电子系统,如图像处理、数据传输等波形传递系统中,是具有很大吸引力的。
而且,其单位冲激响应是有限长的,不存在不稳定的因素,并且可用因果系统来实现。
我们将讨论具有线性相位特性的FIR滤波器。
1.2论文主要完成的工作
本题是基于TI公司推出的DSPTMS320C5402设计滤波器系统,如:
有限冲击响应滤波器(FIR)。
本次课题的主要任务,就是掌握DSP芯片开发技术,完成如下工作:
1、用窗函数法实现FIR滤波器,通过调用四种窗口函数,截取不同的带通与低通滤波原型,满足以下性能要求:
带通滤波器:
下阻带边缘:
,
;下通带边缘:
,
,上通带边缘:
,
;上阻带边缘:
,
低通滤波器:
,
;
,
;
2、研究DSP的结构特点,了解TI公司的TMS3205410DSP器件,掌握DSP系统的构成及软硬件设计方法和CCS软件的调试方法;并以TI公司的TMS3205410DSP为核心处理器,在DSP上实现FIR滤波器系统。
2系统硬件设计
2.1系统设计方案
通常一个典型的DSP系统如图1所示。
图1典型的DSP系统
图1是一个用DSP做信号处理的典型框图。
由于DSP是用来对数字信号进行处理的,所以首先必须将输入的模拟信号变换为数字信号。
于是先对输入模拟信号进行调整,输出的模拟信号经过A/D变换后变成DSP可以处理的数字信号,DSP根据实际需要对其进行相应的处理,如FFT、卷积等;处理得到的结果仍然是数字信号,可以直接通过相应通信接口将它传输出去,或者对它进行D/A变换将其转换为模拟采样值,最后再经过内插和平滑滤波就得到了连续的模拟波形模拟信号。
一般来说DSP的设计过程应遵循一定的设计流程,如图2示。
图2DSP基本设计流程
在数字信号处理系统中,常常要用到FIR数字滤波器,这是因为用FIR滤波器可以逼近任意幅频特性的滤波器,并获得很好的性能,在本论文中介绍FIR低通滤波器的DSP实现。
TMS3205402是16位的定点处理器,所以在进行汇编程序设计时,FIR滤波器系数要采用Q15格式,即必须将上述系数转化为Q15格式,这只要将滤波器各系数乘以2
即可。
用DSP实现Z
算法是十分方便的,常用的方法有两种:
线性缓冲区法和循环缓冲区法。
在本文中采用的是循环缓冲法,循环缓冲区法的特点是:
(1)对于N阶的FIR滤波器,在数据存储器中开辟一个也称为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本;
(2)每次移入新的样本时,以新样本改写滑窗中老的数据,而滑窗中的其他数据不需要移动;
(3)利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲区地址首尾相邻。
FIR滤波器的核心算法是计算输入信号与滤波器系数的卷积。
设x(n)为输入信号,h(n)为FIR滤波器的冲击响应,n=0,…,N-1,则FIR滤波器的输出y(n)就是x(n)与h(n)的卷积,即:
由于卷积是数字信号处理中最常用到的算法,因此几乎所有的DSP芯片中都设有专门的指令支持卷积运算。
在TMS3205410中可以用macd指令完成卷积。
macd指令的形式如下:
macd(Smem,pmad,src);
在macd指令中,Smem是间接寻址参数,它是指令中指向数据存储器的单地址。
Pmad是表示程序存储器地址的16位常数。
Src表示累加器,可以是A累加器或是B累加器。
这条指令在执行时,先把指令中的pmad常数送到程序地址寄存器的PAR中,然后将Smem地址中的数据用PAR地址在程序存储器中读取的数据相乘,并将乘积结果累加到由Src指定的累加器中。
在指令执行时,Smem地址中的内容被同时复制到T寄存器和Smem低中之后的下一个地址单元中。
若采用repeat指令重复执行macd指令,则在执行指令的最后,PAR寄存器自动加1,这样当macd再次执行时就直接用PAR中的地址读取程序存储器中的数据。
通常情况下,macd指令执行时需要三个周期。
但是若用repeat指令执行macd,进入流水线后只要一个周期就可以执行一次macd指令。
由此可见,该指令同时完成了乘累加和数据延迟(移位)的功能,这正是卷积算法所要求的。
对于输入序列,它在两个循环缓冲器里的存储情况如下,要建立缓冲区首先将循环缓冲区大小寄存器的值设为N/2辅助寄存器AR4指到缓冲区1(Bufferl)的顶部AR5指到缓冲区2(Buffer2)的底部,新来一个样本存储到缓冲区1中时,应先将缓冲区1顶部的数据移到缓冲区2底部,处理器然后进行乘加运算,滤波程序每步运算后AR4指向数据移到的下一个窗口,而AR5则指向下一个输入数据,对于下一步运算AR4指向地址1,AR5指向地址N/2。
如图3.1示。
图3.1FIR系数存储格式示意图
考虑到在执行macd指令时是将低地址的数据复制到高地址来完成延迟功能,所以在用macd指令计算卷积时,先计算x(n-N+1)与h(N-1)的乘积,最后才计算x(n)与h(0)的乘积。
因此在程序中,FIR滤波器的系数在程序存储器中按倒序存储。
2.2主控模块
(介绍DSP芯片,如C5402等)4.1DSP的基本特征
本课题采用的是TMS320C54x系列的TMS320C5416DSP,具有改进的哈佛结构、硬件乘法器、流水线结构、高效特殊指令集等优点,使它的处理速度和容量大大提高,为数字滤波中的复杂算法的实现提供了硬件的保证。
(1)哈佛总线结构
其主要特点是程序和数据具有独立的存储空间,有着各自独立的程序总线和数据总线,大大地提高了数据处理能力,非常适合于实时数字信号处理。
(2)硬件乘法器
在通用的计算机上,算术逻辑单元(ALU)只能完成两个操作数的加、减及逻辑运算,而乘法(或除法)则是由加法和移位来实现。
而在数字滤波算法中需要大量的乘加运算,在TMS320C54XDSP中有一个硬件乘法器,可以在一个指令周期内完成一次乘法和一次加法运算,可以大大提高数字滤波系统的运算速度。
(3)流水线结构
TMS320C54xDSP采用四级流水线指令操作方式,减少了指令的执行时间,提高了处理器的吞吐量。
同一时刻,可以有四条指令的不同阶段在并行处理,尽管每条指令执行的时间仍然是几个机器周期,但由于指令的流水作业,实现了多条指令的并行执行。
(4)高效指令集
在TMS320C54xDSP中设置了硬件循环控制电路,提供了重复指令,实现零开销的循环控制。
所有这优点使得DSP非常适合来做数字滤波器的硬件电路。
4.2TMS320C54xDSP的硬件结构
TMS320C54xDSP其硬件构成的几个主要部分包括:
总线结构、中央处理单元、内部存储器及片内外设等。
4.2.1总线结构
TMS320C54x具有8条16位的总线,其中包括4条程序/数据总线和4条地址总线,各条总线的作用如下:
(1)程序总线PB传输来自程序存储器的指令代码和立即数。
(2)三条数据总线CB、DB和EB分别与不同的单元互相连接,如中央处理单元、数据地址产生逻辑DAGEN、程序地址产生逻辑、片内外设和数据存储器。
其中,CB和DB传输从程序存储器读来的数据;EB传输待写入存储器的数据。
(3)PAB,CAB,DAB和EAB这4条地址总线传输指令执行所需要的地址。
4.2.2中央处理单元
TMS320C54x的中央处理单元可以说是DSP的核心,主要包含以下几个部分:
一个算术逻辑单元,两个累加器,定标移位器,乘法IDI法单元,比较选择存储单元(CSSU)和CPU状态和控制寄存器等。
(1)算术逻辑单元(ALU)
(2)CPU状态和控制寄存器
(3)累加器
(4)定标移位器
(5)乘法器加法器单元
(6)比较选择存储单元CSSU
4.2.3内部存储器
TMS320C54x共有192K*16bit的寻址空间。
这些空间被分为3个特定的存储段:
64K*16bit的程序存储空间,64K*16bit的数据存储空间,64K*16bit的InputOutput空间。
在任何一个空间内,RAM,ROM,EPROM,EEPROM或存储器映像外设既可以驻留在片内,也可以驻留在片外。
TMS320C54x其片内存储器的种类主要有以下几种:
双访问RAM(DARAM),单访问RAM(SARAM)和ROM。
数据存储空间还有一块特殊的区域,00H-80H。
这块区域包含的是存储器映像寄存器,它包含了DSP中所有的寄存器,可以通过读这块存储器来了解各个寄存器的值,或者通过写这块存储器来改变寄存器的值[13~14]。
数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。
在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。
德州仪器、Freescale等半导体厂商在这一领域拥有很强的实力。
DSP(digitalsignalprocessor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。
其工作原理是接收模拟信号,转换为0或1的数字信号。
再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。
它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。
它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
2.3显示模块
(介绍显示器件,如数码管,发光二极管等驱动电路)
3系统软件设计
3.1软件整体设计
(提供结构框图)
3.2测量模块
(提供流程图)
4系统测试与总结
(提供仿真波形图和设计体会)
参考文献
1]丁玉美,高西全.数字信号处理[M].西安:
西安电子科技大学出版社,2002
2]吴湘淇.信号、系统与信号处理[M].北京:
电子工业出版社,1999.
3]薛年喜.Matlab在数字信号处理中的应用[M].北京:
清华大学出版社,2003.
4]TMS320C54XDSPCPUandPeripherals(ReferenceSetVolume1).
5]TMS320C54XDSPMnemonicInstructionSet(ReferenceSetVolume2).
(作者.书名.出版社,出版时间)
附录
(提供源代码)
附录FIR的DSP实现程序
C1:
FIR.c
/******************************************************************************
TheprogrammeoftheFIRfilter.
UsingINT2togettheinputsignal.
ArrayxistheinputsignalfromA/D,thelengthis256,32-bitfloatingpoint.
Arrayyisthesignaloutoffilter,thelengthis256,32-bitfloatingpoint.
ArrayhisthecoefficientoftheFIRfilter,thelengthis101,101orderfilter.
*******************************************************************************
#pragmaCODE_SECTION(vect,"vect")
#include"stdio.h"
#include"math.h"
#definepi3.1415927
#defineIMR*(pmem+0x0000)
#defineIFR*(pmem+0x0001)
#definePMST*(pmem+0x001D)
#defineSWCR*(pmem+0x002B)
#defineSWWSR*(pmem+0x0028)
#defineAL*(pmem+0x0008)
#defineCLKMD0x0058/*clockmodereg*/
#defineLen256
#defineFLen101
doublenpass,h[FLen],x[Len],y[Len],xmid[FLen];
voidfirdes(doublenpass);
unsignedint*pmem=0;
ioportunsignedcharport8001;
intin_x[Len];
intm=0;
intintnum=0;
doublexmean=0;
inti=0;
intflag=0;
doublefs,fstop,r,rm;
inti,j,p,k=0;
voidcpu_init()
{//asm("nop");
//asm("STM#0,CLKMD");
//asm("STM#0,CLKMD");
//asm("rpt#0ffffh");
//asm("nop");
//asm("STM#0x97ff,CLKMD");
*(unsignedint*)CLKMD=0x0;//switchtoDIVmodeclkout=1/2clkin
while(((*(unsignedint*)CLKMD)&01)!
=0);
*(unsignedint*)CLKMD=0x27ff;//switchtoPLLX10mode
PMST=0x3FA0;
SWWSR=0x7fff;
SWCR=0x0000;
IMR=0;
IFR=IFR;}
interruptvoidint2()
{in_x[m]=port8001;
in_x[m]&=0x00FF;
m++;
intnum=m;
if(intnum==Len)
{
intnum=0;
xmean=0.0;
for(i=0;i { xmean=in_x[i]+xmean; } xmean=1.0*xmean/Len; for(i=0;i { x[i]=(double)(in_x[i]-xmean); } for(i=0;i { for(p=0;p { xmid[FLen-p-1]=xmid[FLen-p-2]; } xmid[0]=x[i]; r=0; rm=0; for(j=0;j { r=xmid[j]*h[j]; rm=rm+r; } y[i]=rm; } m=0; flag=1; } } voidfirdes(doublenpass) { intt; for(t=0;t { h[t]=sin(pi*(N-(N-1)/2.0))*(0.54-0.46(cos(2*pi/(N-1)))/(pi*(N-(N-1)/2.0)); } if(t=((FLen-1)/2))h[t]=npass; } voidset_int() {asm("ssbxintm"); IMR=IMR|0x0004; asm("rsbxintm"); } voidmain(void) {cpu_init(); fs=250000;/*samplingfrequency*/ fstop=31250;/*cut-offfrequency*/ npass=fstop/fs; for(i=0;i { xmid[i]=0; } firdes(npass); set_int(); for(;;) { if(flag==1) { flag=0;/*setbreakpointhere*/ } }} voidvect() {asm(".ref_c_int00");/*pseudoinstruction*/ asm(".ref_int2"); asm("b_c_int00");/*reset*/ asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete"); asm("nop"); asm("nop"); asm("nop"); asm("rete");/*int0*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*int1*/ asm("nop"); asm("nop"); asm("nop"); asm("b_int2");/*int2*/ asm("nop"); asm("nop"); asm("rete");/*tint0*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*brint0*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*bxint0*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*dmac0*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*tint1*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*int3*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*hpint*/ asm("nop"); asm("nop"); asm("rete");/*brint1*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*bxint1*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*dmac4*/ asm("nop"); asm("nop"); asm("nop"); asm("rete");/*dmac5*/ asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字滤波器
![提示](https://static.bingdoc.com/images/bang_tan.gif)