DSP技术与应用实验指导书

上传人:痛*** 文档编号:138075716 上传时间:2022-08-19 格式:DOC 页数:251 大小:7.06MB
收藏 版权申诉 举报 下载
DSP技术与应用实验指导书_第1页
第1页 / 共251页
DSP技术与应用实验指导书_第2页
第2页 / 共251页
DSP技术与应用实验指导书_第3页
第3页 / 共251页
资源描述:

《DSP技术与应用实验指导书》由会员分享,可在线阅读,更多相关《DSP技术与应用实验指导书(251页珍藏版)》请在装配图网上搜索。

1、第二部分 单元实验实验一:Code Composer Studio软件入门实验预习要求说明:1阅读课本第6章 CCS集成开发环境和实验指导书Code Composer Studio 2.0 的使用。2阅读本实验指导,了解实验目的、设备、原理及过程。了解观察或理解记录的重点。3预做好课堂作业,写好预习报告。一实验目的1了解Code Composer Studio 2.0的安装。2掌握Code Composer Studio 2.0的硬件仿真(Emulator)配置。3了解Code Composer Studio 2.0的操作环境和基本功能。4巩固汇编指令LD、ST、STL、STH、STM、RSB

2、X、SSBX、ADD等用法。5巩固堆栈的定义、使用方法及堆栈。有关操作指令(PSHM、POPM、PSHD、POPD)等。6巩固立即数寻址、直接寻址、堆栈寻址等寻址方式。二实验设备1装有CCS2.0的计算机一台。2ICETEK-VC5416-USB-EDU实验箱一台(Emulator硬件仿真)。3USB连接电缆一条。三实验原理1DSP实验开发系统的组成C54系列DSP实验开发系统由3部分组成,装有Code Composer Studio 2.0软件(简称CCS2.0)的计算机和ICETEK-VC5416-USB-EDU实验箱(简称DSP实验箱),两者用一根USB接口线进行通信,注意接口线是单方向

3、的,系统组成如图2-1-1所示。USB接口线 图2-1-1 DSP实验开发系统的组成2C54系列DSP实验箱组成本实验箱共4部分组成,分别为DSP板、仿真器、控制模块及信号源。图2-1-2 DSP实验箱的组成(1)DSP板,也称评估模块,型号为ICETEK VC5416-A。它提供软件运行和调试的平台和用户系统开发的参照。主要有TMS320VC5416PGE160 DSP芯片、ADS7864 A/D模数转换芯片、DAC7625数模转换芯片、flash存储器等。(2)仿真器,也称开发系统,型号为ICETEK 5100 USB。它实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。

4、(3)控制板,型号为ICETEK-CTR。它提供标准的PSII键盘输入、发光二极管阵列显示(88点,共阳极)、液晶显示(12864点)。还有蜂鸣器、步进电机和直流电机等外设。(4)双信号源,两个完全相同,提供正弦波、三角波和方波,频率10100KHz可调、幅度03.3V可调,主要是为了方便实验。3Code Composer Studio 2.0的组成Code Composer Studio 2.0简称CCS 2.0或CCS,有2部分组成(1)集成开发环境软件“ccs2 (c5000)”,主要完成系统的软件开发和调试。它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接

5、生成COFF (公共目标文件)格式的可执行文件,并能将程序下载到DSP板(评估模块)上运行调试。(2)仿真环境设置软件“setup ccs2 (c5000)”,主要功能是设置CCS的仿真方式,或硬件仿真(Emulator)或软件仿真(Simulator)。 图2-1-3 CCS 2.0软件的两个图标4用户软件部分的组成用户软件部分可以由CCS 2.0建立工程文件(后缀为*.pjt)进行管理,工程文件一般包含以下几种文件:(1)源(程序)文件:C语言或汇编语言文件(后缀为*.C或*.ASM),源文件实现用户的功能。(2)头文件(后缀为*.H):定义一些常数,符号等。(3)命令文件(后缀为*.CM

6、D):定义存储器的名称和分配可执行代码的存储空间。(4)库文件(后缀为*.LIB,*.OBJ):开发系统自带的一些文件。其中源文件和命令文件对一个用户系统而言是必不可少的,或者说一个DSP系统至少需要这两种文件。四源程序分析本实验由一个源文件和一个命令文件组成,作为第一个DSP实验,主要是熟悉DSP开发系统,程序内容较简单,完成一个无符号的整数加法运算,但基本具有汇编程序的基本形式。1程序思路(1)定义全局标号和映射寄存器。(2)定义数据段和未初始化变量段。(3)定义未初始化段(堆栈段)。(4)主程序(可执行代码段)。 初始化堆栈指针和压栈保护有关变量。 初始化数据页指针和设置DSP有关运算状

