DSP芯片原理及应用课程

上传人:沈*** 文档编号:120341323 上传时间:2022-07-17 格式:DOC 页数:42 大小:1.50MB
收藏 版权申诉 举报 下载
DSP芯片原理及应用课程_第1页
第1页 / 共42页
DSP芯片原理及应用课程_第2页
第2页 / 共42页
DSP芯片原理及应用课程_第3页
第3页 / 共42页
资源描述:

《DSP芯片原理及应用课程》由会员分享,可在线阅读,更多相关《DSP芯片原理及应用课程(42页珍藏版)》请在装配图网上搜索。

1、DSP芯片原理及应用课程实验指导书 路锦正 编著西南科技大学信息工程学院实验中心二七年二月目 录序 言 .03实验一 CCS软件应用实验04实验二 C语言与汇编混合编程编程14实验三 DSP定时器的应用22实验四 A/D转换实验25实验五 音频信号发生29实验六 语音信号FIR滤波32附录1 设备安装指南36序 言该课程是电子和通信专业的专业选修课,是一门技术性很强的实验课程。通过本实验课程加强对理论课程的认识和掌握,学会使用集成开发环境CCS,使用DSP实验箱调试和编写功能程序,理解DSP的工程开发的过程和技术细节,学会分析问题和解决问题的能力。主要内容包括:CCS软件应用实验,C语言和汇编

2、混合编程,A/D转换实验,定时器的应用,音频信号的发生和FIR算法实验等。通过该实验课程,学生掌握基本的DSP系统开发和算法优化的基本技术和过程,为将来的实际工程开发奠定坚实的基础本实验的总学时数为16学时,其中前两个实验每个2学时,后四个实验每个3个学时。也可根据具体的情况和要求做调整。实验中心主任张笑微教授在指导书编写过程中提出了许多宝贵的意见和建议,在此表示感谢!由于时间紧任务重,作者水平有限,错误在所难免。敬请读者批评指正!编著者实验一 CCS软件应用实验(2学时)一、实验目的1、掌握CCS软件的基本功能和作用2、掌握CCS软件的安装、配置过程3、了解DSP开发系统与PC机的连接方法和

3、步骤4、熟悉CCS开发环境和基本操作,了解TMS320C55xx 软件开发过程。 学习创建工程和管理工程的方法。 了解基本的编译和调试功能。 学习使用观察窗口。 了解图形功能的使用。5、软件仿真的作用、步骤和基本原理二、预习要求1、CCS的基本作用和功能有个预先的概念认识和了解。CCS,即Code Composer Studio代码生成室。它是TI公司为开发DSP产品的集成环境开发工具软件,它是集编辑、编译、链接和调试及图形、图像显示等等多功能于一体的开发工具软件。开发环境可分为:软件仿真和硬件仿真。不同的开发环境有不同的功能。软件仿真即只有CCS软件,仿真算法执行的结果,仿真、模拟程序在DS

4、P芯片上运行。硬件仿真即在评估板(EVM,Evaluation Module)或初学者开发套件(DSK,Developer Starter Kit)硬件平台上,把程序灌入(Load Programs)DSP芯片运行。CCS有几个版本,现在最新到V3.1,一般使用V2.1或V2.2。另外,根据TI的DSP分为C2000、C5000和C6000系列。则CCS也相应有对应的版本。各个系列DSP的CCS软件功能基本相同。2、标准C语言的编程规范和约定。CCS支持标准C语言的编程,各种标准库都可以使用。只要在应用的地方把头文件*.h包含即可。另外DSP的C语言还有自己的特殊约定,例如代码段的放置,各种关

5、键字的使用等。详见对应的文档或者教材。3、ICETEK-VC5509-A-USB-EDUICETEK为北京瑞泰的标识,VC5509-A表示DSP芯片为TMS320VC5509APAGE。4、CPU核结构。图 1 TMS320C55XDSP结构框图三、实验原理与参考电路1、调试工具开发TMS320C55XX 应用系统一般需要以下几个调试工具来完成:(1)软件集成开发环境CCS(Code Composer Studio 2.21):完成系统的软件开发,进行软件和硬件仿真调试。它也是硬件调试的辅助手段。(2)开发系统、仿真器(ICETEK 5100-USB 或ICETEK 5100-PP):实现硬件

6、仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。(3)评估模块即评估板TEK VC5509-A 或ICETEK VC5509-C 等):提供软件运行和调试的平台和用户目标系统开发的参照。2、CCS的作用CCS主要完成系统的软件开发和调试。它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C 语言程序编译连接生成COFF (公共目标文件)格式的可执行文件,并能将程序下载到目标DSP 上运行调试。3、CCS工程文件用户系统的软件部分可以由CCS 建立的工程文件进行管理,工程一般包含以下几种文件:(1)源程序文件:C 语言或汇编语言文件(*.C 或*.ASM)(2)头文件(*.

7、H):各种结构体和变量的定义,宏的定义,函数的声明等。(3)命令文件(* D):内存的使用情况,各个段的放置、地址和大小等情况。(4)库文件(*.LIB,*.OBJ): TI或用户自己定义的库文件,TI提供许多特定DSP(、)的库文件。用户自己编写的算法库文件。CCS既可以生成可执行工程文件,也可以生成库文件。(5)内存映射文件(*.map):CCS编译连接后,生成的内存映射文件,开发人员可以根据此文件掌握内存的使用状况。(6)可执行文件(*.out): 可以在DSP上运行的可执行文件。在调试的时候,用CCS的Load program功能把此文件灌入到DSP芯片中。四、实验内容本实验主要是软件

