ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:155.43KB ,
资源ID:10461168      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10461168.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP实验指导书.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP实验指导书.docx

1、DSP实验指导书DSP技术及其应用实验指导书邢海涛,郑佳春 编著集美大学信息工程学院通信技术实验室2011年5月4日目 录实验一 CCS集成开发环境 2实验二 汇编语言程序设计 9实验三 FIR数字滤波器的C54X实现 11实验四 C程序设计实验 14实验五 TI DSP USB开发系统和XM5402评估板的使用 19实验六 中断系统实验 22实验七 综合应用实验 27*实验八 设计实验 37实验一 CCS集成开发环境一、实验目的1熟悉CCS开发软件的环境界面;学会开发环境的设置;2掌握DSP开发的构建工程,程序的编辑、编译、链接、运行、调试的方法;3学会数据的输入和结果分析、查看。二、实验内

2、容1、CCS配置单击桌面上的“CCSsetup”图标,打开CCS开发环境设置界面如图1-1,对于软件仿真,仅选择软件仿真器即可(图中选择的是芯片为5409的仿真器),点击“Import”导入系统,点击“save and quit”保存退出设置界面,启动CCS即可进入编辑界面。图1-1 CCS配置对话框2、 建立工程文件(1)工程的创建、打开和关闭。选择菜单“ProjectNew”,弹出如图1-2对话框,在Project后的文本框里输入工程名即可创建新工程(这里设定工程名为lab1)。在实验中我们规定文件名统一选为“姓_学号”(用拼音)。选择菜单“ProjectOpen” 和“ProjectCl

3、ose”,即可完成工程的打开和关闭。 (2)在工程中添加/删除文件在当前工程窗口,以下任一操作都能添加文件到工程中: a、选择命令ProjectAdd Files to project. b、在工程视图中右键单击调出关联菜单,选择Add Files 在工程视图中右键单击要删除的文件名,选择Remove from project即可删除文件。 图1-2创建工程对话框3、构建工程工程所需文件编辑完成后,可以对该工程进行编译链接,产生可执行文件,为调试作准备。 (1)编译文件:命令ProjectCompile或单击工程工具条“编译当前文件”按钮,仅编译当前文件,不进行链接。 (2)增量构建:单击工程

4、工具条“增量构建”按钮则只编译那些自上次构建后修改过的文件。增量构建(incremental build)只对修改过的源程序进行编译,先前编译过、没有修改的程序不再编译。 (3)重新构建:命令ProjectRebuild或单击工程工具条“重新构建”按钮重新编译链接当前工程。(4)停止构建:命令ProjectStop Build或单击工程工具条“停止构建”按钮停止当前的构建进程。4、调试(1)载入可执行程序 命令FileLoad Program载人编译链接好的可执行程序。用户也可以修改“Program Load”属性,使得在构建工程后自动装入可执行程序。设置方法为选择命令OptionsProgr

5、am Load。(2)使用反汇编工具用户的执行程序(不论是C程序或是汇编程序)载入到目标板或仿真器时,CCS调试器自动打开一个反汇编窗口。对每一条可反汇编的语句,反汇编窗口显示对应的反汇编指令(某些C语句一条可能对应于几条反汇编指令),语句所处地址和操作码(即二进制机器指令)。当前程序指针PC(Program Point)所在语句用彩色高亮表示。(3)程序执行控制A.复位4种方法 (1)Reset DSP:DebugReset DSP命令初始化所有的寄存器内容并暂停运行中的程序。如果目标板不响应命令,并且用户正在使用一基于核的设备驱动,则DSP核可能被破坏,用户需要重新装入核代码。对仿真器,C