7、态。 完成加法运算。 恢复初始状态,以便重复观察执行。(5)汇编文件结束。2UseCC.asm源文件 ;本程序完成一个简单的无符号加法运算zxy;本程序添加了多次运行,恢复初始状态功能,以便重复观察;伪指令.mmregs定义全局标号.global start ; 这里start是指汇编程序入口地址 ;伪指令.mmregs定义映射寄存器,这样程序中的累加器A等映射寄存器就不必一一定义 .mmregs ; 定义映射寄存器;伪指令.data定义数据段,只能分配在程序存储器中存储.data ; 本程序数据段没有内容;伪指令.bss定义未初始化变量,并分配存储单元数,只能分配在数据存储器中存储.bssx

8、,1 ; 在数据存储器里的未初始化段(.bss)定义全局变量x,1个存储单元.bssy,1 ; 同上类似.bssz,1;定义堆栈段,;伪指令.usect定义一个未初始化段;首地址为stack,结束地址(高地址)为stack+stacksize,大小为10个单元;因为在程序中,用stack+stacksize初始化SP(堆栈指针);凡是有函数调用、局部变量参数传递、寄存器保护等,均需定义堆栈stacksize.set 10stack.usect .mystack,stacksizeTOS .usect .mystack,1;栈顶(Top of Stack)标志,方便观察;伪指令.text定义可执

9、行代码段.text;start为可执行代码入口标号(地址),编译后根据命令文件分配一个具体的地址start:;堆栈指针初始化,指向栈顶(TOS,Top of Stack,高地址)STM#stack+stacksize,SPPSHMST0 ;压栈保护ST0,此处保护DP,为程序循环作准备PSHMST1 ;压栈保护ST1,此处保护SXM和FRCT,为程序循环作准备add_start:LD#x,DP ; 因下面诸变量使用直接寻址,装载DP值(x高9位的地址), ;基于DP的直接寻址一般用于变量存储单元在一页(128个存储单元)的情况。RSBXSXM ;设置DSP为无符号数运算RSBXFRCT ;设置

10、DSP为整数乘法运算,如果没有乘法,可省去ST#1,x ; 变量赋初值,x=1ST#2,y ; y=2LDx,A ; 将x的值装载至累加器ADDy,A ; 累加器加上y的值STLA,z ; 将累加器结果(32位)的低16位存放到变量zadd_end;恢复初始状态,以便重复观察执行,一般程序不需要这些代码renew_start:ST#0,xST#0,yST#0,zPOPMST1 ; 出栈与压栈顺序相反POPMST0bstart ; 循环至开始处.end ; 伪指令.end表示汇编文件结束3UseCC.cmd命令文件/*命令文件定义存储器的模型和分配各个程序段的存储空间*/*伪指令MEMORY定义

11、存储器的模型或可用的存储器和起始地址*/MEMORY/*PAGE 0表示程序存储器,PRAM为存储器命名,字母o表示起始地址,字母l表示存储器长度*/PAGE 0:PRAM : o=100h,l=1f00h/*PAGE 1表示数据存储器,DRAM为存储器命名,字母o表示起始地址,字母l表示存储器长度*/PAGE 1: DRAM : o=2000h,l=1000h /*伪指令SECTIONS定义分配各个程序段的存储空间*/SECTIONS/*text段存储在程序存储器PAGE 0的PRAM存储器里,其它依次类推*/.text : PRAM PAGE 0.data : PRAM PAGE 0.bs

12、s : DRAM PAGE 1.mystack : DRAM PAGE 1五实验步骤1实验准备和CCS软件、实验程序的安装(1)连接并开启实验设备关闭ICETEK-VC5416-A 实验箱的各电源开关;连接实验箱提供的220V电源线,保证接地良好。将提供的USB电缆的扁平端连接到计算机的USB接口上,另一端插入仿真器左侧插孔,注意接口是单方向的。接通计算机电源,进入Windows 操作系统。打开实验箱电源开关,实验箱上的电源指示灯亮,ICETEK-VC5416-A 系统板上电源指示灯D1、D2亮。如果不亮,检查有关电源是否打开或电源先接触不好。(2)安装Code Composer Studio

13、 2.0(实验室已安装)安装说明如下:安装CCS 2.0软件和一般软件的软件安装没有明显区别,但有几点需要注意。您的电脑应该是无毒的,在安装过程中也需要关闭防病毒软件,如果打开了防病毒软件,安装开始时会提醒您关闭。如果您的系统有毒或不关闭防病毒软件,那您的安装可能得不到正确的安装结果。正确的安装结果是在桌面上出现图2-1-3所示的 “Setup CCS 2 (C5000)”和“CCS 2 (C5000)”两个图标。前者用于完成输入代码,调试、下载代码到DSP芯片中等功能,后者用于设置CCS的软件仿真环境。建议先用winrar软件把ccs5000.exe解压缩到硬盘中再点击setup.exe来安

14、装。否则在某些版本的操作系统中可能得不到正确的安装结果。安装步骤如下:将实验箱附带的教学光盘(请向任课老师索取电子版)插入计算机光盘驱动器,也可先将光盘内容复制到硬盘安装。选择教学光盘的F:CCS开发软件ccs5000.exe文件,建议先用winrar软件把ccs5000.exe解压缩到硬盘中再点击setup.exe来安装,一般按提示操作即可。安装完毕,桌面上出现两个新的图标“Setup CCS 2(C5000)”、“CCS 2(C5000)”。建议再安装C5000-2.20.00-FULL-to-C5000-2.21.00-FULL.exe软件,把开发软件的版本升级到2.21。安装方法与安装

