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

下载本文档

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

文档简介

DSP硬件课程试验汇报试验一:惯用指令试验试验目标1.熟悉DSP开发系统连接2.了解DSP开发系统组成和结构和应用系统组成3.熟悉惯用C54X系列指令使用方法(程序寻址,存放器,I/O口,定时器,中止控制)。试验设备计算机,CCS2.0版软件,DSP仿真器,试验箱。试验操作方法系统连接进行DSP试验之前,先必须连接好仿真器、试验箱及计算机,连接方法以下所表示:PCI/USB/EPPPCI/USB/EPP接口JTAG接口计算机仿真器用户开发板在硬件安装完成后,接通仿真器电源或开启计算机,此时,仿真盒上“红色小灯”应点亮,不然DSP开发系统与计算机连接有问题。运行CCS程序先试验箱上电,然后开启CCS,此时仿真器上“绿色小灯”应点亮,而且CCS正常开启,表明系统连接正常;不然仿真器连接、JTAG接口或CCS相关设置存在问题,掉电,检验仿真器连接、JTAG接口连接,或检验CCS相关设置是否正确。试验步骤与内容简单指令程序运行试验试验使用资源试验经过试验箱上XF指示灯观察程序运行结果试验过程开启CCS2.0,并加载“exp01.out”;加载完成后,单击“Run”运行程序;试验结果:可见XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF灯停顿闪烁,如再单击“Run”,则“XF”灯又开始闪烁;关闭全部窗口,本试验完成。源程序查看:用下拉菜单中Project/Open,打开“Exp01.pjt”,双击“Source”,双击“exp01.asm”可查看源程序。源程序注释以下:源程序:注释:;FileName:exp01.asm;theprogramiscompiledatnoautoinitializationmode .mmregs .global_main_main: stm #3000h,sp ssbx xf call delay rsbx xf call delay b_main nop nop ;delay.5second delay: stm 270fh,ar3loop1: stm 0f9h,ar4loop2: banz loop2,*ar4- banz loop1,*ar3- ret nop nop;stm 2cycles;banz whenTRUE4cycles;FALSE2cycles;0f9h=>249d;270fh=>9999d .end定义存放器映像存放器全局符号,可在外部定义;设置堆栈指针存放器值为3000h;置位状态存放器xf;调用delay函数;复位状态存放器xf;调用delay函数;无条件转移至_main;空指令;空指令;设置辅助存放器ar3值为9999;设置辅助存放器ar4值为249;存放器ar4值减一,当其值不为0时跳转到loop2;存放器ar3值减一,当其值不为0时跳转到loop1;返回;空指令;空指令(二)资料存放试验试验使用资源本试验指导书是以TMS32OVC5410为例,介绍相关内部和外部内存资源。对于其它类型CPU请参考查阅相关资料手册。下面给出TMS32OVC5410内存分配表:对于存放空间而言,映像表相对固定。值得注意是内部存放器与存放空间映像关系。所以在编程应用时这些特定空间不能作其它用途。对于程序存放空间而言,其映像表和CPU工作模式关于。当MP/MC引脚为高电平时,CPU工作在微处理器模式;当MP/MC引脚低电平时,CPU工作在为计算机模式。详细内存映像关系如上如所表示。内存试验主要了解内存操作和DSP内部双总线结构。并熟悉相关指令代码和执行过程等。试验过程连接好DSP开发系统,运行CCS软件;在CCSMemory窗口中查找C5410各个区段数据存放器地址,在能够改变存放器内容地方,选定地址随意改变其中内容并观察结果;在CCS中装载试验示范程序,单步执行程序,程序中写入和读出数据存放地址改变;改变其它寻址方式,进行观察数据存放器地址与写入和读出数据改变。本试验说明:本试验程序将对0x1000开始8个地址空间,填写入0xAAAA数值,然后读出,并存放到0X1008开始8个地址空间。在CCS中能够观察DATA内存空间地址0X1000~0X100F值改变。样例程序试验操作说明:开启CCS2.0,并加载“exp02.out”,用“View”下拉菜单中“Memory”查看内存单元,输入要查看内存单元地址,本试验要查看0x1000H~0x100FH单元数值改变,输入地址0x1000H,查看0x1000H~0x100FH单元初始值,单击“Run”运行程序,也能够“单步”运行程序,单击“Halt”暂停程序运行,查看0x1000H~0x100FH单元内数值改变关闭各窗口,本试验完成。源程序注释:源程序:注释:*FileName:exp02.asm ;getsomeknowledgeofthecmdfile;theprogramiscompiledatnoautoinitializationmode .mmregs .global_main_main:;storedata stm 1000h,ar1 rpt #07h st 0aaaah,*ar1+ ;readdatathenre-store stm 7h,ar3 stm 1000h,ar1 stm 1008h,ar2loop: ld *ar1+,t st t,*ar2+ banz loop,*ar3-here: bhere .end;将外部内存地址1000h赋给ar1;循环执行下一条指令8次;将0aaaah值存放在ar1所对应内存中,且ar1值加1;将7h赋给辅助存放器ar3;将地址1000h赋给辅助存放器ar1;将地址1008h赋给辅助存放器ar2;将辅助存放器ar1值赋给t,且ar1值加1;将t值存放在ar2所对应内存中,且ar2值加1;存放器ar3值减1,当其值不为0时跳转到loop;无条件转移至here(三)I/O试验试验使用资源数字量输入信号全部拓展出来,数字量输入接口主要由两个,D_Exp与扳东开关连接,PX4和PX5与电平转换芯片(74LVC245)连接,其功效分别为:D_Exp—数字量输入扩展接口123456789I0I1I2I3I4I5I6I7VCC电平转换扩展接口1234PX4—5VIN0IN1IN2IN3PX5—3.3VOUT3OUT2OUT1OUT0经过PORTR,PORTW指令能够实现I/O口输入输出功效,如数字量采集试验。试验说明:试验中采取简单一一映像关系来对I/O口进行验证,目标是使试验者能够对I/O有一目了然认识。在本试验系统中,提供IO空间分配以下:CPU1:0x0000 switchinput(X)80x0001 LEDoutput(X)8CPU2: 0x0001 DAC0x0004 Read_Key0x0006 Write_Key0x000F Write_LCD0x8000 HPIC00x8001 HPIC10x8002 HPID0(AUTO)0x8003 HPID1(AUTO)0x8004 HPIA00x8005 HPIA10x8006 HPID0(NOAUTO)0x8007 HPID1(NOAUTO)试验程序框图开始开始始初始化读入I/O00h地址内容输出到I/O01h地址注意:电平转换接口主要考虑应用3.3V中央处理器时,系统电平兼容问题,用来保护CPU不受损坏。系统采取74LVC245电平兼容转换器件。试验过程运行CCS程序,装载示范程序,调整K0~K7开关,观察LP1~LP7LED亮灭改变,以及输入和输出状态是否一致。(注意:输出为0时点亮灯)例程序试验操作说明开启CCS2.0,并加载“exp03.out”,单击“Run”运行程序,任意调整K0~K7开关,能够观察到对应LP0~LP7灯“亮”或“灭”;单击“Halt”,暂停连续运行,开关将对灯失去控制。关闭全部窗口,本试验完成。源程序查看:用下拉菜单中Project/Open,打开“Exp03.pjt”,双击“Source”,双击“exp03.asm”可查看源程序。代码以下:源程序:注释:;FileName:exp03.asm;learnhowtooperatetheI/Oports;getsomeknowledgeoftherts.libfile;intheI/Ospace0x0000=>8switches; 0x0001=>8LEDs .mmregs .global _main .text_main: stm 3100h,sp stm 1000h,ar1 portr 00h,*ar1 nopnop portw *ar1,01h nop nopb_mainnopnop.end;设置堆栈指针存放器值为3000h;设置辅助存放器ar1值为1000h;从00h端口读数据传入ar1所指向内存空间,读按键;空指令;空指令;将ar1所指向内存空间值赋给01h端口,控制led灯;空指令;空指令;无条件转移至_main,实现按键控制;空指令;空指令(四)定时器试验1、试验使用资源定时器试验时要用到C54芯片定时器控制存放器,定时器时间常数存放器,定时器中止响应,存放器定义详见C54芯片资料。C54定时器是一个20位减法计数器,能够被特定状态位实现停顿、重新开启、重设置或禁止,能够使用该定时器产生周期性CPU中止,控制订时器中止频率两个存放器是定时周期存放器PRD和定时减法存放器TDDR定时器试验经过LED(LP1~LP7)来显示。在本系统中,时钟频率为20MHZ,令PRD=0x4e1f,这么得到每1/1000秒中止一次,经过累计1000次,就能定时1秒钟。2、试验过程调入样例程序,装载并运行;例程序试验操作说明开启CCS2.0,并加载“exp04.out”,单击“Run”运行,可观察到LED灯(LP0~LP7)以一定间隔时间不停摆动,单击“Halt”,暂停程序运行,LED灯停顿闪烁,单击“Run”,运行程序,LED灯又开始闪烁。关闭全部窗口,本试验完成。源程序:exp04.c注释:#include<stdio.h>interruptvoidtimer();/*externvoidtime();*/externvoidinitial();externvoidporta();externvoidportb();intflag=0;interruptvoidtimer(){ *(int*)0x300=*(int*)0x300+1 if(*(int*)0x300==0x3e8) { *(int*)0x300=0; *(int*)0x302=*(int*)0x302+1; if(flag==0) {flag=1; porta(); } else {flag=0; portb();} } return;}main(){ initial();初始化 while(1){;};无限循环};定时不停加1;当定时器数值达成0x3e8,开始定时器中止为定时器重新赋予初值;假如flag为0,则将其变为1,执行porta();假如flag为1,则将其变为1,执行portb()源程序:initial.asm .mmregs .global_initial_initial: stm 300h,ar1 st #00h,*ar1 stm 302h,ar1 st #00h,*ar1 stm 200h,ar1 st #5555h,*ar1 stm 201h,ar1 st #0aaaah,*ar1 stm 202h,ar1 st #400h,*ar1 ssbx 1,11 stm 0ffffh,ifr stm 00h,imr stm 410h,tcr stm 4e1fh,prd stm 420h,tcr stm 08h,imr rsbx 1,11 ret;将300h赋值给ar1;将00h赋值给内存地址为300h空间里;将302h赋值给ar1;将00h赋值给内存地址为302h空间里;为内存200h内容赋予5555h;为内存201h内容赋予aaaah;为内存202h内容赋予400h;设置ST1.INTM=1,停顿全部中止;去除全部中止标志位,中止标志存放器(IFR)用来指明各个中止现在状态。;停顿全部中止中止屏蔽存放器(IMR)在需要时候独立地屏蔽特定中止;停顿定时器;设置定时器,定时器周期计数器;打开定时器定时器控制存放器;允许定时器中止;设置ST1.INTM=0,打开全部中止源程序:port.asm注释: .mmregs .global _porta .global _portb _porta: stm 304h,ar1 st 5555h,*ar1 portw *ar1,01h ret _portb: stm 304h,ar1 st 0aaaah,*ar1 portw *ar1,01h ret;将304h赋给辅助存放器ar1;将内存304h内容赋予5555h;将内存304h值写入01h端口;将内存304h内容赋予0aaaah;将内存304h值写入01端口源程序:vectors.asm注释:.sect".vectors".ref_c_int00.ref_timer.align0x80RESET:BD_c_int00STM#200,SPstacksizeof200nmi:RETENOPNOPNOPsint17.space4*16sint18.space4*16sint19.space4*16sint20.space4*16sint21.space4*16sint22.space4*16sint23.space4*16sint24.space4*16sint25.space4*16sint26.space4*16sint27.space4*16sint28.space4*16sint29.space4*16sint30.space4*16int0:RETENOPNOPNOPint1:RETENOPNOPNOPint2:RETENOPNOPNOPtint:b_timerNOPNOPrint0:RETENOPNOPNOPxint0:RETENOPNOPNOPrint1:RETENOPNOPNOPxint1:RETENOPNOPNOPint3:RETENOPNOPNOP.end引用函数c_int00引用了c中函数页边界排列resetvector,复位中止响应延迟分支到C主程序默认入口地址,c_int00是c程序入口,这里即进入main函数中开辟堆栈空间中止屏蔽置为0,响应中止,不可屏蔽中止产生时,使中止屏蔽取消,后返回。保留出中止向量地址空间中止存放器设置RETE返回并允许中止外部中止产生时,直接返回。定时器产生时钟中止,返回到c中定义timer程序,b即是跳转同时串口0(McBSP0)接收中止,直接返回同时串口0(McBSP0)发送中止,直接返回同时串口1(McBSP1)接收中止,直接返回同时串口1(McBSP1)发送中止,直接返回(五)INT2中止试验1、试验使用资源本试验是进行C54芯片INT2中止练习,C54芯片中止INT2是低电平单脉冲触发;试验采取导线一端连接D_Exp—数字量输入扩展接口I0,经PX4IN3,到PX5OUT0电平转换,再与另一端连接INT2插孔;拨动开关K0一次,就产生一个低电平单脉冲;运行示范程序,观察LP1~LP7LED灯输出改变;可观察到每拨动开关K0一次LP1~LP7灯亮灭改变一次;2、试验过程样例程序试验操作说明开启CCS2.0,并加载“exp05.out”,单击“Run”运行程序,重复拨动开关K0,观察LP1~LP7LED灯亮灭改变,单击“Halt”暂停程序运行,重复拨动开关K0,LP1~LP7LED灯亮灭不改变;关闭全部窗口,本试验完成。源程序查看:用下拉菜单中Project/Open,打开“Exp05.pjt”,双击“Source”,双击“int2.c”、“initial.asm”、“port.asm”以及“vectors.asm”可查看各源程序。源程序:int2.c注释:interruptvoidint2c();externvoidinitial();externvoid porta();externvoidportb();intflag=0;main(){ initial(); while(1){;}}interruptvoidint2c(){ asm("nop"); *(int*)0x300=*(int*)0x300+2 if(flag==0) { flag=1; porta(); } else { flag=0; portb(); }}; /*breakheretoshowifinterrupthappened*/这是一个统计外部中止标志,经过统计0x300h中值来统计源程序:initial.asm注释: .mmregs .global_initial.text_initial: stm 300h,ar3 st #00h,*ar3 stm 302h,ar4 st #00h,*ar4 ssbx 1,11 stm 00h,imr stm 0ffffh,ifr stm 04h,imr rsbx 1,11 ret .end;将00h存入地址为300h内存中;将00h存入地址为302h内存中;设置ST1.INTM=1,停顿全部中止;停顿全部中止,中止屏蔽存放器(IMR)在需要时候独立地屏蔽特定中止;去除全部中止标志位,中止标志存放器(IFR)用来指明各个中止现在状态。;开启int2外部中止;打开全部中止总开关源程序:port.asm注释: .mmregs .global _porta .global _portb _porta: stm 304h,ar1 st 5555h,*ar1 portw *ar1,01h ret _portb: stm 304h,ar1 st 0aaaah,*ar1 portw *ar1,01h ret;将304h赋给辅助存放器ar1;将内存304h内容赋予5555h;将内存304h值写入01h端口;将内存304h内容赋予0aaaah;将内存304h值写入01端口源程序:vectors.asm注释:.sect".vectors".ref_c_int00.ref_int2c.align0x80RESET:BD_c_int00STM#200,SPstacksizeof200nmi:RETENOPNOPNOPsint17.space4*16sint18.space4*16sint19.space4*16sint20.space4*16sint21.space4*16sint22.space4*16sint23.space4*16sint24.space4*16sint25.space4*16sint26.space4*16sint27.space4*16sint28.space4*16sint29.space4*16sint30.space4*16int0:RETENOPNOPNOPint1:RETENOPNOPNOPint2:RETENOPNOPNOPtint:b_timerNOPNOPrint0:RETENOPNOPNOPxint0:RETENOPNOPNOPrint1:RETENOPNOPNOPxint1:RETENOPNOPNOPint3:RETENOPNOPNOP.end引用函数c_int00页边界排列resetvector,复位中止响应延迟分支到C主程序默认入口地址,c_int00是c程序入口,这里即进入main函数中开辟堆栈空间中止屏蔽置为0,响应中止,不可屏蔽中止产生时,使中止屏蔽取消,后返回。保留出中止向量地址空间中止存放器设置RETE返回并允许中止外部中止产生时,直接返回。定时器产生时钟中止,返回到c中定义timer程序,b即是跳转同时串口0(McBSP0)接收中止,直接返回同时串口0(McBSP0)发送中止,直接返回同时串口1(McBSP1)接收中止,直接返回同时串口1(McBSP1)发送中止,直接返回试验二A/D采样试验试验目标掌握利用TLV320AD50实现A/D转换技术基本原理和惯用方法。学会DSP多信道缓冲串口应用方法。掌握并熟练使用DSP和AD50接口及其操作。经过试验加深对DSP系统频谱混叠认识。试验设备计算机,CCS2.0软件,DSP仿真器,试验箱,示波器,连接导线。试验步骤和内容试验连线用短接块短接SS11,2脚,设置输出低频信号;短接S2Sin脚,设置输出正弦波信号,这时模拟信号产生单元SP1输出为低频正弦波。JD跳线断开,设置语音处理单元输入信号为交流;并用导线连接SP1脚和JAD31脚,将模拟低频正弦波信号接入语音处理单元。用导线连接JAD1INP和INPF,以及JAD2INM和INMF,将语音处理单元输出差动模拟信号接入AD50输入端。运行CCS2.0软件,装入“exp06.pjt”工程文件,双击“exp06.pjt”及“Source”3.加载“exp06.out”示范程序,在“exp06.c”中“READAD50()”处,设置断点,运行程序,经过用下拉菜单中View/Graph“Time/Frequency”打开一个图形观察窗口,调整输入信号频率或幅值,观察图形情况(幅值和频率),设置该图形观察窗口参数,观察起始地址为0x1000H,长度为256内存单元内数据,该资料为输入信号经A/D转换之后数据,数据类型为16位整型,击“Animate”运行程序,在图形观察窗口观察A/D转换后采样波形。在图形观察窗口观察A/D转换后采样波形;试验三:数字滤波器有限冲击响应滤波器(FIR)算法试验一.试验目标1.掌握用窗函数法设计FIR数字滤波器原理和方法;2.熟悉线性相位FIR数字滤波器特征;3.了解各种窗函数对滤波特征影响。二.试验设备计算机,CCS2.0版软件,试验箱,DSP仿真器,短接块,导线。三.试验原理1.有限冲击响应数字滤波器基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.数字滤波器系数确实定方法。四.试验步骤1.复习怎样设计FIR数字滤波。阅读本试验原理,掌握设计步骤;2.阅读本试验所提供样例子程序;3.运行CCS软件,对样例程序进行跟踪,分析结果;4.填写试验汇报。5.样例程序试验操作说明1)试验前准备在模拟信号产生单元中,一路信号源产生低频正弦波信号(S1置“L”),另一路信号源产生高频正弦波信号(S11置“H”),检验模拟信号输出端口“A”与“B”应断开;试验箱上电,用示波器分别观察out1和out2输出模拟信号,调整电位器SPR1、SPR2(out1输出信号频率调整和幅值调整)和电位器SPR11、SPR12(out2输出信号频率调整和幅值调整),直至满意为止;本样例试验程序提议:低频正弦波信号为100Hz/1V;高频正弦波信号为6KHz/1V;试验箱掉电,做以下连接和检验:短接输出端口“A”与“B”;短接JAD1INM、INMF;短接JAD2INP、INPF;用导线连接out2(模拟信号输出)和JAD31脚(MIC_IN);检验:JD是否断开。注:关于以上连接说明,可参见第八章中语音接口跳线接输出接口配置使用说明以及信号产生单元配置说明。正确完成计算机、DSP仿真器和试验箱连接后,系统上电。试验程序说明:该程序为51阶FIR低通滤波器算法程序,采取矩形窗函数实现,数组h和xmid长度均为51,fs为采样频率,fstop为滤波器截止频率,能够修改以上参数来改变滤波器性能。重新“Rebui

温馨提示

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

评论

0/150

提交评论