《DSP芯片原理及应用》课程
实验指导书
路锦正 编著
西南科技大学信息工程学院实验中心
二〇〇七年二月
序 言 ………………………………………………………………….03
实验一 CCS软件应用实验……………………………………………04
实验二 C语言与汇编混合编程编程…………………………………14
实验三 DSP定时器的应用……………………………………………22
实验四 A/D转换实验…………………………………………………25
实验五 音频信号发生…………………………………………………29
实验六 语音信号FIR滤波……………………………………………32
附录1 设备安装指南…………………………………………………36
序 言
该课程是电子和通信专业的专业选修课,是一门技术性很强的实验课程。通过本实验课程加强对理论课程的认识和掌握,学会使用集成开发环境CCS,使用DSP实验箱调试和编写功能程序,理解DSP的工程开发的过程和技术细节,学会分析问题和解决问题的能力。主要内容包括:CCS软件应用实验,C语言和汇编混合编程,A/D转换实验,定时器的应用,音频信号的发生和FIR算法实验等。通过该实验课程,学生掌握基本的DSP系统开发和算法优化的基本技术和过程,为将来的实际工程开发奠定坚实的基础
本实验的总学时数为16学时,其中前两个实验每个2学时,后四个实验每个3个学时。也可根据具体的情况和要求做调整。
实验中心主任张笑微教授在指导书编写过程中提出了许多宝贵的意见和建议,在此表示感谢!
由于时间紧任务重,作者水平有限,错误在所难免。敬请读者批评指正!
编著者
实验一 CCS软件应用实验(2学时)
一、实验目的
1、掌握CCS软件的基本功能和作用
2、掌握CCS软件的安装、配置过程
3、了解DSP开发系统与PC机的连接方法和步骤
4、熟悉CCS开发环境和基本操作,了解TMS320C55xx 软件开发过程。
⑴ 学习创建工程和管理工程的方法。
⑵ 了解基本的编译和调试功能。
⑶ 学习使用观察窗口。
⑷ 了解图形功能的使用。
5、软件仿真的作用、步骤和基本原理
二、预习要求
1、CCS的基本作用和功能有个预先的概念认识和了解。
CCS,即Code Composer Studio代码生成室。它是TI公司为开发DSP产品的集成环境开发工具软件,它是集编辑、编译、链接和调试及图形、图像显示等等多功能于一体的开发工具软件。开发环境可分为:软件仿真和硬件仿真。不同的开发环境有不同的功能。软件仿真即只有CCS软件,仿真算法执行的结果,仿真、模拟程序在DSP芯片上运行。硬件仿真即在评估板(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语言还有自己的特殊约定,例如代码段的放置,各种关键字的使用等。详见对应的文档或者教材。
3、ICETEK-VC5509-A-USB-EDU
ICETEK为北京瑞泰的标识,VC5509-A表示DSP芯片为TMS320VC5509APAGE。
4、CPU核结构。
图 1 TMS320C55XDSP结构框图
三、实验原理与参考电路
1、调试工具
开发TMS320C55XX 应用系统一般需要以下几个调试工具来完成:
(1)软件集成开发环境CCS(Code Composer Studio 2.21):完成系统的软件开发,进行软件和硬件仿真调试。它也是硬件调试的辅助手段。
(2)开发系统、仿真器(ICETEK 5100-USB 或ICETEK 5100-PP):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。
(3)评估模块即评估板TEK VC5509-A 或ICETEK VC5509-C 等):提供软件运行和调试的平台和用户目标系统开发的参照。
2、CCS的作用
CCS主要完成系统的软件开发和调试。它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C 语言程序编译连接生成COFF (公共目标文件)格式的可执行文件,并能将
程序下载到目标DSP 上运行调试。
3、CCS工程文件
用户系统的软件部分可以由CCS 建立的工程文件进行管理,工程一般包含以下几种文件:
(1)源程序文件:C 语言或汇编语言文件(*.C 或*.ASM)
(2)头文件(*.H):各种结构体和变量的定义,宏的定义,函数的声明等。
(3)命令文件(*.CMD):内存的使用情况,各个段的放置、地址和大小等情况。
(4)库文件(*.LIB,*.OBJ): TI或用户自己定义的库文件,TI提供许多特定DSP(rts55x.lib、55xdsp.lib)的库文件。用户自己编写的算法库文件。CCS既可以生成可执行工程文件,也可以生成库文件。
(5)内存映射文件(*.map):CCS编译连接后,生成的内存映射文件,开发人员可以根据此文件掌握内存的使用状况。
(6)可执行文件(*.out): 可以在DSP上运行的可执行文件。在调试的时候,用CCS的Load program功能把此文件灌入到DSP芯片中。
四、实验内容
本实验主要是软件仿真,即完全用CCS软件运行用户程序。软件仿真是在实验条件有限的环境下,如没有EVM或DSK、目标板等硬件设备。软件仿真通常用于调试纯软件的算法和进行效率分析等。由CCS软件在PC 机内存中构造一个虚拟的DSP 环境,可以调试、运行程序。在某种程度上,软件仿真是可信的。但是在有些情况下,如使用了外设DMAc语言开发环境有哪些或算法非常复杂等,则软仿的结果就不可信了,甚至结果错误。因为一般软件无法构造DSP中的外设
在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。
1、配置CCS工作环境:
(1)双击桌面上的,进入CCS设置窗口,“Import Configuration”。
(2)在出现的窗口中按标号顺序进行如下设置:
图2 CCS 初始化配置窗口
接着在下面出现的窗口中选择“否(N)”。
此时CCS 已经被设置成Simulator 方式(软件仿真TMS320VC5509A 器件的方式),如果一直使用这一方式就不需要重新进行以上设置操作了。
(3)启动CCS:
启动软仿Simulator方式,双击桌面上的图标:。
2、启动CCS后的窗口。
为方便介绍各个CCS各个功能,这里截取了一个实用工程的开发界面,若按照以上步骤操作的话,界面要简单的多。图3为CCS工作环境,图4为一个典型开发工程的开发界面。
图 3 CCS工作环境
图4 典型实用开发工程CCS界面
3、创建工程
⑴ 创建新的工程文件:
选择菜单“Project”的“New…”项。
图 5 建立新工程操作
弹出下图,按编号顺序操作建立volume.pjt 工程文件:
图6 创建新工程步骤
展开主窗口左侧工程管理窗口中“Projects”下新建立的“volume.pjt”,其中各项均为空。
⑵ 在工程文件中添加程序文件:
选择菜单“Project”的“Add Files to Project…”项;在“Add Files to Project”对话框中
选择文件目录为C:\Ti\ICETEK-VC5509-EDULab\Lab0101-UseCCS,改变文件类型为“C Source
Files(*.c;*.ccc)”,选择显示出来的文件“volum.c”;重复上述各步骤,添加d 文件到volume 工程中;添加C:\ti\C5500\cgtools\lib\rts55.lib 文件到工程中。
⑶ 编译链接工程:
选择菜单“Project”的“Rebuild All”项,或单击工具条中的按钮;注意编译过程中CCS 主窗口下部的“Build”提示窗中显示编译信息,最后将给出错误和警告的统计数。
4、编辑修改工程中的文件:
⑴ 查看工程文件:
展开CCS 主窗口左侧工程管理窗中的工程各分支,可以看到“volume.pjt”工程中包含“volume.h”、“rts55.lib”、“volume.c”和“d”文件,其中第一个“volume.h”为程序在编译时根据程序中的“include”语句自动加入的。
⑵ 查看源文件:
双击工程管理窗中的“volume.c”文件,可以查看程序内容。可以看到,用标准C语言编制的程序,大致分成几个功能块:
-头文件。描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。具体包含哪一个头文件,需要根据程序中使用了哪些函数或数据而定。比如:如果程序中使用了printf 函数,它是个标准C 提供的输入/输出库函数,选中“printf”关键字,按Shift+F1会启动关于此关键字的帮助,在帮助信息中可发现其头函数为stdio.h,那么在此部分程序中需要增加一条语句:#include “stdio.h”。
-工作变量定义。定义全局变量。
-子程序调用规则。这部分描述用户编制的子程序的调用规则。也可以写到用户自己编制的.h 文件中去。
-主程序。即main()函数。它可分为两部分:变量定义和初始化部分、主循环部分。主循环部分完成程序的主要功能。
-用户自定义函数。
这个程序是一个音频信号采集、处理输出的程序。程序的主循环中调用自定义的函数read_signals 来获得音频数据并存入输入缓存inp_buffer 数组;再调用自定义函数write_buffer来处理音频数据并存入输出缓存;output_signals 将输出缓冲区的数据送输出设备;最后调用标准C 的显示信息的函数printf 显示进度提示信息。整个系统可以完成将输入的音频数据扩大volume 倍后再输出的功能。
read_signals() 子程序中首先应有从外接AD 设备获得音频数据的程序设计,但此例中由于未采用实际AD 设备,就未写相应控制程序。此例打算用读文件的方式获得数据,模拟代替实际的AD 输入信号数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论