15、CCS c5000(2.0)类似。(3)安装DSP开发系统驱动程序(实验室已安装)如果作硬件仿真,则需要仿真器和DSP板(即需要DSP实验箱),这时需要安装DSP仿真器(亦称开发系统)的驱动程序。本仿真器选用ICETEK-5100USB型仿真器,USB接口,V2.0版本。安装USB型仿真器的驱动程序如下:连接计算机上USB接口电缆的方形接口(注意接口方向)一端到仿真器上相应接口;仿真器上红色电源灯亮,表示USB接口连通;计算机提示发现新的设备。指定驱动程序的路径到教学光盘的“开发系统驱动usbUSBdrv54x”,双击它即可完成安装,(这一步不必解压缩,而且安装很快,转眼即完成)。观察仿真器上

16、绿色指示灯亮,表示驱动程序开始工作。注:有关安装的详细情况请参考教学光盘的使用说明书ICETEK-5100pp(usb)通用开发系统使用说明书中的“ICETEK-5100USB1.1/2.0 系列通用开发系统使用说明”一节内容。(4)安装实验程序(实验室已安装,但要检查只读属性)在DSP实验室的计算机中,装有电子学院修改扩充后的DSP教学代码,并将其文件夹命名为DSP_EI,已安装复制C:下,本实验指导书所用程序均指该文件夹“DSP_EI”。若使用厂家光盘自带的软件测试程序,可将光盘中“软件测试程序”目录中的“ICETEK-VC5416-EDULab”子目录复制到C:上,并将目录中所有文件(包

17、含子目录中的文件)的只读属性去除。去除的时候注意选择“将更改应用与该文件夹、子文件夹和文件”选项。如果没有去除,则修改后的文件内容不能保存。注:DSP实验室的计算机均装有还原卡,同学们自编的程序请及时拷出,否则计算机关闭电源后会丢失,同样每次实验也要检查实验程序的只读属性等设置。2设置Code Composer Studio 2.0 在硬件仿真(Emulator)方式下运行(1)启动“Code Composer Studio Setup”,即双击桌面上“Setup CCS 2 (C5000)”。(2)清除原先的系统设置。在“Import Configuration”对话框中单击“Clear”按

18、钮,在接下来的对话框中选择“是”,清除原先的系统设置。观察窗口“Code Composer Studio Setup”中左侧的“System Configuration”栏,会发现其中的“My System”项被清空。(3)选择您需要的系统设置。在“Available Configurations”列表中,单击选择“ICETEK USB Emulator for C54xx”驱动(倒数第二个输入配置,如图2-1-4所示),并单击“Import”按钮;观察窗口“Code Composer Studio Setup”中左侧的“System Configuration”栏中“My System”项中

19、被加入“C54x XDS”项,然后单击“Close”按钮,退出“Import Configuration”对话框。(4)修改硬件仿真属性。用鼠标右键单击窗口“Code Composer Studio Setup”中左侧“System Configuration”栏中“My System”项中的“C54x XDS”项,选择“Properties”。单击“Startup GEL File(s)”卡片, 单击“Startup GEL Files ”中“CPU_1 ”项末尾的浏览按钮(即),选择C:DSP_EI目录中的VC5416A.gel文件(文件夹中的最后一个文件),单击“打开”;单击“Finis

20、h”。图2-1-4 硬件仿真的输入配置图2-1-5修改硬件仿真属性(5)退出硬件仿真设置,打开Code Composer Studio 软件。选择“Code Composer Studio Setup”窗口“File”采单中“Exit”项退出(或标题栏的关闭按钮),并在接下来显示的对话框中选择“是”,保存设置。在接下来的对话框中询问“在退出时,是否开始集成开发环境(Start Code Composer Studio on exit)”,选择“否”退出CCS仿真环境设置,需手动打开“CCS 2(C5000)”。选择“是”,则自动启动Code Composer Studio 2.0集成环境。但要

21、注意在硬件仿真下启动CCS要先打开实验箱中的所有电源开关,以便CCS软件检测出实验箱,如果成功检测出实验箱。就会启动Code Composer Studio 2.0,可以看到显示出的C54X Code Composer Studio 窗口。如图2-1-7所示。注意:如果没有打开相关电源,则实验箱不能被CCS软件检测出来,出现如图2-1-8所示的提示。这时,重新打开电源并按下“Retry”按钮(重试按钮),启动CCS 2.0开发环境。如果打开电源后,仍然没有启动CCS 2.0开发环境,则关闭电源、打开电源、按下“Retry”这三步反复操作,直到启动CCS为止。如果一直不能启动CCS,则可能是CC