8、仿真,即完全用CCS软件运行用户程序。软件仿真是在实验条件有限的环境下,如没有EVM或DSK、目标板等硬件设备。软件仿真通常用于调试纯软件的算法和进行效率分析等。由CCS软件在PC 机内存中构造一个虚拟的DSP 环境,可以调试、运行程序。在某种程度上,软件仿真是可信的。但是在有些情况下,如使用了外设DMA或算法非常复杂等,则软仿的结果就不可信了,甚至结果错误。因为一般软件无法构造DSP中的外设在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。1、配置CCS工作环境:(1)双击桌面上的,进入CCS设置窗口,“Import Configuration”。(2)在出现的窗口中按标号顺序进行如下设

9、置:图2 CCS 初始化配置窗口接着在下面出现的窗口中选择“否(N)”。此时CCS 已经被设置成Simulator 方式(软件仿真TMS320VC5509A 器件的方式),如果一直使用这一方式就不需要重新进行以上设置操作了。(3)启动CCS:启动软仿Simulator方式,双击桌面上的图标:。2、启动CCS后的窗口。为方便介绍各个CCS各个功能,这里截取了一个实用工程的开发界面,若按照以上步骤操作的话,界面要简单的多。图3为CCS工作环境,图4为一个典型开发工程的开发界面。图 3 CCS工作环境图4 典型实用开发工程CCS界面3、创建工程 创建新的工程文件:选择菜单“Project”的“New

10、”项。图 5 建立新工程操作弹出下图,按编号顺序操作建立volume.pjt 工程文件:单击完成设置 单击此按钮,选择工程所在目录为C:tiICETEK-VC5509-EDULabLab0101-UseCCS输入新建工程名volume图6 创建新工程步骤展开主窗口左侧工程管理窗口中“Projects”下新建立的“”,其中各项均为空。 在工程文件中添加程序文件:选择菜单“Project”的“Add Files to Project”项;在“Add Files to Project”对话框中选择文件目录为C:TiICETEK-VC5509-EDULabLab0101-UseCCS,改变文件类型为“

11、C SourceFiles(*.c;*.ccc)”,选择显示出来的文件“”;重复上述各步骤,添加d 文件到volume 工程中;添加C:tiC5500cgtoolslibrts55.lib 文件到工程中。 编译链接工程:选择菜单“Project”的“Rebuild All”项,或单击工具条中的按钮;注意编译过程中CCS 主窗口下部的“Build”提示窗中显示编译信息,最后将给出错误和警告的统计数。4、编辑修改工程中的文件: 查看工程文件:展开CCS 主窗口左侧工程管理窗中的工程各分支,可以看到“”工程中包含“”、“”、“v”和“”文件,其中第一个“”为程序在编译时根据程序中的“include”

12、语句自动加入的。 查看源文件: 双击工程管理窗中的“”文件,可以查看程序内容。可以看到,用标准C语言编制的程序,大致分成几个功能块:-头文件。描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。具体包含哪一个头文件,需要根据程序中使用了哪些函数或数据而定。比如:如果程序中使用了printf 函数,它是个标准C 提供的输入/输出库函数,选中“printf”关键字,按Shift+F1会启动关于此关键字的帮助,在帮助信息中可发现其头函数为,那么在此部分程序中需要增加一条语句:#include “stdio.h”。-工作变量定义。定义全局变量。-子程序调用规则。这部分描述用户编制的子程序的调

13、用规则。也可以写到用户自己编制的.h 文件中去。-主程序。即main()函数。它可分为两部分:变量定义和初始化部分、主循环部分。主循环部分完成程序的主要功能。-用户自定义函数。这个程序是一个音频信号采集、处理输出的程序。程序的主循环中调用自定义的函数read_signals 来获得音频数据并存入输入缓存inp_buffer 数组;再调用自定义函数write_buffer来处理音频数据并存入输出缓存;output_signals 将输出缓冲区的数据送输出设备;最后调用标准C 的显示信息的函数printf 显示进度提示信息。整个系统可以完成将输入的音频数据扩大volume 倍后再输出的功能。rea

14、d_signals() 子程序中首先应有从外接AD 设备获得音频数据的程序设计,但此例中由于未采用实际AD 设备,就未写相应控制程序。此例打算用读文件的方式获得数据,模拟代替实际的AD 输入信号数据。write_buffer() 子程序中首先将输入缓冲区的数据进行放大处理,即乘以系数volume,然后放入输出缓冲区。output_signals() 函数完成将处理后的设备输出的功能,由于此例未具体操作硬件输出设备,所以函数中未写具体操作语句。 双击工程管理窗中的“”文件,打开此文件显示,可以看到其中有主程序中要用到的一些宏定义如“BUF_SIZE”等。 volume d 文件定义程序所放置的位