6、CS复位所有寄存器到其上电状态。 (2)Load Kernel:如果用户使用一基于核的调试器(不是JTAG),则DSP核应负责与主机的通信。若DSP核被破坏,则设备驱动程序将无法与目标板通信。在这种情况下,用户应当重新装入DSP核。命令:Debug Load Kernel。 (3)Restart:DebugRestart命令将PC恢复到当前载入程序的人口地址。此命令不执行当前程序。(4)Go Main:DebugGo Main命令在主程序入口处设置一临时断点,然后开始执行。当程序被暂停或遇到一个断点时,临时断点被删除。此命令提供了一快速方法来运行用户应用程序。B.执行4种程序执行操作 (1)执

7、行程序。命令为DebugRun或单击调试工具条“执行” 按钮,程序运行直到遇见断点为止。 (2)暂停执行。命令为DebugHalt或单击调试工具条上的“暂停执行”按钮。 (3)动画执行。命令为Debug,Animate或单击调试工具条上的“动画执行”按钮。用户可以反复运行执行程序,直到遇到断点为止。 (4)自由运行。命令为DebugRun Free。此命令禁止所有断点,包括探针断点和Profile断点,然后运行程序。C.单步执行操作 (1)单步进入(快捷键F8)。命令为DebugStep Into或单击调试工具条上的“单步进入”按钮。当调试语句不是最基本的汇编指令时,此操作将进入语句内部(如子

8、程序或软件中断)调试。 (2)单步执行(快捷键F1O)。命令为Debug Step Over或单击调试工具条上的“单步执行”按钮。此命令将函数或子程序当作一条语句执行,不进其内部调试。(3)单步跳出(快捷键Shift+F7)。命令为DebugStep Out或单击调试工具条上的“单步跳出”按钮。此命令将从子程序中跳出。 (4)执行到当前光标处(快捷键Ctrl+F10)。命令为Debug Run to Cursor或单击调试工具条上的“执行到当前光标处”按钮。此命令使程序运行到光标所在的语句处。5、内存、寄存器操作(1)查看、编辑内存CCS允许显示特定区域的内存单元数据。方法为:选择ViewMe

9、mory或单击调试工具条上的“显示内存数据”按钮。在弹出对话框中输入内存变量名(或对应地址)、显示方式即可显示指定地址的内存单元。编辑某一内存单元的方法为:在内存窗口中鼠标左键双击需要修改的内存单元,或者选择命令EditMemoryEdit,在对话框中指定需要修改的内存单元地址和内存空间类型,并输入新的数据值即可。注意输人数据前面加前缀“0x”为十六进制,否则为十进制。查看:程序代码;变量位置。编辑链接命令文件,加入工程;重新构建工程;重复上述过程。比较结果,体会链接命令文件的作用。(2)CPU寄存器 选择命令ViewCPU RegistersCPU Register或单击调试工具条上的CCS

10、将在CCS窗口下方弹出一寄存器查看窗口。 有3种方法可以修改寄存器的值: a、命令EditEdit Register。 b、在寄存器窗口双击需要修改的寄存器。 c、在寄存器窗口单击右键,从弹出的菜单中选择需要修改的寄存器。三种方法都将弹出一编辑对话框,在对话框中指定寄存器(如果在“Register栏中不是所期望的寄存器)和新的数值即可。6、调试一个程序试调试乘法累加运算程序(教材例4 P95)。(1)创建一个工程;(2)在工程里编辑源程序文件、中断向量文件、链接命令文件,加入到工程并保存;(3)编译、查错、链接生成可执行文件,并加载文件;(4)查看列表文件、存储器映像文件,体会它们的作用。(5

11、)单步运行程序,在反汇编窗口观察程序的运行情况;观察程序的控制和转移以及加、减、乘运算;同时从存储器窗口、CPU寄存器窗口查看、分析程序运行结果,并判断结果是否正确。(6)系统复位,观察程序的运行情况。(7)若算法中滤波器的系数改变为: 0.9,0.7,0.5,0.3请问:程序如何修改?调试程序,查看运行结果。(8)若算法中滤波器的阶数改变为7阶,系数为: 0.9,0.8,0.7,0.6,0.5,0.4,0.3 请问:程序如何修改?调试程序,查看运行结果,分析判断结果的正确性。三、实验报告要求1简述实验目的;2按实验内容附上实验结果,并对结果进行分析;3附上修改后的程序代码;4实验进行总结和讨