22、S开发软件安装或实验箱不正常,可能是USB接口或接口线接触不好或断线,也可能实验箱有问题需检修。注意:标题为“C54xx XDS510 Emulator”图2-1-6 CCS在硬件仿真(Emulator)下的界面图2-1-7未检测出实验箱的界面3设置CCS 2.0在软件仿真(Simulator)方式下运行(本次实验跳过)若只需调试算法代码,可以做软件仿真(Simulator),这时只需装有CCS软机的计算机一台。步骤是:(1)启动CCS驱动设置窗口:双击桌面上“Setup CCS 2(C5000)”图标。(2)清除原先驱动设置:在“Import Configuration”对话框中单击“Cle

23、ar”按钮,在接下来的对话框中选择“是”,可观察到窗口“Code Composer Studio Setup”中左侧“System Configuration”栏中“My System”项被清空。(3)安装软件仿真驱动(Simulator):在“Available Configurations”列表中,单击“C5416 Device Simulator”驱动,单击“Import”按钮。可观察到窗口“Code Composer Studio Setup”中左侧“System Configuration”栏中“My System”项中被加入“C5416 Device Simulator”项。图2-

24、1-7 软件仿真的输入配置(4)完成设置并启动CCS:单击“Close”按钮,退出“Import Configuration”对话框。选择“Code Composer Studio Setup”窗口的关闭按钮或“File”菜单中“Exit”项退出,并在接下来显示的对话框中选择“是”,保存设置;再选择“是”,自动启动CCS。若选择“否”,则不启动CCS,需手动启动CCS。手动启动CCS的方法是在桌面上双击图标“CCS 2(C5000)”即可,启动CCS后的界面如图2-1-8所示。注意界面标题上有“C5416 Device Simulator”字样。图2-1-8 CCS在软件仿真(Simulato

25、r)下的界面4创建工程项目(1)创建新的工程文件(后缀为*.pjt)选择菜单“Project”的“New”项;在“Project Creation”对话框中,在“Project”项输入项目名称“Lab01_UseCC”;单击“Location ”项末尾的浏览按钮,选择保存项目的位置,为方便实验,这里统一改变目录到C:DSP_EILab01-UseCC,单击“OK”;单击“完成”;这时建立的是一个空的工程文件;展开主窗口左侧工程管理窗口中“Projects”下新建立的“Lab01_UseCC.pjt”项目,其中各项均为空。在硬件仿真下,方法相同,只是界面标题显示为“C54xx XDS510 Em

26、ulator”,以后不再重复说明。图2-1-9 新建的Lab01_UseCC.pjt”项目(2)新建源文件:选择菜单“File”“New” “Source File”(或按下Ctrl+N),打开输入源程序界面,一般先保存在项目所在的文件夹下,本次实验的文件均保存在C:DSP_EI Lab01-UseCC文件夹中。第一个源程序为汇编源程序,选择文件名称为UseCC,选择文件后缀为.asm,如图2-1-9所示。用上式方法新建本实验的第二个源文件(命令文件),选择文件名称为UseCC,选择文件后缀为.cmd,同样保存在C:DSP_EILab01-UseCC文件夹中。为节约实验时间,请将Lab01-U

27、seCC文件夹下的“UseCC0.asm和UseCC0.cmd”文件的代码复制到相应的文件中,这些文件可用“操作系统附件的写字板”直接打开。(3)在工程文件中添加程序文件:选择菜单“Project”的“Add Files to Project”项;在“Add Files to Project”对话框中选择文件目录为C:DSP_EILab01-UseCC,改变文件类型为“Assembly Source Files(*.asm)”,双击显示出来的文件“UseCC.asm”,(或分两步操作,先选择后打开也可);重复上述各步骤(从选择菜单“Project”开始),添加UseCC.cmd 命令文件到La

28、b01-UseCC 工程中;添加文件后的工程项目目录树如图2-1-11所示。图2-1-10 用CCS新建汇编源程序点击左侧的“”号可查看工程文件图2-1-11 添加源程序后的工程项目(4)设置编译链接选项(Build Options):由于CCS默认支持C语言程序,对纯汇编文件构成的工程项目,需要修改编译连接选项(Build Options)。方法是: 打开设置窗口:选择菜单“Project”的“Build Options”项。 选择链接设置:单击“Linker”属性页。 修改汇编语言程序的特殊设置:-“Autoinit Model”项设置成“No Autoinitialization”(非自

29、动初始化模式);-“Code Entry Point”项中输入“start”。start是汇编主程序执行的入口地址,注意start一定要与源程序定义的入口地址保持一致。图2-1-12 修改汇编语言程序的特殊设置(5)编译连接工程:选择菜单“Project”的“Rebuild All”项(快捷图标为);注意编译过程中CCS主窗口下部的“Build”提示窗中显示编译信息,最后将给出错误和警告的统计数。5编辑修改工程中的文件(1)查看工程文件展开CCS 主窗口左侧工程管理窗中的工程各分支,可以看到“Lab01-UseCC.pjt”工程中包含“UseCC.asm”和“UseCC.cmd”文件。(2)查