15、置,此例中描述了ICETEK-VC5509-A 评估板的存储器资源,指定了程序和数据在内存中的位置。比如:它首先将ICETEK-VC5509-A 评估板的可用存储器分为五个部分,每个区给定起始地址和长度(区域地址空间不允许重叠);然后指定经编译器编译后产生的各模块放到哪个区。这些区域需要根据评估板硬件的具体情况来确定。 编辑修改源文件及编译程序:打开“”,找到“main()”主函数,将语句“input=inp_buffer;”最后的分号去掉,这样程序中就出现了一个语法错误;重新编译连接工程,可以发现编译信息窗口出现发现错误的提示;双击红色错误提示,CCS 自动转到程序中出错的地方;将语句修改正

16、确(将语句末尾的分号加上);重新编译;注意,重新编译时修改过的文件被CCS 自动保存。 修改工程文件的设置:图 7 Build Options对话框通过以上设置操作,重新编译后,程序中的用户堆栈的尺寸被设置成1024 个字。5、基本调试功能: 下载程序: 执行File Load Program , 在随后打开的对话框中选择刚刚建立的C:TiICETEK-VC5509-EDULabLab0101-UseCCSDebugvolume.out 文件。 设置软件调试断点:在项目浏览窗口中,双击volume.c 激活这个文件,移动光标到main()行上,单击鼠标右键选择Toggle Breakpoint

17、 或按F9 设置断点(另外,双击此行左边的灰色控制条也可以设置或删除断点标记)。 利用断点调试程序:选择Debug Run 或按F5 运行程序,程序会自动停在main()函数上。按F10 执行到write_buffer()函数。再按F8,程序将转到write_buffer 函数中运行。此时,为了返回主函数,按shift-F7 完成write_buffer 函数的执行。再次执行到write_buffer 一行,按F10 执行程序,对比与F8 执行的不同。提示:在执行C 语言的程序时,为了快速的运行到主函数调试自己的代码,可以使用Debug Go main 命令,上述实验中的使用的是较为繁琐的一种

18、方法。6、使用观察窗口: 执行View Watch Window 打开观察窗口。 在volume.c 中,用鼠标双击一个变量(比如num),再单击鼠标右键,选择“Quick Watch”,CCS 将打开Quick Watch 窗口并显示选中的变量。 在volume.c 中,选中变量num,单击鼠标右键,选择“Add to Watch Window”,CCS 将把变量添加到观察窗口并显示选中的变量值。 在观察窗口中双击变量,则可以在这个窗口中改变变量的值。 把str 变量加到观察窗口中,点击变量左边的”+”,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。 把str 变量加到观察窗口中

19、;执行程序进入write_buffer 函数,此时num 变量超出了作用范围,可以利用Call Stack 窗口察看在其他函数中的变量:选择菜单View Call Stack 打开堆栈窗口。双击堆栈窗口的main()选项,此时可以察看num 变量的值。7、文件输入/输出:下面介绍如何从PC 机上加载数据到DSP 上。用于利用已知的数据流测试算法。在完成下面的操作以前,先介绍Code Composer Studio 的Probe(探针)断点,这种断点允许用户在指定位置提取/注入数据。Probe 断点可以设置在程序的任何位置,当程序运行到Probe断点时,与Probe 断点相关的事件将会被触发,当

20、事件结束后,程序会继续执行。在这一节里,Probe 断点触发的事件是:将PC 机存储的数据文件中的一段数据加载到DSP 的缓冲区中。 在真实的系统中,read_signals 函数用于读取A/D 模块的数据并放到DSP 缓冲区中。在这里,代替A/D 模块完成这个工作的是Probe 断点。当执行到函数read_signals 时,Probe断点完成这个工作。在程序行read_signals(input);上单击鼠标右键,选择“Toggle breakpoint”,设置软件断点。再在同一行上单击鼠标右键,选择“Toggle Probe Point”,设置Probe 断点。 执行以下操作:图 8 设

21、置探点此时,已经配置好了Probe 断点和与之关联的事件。进一步的结果在下面实验中显示。8、图形功能简介:下面我们使用CCS 的图形功能检验上一节的结果。首先进行下面设置操作:-在弹出的图形窗口中单击鼠标右键,选择“Clear Display”。-按F12 运行程序。观察Input 窗口的内容。9、选择菜单Fileworkspacesave workspacs As,输入文件名SY.wks 。10、退出CCS。五、实验报告要求1、实验报告中不能和实验内容中的文字雷同,用自己的话描述;2、总结CCS软件应用的体会;3、画图说明Input 和Output的图形为什么看到的不同,和断点有关吗?4、画

22、出CCS的结果波形。六、思考题1、报告中阐述软件仿真和硬件仿真的区别、工作过程等;2、阐述配置和启动CCS的几个重要过程;3、阐述探点的使用过程;4、看到的波形是连续的,则程序中的数据是模拟信号吗?七、注意事项1、自己建立的工程和文件不要放置在C或D盘的目录下;2、运行CCS前,必须先配置SetupCCS;3、在观察波形的时候,注意变量地址的引用:&;4、加探点的时候须小心,确保探点设置成功。八、实验元器件、仪器、仪表1、电脑2、参考资料(1)/folders/print/tms320vc5509a.html(2)DSP教学实验箱使用说明书“”,北京瑞泰创新实验二 C语言与汇编语言混合编程(2

23、学时)一、实验目的1、学习用汇编语言编制程序;了解汇编语言程序与C 语言程序的区别和在设置上的不同。2、了解TMS320C55x 汇编语言程序结果和一些简单的汇编语句用法。3、学习在CCS 环境中调试汇编代码。4、在了解纯C 语言程序工程和汇编语言程序工程结构的基础上,学习在C工程中加入汇编编程的混合编程方法。5、了解混合编程的注意事项。6、理解混合编程的必要性和在什么情况下要采用混合编程。二、预习要求1、TMS320C55X汇编编程基础掌握TMS320C55X的汇编指令体系、寻址方式、CPU的寄存器定义和作用;对C55X CPU 核结合有相当的理解和掌握。2、C语言编程基础基于DSP的C语言