12、论。四、思考题1实验时你的程序代码和变量加载在什么存储器的什么位置?2简述列表文件和存储器映像文件包含哪些信息?3简述链接命令文件的作用。附录一: 链接命令文件* dspsy1.cmd *-o dsp_ccs.out-m dsp_ccs.map-e startMEMORY PAGE 0: EPROM1 :org=0FF80h,len=80h EPROM2 :org=0E000h,len=100h PAGE 1: SPRAM :org=0060h,len=0020h DARAM :org=0080h,len=100h SECTIONS VECTOR :EPROM1 PAGE 0 .text :E

13、PROM2 PAGE 0 .bss :SPRAM PAGE 1 .data :DARAM PAGE 1 STACK :DARAM PAGE 1 附录二: 中断向量文件* dspsy_vect.asm *; = vectors.asm =; Plug in the entry point at RESET in the interrupt vector table; = unused = .sect VECTOR .ref start ; C entry pointRESET: ; reset vector BD start ; branch to C entry point NOP NOP ;

14、 stack size of 200nmi: RETE ; enable interrupts and return from one NOP NOP NOP ;NMI ; software interruptssint17 .space 4*16sint18 .space 4*16sint19 .space 4*16sint20 .space 4*16sint21 .space 4*16sint22 .space 4*16sint23 .space 4*16sint24 .space 4*16sint25 .space 4*16sint26 .space 4*16sint27 .space

15、4*16sint28 .space 4*16sint29 .space 4*16sint30 .space 4*16int0: RETE NOP NOP NOPint1: RETE NOP NOP NOPint2: RETE NOP NOP NOPtint: RETE NOP NOP NOPrint0: RETE NOP NOP NOPxint0: RETE NOP NOP NOPrint1: RETE NOP NOP NOPxint1: RETE NOP NOP NOPint3: RETE NOP NOP NOP .end实验二 汇编语言程序设计一、 实验目的1在熟悉工程创建调试的基础上,进

16、一步熟悉汇编语言程序结构、编写方法;2学会程序的控制、转移、子程序调用;3学会加、减、乘运算的编程和实现。4学会使用CCS的图形显示工具。二、实验内容1熟悉汇编命令熟悉2-1中常用的汇编命令,熟练区分块的类别(未初始化块、已初始化块、自定义块等)。表2-1 常用的汇编命令汇编命令作 用举 例.title紧跟其后的是用双引号括起的源程序名.title “lab2.asm”.end结束汇编命令放在汇编语言源程序的最后.text紧随其后的是汇编语言的正文例程中,.text段是源程序正文。经汇编后,紧随.text后的是可执行程序代码.data紧跟其后的是已初始化数据有两种数据形式:.int和.word

17、.int.int用来设置16位无符号整型量常数table: .word 1,2,3,4 .word 8,6,4,2表示在程序存储器标号为table开始的8个单元中存放初始化数据1,2,3,4,8,6,4,2.word.word用来设置16位带符号整型量常数.bss为未初始化变量保留存储空间.bss x,4表示在数据存储器中空出4个存储单元存放:x1,x2,x3,x4.sect建立包含代码和数据的自定义段.sect “vectors”定义向量表,紧随其后的是复位和中断向量,名为vectors.usect为未初始化变量保留存储空间的子定义段STACK .usect “STACK”,10h在数据存储