30、看源文件双击工程管理窗中的“UseCC.asm”文件,可以查看程序内容。双击工程管理窗中的 “UseCC.cmd”文件,它定义了本项目所使用的存储器和分配代码段的存储空间。(3)编辑修改源文件人为地加入一个错误,学习查找程序语法错误。打开“UseCC.asm”,找到start后面的语句“RSBXSXM;设置DSP为无符号整数运算”,将RSBX中的X去掉,这样程序中就出现了一个语法错误;重新编译连接工程(快捷图标为),可以发现编译信息窗口出现发现错误的提示(Invalid mnemonic specification,无效的汇编指令)。图2-1-13 CCS的编译信息窗口双击红色错误提示,CCS

31、 自动转到程序中出错的地方;将语句修改正确(补上大写X);重新编译。注意,重新编译时修改过的文件能够被CCS 自动保存。6单步执行及变量观察窗口(1)装载本程序的可执行文件Lab01-UseCC.out到DSP芯片(在软件仿真下是模拟的)。方法是:执行FileLoad Program,在随后打开的对话框中选择刚刚建立的C:DSP_EILab01-UseCCDebugLab01-UseCC.out 文件。这是CCS软件按照命令文件的存储器分配方案加载程序到DSP芯片中,并将程序入口地址start初始化程序计数器(PC,Program Counter),如图2-1-14所示,图中黄色箭头表示DSP

32、的下一个时钟周期执行该行代码。图2-1-14 加载程序后的编辑窗口观察CPU有关寄存器:单击菜单“View”“Registers”“CPU Registers”,或快捷图标,可观察到CPU有关寄存器的内容,如图2-1-15所示。若选择 “Registers”下的“Peripheral Regs”则可观察到片上外围寄存器的内容。图2-1-14 VC5416 DSP的CPU初始状态记录并分析ST0、ST1、PMST、PC、DP、SP等寄存器的内容及含义。其中ST0、ST1、PMST内容较多,如图2-1-15所示,记录并分析其中每个寄存器的内容及含义,重点记忆DP IPTR、OVM、SXM、FRCT

33、、OVLY、DROM含义。ST0:ST1:PMST:图2-1-15 ST0、ST1、PMST中的寄存器(2)单步执行(Step Over),并观察SP和堆栈段的变化每按F10(单步执行)一次,CCS执行一行代码。但不到函数内部去单步执行。现按一次执行“STM#stack+stacksize,SP”,观察堆栈指针SP的变化及其表示的含义,注意堆栈的最高地址单元不用,以免与其它数据段发生冲突。为了观察堆栈中的变化,请选择“View”菜单中“Memory”项,在“Memory Window Options”窗口中的“Adress”项中输入stack(堆栈段首地址,也称栈底BOS(Bottom of

34、Stack),单击“OK”完成设置;在随后显示的“Memory”窗口中单击鼠标右键,选择“Float In Main Window”项,若再选择“Allow Docking”(即去掉“允许停靠”),则可用左键按住窗口名称处,将窗口停靠在开发界面的任何地方。(3)单步执行下面2行代码,观察堆栈的变化并记录。图2-1-16 本程序的堆栈段PSHMST0PSHMST1(4)单步执行下面3行代码,观察CPU寄存器DP、SXM、FRCT的变化并记录。LD#x, DPRSBXSXM RSBXFRCT(5)单步执行下面5行代码,观察内存变量x、y、z及累加器A的变化并记录。为了观察内存变量的变化,方式与观察

35、堆栈段相似,只是 “Adress”项中输入x即可。具体操作如下:请选择“View”菜单中“Memory”项,在“Memory Window Options”窗口中的“Adress”项中输入x,单击“OK”完成设置;在随后显示的“Memory”窗口中单击鼠标右键,选择“Float In Main Window”项,若再选择“Allow Docking”(即去掉“允许停靠”),则可用左键按住窗口名称处,将窗口停靠在开发界面的任何地方。ST#1,xST#2,yLDx,AADDy,ASTLA,z(6)单步执行下面5行代码,观察内存变量x、y、z及出栈时堆栈段的变化并记录。ST#0,xST#0,yST#

36、0,zPOPMST1 ; 出栈与压栈顺序相反POPMST0上面5行代码恢复DSP与本程序有关的初始状态,如果没有观察清楚,可以重复执行多次。理解清楚后,去掉所有的注释文字,再执行一次,看看自己是否真的理解清楚了。7基本调试功能及观察窗口上面第5步采用一种较繁琐的一种调试方法,调试方法还有多种,掌握基本的调试功能及其快捷方式有利于加速程序调试的进度。(1)设置断点和运行到断点处(Run)。例如,假设程序在“LDx,A”所在行以前正常,但其后可能不正常,可以把光标移动到“LDx,A”所在行上,右击鼠标选择Toggle Breakpoint(快捷方式:双击所在行左侧的灰色条,快捷图标:;快捷键:F9

37、)设置断点。然后选择DebugRun(直接运行到断点处,快捷图标:;快捷键:F5)运行程序,程序会自动停在“LDx,A”所在行上,再单步执行。实践操作一次。(2)到到函数内部执行的单步执行(Step Into)。如果程序有子函数,可按F8(到函数内部执行的单步执行),本程序没有汇编子程序,也没有C语言子程序,这种情况下,F8与F10没有区别。shift-F7(从函数内部跳出),与F8配合使用。(3)动画执行(Animate),调试程序时,若遇到断点,只是暂停一下,然后继续执行。快捷键:F12,快捷图标:。实践操作一次。注意: 若在执行C 语言的程序时,为了快速的运行到主函数调试自己的代码,可以

