为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > FIR 数字滤波器(DSP实验报告)

FIR 数字滤波器(DSP实验报告)

2021-09-08 11页 doc 26KB 91阅读

用户头像

is_337177

暂无简介

举报
FIR 数字滤波器(DSP实验报告)FIR数字滤波器一、实验目的数字滤波的作用是滤除信号中某一部分频率分量。信号经过滤波处理,就相当于信号频谱与滤波器的频率响应相乘的结果。从时域来看,就是输入信号与滤波器的冲激响应作卷积和。数字滤波器在各种领域由广泛的应用,例如数字音响、音乐和语音合成、躁声消除、数据压缩、频率合成、谐波消除、过载检测、相关检测等。本实验主要学习数字滤波器的DSP实现原理和C54X编程技巧,并通过CCS的图形显示工具观察输入/输出信号波形以及频谱的变化。该实验应该安排在串口和定时器操作实验之后进行。二、实验原理1) FIR滤波器的实现如果FIR滤...
FIR 数字滤波器(DSP实验报告)
FIR数字滤波器一、实验目的数字滤波的作用是滤除信号中某一部分频率分量。信号经过滤波处理,就相当于信号频谱与滤波器的频率响应相乘的结果。从时域来看,就是输入信号与滤波器的冲激响应作卷积和。数字滤波器在各种领域由广泛的应用,例如数字音响、音乐和语音合成、躁声消除、数据压缩、频率合成、谐波消除、过载检测、相关检测等。本实验主要学习数字滤波器的DSP实现原理和C54X编程技巧,并通过CCS的图形显示工具观察输入/输出信号波形以及频谱的变化。该实验应该安排在串口和定时器操作实验之后进行。二、实验原理1) 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)] 使用MAC或FIRS指令可以方便地实现上面的计算。使用带MAC指令的循环寻址模式实现FIR滤波器,程序片段如下:(输入数据在AL中,滤波结果在AH中)STM #1,AR0     ;AR0=1STM #N,BK     ;BK=N,循环寻址BUFFER大小为NSTLA,*FIR_DATA_P%    ;更新滤波窗口中的采样数据RPTZ A,#(N-1)    ;重复MAC指令N次,先将A清零MAC *FIR_DATA_P0%,*FIR_COFF_P0%,A  ;完成滤波计算。注意FIR滤波系数存放在;数据存储区另一种方法是利用C54x系列芯片的提供的FIRS指令来实现FIR滤波器。为一种有限单位冲激响应呈现对中心点对称的FIR滤波器。长度为N的线性相位FIR,使用带FIRS指令的循环寻址模式实现FIR滤波器,程序片段如下:(输入数据在AL中,滤波结果在B中)STM #1,AR0       ;AR0=1STM #(N/2),BK    ;BK=N/2,循环寻址BUFFER大小为NMVDD *ar2,*ar3    ;更新Buffer2STLA,*ar2%       ;更新滤波窗口中的采样数据ADD *ar20%,*ar30%  ;初始化ARPTZ B,#(N/2-1)     ;重复FIRS指令N/2次,先将B清零FIRS *ar20%,*ar30%,filter_coffN/2   ;完成滤波计算。注意FIR滤波系数存放在程序,存贮区,filter_coff为系数起始地址MAR *ar2-%      ;修改Buffer1指针MAR *ar3(-2)%     ;修改Buffer2指针2)AC01的初始化DSE320PP-U使用AC01作为模拟信号接口。AC01提供一个14bit的D/A和一个14bit的A/D通道。AC01与VC5402通过串口0连接。DSP通过串口可以控制AC01的采样频率、增益、低通/高通滤波器的截止频率等参数。这一步是通过读写AC01的寄存器来实现的。下面是初始化AC01的代码,有关AC01的详细介绍请参考AC01的技术手册。idle1   ;初始化AC01时仅仅打开串口0的发送中断,而且中断服务idle1   ;程序中简单地将A寄存器的值写入到串口0发送寄存器。idle1   ;开始初始化时,将A寄存器设置为0 !idle1 ld #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,a3)1KHz方波信号的产生利用AC01的D/A通道产生一个1KHz的方波,作为FIR滤波器的输入信号。由于串口发送中断将每0.04ms(25KHz)产生一次,所以我们将一个周期的方波信号分25次送出,这样经D/A变化后便可得到1KHz的方波。产生方波的数据参见如下:wave_data:;freqabout1kH.word  03ffch     ;2volt.word  03ffch.word  03ffch.word  03ffch.word  03ffch.word  03ffch.word  03ffch.word  03ffch.word  03ffch.word  03ffch.word  03ffch.word  03ffch.word  03ffch.word  0c000h     ;-2volt.word  0c000h.word  0c000h.word  0c000h.word  0c000h.word  0c000h.word  0c000h.word  0c000h.word  0c000h.word  0c000h.word  0c000h.word  0c000h4)串口的初始化和串口中断服务程序本实验通过DSP的串口0输入/输出数据。在串口通讯中,数据时钟和帧同步信号都由AC01产生,所以VC5402将使用外部时钟和帧同步信号。串口设置代码如下,详细介绍请参见串口操作实验:stm #0,spsa0    ;chooseSPCR10stm #2000h,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,dxr10ldm 22h,astm #1,38hstm #0c1h,39h   ; startMcBSP0send!三、实验本实验需要使用‘C54X汇编语言实现FIR滤波器,并通过CCS的图形显示工具观察输入/输出信号波形以及频谱的变化。实验分以下几步完成:1)短接JP12,使得DES320PP-U的模拟信号输出通道与模拟信号输入通道相连。2)启动CCS,在Project选项中打开fir5402.pjt文件。3)使用Build选项完成编译、连接,然后使用File菜单中的LoadProgram将OUT文件装入。按F5键启动程序运行,若有示波器,可以观察DSE320PP-U板上的JP12的引脚输出的1KHz的方波。4)请使用Debug->Halt暂停程序的执行。在Project管理栏中打开fir5402.asm文件,并在ccs_show(在fir子程序中)行后的nop语句处上增加一个断点。添加断点的方法是先用鼠标单击某行,将光标移动到需要增加断点的行上,然后选择工具栏的手状图标。当该行被设置了一个断点后,可以看到红色的圆点。5)选择View->Graph->Time/Frequency菜单打开一个图形显示窗口。将“StartAddress”项改为地址0x1800,将“DisplayDataSize”项设置为128,将“DSPDataType”改为“16-bitsignedinteger”。这样,将在图形显示窗口中显示从0x1800(信号输入缓冲)开始的128个点的16位有符号整数。再打开一个图形窗口,显示从地址0x1020(滤波信号输出缓冲)开始的128点的16位有符号整数。6)选择Debug->Animate项运行程序。Animate运行和Run运行基本一致,只是使用Run运行时,若遇到断点,将停下来,直到用户再次使用Run命令才恢复运行。而使用Animate运行时,若遇到断点,CCS刷新所有的显示窗口,如寄存器、CPU、MEM、图形显示等,然后自动恢复运行。所以,你能看到连续更新的滤波输出。
/
本文档为【FIR 数字滤波器(DSP实验报告)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索