18、器中保留出16个单元作为堆栈区,名为STACK2程序设计编写程序实现:利用子程序计算045度(间隔0.5度)的正余弦值,再利用倍角公式求出090度(间隔1度)的正弦值;然后,通过复制,获得0360度的正弦值,以获得正弦波。3调试程序单步运行程序,在反汇编窗口观察程序的运行情况;体会程序的控制和转移以及加、减、乘运算;同时从存储器窗口、CPU寄存器窗口查看、分析程序运行结果是否正确。4图形显示结果利用CCS的图形显示工具显示得到的正弦波。三、提高实验*1完成浮点乘法运算 调试教材P96例5程序。四、实验报告要求1简述实验目的;2按实验内容附上实验结果,并对结果进行分析;3对实验进行总结和讨论。4

19、回答思考题。 五、思考题1如果要将.text 定位到2000H,程序如何修改?2如果将.data定位到Page 1程序能正常运行吗?如果不能,请问如何修改,以调试出正确结果?3子程序调用时,压入堆栈的是什么内容?实验三 FIR数字滤波器的C54X实现一、 实验目的1学会FIR滤波器的DSP程序设计和实现。二、实验内容1程序算法系数对称的FIR滤波器,由于具有线性相位特性,因此应用很广,特别是对相位失真要求很高的场合,如调制解调器(MODEM)。一个N8的FIR滤波器,若a(n)a(N-1-n),就是对称FIR滤波器,其输出方程为: y(n)aox(n)+alx(n-1)+a 2x(n-2)+a

20、 3x(n-3)+ a 4x(n-4)+a 5x(n-5)+a6x(n-6)+a7x(n-7)总共有8次乘法和7次加法。如果改写成: y(n)aox(n)+x(n-7)+alx(n-1)+x(n-6)+ a 2x(n-2)+x(n-5)+a3X(n-3)+x(n-4)变成4次乘法和7次加法。可见乘法运算的次数减少了一半。这是对称FIR的又一个优点。对称FIR滤波器C54x,实现要点如下:(1) 在数据存储器中开辟两个循环缓冲区:New循环缓冲区存放N/24个新数据;O1d循环缓冲区中存放老数据。循环缓冲区的长度为N/2。(2)设置循环缓冲区指针:AR2指向New缓冲区中最新的数据;AR3指向O

21、1d缓冲区中最老的数据。(3)在程序存储器中设置系数表。 数据存储器 程序存储器 New循环缓冲区 O1d循环缓冲区 系数表80h x(n) AR2 88h x(n-4) COFF a0 低地址81h x(n-3) 89h x(n-5) a182h x(n-2) 8Ah x(n-6) a283h x(n-1) 8Bh x(n-7) AR3 a3 高地址(4) (AR2)+(AR3)AH(累加器A的高位) (AR2)-1AR2, (AR3)-1AR3(5)将累加器B清零,重复执行4次(i0,1,2,3,): (AH)*系数ai+(B)B, 系数指针(PAR)加1, (AR2)+(AR3)AH,

22、AR2和AR3减1(6)保存和输出结果(结果在BH中)。(7)修正数据指针,让AR2和AR3分别指向New缓冲区最新数据和O1d缓冲区中最 老的数据。(8)用New缓冲区中最老的数据替代Old缓冲区中最老的数据。O1d缓冲区指针减1。(9)输入一个新数据替代NeW缓冲区中最老的数据。重复执行第(4)(9)步。2程序代码在编程中要用到FIRS(对称有限冲激响应滤波器)指令,其操作如下:FIR xmem,Ymem,Pmad执行 PmadPAR 当(RC)0 (B)+(A(3116)(由PAR寻址Pmem)B (Xmem)+(Ymem)16A (PAR)+1PAR (RC)-1RC FIRS指令在同

23、一个机器周期内,通过C和D总线读2次数据存储器,同时通过D总线读一个系数。 对称FIR滤波器(N=8)的源程序清单如下: mmregs def start bss y,1x_new usect “DATAl”,4x_o1d usect “DATA2”,4 size set 4PA0 set 0PAl set 1 dataCOEF word 1*32768/10,2*32768/10 word 3*32768/10,4*32768/10 textStart: LD #y,DP SSBX FRCT STM # x _new,AR2 ;AR2指向新缓冲区第1个单元 STM #x_o1d+(size-

24、1),AR3 ;AR3指向老缓冲区最后1个单元 STM # size,BK ;循环缓冲区长度Size STM # -1,AR0 ;仿效*ARn- LD #x_new,DP PORTR PAl,#x_ new ;输入X(n)FIR: ADD *AR2+0,*AR3+0,A ;AHx(n)+x(n-7)(第一次) RPTZ B,#(size-1) ;B0,下条指令执行size次 FIRS *AR2+0,*AR3+0,COEF;B+AH*a0,AHX(n-1)+x(n-6), STH B,y ;保存结果 PORTW y,PA0 ;输出结果MAR *+AR2(2)% ;修正AR2,指向NEW缓冲区最老