24、编程的基本要求,工程的创建过程、注意事项;C语言的优化技术、步骤;C语言的编程规范在DSP环境的特殊要求等。3、C和汇编混合编程基础混和编程的基本约定;鉴于汇编和C语言的各自的优缺点,充分利用其优势,进行混合编程。对核心代码,或糟糕的模块用汇编改写。4、混合编程注意事项三、实验原理与参考电路1、汇编语言程序:汇编语言程序除了程序中必须使用汇编语句之外,其编译选项的设置与C 语言编制的程序也稍有不同。其区别为:(1)汇编语言程序在执行时直接从用户指定入口开始,常见的入口标号为“start”,而C语言程序在执行时,先要调用C 标准库中的初始化程序(入口标号为“_c_init00”),完成设置之后,

25、才转入用户的主程序main()运行。(2)由于CCS的代码链接器默认支持C 语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的入口地址。2、使用C语言开发应用程序的优缺点:(1)优点: 易于开发和维护。由于用C 语言书写接近自然语言,其可读性强、利于理解,在编制、修改、实现算法方面比用汇编语言开发容易。 可移植性强。 不容易发生流水线冲突。编译器能提供完善的解决流水线冲突的结果。 有大量现存的算法可利用。 适用于人机界面的开发。(2)缺点: 代码量大。 程序效率较低。 优化代码存在一定困难。综上所述,我们一般用C 语言设计应用程序的总体框架、解决人机接口和对速度效率

26、要求不太高的复杂算法。3、使用汇编语言开发应用程序的优缺点:(1)优点: 更能发挥系统特点。由于汇编语言掌控系统硬件的能力强于C 语言,设计出来的程序更加贴近硬件特性,往往能将硬件效能发挥到极致。 代码精练,效率高。用汇编语言设计的程序,代码短、不容易产生冗余。 代码量小。(2)缺点: 可读性差。不利于复杂算法的开发和实现。 可移植性差。 容易产生流水线冲突。由于排除冲突需要靠人来辅助完成,这要求编程人员有较为丰富的开发经验和对硬件工作机制的深刻理解。4、如何混合编程:(1)混合工程:在工程中可以同时包含C 语言程序和汇编语言程序,无需更改编译选项。一般地,我们使用C 程序为主,加入汇编语言程

27、序模块。(2)使用模块技术:在应用程序中划分出比较清晰的模块,不同模块可采用不同语言设计。强调效率和速度的模块采用汇编设计。尽量少用汇编语言设计程序。(3)如何找出需要用汇编程序设计的模块: 用C 语言完成设计后,运用CCS 的软件仿真功能,充分测试程序,找到程序运行中的瓶颈(速度方面的和空间方面的)。 再使用分块仿真技术尽可能缩小模块。 找到的模块单独写成子程序,存入独立的文件中。 由于CCS 编译器能产生C 语言程序到汇编程序的中间文件,观察需要优化的模块的汇编结果,进行人工优化。 最后运用人工优化后形成的汇编程序模块,代替原来需要优化的C 语言模块,进行编译。 程序中可使用内嵌汇编。比如

