当前位置:首页 > DSP实验报告
文件名,比如可以输入UseCMD.map (3)单击“确定”,完成设置。
(4)选择菜单“Project”→“Rebuild All”,重新编译工程,生成新设置的map 文件。
8.对照观察map 文件和cmd 文件的内容
(1)选择菜单“File” →“Open?”,将找到F:\\ UseCMD 目录,将文件类型改为“Memory Map Files”,选择刚刚生成的UseCMD.map 文件、打开。
(2)展开工程管理窗中的UseCMD.pjt,双击其中的UseCMD.cmd 文件。 (3)程序的入口地址:cmd 文件的SECTION 中指定.text 段放到程序区(PAGE 0)的PRAM
中,在MEMORY 中指定PRAM 从内存地址100h 开始,长度为1f00h;再看map 文件中“ENTRY POINT SYMBOL”中说明了“start”标号的地址为十六进制0000100,两者相符。
(4)内存的占用情况:通过观察map 文件中的“MEMORY CONFIGURATION”段可以了解内存的使用情况,可以看到,程序所占用的长度为十六进制b,即11 个字长,而数据区因开设了3 个变量,所以占用了3 个字的地址空间
9.改变内存分配
修改cmd 文件中的 PRAM : o=100h,l=1f00h 改为 PRAM : o=200h,l=1e00h 重新编译工程,观察map 文件中有何变化。
四.实验条件
PC一台安装Code Composer Studio 3.0软件。
五、实验心得
进一步了解了CCS软件的应用,对工程文件的应用更加熟悉,能简单的验证程序的正确性。
实验三:定点数除法实验
一.实验目的
1.熟悉’C54x 指令系统,掌握常用汇编指令,学习设计程序和算法的技巧。 2.学习用减法和移位指令实现除法运算。
二.实验原理
由内置的硬件模块支持,数字信号处理器可以高速的完成加法和乘法运算。但
TMS320 系列DSP 不提供除法指令,为实现除法运算,需要编写除法子程序来实现。二进制除法是乘法的逆运算。乘法包括一系列的移位和加法,而除法可分解为一系列的减法和移位。本实验要求编写一个16 位的定点除法子程序。 1.除法运算的过程
设累加器为8 位,且除法运算为10 除以3,除的过程包括与除数有关的除数逐步移位,然后进行减法运算,若所得商为正,则在商中置1,否则该位商为0。 例如:4 位除法示例:
(1)数的最低有效位对齐被除数的最高有效位 00001010 - 00011000 11110010
(2)由于减法结果为负,丢弃减法结果,将被除数左移一位再减 00010100 - 00011000 11111000
(3)结果仍为负,丢弃减法结果,将被除数左移一位再减 00101000 - 00011000 00010000
(4)结果为正,将减法结果左移一位后把商置1,做最后一次减 00100001 - 00011000 00001001
(5)结果为正,将减法结果左移一位加1 得最后结果,高4 位是余数,低4 位商:00010011
2.除法运算的实现
为了尽量提高除法运算的效率,’C54x 系列提供了条件减指令SUBC 来完成除法操作。SUBC 指令的功能如下:
若(ACC)≥0 且(数据存储器地址)≥0 PC+1 然后(ACC)-[(数据存储器地址)×215] →ALU 输出。
若ALU 输出≥0 则:(ALU 输出)×2+1 → ACC 否则:(ACC×2) → ACC实际上,SUBC 指令完成的是除法中的减除数求商的过程,即余数末位补0,减去除数,若结果为正,该位商为1,否则商为0。
SUBC 指令实现条件减,可以用于如下除法:把16位的正被除数放在累加器的低16位,累加器的高16位清0,16位的正除数放在数据存储单元中。执行SUBC指令16次,最后一次SUBC 指令完成后,累加器的低16 位是除法的商,高16位是余数。若累加器和/或数据存储单元的内容为负,则不能用SUBC 指令实现除法。为了完成多次的SUBC 指令,还需要用到循环指令RPT,它可以使RPT 后的一条指令重复1—256 次。
SUBC 指令仅能对正数除法进行运算,因此,要扩展到所有数值的除法,还需要:在程序开头对被除数和除数做乘法,并保存到临时变量,除数和被除数分别取绝对值,在除法运算完成后,根据临时变量的值修改商的符号。 3.除法运算程序流程:
三.实验内容
1.编写程序实现16348÷512; 2. 编写程序实现0.4÷(-0.8)
四.实验条件
PC一台:安装Code Composer Studio 2.0软件。
五.实验步骤
1.用Simulator 方式启动Code Composer。
2. 执行Project→New 建立新的项目,输入div 作为项目的名称,将程序定位在F:\\Division 目录。
3.执行File→New→Source File 建立新的程序文件,为创建新的程序文件命名为div.asm 并保存;执行Project→Add Files to Project,把div.asm 加入项目中。 4.执行File→New→Source File 建立新的文件并保存为div.cmd;执行Project→Add Files to Project,把div.cmd 加入项目中。 5.将实现除法的程序编辑到div.asm中并保存。 6.编辑div.cmd, 加入如下内容 MEMORY {
PAGE 0: VECT : o=0ff80h,l=0040h EX_ROM : o = 1000h , l = 1000h PAGE 1: B2 : o=0060h,l=0020h B1 : o=0300h,l=0100h }
SECTIONS {
.text : {}> EX_ROM PAGE 0 .data : {}> EX_ROM PAGE 0 .bss : {}> B2 PAGE 1
.MYSTACK : {}> B1 PAGE 1 }
7.执行Project?Rebuild All 编译链接;编译错误如下: warning:entry point symbol _c_int0 undefined
出错原因:缺省时Code Composer Studio 设置项目程序为C 语言编译,因此当我们编译汇编程序时,要对项目作适当配置。
8.执行Project→Build Options? 打开编译选项;在linker 属性页上单击,把Autoinit Model 栏选择为No Autoinitialization ;按“确定”保存对配置的修改。
(1)执行File?Load Program 装载程序,装载完程序后,Code Composer Studio 把指针指向程序区0000 处。为了执行我们的程序代码,需要修改DSP 的PC 值;执行View?CPU Registers?CPU Registers 打开寄存器窗口;双击窗口中的PC 标号,CC 弹出修改对话框供修改寄存器;在对话框中输入”start“, 程序将处于我们的程序入口点上。
(2)在观察窗口中添加相应的变量,查看结果。
六.实验心得
能使用CCS软件进行实验,完成有意思的实验案例,但对整个软件的使用仍然不是很熟悉。
共分享92篇相关文档