25、的数据MAR *AR3+ ;修正AR3,指向OLD缓冲区最老的数据MVDD *AR2,*AR3+0 ;新缓冲区向老缓冲区传送一个数BD FIRPORTR PAl,*AR2 ;输入新数据至新缓冲区.END3试用窗函数法设计一线性相位数字低通滤波器,其技术指标为: 3dB截止频率为:0.2 PI;阻带截止频率为:0.4PI;阻带最小衰减为-30dB; 并编程用DSP实现。要求:1)设计出FIR滤波器,并制成DSP可用的数据文件;(可使用MATLAB) 2)编写出所有的DSP程序(.asm、.cmd 等); 3)生成输入数据;(可使用MATLAB) 4)调试程序,显示滤波结果,验证结果的正确性。三、

26、实验报告要求1简述实验目的;2按实验内容附上实验结果,并对结果进行分析;3实验进行总结和讨论。4回答思考题。四、思考题1如何对设计出FIR滤波器的系数处理成在DSP可用的数据文件?写出处理步骤。2如果设计结果滤波器的阶数N为100,请问程序应如何修改?3写出以下指令的具体操作: RPTZ B,#(size-1) FIRS *AR2+0,*AR3+0,COEFMAR *+AR2(2)实验四 C程序设计实验一、实验目的1学会DSP的C语言程序设计的基本方法;2学会DSP的C语言程序初始化。3学会DSP的C语言程序中断编程及调试方法。二、实验内容1.C程序中断、定时器实验编写程序实现外部中断、定时器

27、中断响应,中断响应时输出提示信息。2如果要将中断向量要配置到:208020FFh,请问程序如何修改? 请修改程序,调试出正确的结果。3如果要使用外部中断1,实现输出:“你的学号、姓名”,请修改程序,调试出正确的结果。4修改程序实现10000微妙的定时,请修改程序,调试出正确的结果。*5. FFT C编程实现离散付氏变换DFT是可以用数字方式来实现的时域到频域的变换,FFT是DFT的一种高效运算方法,它把N2次运算减少为(n/2)log2N。使DFT的运算大大简化,运算时间一般可以缩短一、二个数量级。一般情况下,都假定输入序列为复数。本实验主要是编写一个可以执行81024复数点FFT的实用程序并

28、上机调试。用C语言编程实现FFT,调试、分析结果。三、实验报告要求1简述实验目的;2按实验内容附上实验结果,并对结果进行分析;3实验进行总结和讨论。四、思考题1如果要使用软件中断18,实现输出:“你的学号、姓名”,请问如何修改程序代码?写出程序代码。2如果要实现1秒定时,请问如何修改程序代码?写出程序代码。主要参考程序清单:* /* c exam . C */* TMS320C5409 DSP */* INT2 INTERRUPT ff80ffffH */ /* PROGRAM DARAM 5000H */ /* DATA DARAM 1000H */*/ #include #define SWWSR (volatile unsigned int *)0x0028 #define BSCR (volatile unsigned int *)0x0029 #define PRD (volatile unsigned int *)0x0025 interrupt void int2_handler() long int j; puts(INT

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1