28、:asm(“ MOV T1, *SP(#1)”); 编译器可直接使用内嵌的汇编语句生成最终代码。但需要语句中双引号中为合法的汇编语句,比如要以空格开头等等。5、何时使用混合编程技术:(1)当程序中需要操作与硬件密切相关的设备,而用C 语言较难实现时。比如:在中断程序设计时需要设置中断向量表,向量表中空间有时用C 语言语句有困难,且向量表要在内存中精确定位,这时可将设置中断向量表的部分用汇编语言代替。(2)当需要绕开C 编译器的规定,进行特殊操作时。比如:C 语言规定,程序不能访问程序代码区,而系统功能需要进行类似访问时可采用限制较小的汇编语言程序设计。(3)当需要提高模块的效率(包括空间上和时

29、间上两方面的),而C 语言程序无法达到要求时。6、使用混合编程时的注意事项:(1)在汇编程序中使用其他C 语言模块中定义的变量或函数名称时,需要在引用的名称前加一下划线。如:C 中定义的变量为x,在汇编中引用时要用_x。(2)汇编语言写的子程序需要符合C 语言的调用规则,尤其是在默认的辅助寄存器使用上和栈的使用上要求兼容。(3)在汇编语言模块中,需要编程者自己消除流水线冲突。(4)在使用内嵌汇编技术时,需要考虑以下内容: 要非常小心地处理,以免破坏C语言操作环境。编译器在遇到内嵌汇编语句时,不会对其中的汇编语句进行分析处理。 避免从内嵌汇编语句跳转到C语言模块中,那将极容易造成寄存器使用上的混

30、乱,从而产生难以预料的结果。 不要在内嵌汇编语句中改变C语言模块中变量的值,但可以安全地读取它们的值。 在汇编程序中不要使用内嵌汇编。7、实验程序解释:实验程序提供了一个使用C与汇编程序混合编程的实例,是一个用汇编语言模块优化自己编制的应用程序的实例。首先用户拿到的是一个纯用C语言开发的工程,再根据假设,需要将其中一个模块改造成用汇编语言模块优化的模块。通过实验过程,用户可充分了解混合编程可以采取的步骤和方法。四、实验内容1、汇编(ASM)编程(1)程序设计任务:(2)步骤:A: 设置软件仿真环境,同实验一。启动CCS软件。进行以下设置:建立。B: 设置工程文件:C:建立汇编源程序文件: 输入

31、源程序.mmregs.model call=c55_std.model mem=large.global x.bss x,1,0,0.sym x,x, 4, 2, 16.global y.bss y,1,0,0.sym y,y, 4, 2, 16.global z.bss z,1,0,0.sym z,z, 4, 2, 16.sect “.text”.align 4.globalstart.symstart,start,36,2,0Start:MOV #2,*(#Y)MOV #1,*(#X)L1:MOV *(#Y),AR1ADD *(#X),AR1,AR1MOV AR1,*(#Z)B L1注意:

32、在输入汇编语言源程序时,除了标号以外的程序行必须以一个空格或Tab制表字符开始。-保存源程序为。连接命令文件:如同第步操作,建立空的源程序窗口。-输入连接命令文件内容:MEMORYDARAM: o=0x100, l=0x7f00DARAM2: o=0x8000, l=0x8000SECTIONS.text: DARAM.bss: DARAM.stack DARAM注意:第3、4 行中等号前边字母是小写的“L”。D:调试汇编程序 选择菜单Project-Rebuild All。 执行File Load Program, 在随后打开的对话框中选择刚刚建立的c:timyprojectsTASM.ou

33、t文件。完成后,系统自动打开源程序窗口,并在其中指示程序的入口地址为标号“start”后的语句。 打开观察窗口: 选择菜单View-Disassembly。注意程序运行指针停留的位置。 开启CPU 寄存器观察窗口:单击菜单View-Registers-CPU Registers。请看PC 指针取值与当前程序运行地址对应。 将变量x、y、z 分别加入观察窗口:在源程序中双击变量名,再单击鼠标右键,选择“Add to Watch Window”。这时,这3 个变量还未作初始化。 开启内存观察窗口:选择“View”菜单中“Memory”项,在“Memroy Window Options”窗口中的“A

34、ddress”项中输入&x,单击“OK”完成设置;“Memory”窗口中x 的当前取值显示在第1 个地址之后。而且y 和z 的存储单元跟在其后。 观察程序运行结果: 单步运行2 次,在观察窗中观察到变量x、y 被赋值。变化的值被显示成红色。同时在“Memory”窗口中也能观察到x 和y 值的改变。 单步运行,观察CPU 寄存器窗口中“XAR1”寄存器存储值的变化。程序利用XAR1 进行运算。 再单步运行,可观察到z 的值被计算出来。双击“Memory”窗口中变量x、y 相应的存储单元,将其修改成其他取值,单步运行后观察结果。 对照观察map 文件和cmd 文件的内容: 选择菜单File-Ope

35、n,将找到C:TiICETEK-VC5509-EDULabLab0103-ASMDebug 目录,将文件类型改为“Memory Map Files”,选择TASM.map 文件、打开。 打开TASM d 文件。 程序的入口地址:map 文件中“ENTRY POINT SYMBOL”中说明了程序入口地址(start)。 内存使用情况:-map 文件中“MEMORY CONFIGURATION”标明了程序占用DARAM 的使用情况,共占用25H 个存储单元。比较一下,这比用C 编制的程序占用的要小得多。-观察map 文件中的“SECTION ALLOCATION MAP”段,可以看出TASM.ob

36、j 的入口地址为100H,这也是程序的入口地址。-用户定义的变量从120H 开始,共占用了3 个单元(Word)。2、C和ASM混和编程(1)启动CCS,配置为软仿工作环境。(2)打开工程、浏览程序内容、编译生成和下载可执行代码: 打开工程:选择菜单Project-Open,选择打开工程文件C: Ti 展开工程管理窗口中CASM工程,双击Source下的CProgram.c 项,打开CProgram.c 源程序窗口。可以看到,程序完成了一个简单的运算,它先开设了三个全局变量x、y、z,然后分别给x 和y 赋初值,再在循环中计算x+y,结果赋值给z。 编译并下载程序:此设置的功能是每次编译完成后

37、将程序自动下载到DSP 上。选择菜单Project-Build All,编译、连接和下载程序。运行程序,观察结果:在程序中有“在此加软件断点”注释的语句上加软件断点;将变量z 加入变量观察窗口;运行程序到断点,观察变量z 的结果值。(3)修改程序: 修改算法部分为单独的子程序:我们假设在循环中进行的运算是需要用汇编语言程序模块优化的部分。首先将“z=x+y;”语句修改成“z=add(x,y);”,在程序头上,变量定义之前加上一行“int add(int a,int b);”,在程序末尾,添加如下子程序。int add(int a,int b)return(a+b);如此,将算法搬移到一个C 语

38、言的子程序模块中实现。修改完成后,可以编译、下载、运行到断点,观察运行结果,判断子程序是否能完全与原程序一样完成算法。 将子程序移入:打开一个新的空的源文件窗口,将main 函数后的子程序复制到窗口中;注释main 函数后面的子程序(在子程序前一行加“/*”,在子程序结尾行后加“*/”);将新窗口中的内容保存为文件。 将add.c 加入工程,编译、下载、运行,检查结果,保证运算无误。 选择菜单Project-Build Options,进行如下设置: 重新编译工程;打开C:TiICETEK-VC5509-EDULabLab0104-CASMa;在其中的“.line 2”行、“.line 3”行

39、、“.line 4”行头上分别加分号,即注释这3 个语句。 将工程中的add.c 换成:在工程管理窗口中用鼠标右键单击,选择“Remove from Project”;用鼠标右键单击,选择“Add Files to Project”,选择C: Ti。 重新编译、下载、运行程序并观察结果。由于add.asm 是CCS 编译器从add.c 编译得来的,下面要做的就是手工调整add.asm 中的汇编代码,从而实现优化处理。(3)退出CCS。五、实验报告要求1、报告的内容不能和上述内容雷同,只能用自己的话来阐述;2、报告中要有调试的数据结果,并分析;3、总结中写出深入的体会。六、思考题1、汇编的优缺点

40、;2、C语言的优化过程;3、混合编程的注意事项;4、DSP算法优化的一般过程。七、注意事项1、注意CMD文件的使用。2、菜单Projects/Build Options下丰富、功能强大的复杂设置。3、混合编程的接口考虑。八、实验元器件、仪器、仪表1、电脑;2、参考资料:TMS320C实验三 DSP定时器的应用(3学时)一、实验目的1、通过实验掌握和熟悉VC5509A 的定时器的工作原理;2、掌握VC5509A 定时器的控制方法、寄存器的配置;3、掌握VC5509A 的中断结构和对中断的处理流程;4、学会C 语言中断程序设计,以及运用中断程序控制程序流程;5、掌握实验箱的工作配置过程、仿真器的连

41、接和配置等。二、预习要求1、TMS320VC5509DSP的定时器的基本原理和各个寄存器的意义以及相关操作等。2、硬件仿真的过程、设备配置和初始化等。3、实验箱的功能、实验用模块的工作原理等。三、实验原理或参考电路1、通用定时器介绍及其控制方法(详见):TMS320VC5509A 内部有两个20 位通用定时器(GP),每个通用定时器包括:(1)一个16 位的减计数的计数器TIM;(2)一个16 位的定时器周期寄存器PRD;(3)一个16 位的定时器控制寄存器TCR;(4)一个16 位的定时器预定标寄存器PSCR;PSCR 寄存器说明:PSC: 4 位的预定标值,与TIM 共同组成20 位的定时

42、计数器.TDDR: 预定标周期寄存器(在需要时重装入PSC 的值)TCR 寄存器说明(详见)2、中断响应过程(详见):外设事件要引起CPU 中断,必须保证:IER 中相应使能位被使能,IFR 相应中断也被使能。在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如定时器)中断发生时,首先跳转到相应中断高级的服务程序中(如:定时器1 会引起TINT中断),程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。3、中断程序设计:(1)程序中应包含中断向量表,VC5509A 默认向量表从程序区0 地址开始存放,根据IPVD和IPVH 的值确定向量表的实际地址

