- UID
- 872238
|
TMs320C54x的主要特点包括: (1)运算速度快。指令周期为15/20/25nS,运算能力为40/5O/66 MIPS。 (2)优化的CPU结构。内部有一个40位的算术逻辑单元,两个40位的累加器,两个40位加法器,一个17 x l7的乘法器和一个40位的桶形移位器。有四条内部总线和两个地址产生器。此外,内部还集成了维持比加速器,用于提高维特比编译码的速度。先进的DSP结构可高效地实现无线通信系统中的各种功能,如用TMS320C54x实现全速率的GSM需12.7 MIPS, 实现半速率GSM需26.2 MIPS,而实现全速率GSM语音编码器仅需2.3 MIPS,实现IS 54/l36 VSELP语音编码仅需12.8MIPS。 (3)低功耗方式。TMS320C54X可以在3.3V或2.7V电压下工作,三个低功耗方式 (IDLE1、IDLE2, IDLE3)可以节省DSP的功耗,TMS320C54x特别适合于无线移动设备。用TMS320C54x实现IS 54/136 VSELP语音编码仅需3l.1mW,实现GSM语音编码器仅需5.6mW。 (4)智能外设。除了标准的串行口和时分复用(TDM)串行口外,还提供了自动缓冲串行口BSP(auto-Buffered Serial Port)和与外部处理器通信的HlPI(HestPort Interface)接口。 BSP可提供2K字数据援冲的读写能力,从而可以降低处理器的额外开销,指令周期为20nS时,BSP的最大的数据吞吐量为50Mbit/s,即使在IDLE1方式下,BSP也可以全速工作。 HPI可以与外部标准的微处理器直接接口。 2 存储空间及中断
2 DSP应用程序设计及仿真调试指导 2.1伪指令 一 . DSP的汇编伪指令提供程序数据,控制汇编处理,有以下作用: ¨ 把代码和数据汇编到规定的段; ¨ 为未初始化的变量保留内存空间; ¨ 控制列表文件的表示方式; ¨ 初始化内存; ¨ 汇编条件块; ¨ 定义全局变量; ¨ 规定宏汇编库; ¨ 检查符号的调试信息。 二 .下表将归纳所有的汇编伪指令: 伪指令分类 伪指令及其表示格式 具体描述 段定义伪指令 .asect “段名” , 地址 汇编到一以绝对地址为起始的段中 .bss 符号,字数[,块标号] 在未初始化数据段bss中保留空间 .data 汇编到已初始化数据段data中 .sect “段名” 汇编到一已命名(已初始化)的段中 .text 汇编到可执行代码段text中 符号 .usect “段名”,字数[,块标号] 在一已命名(未初始化)的段中保留 空间 常数初始化伪指令(包括数据和地址常数) .bes 位数 在当前段中保留位数(标号指向所保留空间的尾部) .bfloat 数值 初始化一个32位,IEEE单精度的浮点常数;禁止有跨页的初始化对象。 .blong 数值1[,…,数值n] 初始化一个或多个32位整数;禁止有跨页的初始化对象。 .byte 数值1[,…,数值n] 初始化当前段中一个或多个连续字节 .field 数值1[,…,数值n] 初始化一个可变长度的字段 .float 数值 初始化一个32位,IEEE单精度的浮点常数 .int 数值1[,…,数值n] 初始化一个或多个16位整数 .long 数值1[,…,数值n] 初始化一个或多个32位整数 .space 位数 在当前段中保留位数(标号指向所保留空间的头部) .string “字符串1”[,…,“字符串n”] 初始化一个或多个文本字符串 .word 数值1[,…,数值n] 初始化一个或多个16位整数 对准段程序计数器的伪指令 .align 在一页的边缘对准SPC(段程序计数器) .even 在一偶数的边缘对准SPC 定义输出列表格式的伪指令 .drlist 使所有伪指令行都被列出(缺省方式) .drnolist 禁止某些伪指令行的列出 .fclist 允许列出错误的条件代码块(缺省方式) .fcnolist 禁止列出错误的条件代码块 .length 页的长度 定义源文件列表的页长 .list 从头开始源文件的列表 .mlist 允许宏列表和循环块(缺省方式) .mnolist 禁止宏列表和循环块 定义输出列表格式的伪指令 .nolist 停止源文件列表 .option{B/D/F/L/M/T/X} 选择输出列表文件的参数 .page 在 源文件列表中生成一页 .sslist 允许扩展子程序符号列表 .ssnolist 禁止扩展子程序符号列表(缺省方式) .tab 大小 设置表的大小 .title “字符串” 在列表页头显示一个标题 .width 页宽 设置源文件列表的页宽 外部文件定位的指伪令 .copy [“]文件名[”] 包含其他文件中的源语句 .def 符号1[,…,符号n] 标明一个或多个在当前模块中定义而在其他模块中要用到的符号 .global 符号1[,…,符号n] 标明一个或多个全局(外部)符号 .include [“]文件名[”] 包含其他文件中的源语句 .mlib [“]文件名[”] 定义宏定义库 .ref符号1[,…,符号n] 标明一个或多个在另一模块中定义而在当前模块中要用到的符号 条件汇编伪指令 .break [确切定义的表达式] 如果条件满足,就结束.loop汇编。.break是可选可不选的 .else 如果.if的条件不满足,则汇编代码块。.else是可选可不选的 .elseif 确切定义的表达式 如果.if的条件不满足且.elseif的条件满足,则汇编代码块。.elseif是可选可不选的 .endif 结束.if代码块 .endloop 结束.loop代码块 .if 确切定义的表达式 如果条件满足,则汇编代码块。 .loop [确切定义的表达式] 开始一个代码块的重复汇编 汇编定时伪指令 .asg[“]字符串[”],替换符号 用一字符串作为替换符号 .endstruct 结束结构定义 .equ 给符号赋值 .eval 确切定义的表达式,替换字符 在数字替换符号的基础上执行运算 .newblock 未定义的局部标号 .set 给符号赋值 .struct 开始结构定义 .tag 设置一标号的结构属性 其他伪指令 .emsg 字串 把用户定义的错误信息送到输出设备 .end 结束程序 .label 符号 定义一在段中可重定位的标号 .mmregs 将存储映射寄存器送入符号表中 .mmsg 字串 把用户定义的信息送到输出设备 .port 打开汇编器的端口开关 .sblock “段名”[,“段名”,…] 把多个段组成块 .version 版本号 设置处理器版本 .wmsg 字串 把用户定义的警告信息送到输出设备 三 .下面对一些常用伪指令作具体介绍: 1. 段定义伪指令中常用的有 .text,.data,.bss 汇编链接器生成可由TMS320C1x/C2x/C2xx/C5x执行的目标文件,这些目标文件都采用 COFF(common object file format)格式。 COFF更易于模块化编程,因为这种格式将促使你在写汇编程序时,按照代码块和数据块 的方式思考。这样的块既是段,它是一个目标文件的最小单元,将最终在存储映射空间中占 有连接的空间。目标文件的每个段是分立的。 COFF格式的目标文件总包括三个缺省的段: .text 段 通常包含可执行代码 .data段 通常包含已初始化的数据 .bss 段 通常为未初始化的变量留出的空间 如果在汇编的开头没有任何段定义伪指令,则.text为默认的段,即汇编器把所有的代码汇 编到.text段。 2. 外部文件定位的伪指令中常用的有 .includ,.copy,.global,.def,.ref .copy和.include伪指令使汇编器能从另一文件中读取源语句。当汇编器读取完copy/include 文件中的源语句后,它会继续从当前文件中读取源语句。.copy与.include的区别在于从copy文 件中读取的源语句在列表文件中列出而从include文件中读取的源语句不列出。 .def标明一个或多个在当前模块中定义而在其他模块中要用到的符号。汇编器将把这样的符号 列入符号列表中。 .ref标明一个或多个在另一模块中定义而在当前模块中要用到的符号。汇编器将把这样的符号 作为未定义的外部符号放入目标符号列表中,以便链接器能获得其定义。 .global标明外部符号以使其在链接时能被其他模块使用。.global可起到.def和.ref伪指令 的双重作用。 3. 汇编定时符号伪指令中常用的有.set,.equ,.eval .set和.equ都给符号赋常数值。这样的符号被存入符号列表中,并且不能更改。它们不生成 目标代码。这两条伪指令是相同的,可互换。 .eval给一个表达式赋值,把结果用替换字符代表。 4. 其他常用伪指令有.word,.byte,.end,.mmregs,它们的格式和作用较简单,在上表中都已列出。 3 DSP代码调试工具使用指导 一 . C5x软 件 生 成 流 程 图 A B C D E F G 图1 上图1示出了源文件从编译,链接到调试的过程。以下详细讲述一下具体步骤: 1. 源文件可用C语言编程,也可用DSP汇编语言,编辑器则可用EDIT。 2. 如果源文件是C文件,可用命令dspcl将其编译为ASM文件,然后用其他命令汇编为OBJ文件, 也可有dspcl命令直接编译汇编得OBJ文件,这取决于所取命令参数。 3. 如果源文件是ASM文件,可用命令dspa将其汇编为OBJ文件。 4. 汇编后得到的目标文件(OBJ文件)可用dsplnk命令 链接为可执行的输出文件(OUT文件)。 5. OUT文件即可在DSP调试器中执行。 |
|