38、使用DebugGo main 命令(运行到主函数处),上述实验中的使用的是较为繁琐的一种方法。其它调试方式,参看菜单“Debug”。8归纳实验结果(请同学们根据实验步骤归纳)。六课堂编程作业(1)请修改程序完成无符号数0xf000+0xe000的计算,并正确保存结果。提示:上式和超过16位结果,需要32位保存,可用STH、STL分别保存高16位和低16位,也可用汇编指令DST则保存32位,CCS软件默认偶地址排列法保存32位数据,即变量的首地址为偶地址,存放高16位,下一个单元(奇地址)存放低16位。实现时是用首地址的最低位取反(01)得到这个地址。奇地址排列法则相反,注意变量的首地址是否为偶

39、地址。例如本程序z的存储单元定义为0x20020x2003,可正确存储到指定单元中,若z的存储单元定义为0x20030x2004,则实际存储到0x20030x2002中。(2)请修改程序完成有符号数0xf000+0xe000的计算,并正确保存结果。251实验二:数据混合和图形显示实验预习要求说明:1阅读课本第5章 TMS320C54X 软件开发和实验指导书VC5416 DSP实验箱的使用。2阅读本实验指导,了解实验目的、设备、原理及过程。了解观察或理解记录的重点。3预做好课堂作业,写好预习报告。一实验目的1理解链接命令文件(后缀CMD)和映射文件(后缀MAP)的用法。2掌握Code Compo

40、ser Studio 2.0的图形显示功能。3巩固数据复制指令MVPD等,程序控制指令等RPT、RPTB、B等汇编指令用法。4巩固伪指令.global、.mmregs、.data、.word、.set.、bss、.usect、.end等用法。5巩固绝对寻址、间接寻址、映射寄存器寻址等寻址方式。二实验设备1装有CCS2.0的计算机一台。2ICETEK-VC5416-USB-EDU实验箱一台(Emulator硬件仿真)。3USB连接电缆一条。三实验原理1VC5416的存储器资源及配置(1)片内总线及功能C54x DSP片内有8条16位总线:1条程序总线,3条数据总线和4条地址总线,功能如下: 程序

41、总线(PB)传送取自程序存储器的指令代码和立即操作数。 3条数据总线(CB、DB、EB)将内部各单元连接在一起,其中CB和DB为读操作数总线,EB为写总线。因此,DSP在片内可同时读2个16位的数据或一个32位的数据。 4个地址总线(PAB、CAB、DAB、EAB)传送执行指令所需的地址。在程序空间没有扩展的情况下,C54x的总存储空间为192K字,分成3个可独立的空间:程序存储空间(64K字),据存储空间(64K字),输入/输出(I/O)空间(64K字)。在程序空间在片外扩展时,地址总线可扩展时为23位,可访问8M字的程序空间。存储器的配置受PMST中3个比特位OVLY、DROM控制。由于C

42、54x DSP不同的型号,内部存储器的资源有所不同,下面以VC5416芯片作存储器的配置介绍。(2)PMST的比特位OVLY控制程序存储器地址在0x00807FFF之间的映射。如表2-2-1所示。表2-2-1 程序存储器地址在0x00807FFF之间的映射程序存储器地址范围OVLY1OVLY00x0000007F保留片外扩展程序存储器0x00807FFF片内DARAM0-3(3)PMST的比特位控制程序存储器地址在0x8000FFFF之间的映射。如表2-2-2所示。表2-2-2 程序存储器地址在0x8000FFFF之间的映射程序存储器地址范围0x8000BFFF片外扩展程序存储器片外扩展程序存

43、储器0xC000FEFF片内ROM(4K字)0xFF00F7FF保留(用户不能使用)0xFF80FFFF片外中断向量表片内中断向量表附:片内ROM的内容,如表2-2-3所示。表2-2-3 程序存储器片内ROM的内容程序存储器地址范围0xC000D4FFGSM EFR语音编解码ROM表0xD500F7FF保留0xF800FBFF外部程序装载引导程序0xFC00FCFF率扩展表0xFD00FDFFA率扩展表0xFE00FEFF正弦表(4)程序存储器的扩展程序存储器可扩展到8M字的存储空间,此时,程序地址总线为23位,程序计数器PC保存低16位的地址,扩展程序计数器XPC保存高7位的地址。在扩展情况