43、。(2)注意观察程序中INTR_init()函数的定义部分,其中IPVD 和IPVH 的值都为0x0d0;同时观察配置文件ICETEK-VC5509-A d 中的VECT 段描述中o=0x0d000。(3)向量表中每项为8 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址。第一个向量表的首项为复位向量,即CPU 复位操作完成后自动进入执行的程序入口。(4)服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务。4、实验程序流程图:(1)注意观察程序中INTR_init()函数的定义部分,其中IPVD 和IPVH 的值都为0x0d0;同时观察配置文件ICETEK-VC5

44、509-A d 中的VECT 段描述中o=0x0d000。(2)向量表中每项为8 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址。第一个向量表的首项为复位向量,即CPU 复位操作完成后自动进入执行的程序入口。(3)服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务。5、实验程序分析:本实验设计的程序是:控制指示灯闪烁的延时控制,若用循环计算方法得到的,延时不精确也不均匀,而采用中断方式可以实现指示灯的定时闪烁,时间更加准确。实验程序的工程中包含了两种源代码,主程序采用C语言编制利于控制,中断向量表在vector.asm 汇编语言文件中,利于直观地控制存储区分配。

45、在工程中只需将它们添加进来即可,编译系统会自动识别分别处理完成整合工作。实验程序的C 语言主程序中包含了内嵌汇编语句,提供一种在需要更直接控制DSP状态时的方法,同样的方法也能提高C 语言部分程序的计算效率。四、实验内容1、连接设备详见附录1的“设备安装指南”。2、配置CCS为硬仿工作环境详见附录1的“设备安装指南”。3、启动CCS软件详见附录1的“设备安装指南”。选择菜单DebugReset CPU。4、打开工程文件:打开菜单“Project”的“Open”项;选择C:TiICETEK-VC5509-EDULabLab0303-Timer 目录中的“”。在项目浏览器中,双击,激活main.c

