DSP实验六FIR数字滤波器的实验报告_第1页
DSP实验六FIR数字滤波器的实验报告_第2页
DSP实验六FIR数字滤波器的实验报告_第3页
DSP实验六FIR数字滤波器的实验报告_第4页
DSP实验六FIR数字滤波器的实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FIR数字滤波器试验目的数字滤波的作用是滤除信号中某一局部频率重量。信号经过滤波处理,就相当于信号频谱与滤波器的频率响应相乘的结果。从时域来看,就是输入信号与滤波器的冲激响应作卷积和。数字滤波器在各种领域由广泛的应用,例如数字音响、音乐和语音合成、躁声消退、数据压缩、频率合成、谐波消退、过载检测、相关检测等。本试验主要学习数字滤波器的DSP实现原理和C54X编程技巧,并通过CCS的图形显示工具观看输入/输出信号波形以及频谱的变化。该试验应当安排在串口和定时器操作试验之后进展。试验要求该试验涉及到DSP的串口、中断响应等简洁操作,应当在完成前面的串口和定时器试验后完成。本试验重点争论FIR滤波器的DSP试验方法,没有争论FIR滤波器的设计原理和方法。你可以使用数字滤波器关心设计软件包或自行计算FIR滤波器的系数。本试验例子利用DES320PP-U评估板的模拟信号输出通道产生一个1KHz的方波,然后利用信号输入通道对产生的方波进展低通滤波,得到一个1KHz的正弦信号,并使用CCS的图形显示工具显示输入和输出的波形。这里我们使用的是一个38阶的对称构造的FIR低通滤波器,其采样频率Fs为25KHZ,通带截止频率1.2KHZ,阻带截止频率为2.8KHZ,阻带衰减为-40dB。试验原理FIR滤波器的实现假设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)]DES320PP-U数字信号处理仿真/教学试验系统使用与试验指导“://dspsolution/“dspsolution73使用MAC或FIRS指令可以便利地实现上面的计算。图6-1说明白使用循环寻址实现FIR滤波器的方法。为了能正确使用循环寻址,必须先初始化BK,块长为N。同时,数据缓冲区和冲激响应〔FIR滤波器的系数〕的开头地址必需是大于N的2的最小幂的倍数。例如,N=11,大于N的最小2的幂为16,那么数据缓冲区的第一个地址应是16的倍数,因此循环缓冲区起始地址的最低4位必需是0。图6-1FIR滤波器存储器里的数据存储方式在图6-1中,滤波系数指针初始化时指向h(N-1),经过一次FIR滤波计算后,在循环寻址的作用下,照旧指向h(N-1)。而数据缓冲区指针指向的是需要更的数据,如x(n)。在写入数据并完成FIR运算后,该指针指向x(n-(N-1))。所以,使用循环寻址可以便利地完成滤波窗口数据的自动更.使用带MAC指令的循环寻址模式实现FIR滤波器,程序片段如下:(输入数据在AL中,滤波结果在AH中)STM#1,AR0;AR0=1STM#N,BK;BK=N,循环寻址BUFFER大小为NSTLA,*FIR_DATA_P+%;更滤波窗口中的采样数据RPTZA,#(N-1);重复MAC指令N次,先将A清零MAC*FIR_DATA_P+0%,*FIR_COFF_P+0%,A;完成滤波计算。留意FIR滤波系数存放在;数据存储区另一种方法是利用C54x系列芯片的供给的FIRS指令来实现FIR滤波器。图6-2为一种有限单位冲激响应呈现对中心点对称的FIR滤波器。长度为N的线性相位FIR滤波器的输出表达式为:Σ−==−+−−−/210()()[()((1))]NkynhkxnkxnNk图6-2N阶均衡FIR滤波器框图要利用FIRS指令,需要将输入数据缓冲分成两个,循环缓冲区大小存放器的值设为N/2。图6-3显示了输入序列在两个循环缓冲器里的存储状况。设关心存放器AR2指到缓冲区1〔Buffer1〕的顶部,AR3指到缓冲区2〔Buffer2〕的底部。每次进展滤波之前,应先将缓冲区1顶部的数据移到缓冲区2的底部,来的一个样本存储到缓冲区1中时,并对缓冲区1指针AR2加1(使用循环寻址)。处理器然后使用FIRS指令进展乘加运算,即h(0){x(0)+x(-N+1)。固然,在使用FIRS指令前,需要预先计算一次求和,以初始化A。在RPTZ重复指令和循环寻址的协作下,完成FIR滤波.滤波完成后,需要对两个数据缓冲的指针进展修正,以便对下一个点进展处理。将Buffer1的指针减1和Buffer2的指针减2,使他们指向各自缓冲的数据队列的最终。图6-316点FIRS滤波数据存放使用带FIRS指令的循环寻址模式实现FIR滤波器,程序片段如下:(输入数据在AL中,滤波结果在B中)STM#1,AR0;AR0=1STM〔N/2〕,BKBK=N/2,循环寻址BUFFER大小为NMVDD*ar2,*ar3;更Buffer2STLA,*ar2+%;更滤波窗口中的采样数据ADD*ar2+0%*ar3+0%;初始化ARPTZB,#(N/2-1);重复FIRS指令N/2次,先将BDES320PP-U数字信号处理仿真/教学试验系统使用与试验指导“://dspsolution/“dspsolution76FIRS*ar2+0%,*ar3+0%,filter_coff+N/2;完成滤波计算。留意FIR滤波系数存放在程序;存贮区,filter_coff为系数起始地址MAR*ar2-%;修改Buffer1MAR*+ar3(-2)%;修改Buffer2指针AC01的初始化DSE320PP-U使用AC01作为模拟信号接口。AC01供给一个14bit的D/A和一个14bit的A/D通道。AC01与VC5402通过串口0连接。DSP通过串口可以把握AC01的采样频率、增益、低通/高通滤波器的截止频率等参数。这一步是通过读写AC01的存放器来实现的。下面是初始化AC01的代码,有关AC01的具体介绍请参考AC01的技术手册。; ;ThefollowingcodesareinitalizedAC01,ALLAC01setupsame!; idle1;初始化AC01时仅仅翻开串口0的发送中断,而且中断效劳idle1;程序中简洁地将A存放器的值写入到串口0发送存放器。idle1;开头初始化时,将A存放器设置为0!idle1ld#600h,aidle1;waitforint.....ld#3,aidle1;send#3,AC01的1号存放器为采样率把握存放器ld#00105h,a;fs=10M/2/A/B=25k,采样率设置为25KHz;flp=10M/2/40/A=25k(allpass);fhp=fs/200=125Hz(notuse!);A=05,B=40(0x28)idle1;send1thregs->05hld#3,aidle1;send#3ld#00228h,aidle1;send2thregs->28hld#3,aidle1;send#3ld#00300h,aidle1;send3thregs->00hld#3,aidle1;send#3ld#00405h,aidle1;send4thregs->05h(AD&DA0dB)ld#3,aidle1;send#3ld#00505h,aidle1;send5thregs->05h(highpassfilterdisable)ld#3,aidle1;send#3ld#00600h,aidle1;send6thregs->00hld#3,aidle1;send#3ld#00700h,aidle1;send7thregs->0ld#3,aidle1;send#3ld#800h,aidle1;send8thregs->0ld#0h,a; ;初始化AC01完成!利用AC01的D/A通道产生一个1KHz的方波,作为FIR滤波器的输入信号。由于串口发送中断将每0.04ms〔25KHz〕产生一次,所以我们将一个周期的方波信号分25次送出,这样经D/A变化后便可得到1KHz的方波。产生方波的数据参见如下:;************************************************************************;Thefollowingdataisusedbymakewave!whenusing,mustcopytowavebuffer;************************************************************************wave_data:;freqabout1kHz.word03ffch;+2volt.word03ffch.word03ffch.word03ffch.word03ffch.word03ffch.word03ffch.word03ffch.word03ffch.word03ffch.word03ffch.word03ffch.word03ffch.word0c000h;-2volt.word0c000h.word0c000h.word0c000h.word0c000h.word0c000h.word0c000h.word0c000h.word0c000h.word0c000h.word0c000h.word0c000h4) 串口的初始化和串口中断效劳程序本试验通过DSP的串口0输入/输出数据。在串口通讯中,数据时钟和帧同步信号都由AC01产生,所以VC5402将使用外部时钟和帧同步信号。串口设置代码如下,具体介绍请参见串口操作试验:;******************************************************************;ThefollowingcodesareusedtoinitalizeMcBSP0!;******************************************************************stm#0,spsa0;chooseSPCR10stm#2023h,spcr10;receivesign_extendinDRRstm#1,spsa0;chooseSPCR20stm#0c0h,spcr20;fs->int!stm#2,spsa0;chooseRCR10stm#40h,39hstm#3,spsa0;chooseRCR20stm#0,39hstm#4,spsa0;chooseXCR10stm#40h,xcr10stm#5,spsa0;chooseXCR20stm#0,39hstm#0eh,spsa0;choosePCR0stm#0dh,pcr0;fsislowactive,riseedgeofclkx,fallingedge;ofclkrstm#7h,spsa0stm#8000h,39hrpt#0ffffhnopstm#00h,dxr10ldm22h,astm#1,38hstm#0c1h,39h;startMcBSP0send!完成串口设置后,还需要修改中断向量表以便正确响应串口0的接收和发送中断请求。本试验中使用发送中断产生方波信号和完成对AC01的初始化;使用接收中断存贮输入的数据,并设置数据到达标志。主循环在检测到该标志后,调用FIR滤波程序,XF为高和低。所以,在滤波程序正常运行时,你会看到D2在不停地闪耀。试验内容本试验需要使用‘C54X汇编语言实现FIR滤波器,并通过CCS的图形显示工具观看输入/输出信号波形以及频谱的变化。试验分以下几步完成:短接JP12,使得DES320PP-U的模拟信号输出通道与模拟信号输入通道相连。启动CCS,在Project选项中翻开fir5402.pjt文件。使用Build选项完成编译、连接,然后使用File菜单中的LoadProgram将OUT文件装入。按F5键启动程序运行,假设有示波器,可以观看DSE320PP-U板上的JP12的引脚输出的1KHz的方波。DES320PP-U数字信号处理仿真/教学试验系统使用与试验指导“://dspsolution/“dspsolution81图6-4图形显示窗口请使用Debug->Halt暂停程序的执行。在Project治理栏中翻开fir5402.asm文件,并在ccs_show〔在fir子程序中〕行后的nop语句处上增加一个断点。添加断点的方法是先用鼠标单击某行,将光标移动到需要增加断点的行上,然后选择工具栏的手状图标。当该行被设置了一个断点后,可以看到红色的圆点。选择View->Graph->Time/Frequency菜单翻开一个图形显示窗口,参见图6-4。将“StartAddress”项改为地址0x1800,将“DisplayDataSize”项设置为128,将“DSPDataType”改为“16-bitsignedinteger”。这样,将在图形显示窗口中显示从0x1800〔信号输入缓冲〕开头的128个点的16位有符号整数。再翻开一个图形窗口,显示从地址0x1020〔滤波信号输出缓冲〕开头的128点的16位有符号整数。选择Debug->Animate项运行程序。Animate运行和Run运行根本全都,只是使用Run运行时,假设遇到断点,将停下来,直到用户再次使用Run命令才恢复运行。而使用Animate运行时,假设遇到断点,CCS刷全部的显示窗口,如存放器、CPU、MEM、图形显示等,然后自动恢复运行。所以,你能看到连续更的滤波输出。思考题请说明下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论