44、下,凡是高7位相同的程序存储单元看作在同一页。因此,在扩展情况下,程序存储器一页为64K字,共128页。在扩展情况下,低16位地址在0x00807FFF之间的映射与表2-2-1相同,即OVLY=1时,片上DARAM0-3映射到程序存储器的每一页,这对访问公共数据是很方便的。低16位地址在0x8000FFFF之间的映射如表2-2-4所示。表2-2-4 程序存储器扩展时低地址在0x8000FFFF之间的映射程序存储器地址范围0x180001FFFF片外扩展程序存储器片内DARAM4-70x280002FFFF片内SARAM0-30x380003FFFF片内SARAM4-70xm8000mFFFF

45、(m=4,5,127)片外扩展程序存储器(5)PMST的比特位DROM控制地址在0x8000FFFF之间的映射的数据存储器映射,如表2-2-5所示。表2-2-5 数据存储器地址在0x8000FFFF之间的映射程序存储器地址范围DROM1DROM00x80007FFF片内DARAM4-7片外扩展程序存储器(6)I/O空间I/O空间地址在0x0000FFFF之间,全部在片外,一般将A/D、D/A等芯片上一些零散的存储单元或控制信号映射到I/O空间地址上,较大的连续数据单元映射到片外数据存储器。在DSP板和控制板上的I/O端口见实验指导书的附录2。2链接命令文件的使用链接命令文件(后缀为CMD)用M

46、EMORY命令和SECTIONS命令定义目标系统的存储器配置及段的映射(存储分配)。(1)伪指令MEMORY用来定义目标系统的存储器空间。示例如下:MEMORY/*PAGE 0表示程序存储器,PRAM为存储区间名称,字母o表示起始地址,字母l表示存储器长度*/PAGE 0:PRAM : o=100h,l=1f00h/*PAGE 1表示数据存储器,DRAM为存储区间名称,字母o和字母l的含义同上*/PAGE 1: DRAM : o=2000h,l=1000h MEMORY定义的目标系统存储器空间必须是实际存在的存储器,如果不存在,实际系统将不能正确存储和执行。在本实验箱中,没有扩展外部程序存储器

47、,在不能访问片外程序存储器,为此本实验箱设置OVLY=1,这是片内双访问的地址在0x800x7FFF之间的数据存储器(DARAM0-3)被映射到程序存储器,即在这些地址之间的程序存储器和数据存储器共用存储单元,既可用程序总线访问,又可用数据总线访问。因此,在MEMORY中,PAGE 0和PAGE 1是不能重叠的,否则有可能相互矛盾,程序在执行过程中修改程序代码。(2)伪指令SECTIONS为程序段分配存放位置,如果一个存储区间内分配多个段,一般按SECTIONS定义的先后顺序存储,如果一个项目有多个程序文件,其中共有多个同名段,则依文件顺序存放在一起。(3)程序段的存储要求不同的程序段有不同的

48、存储要求,如表2-2-1所示,部分段名将在以后的实验见到。表2-2-1 程序段的存储规律段类型初始化状态存储器类型映射空间说 明.text已初始化段ROM或RAMPAGE 0编译器默认产生这3个段.data已初始化段ROM或RAMPAGE 0.bss未初始化段RAMPAGE 1.cinit/pinit已初始化段ROM或RAMPAGE 0C程序编译后,产生这些段,其中.cinit为C语言程序的初始化代码段,.stack为堆栈段,.switch为switch语句段,.sysmem为动态分配的段。.const已初始化段ROM或RAMPAGE 1.stack未初始化段ROM或RAMPAGE 1.swi

49、tch已初始化段ROM或RAMPAGE 0.sysmem未初始化段RAMPAGE 1.sect已初始化段ROM或RAMPAGE 0程序员自定义的段.usect未初始化段RAMPAGE 1SECTIONS使用示例如下:SECTIONS/*text段存储在程序存储器PAGE 0的PRAM存储器里,其它依次类推*/.text : PRAM PAGE 0.data : PRAM PAGE 0.bss : DRAM PAGE 1.mystack : DRAM PAGE 1;自定义的未初始化段,映射在PAGE 1中伪指令MEMORY和SECTIONS只能大写。一些链接命令选项可以放在伪指令MEMORY的前

50、面,参看后继实验的命令文件。3映射文件(map)的使用map文件反映DSP代码的确切存储信息。人为估计的存储器分配难免不合适,为了更精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。当需要更改程序和数据的大小和位置时,就要适当修改命令(cmd)文件和源程序,再重新生成map文件来观察结果。生成map文件的方法是:在点击菜单“Project”Build OptionLinke,在Map Filename中输入“.Debug文件名.map”,如图2-2-1所示,再重新编译链接一次(点击快捷图标)即可。图2-2-1 生成map文件的设置打