46、 文件,浏览该文件的内容,理解各语句作用。打开,对照vector.asm 源程序学习中断向量表的写法。5、理解程序意义,掌握定时器的配置方式和过程;掌握中断的使用过程:配置、服务程序的撰写等;并能够修改程序:灵活地控制等的闪烁方式:(1)修改程序,控制等闪烁频率。即修改定时器的周期,或其他方法;(2)控制第一个点亮,第二个点亮,第三个点亮,第四个点亮;(3)控制两个、三个点亮;(4)控制交替点亮;(5)理解PLL的控制过程,确认CPU当前的工作频率;(6)理解命令连接文件* D,清楚存储器的使用情况;(7)SDRAM的初始化过程;EMIF的配置等;(8)一个简单的DSP系统软件的必须具有的模块

47、:时钟电路、复位电路、DPLL、中断、定时器、存储器等。各自的配置使用等。6、编译、下载程序。7、运行程序,观察结果。为安全稳定起见,强烈建议在每次修改程序后,需要复位DSP的CPU,然后再下载程序运行。8、改变TIMER_init()函数里*prd0 = 0x0ffff 为“=0x0fff ”;重复步骤5,6 观察实验现象,并分析原因。9、退出CCS。五、实验报告要求1、给出定时器的配置过程;2、详细记录和分析实验过程;3、实验结果要有数据,并分析原因;4、总结实验体会。六、思考题1、定时器产生中断的过程;2、VC5509A的中断向量表;3、CPU工作主频怎样设置;4、EMIF的初始化;七、

48、注意事项1、清楚实验箱的功能模块;2、清楚程序控制第一个LED的控制方式,以便快捷的修改其他控制闪烁方式;3、当程序出错或仿真器失去连接时,关闭电源复位后,再启动CCS;4、运行新的程序前,强烈建议复位CPU后,再下载新的程序。八、实验元器件、仪表电脑、DSP实验箱、连接线等;实验四 A/D转换实验(3学时)一、实验目的1通过实验熟悉和掌握VC5509A的定时器的工作过程2、掌握VC5509A定时器的控制方法、寄存器的配置;3、掌握VC5509A片内ADC的控制方法。4、会计算ADC的各个参数并在程序中体现其配置。二、预习要求1、TMS320VC5509DSP片上ADC的基本原理和各个寄存器的

49、意义以及相关操作等。2、硬件仿真的过程、设备配置和初始化等。3、片上ADC的应用场合,特点。4、实验箱的功能模块分配,及其工作机制和原理、过程。三、实验原理或参考电路1、TMS320VC5509A 模数转换模块特性:(1)带内置采样和保持的10 位模数转换模块ADC,最小转换时间为500ns,最大采样率为。(2)2 个模拟输入通道(AIN0AIN1)(3)采样和保持获取时间窗口有单独的预定标控制。2、模数转换工作过程:(1)模数转换模块接到启动转换信号后,开始转换第一个通道的数据。(2)经过一个采样时间的延迟后,将采样结果放入转换结果寄存器保存。(3)转换结束,设置标志。(4)等待下一个启动信

50、号。3、模数转换的程序控制:模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU 忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。由于TMS320VC5509A DSP 芯片内的A/D 转换精度是10 位的,转换结果的低10 位为所需数值,所以在保留时应注意将结果的高6 位去除,取出低10 位有效数字。关于TMS320VC5509A DSP 芯片内的A/D 转换器的详细结构和控制方法,请参见文档。4、实验程序流程图:四、实验内容1、实验准备: 连接实

51、验设备,详细附录1的 “设备安装指南 ”。 准备信号源进行AD 输入。取出2 根实验箱附带的信号线(如右图,两端均为单声道语音插头)。用1 根信号线连接实验箱底板上信号源I 模块(下图中单实线框中部分)的“波形输出”插座(下图中的3 或4)和“A/D 输入”模块(下图中虚线框中部分)的“ADCIN2”插座(下图中的A),注意插头要插牢、到底。这样,信号源I 的输出波形即可送到ICETEK-VC5509-A板的AD 输入通道0。 用1 根信号线连接实验箱底板上信号源II 模块(下图中双实线框中部分)的“波形输出”插座(下图中的c 或d)和“A/D 输入”模块的“ADCIN3”插座(下图中的B),

52、注意插头要插牢、到底。这样,信号源的输出波形即可送到ICETEK-VC5509-A 板的AD 输入通道1。 设置信号源I:-调整拨动开关“频率选择”(下图中的5)拨到“100Hz1KHz”档(下图中的10)。-将“频率微调”(下图中的6)顺时针调到头(最大)。-调整拨动开关“波形选择”(下图中的7)拨到“正弦波”档(下图中的11)。-将“幅值微调”(下图中的8)顺时针调到头(最大)。 设置信号源:-调整拨动开关“频率选择”(下图中的e)拨到“10Hz100Hz”档(下图中的i)。-将“频率微调”(下图中的f)顺时针调到头(最大)。-调整拨动开关“波形选择”(下图中的g)拨到“正弦波”档(下图中

53、的k)。-将“幅值微调”(下图中的h)顺时针调到头(最大)。 将两个信号源的电源开关(上图中的2 和b)拨到“开”的位置。2、设置Code Composer Studio 2.21 在硬件仿真(Emulator)方式下运行:详见附录的“设备安装指南”。3、启动: 详见附录的“设备安装指南”。选择菜单DebugReset CPU。4、打开工程文件:(1)工程目录:。(2)在项目浏览器中,双击,打开main.c 文件,浏览该文件的内容,理解各语句作用。5、编译、下载程序。6、打开观察窗口:-选择菜单View-Graph-Time/Frequency进行如下设置:7、设置软件断点:在main.c 中

54、有“break point”注释的语句上加软件断点。8、运行程序,观察结果:(1)按“F5”键运行到断点,观察AD 转换产生的波形。(2)按“F12”键连续运行,并调整信号源可调部分,观察实时AD 采样波形随之变化。9、选择菜单Fileworkspacesave workspacs As,输入文件名SY.wks 。10、退出CCS:五、实验报告要求1、给出ADC的工作机制和原理;2、给出ADC的寄存器配置情况;3、给出ADC的结果信号波形,并分析原因;4、CCS的Graph功能的参数配置,各个字段的意义;5、总结实验体会。六、思考题1、片上ADC的适用场合、特点;2、ADC的工作过程七、注意事

55、项1、清楚实验箱的功能模块;2、当CCS和目标板失去通信时,注意断开实验箱的电源,然后再重新启动CCS;3、每次下载新的程序时,强烈建议复位CPU。八、实验元器件、仪表电脑、DSP实验箱、连接线等;实验五 音频信号发生(3学时)一、设计任务与要求1、设计一个基于CCS硬件仿真的音频信号发生系统程序;2、要求音频信号音长、音节参数可调;3、提交蜂鸣器的工作原理;二、设计原理与参考电路1、EMIF 接口TMS320C5509DSP 的扩展存储器接口(EMIF)用来与大多数外围设备进行连接,典型应用如连接片外扩展存储器等。这一接口提供地址连线、数据连线和一组控制线。ICETEK-VC5509-A 将

56、这些扩展线引到了板上的扩展插座上供扩展使用。2、蜂鸣器工作原理蜂鸣器由DSP 通用I/O 管脚输出控制,可将此管脚上的频率输出转换成声音输出。5509A的通用I/O 口S13 控制蜂鸣器的输出频率。控制的方法是使用DSP 通用定时器设置S13 以一定的频率改变高低状态,输出方波。对于通用定时器周期寄存器的设置,计数值为所需频率计数值的二分之一音乐的频率(C 调):C D E F G A B C1 2 3 4 5 6 7 1C: 264, 297, 330,352, 396, 440,495, 5283、蜂鸣器的连接由于选用的蜂鸣器所需电流较小,所以采用将DSP 通用I/O 引脚直接驱动的方式。

57、4、实验程序流程图: 三、实验内容与步骤1、实验准备:连接实验设备:连接实验箱附带的键盘的PS2 插头到ICETEK-CTR 的“键盘接口”P8。将ICETEK-CTR 板的供电电源开关拨动到“开”的位置2、设置Code Composer Studio 2.21 在硬件仿真(Emulator)方式下运行:详见附录的“设备安装指南”。3、启动:详见附录的“设备安装指南”。选择菜单DebugReset CPU。4、打开工程文件:工程目录:。浏览main.c 文件的内容,理解各语句作用。5、编译并下载程序。6、运行程序观察结果。7、将语句“Delay(musicnMusicCount1);”改为“D

58、elay(musicnMusicCount1/2);”,重复步骤5-6,体会音乐的节奏快了一倍。8、结束程序运行,退出CCS。按小键盘上“Enter”键,停止程序四、预习要求与思考题1、TMS320C5509A的定时器的工作原理、寄存器的意义和配置;2、TMS320C5509A的中断方式和中断向量表的设置、中断服务程序的编写等;3、蜂鸣器的工作原理;4、实验箱的功能模块分配和工作机制。五、实验报告要求1、报告应有详细的设计过程和设计思路。2、报告应有数据结果,并有详细的分析。3、提交定时器的工作过程和寄存器的配置过程。4、中断方式的使用过程、服务程序的编写和向量表的配置等。5、总结实验体会。六

59、、主要元器件、仪器、仪表计算机,ICETEK-VC5509-EDU 实验箱(或ICETEK 仿真器+ICETEK-VC5509-A 系统板+相关连线及电源),小键盘等。实验六 语音信号FIR滤波(3学时)一、实验目的1、熟悉ICETEK-VC5509-A板上语音codec芯片TLV320AIC23的设计和程序控制原理。2、熟悉FIR滤波器工作原理及其编程。3、掌握滤波的其他方法和原理。4、掌握使用TI的算法库dsplib 提高程序运行效率的方法。5、学习使用CCS图形观察窗口观察和分析语音波形及其频谱。二、预习要求1、TLV320AIC23的设计和控制原理;2、FIR滤波器的工作原理及其实现;3、其他滤波方法和原理以及编程实现;4、dsplib的使用,约定和好处等;5、掌握算法优化的基本技术或要点等;三、实验原理与参考电路1、TLV320AIC23 芯片性能指标及控制:详细见附录2 TLV320AIC23 编程指南。2、器件位置和插座:3、FIR 滤波器原理:例:根据要求设计低通FIR滤波器。要求:通带边缘频率10kHz,阻带边缘频率22kHz,阻带衰减75dB,采样频率50kHz。设计:(1)过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12kHz(2)采样频率:f1=通带边缘频率+(过渡带宽度)/2=10000+12000/2=16kHz1=2(3)理想

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!