51、开map文件。点击菜单“File”Open选择map文件所在文件夹(当前项目的Debug文件中),注意将文件类型改为“Memory Map Files (*.map)”或“所有文件(*.*)”才能显示本实验的map文件“memory.map”。本实验的map文件示例如下,部分内容省略了,有些变量或地址是编译器自动生成的。* TMS320C54x COFF Linker PC Version 3.83 * Linked Sun Jan 20 22:03:38 2008OUTPUT FILE NAME: ENTRY POINT SYMBOL: start address: 00000100MEMO

52、RY CONFIGURATION name origin length used attrPAGE 0: PRAM 00000100 00001f00 00000031 RWIXPAGE 1: DRAM 00002000 00001000 0000003b RWIXSECTION ALLOCATION MAPsection page origin length input sections.text 0 00000100 00000021 Memory.obj (.text).data 0 00000121 00000010 Memory.obj (.data).bss 1 00002000

53、00000030 UNINITIALIZED.mystack 1 00002030 0000000b UNINITIALIZEDGLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name address name00002000 .bss00000121 .data00000100 .text00002000 _bss_00000121 _data_00002030 end00000100 startGLOBAL SYMBOLS: SORTED BY Symbol Address address name00000100 start00000100 .text0

54、0000100 _text_00000121 _etext_00000121 .data00000121 _data_00002000 .bss00002000 _bss_00002030 _end_00002030 end4文件输入/输出(File I/O)的使用为了测试算法的正确性,通常用PC机上已知的数据文件中的数据注入到内存变量中以代替A/D采样,或者将内存变量的数据输出到数据文件中,这需要设置断点(Breakpoint)和探针(Probe)。CCS中的Probe允许用户在指定位置提取/注入数据。Probe可以设置在程序的任何位置,.当程序运行到Probe处时,与Probe相关的事件将

55、会被触发,当事件结束后,程序会继续执行。在本实验里,Probe断点触发的事件是:从PC机的数据文件加载数据到目标系统的内存变量Y_COS寄存器中。具体方法在实验步骤中介绍。四源程序分析1程序思路(1)定义全局标号和映射寄存器。(2)定义数据段和未初始化变量段。(3)定义未初始化段(堆栈段)。(4)主程序(可执行代码段)。 初始化堆栈指针和压栈保护有关变量,设置DSP有关运算状态。 程序存储器SIN的数据复制到数据存储器X_SIN的单元中。 用断点和探针(Probe)将数据文件COS_16.DAT中的数据注入到数据存储器的Y_COS中。 用块重复循环指令RPTB完成X_SIN和Y_COS的16个

56、数据混合(相加),并用图形显示出来。 恢复初始状态,以便重复观察执行。(5)汇编文件结束。2命令(cmd)文件/*命令文件定义存储器的模型和分配各个程序段的存储空间*/*伪指令MEMORY定义存储器的模型或可用的存储器和起始地址*/MEMORY/*PAGE 0表示程序存储器,PRAM为存储器命名,字母o表示起始地址,字母l表示存储器长度*/PAGE 0:PRAM : o=100h,l=1f00h/*PAGE 1表示数据存储器,DRAM为存储器命名,字母o表示起始地址,字母l表示存储器长度*/PAGE 1: DRAM : o=2000h,l=1000h /*伪指令SECTIONS定义分配各个程序

57、段的存储空间*/SECTIONS/*text段存储在程序存储器PAGE 0的PRAM存储器里,其它依次类推*/.text : PRAM PAGE 0.data : PRAM PAGE 0.bss : DRAM PAGE 1.mystack : DRAM PAGE 1注:命令文件的内容是相似的,在以后的实验程序中将不再列出。3Memory.asm文件;本程序完成一个周期正弦波与一个周期余弦波的混合(相加);一个周期正弦波为16点,Q15格式先保存在程序存储器,然后复制到数据存储;为防止数据溢出,相加前两个数据均右移移位(除以2).global start.mmregs;伪指令.data定义数据段

58、,只能分配在程序存储器中存储.data;sin表,一个周期,采样16个点,Q15格式SIN:.word0x0000,0x30fb,0x5a82,0x7641,0x7fff,0x7641,0x5a82,0x30fb .word0x0000,0xcf05,0xa57e,0x89bf,0x8000,0x89bf,0xa57e,0xcf05 ;cos表,一个周期,采样16个点,Q15格式COS:;.word0x7fff,0x7641,0x5a82,0x30fb,0x0000,0xcf05,0xa57e,0x89bf ;.word0x8000,0x89bf,0xa57e,0xcf05,0x0000,0x

59、30fb,0x5a82,0x7641 ;为了练习数据文件的输入/输出功能,COS表从FILE I/O输入,以模仿A/D采样输入。;定义未初始化变量X_SIN_COS、Z_MIX,各16个单元.bssX_SIN,16.bssY_COS,16.bssZ_MIX,16;定义堆栈段stacksize.set 10stack.usect .mystack,stacksizeTOS .usect .mystack,1;栈顶(Top of Stack)标志,方便观察.textstart:;堆栈指针初始化,指向栈顶(TOS,Top of Stack,高地址)STM#stack+stacksize,SPPSHMST1 ;压栈保护

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