DSP第四章TMS320C54x定时器/计数器
第4章TMS320C54XDSP指令系统10PPT课件
57
中断指令同样可以改变程序指针PC的值,使程序从一个地址跳转 到另一个地址执行。但与调用指令一样,DSP在执行完中断服务程序 后要返回发生中断的地方继续执行原来的程序。当发生中断时,DSP 会置INTM为1,屏蔽所有可屏蔽中断,并在中断标志寄存器IFR中设 置相应的中断标志。
INTR指令使ST1的INTM位(bit11)置1关中断
14
算术运算类指令
’c54x的算术运算指令丰富,且运算能力强大。算术运 算指令用于完成加减乘除等算术运算。按照功能可将算术运算 类指令分为7组:
(1)加法指令(Add) (2)减法指令(Subtract) (3)乘法指令(Multiply) (4)乘加指令(Multiply-accumulate) (5)乘减指令(Multiply-subtract) (6)双字指令(32比特操作数) (7)专用指令(Application-specific)
25
举例:应用 SUBC DATA, A 计算( 8/2)
................................
stm #1001h , AR3 stm #1002h , AR4 ld #20h , DP st #0002h , 00h ld #0008h , A
rpt #15 subc 00h, A stl A,*AR3
;将相减的结果(高16位) ;存入1063地址单元
23
24
利用SUBC实现除法运算
在‘C54X中没有提供专门的除法指令, 一般有两种方法来完成除法。
一种是用乘法来代替,除以某个数相当于乘以其倒 数,所以先求出其倒数,然后相乘。这种方法适用于 除以一个常数。
另一种方法是使用SUBC(条件移位减法)指令, 重复16次减法操作完成一次除法运算。
TMS320C54xDSP(精)知识分享
T M S320C54x D S P(精)TMS320C54x DSP CPU与外设第一章综述1 总线结构C54x包括8条16比特宽度的总线,其中:●一条程序总线(PB)●三条数据总线(CB、DB、EB)●四条地址总线(PAB、CAB、DAB、EAB)2CPUC54x的CPU结构包括:●40比特的ALU,其输入来自16比特立即数、16比特来自数据存储器的数据、暂时存储器、T中的16比特数、数据存储器中两个16比特字、数据存储器中32比特字、累加器中40比特字。
●2个40比特的累加器,分为三个部分,保护位(39-32比特)、高位字(31-16比特)、低位字(15-0比特)。
●桶型移位器,可产生0到31比特的左移或0到16比特的右移。
●17×17比特的乘法器●40比特的加法器●比较选择和存储单元CSSU●数据地址产生器DAGEN●程序地址产生器PAGEN3外设C54x包括:●通用I/O引脚,XF和BIO●定时器●PLL时钟产生器●HPI口,8比特或16比特●同步串口●带缓存串口,BSP●多路带缓存串口,McBSP●时分复用串口,TDM●可编程等待状态产生器●可编程bank-switching模块●外部总线接口●IEEE1149.1标准JTAG口第二章存储器一般而言,C54x的存储空间可达192K16比特字,64K程序空间,64K数据空间,64KI/O空间。
依赖其并行的工艺特性和片上RAM双向访问的性能,在一个机器周期内,C54x可以执行4条并行并行存储器操作:取指令,两操作数读,一操作数写。
使用片内存储器有三个优点:高速执行(不需要等待),低开销,低功耗。
1 存储空间分配图(以C549为例)复位后,中断矢量表位于程序区FF80H 位置,可重新定位于程序空间任何一个128字的页面(其地址高9比特即页号由PMST 中IPTR 确定)。
2 程序存储区C54x 有片内ROM 、DARAM 、SARAM ,这些区域可以通过软件配置到程序空间。
TMS320C54x系列DSP概述
第一章TMS320C54x系列DSP概述1.1DSP芯片概述1.什么是DSP芯片2.DSP芯片的基本结构1.2TMS320C54x系列DSP的结构和特点1.2.1TMS320C54x系列DSP的概述1.2.2 TMS320C54x系列DSP的特点.1.2.3 TMS320C54x系列DSP的内部硬件结构1.3 总线结构1.4 CPU状态和控制寄存器1.4.1 状态寄存器ST0和ST11.4.2 处理器工作模式状态(PMST)寄存器1.5 算数逻辑单元(ALU)1.5.1 ALU的输入1.5.2 溢出处理1.5.3 进位位1.5.4 双16位模式1.6 累加器A和B1.6.1 保存累加器的内容1.6.2 累加器移位和循环操作1.6.3 饱和处理累加器内容1.6.4 专用指令1.7 桶式移位器1.8 乘法器/加法器单元1.8.1 乘法器的输入源1.8.2 乘法/加法(MAC)指令1.8.3 MAC和MAS乘法运算的饱和处理1.9 比较、选择和存储单元1.10 指数编码器第二章存储器和I/O空间操作TMS320C54x DSP存储器概述存储器空间程序存储器程序存储器的可配置性片内ROM的组织程序存储器地址映射和片内ROM内容片内ROM的代码内容和映射扩展程序存储器数据存储器数据存储器的可配置性片内RAM的组织存储器映射寄存器I/O空间及其访问第三章寻址方式和程序控制3.1立即寻址3.2绝对寻址3.2.1数据存储器地址(dmad)寻址3.2.2程序存储器地址(pmad)寻址3.2.3端口地址(PA)寻址3.2.4*(lk)寻址3.3累加器寻址3.4直接寻址3.4.1基于DP的直接寻址3.4.2基于SP的直接寻址3.5间接寻址3.5.1单操作数寻址3.5.2ARAU和地址产生操作3.5.3单操作数地址的修改1.增加/减少地址(MOD=0、1、2或3)2.偏移地址修改(MOD=12或13)3.变址地址修改(MOD=5或6)4.循环地址修改(MOD=8、9、10、11或14)5.位反向寻址(MOD=4或7)3.5.4双操作数寻址3.5.5修正(ARP)模式3.6存储器映射寄存器寻址3.7堆栈寻址3.8数据类型3.9产生程序存储器地址3.10程序计数器(PC)3.11程序控制3.11.1分支转移1. 无条件分支转移2. 条件分支转移3. 远分支转移3.11.2 调用1.无条件调用2.条件调用3.远调用3.11.3 返回1.无条件返回2.条件返回3.远返回3.11.4 条件操作1.使用多个条件2.条件执行(XC)指令3.条件存储指令3.11.5 重复单条指令3.11.6 重复一个指令快3.12 复位操作3.13 TMS320C54x DSP的中断系统3.13.1 TMS320C54x DSP中断系统概述1. 中断分类2. 处理中断的步骤3.13.2 中断标志寄存器(IFR)3.13.3 中断屏蔽存储器(IMR)3.13.4 接收中断请求3.13.5 应答中断3.13.6 执行中断服务程序(ISR)3.13.7 保存中断上下文3.13.8 中断等待时间3.13.9 中断操作流程3.13.10 重新映射中断向量地址3.13.11 中断和中断向量表3.14 节电模式3.14.1 IDLE1模式3.14.2 IDLE2模式3.14.3 IDLE3模式3.14.4 保持(Hold)模式3.14.5 其他节电性能第四章流水线4.1流水线操作4.1.1 流水线的分支转移指令1. 分支转移指令B2. 延时分支转移指令BD4.1.2 流水线中的调用指令1. 调用指令CALL和CALLD2. 中断指令INTR4.1.3 流水线中的返回指令4.1.4 流水线中的条件执行4.1.5 流水线中的条件调用和分支转移1. 条件调用2. 条件分支转移4.2 中断和流水线4.3 双访问存储器和流水线4.3.1 解决取指和读操作数之间的冲突4.3.2 解决写操作数和读双操作数之间的冲突4.3.3 解决写操作数、写操作数和读双操作数的冲突4.4 单访问存储器和流水线4.5 流水线等待4.5.1 访问存储器映射寄存器的推荐指令4.5.2 更新ARx、BK或SP-解决冲突第五章汇编程序设计应用软件开发流程和工具COFF文件概述COFF文件的基本单元-段汇编器对段的处理1.未初始化段2.初始化的段3.自定义段4.子段(Subsections)5.段程序计数器6.使用段伪指令的简单实例链接器对段的处理重新定位运行时重新定位加载程序COFF文件中的符号1.外部符号2.符号表汇编语言程序格式汇编程序格式1.标号区2.助记符指令域3.代数指令域4.注释汇编语言的数据格式1.常数2.符号表达式1.算术操作符2.表达式上溢和下溢3.有效定义的表达式4.条件表达式5.可重定位的符号和合法表达式5.3.4 内置函数5.3.5 加载值到扩展程序存储器5.4 汇编伪指令5.4.1 定义段的伪指令5.4.2 初始化常数的伪指令5.4.3 对准段程序计数器的伪指令5.4.4 格式化输出清单文件的伪指令5.4.5 引用其他文件的伪指令5.4.6 条件汇编伪指令5.4.7 汇编时符号伪指令5.4.8 混和伪指令5.4.9 常用伪指令及其语法格式5.5 程序汇编5.5.1 运行汇编程序5.5.2 条件汇编5.5.3 列表文件5.5.4 交叉引用清单5.6 程序链接5.6.1 链接器的调用5.6.2 链接器的选项5.6.3 链接器命令文件(.cmd文件)5.7 编写链接器命令文件(.cmd文件)5.7.1 MEMORY指令5.7.2 SECTIONS指令1. SECTINS指令的使用方法2. 为输出段指定地址5.7.3 MEMORY和SECTIONS指令的默认算法5.7.4 命令文件编写及链接实例1. 命令文件2. 链接文件5.8 宏定义和调用宏5.8.1 宏定义5.8.2 调用宏5.8.3 使用递归和嵌入宏第六章汇编语言指令指令集概述算数操作逻辑操作程序控制加载和存储指令6.2 指令集的符号和缩写第七章C/C++编译器概述7.1C/C++编译器命令解释程序7.2调用编译器解释命令程序7.3改变编译器的选项7.3.1常用的选项7.3.2指定文件名7.3.3修改编译器对文件名的解释7.3.4修改编译器对文件名扩展的解释和命名7.3.5指定目录7.3.6控制汇编器的选项7.4 使用环境变量改变编译器特性7.4.1 制定文件目录(C_DIR和C54X_C_DIR)7.4.2 设置默认编译器选项(C_OPTION 或C54_C_OPTION) 7.5 控制预处理器7.5.1 预定义的宏名7.5.2 #include 文件的搜索路径7.5.3 用-i选项改变#include 文件的搜索路径7.5.4 产生预处理的列表文件(-ppo选项)7.5.5 预处理后继续编译(-ppa选项)7.5.6 产生一个带注释的预处理列表文件(-ppc选项)7.5.7 产生一个具有行控制信息的预处理列表文件(-ppl选项)7.5.8 产生#include伪指令包含的文件列表(-ppi选项)7.6 使用直接插入函数展开7.6.1 直接插入内部操作数7.6.2 无保护的定义控制直接插入7.6.3 使用预处理器符号_INLINE的保护直接插入7.6.4 直接插入限制7.7 使用交互列表工具7.8 编译错误简介7.8.1 控制诊断消息7.8.2 如何使用诊断选项第八章优化C/C++代码8.1使用C编译优化器8.2使用-O3选项8.2.1 控制文件级优化(-O1n选项)8.2.2 创建优化信息文件(-On n选项)8.3 执行程序级优化8.3.1 控制程序级优化(-Op n选项)8.3.2 混和C/C++语言和汇编的优化考虑因素8.4 自动直接插入扩展(-Oi选项)8.5 使用交互列表工具8.6 访问优化代码中的别名变量8.7 调试优化得代码和优化类型8.7.1 调试优化的代码8.7.2 压缩优化的代码(-gp和-O选项)8.7.3 可执行的优化类型1. 基于重要程度的寄存器分配2. 消除别名的歧义3. 分支转移优化和控制流简化4. 数据流优化5. 表达式简化6. 函数的直接插入展开7. 循环归纳变量优化和强度降低8. 循环不变代码的移动9. 循环旋转10. 尾部合并11. 自动增量寻址12. 重复块13. 延迟、转移、调用和返回14. 算数重排、符号简化和常数合并第九章链接C/C++代码9.1调用链接器9.1.1 单步调用链接器9.1.2 作为编译的步骤调用链接器9.2 禁用链接器(-c编译器选项)9.3 控制链接过程9.3.1 链接运行时支持库9.3.2 运行时初始化9.3.3 全局对象构造器9.3.4 指定初始化类型9.3.5 指定段在存储器中的分配9.3.6 链接器命令文件实例第十章TMS320C54x C/C++语言10.1 TMS320C54x C/C++语言的特点10.1.1 TMS320C54x C语言特点1. 标志符和常数2. 数据类型3. 数据转换4. 表达式5. 声明6. 预处理器10.1.2 TMS320C54x C++语言特点10.2 数据类型10.3 关键词10.3.1 const关键词10.3.2 ioport关键词10.3.3 interrupt关键词10.3.4 near 和far关键词10.3.5 volatile关键词10.4 寄存器变量和全局寄存器变量10.4.1 寄存器变量10.4.2 全局寄存器变量1. 何时使用全局变量寄存器2. 避免破坏寄存器的值3. 禁止编译器使用AR1和AR6 10.5 Pragma伪指令1. CODE_SECTION指令2. DA TA_SECTION指令3. FUNC_CANNOT_INLINE指令4. FUNC_EXT_CALLED指令5. FUNC_IS_PURE指令6. FUNC_IS_SYSTEM指令7. FUNC_NEVER_RETURNS指令8. FUNC_NO_ASG指令9. FUNC_NO_IND_ASG指令10. IDENT指令11. INTERRUPT指令12. NO_INTERRUPT指令10.6 初始化静态和全局变量10.7 C/C++和汇编语言混和编程10.7.1 用/C++代码调用汇编语言模块10.7.2 在C语言中插入汇编语句10.7.3 在程序中访问汇编语言变量10.7.4 访问汇编语言的常数第十一章运行时环境和支持库11.1存储器模式11.1.1 段11.1.2 C系统堆栈11.1.3 分配.const到程序存储器11.1.4 动态存储器分配11.1.5 变量初始化11.1.6 为静态和全局变量分配存储器11.1.7 子段/结构体定位11.1.8 字符串常数11.2 寄存器规定11.2.1 状态寄存器的位11.2.2 寄存器变量11.3 函数结构和调用规定11.3.1 函数如何进行调用11.3.2 被调用函数如何响应11.3.3 访问变量和局部变量11.3.4 分配帧和使用32位存储器读指令11.4 中断处理11.4.1 C语言中中断的基本知识11.4.2 使用C/C++中断程序11.4.3保存中断入口点的上下文11.5 系统初始化11.5.1 变量自动初始化11.5.2 全局构造器11.5.3 初始化表11.5.4 运行时变量的自动初始化11.5.5 在加载时变量的初始化11.6 运行时支持库函数11.6.1 库11.6.2 C的I/O函数1. 低级I/O的执行2. 为C的I/O添加一个设备3. 低级函数11.6.3 头文件1. 诊断消息头文件(assert.h/cassert)2. 字符测试和转换(ctype.h cctype)3. 错误报告(error.h/cerrno)4. 扩展寻址函数(extaddr.h)5. 低级输入/输出函数(file.h)6. 限制头文件(float.h/cfloat和limits.h/climits)7. 浮点数学函数(math.h/cmath)8. 非局部转移(set jump.h/cset jump)9. 变量可变头文件(stdarg.h/cstdarg)10. 标准定义头文件(stddef.h/cstddef)11. 输入/输出函数(stdio.h/cstdio)12. 通用工具头文件(stdlib.h/cstdlib)13. 字符串函数头文件(string.h/cstring)14. 时间函数头文件(time.h/ctime)15. 异常事件的处理(exception和stdexcept)16. 动态存储器管理(new)17. 运行时类型信息(typeinfo)第十二章集成开发环境(CCS)12.1CCS2.0系统的安装和配置S2.0系统的安装2.系统配置3.运行CCS2.012.2建立工程文件1.建立一个新的工程项目文件2.向工程项目中添加文件12.3设置工程项目选项12.3.1 编译器环境参数设置1. 设置结果显示2. 具体选项的设置12.3.2 链接器环境参数设置1. 设置结果显示2. 具体选项的设置12.4 编译、链接和运行目标文件12.4.1 编译和链接12.4.2 仿真运行输出目标文件12.5 查看存储器信息12.6 查看寄存器信息1. 查看CPU寄存器2. 查看外设寄存器12.7 修改存储器和寄存器内容1. 修改存储器内容2. 修改寄存器内容3. 修改变量内容12.8 设置断点和探测点1. 设置断点2. 设置探测点12.9 图形显示12.9.1 定义探测点和输入数据12.9.2 将探测点与数据文件链接起来12.9.3 建立幅值-时间图形1. 建立图形2. 链接图形到数据源激活图形12.9.4 建立“眼(Eye)”图形1. 建立图形2. 链接图形到数据源激活图形12.9.5 建立“合成(Constellation)”图形1. 建立图形2. 链接图形到数据源激活图形第十三章应用程序开发实例13.1提高系统性能的几种方法13.1.1 有效存储器分配的建议1. 安排SARAM和DARAM的数据分配2. 对于随即访问的变量,使用直接寻址,并将他们分配到同一个128字的页面3. 为中断而保留专用的CPU资源13.1.2 存储器定位要求13.1.3 堆栈初始化13.1.4 重叠管理13.1.5 存储取之间的移动13.2 算术运算13.2.1 除法和求模运算13.2.2 正弦和余弦运算13.2.3 扩展精度运算13.2.4 浮点运算13.3 快速傅立叶变换(FFT)的DSP实现13.3.1 离散傅立叶变换(DFT)13.3.2 快速傅立叶变换(FFT)13.3.3 快速傅立叶变换的DSP实现1. 实数FFT运算序列的存储分配2. 基2实数FFT运算的算法3. 计算所求信号的功率13.4 FIR滤波器的DSP实现1. FIR滤波器实现方法2. FIR的DSP实现程序代码13.5 IIR滤波器的DSP实现1. 无限脉冲响应(IIR)滤波器结构2. 双二次IIR滤波器的实例程序13.6 自适应滤波的DSP实现13.7 CODEC应用程序的DSP实现1. 编写汇编程序2. 链接命令文件。
第4章定时器及硬件中断C55xDSP
tint0:
b _Timer0
nop
.align 8
.text
第4章 定时器及硬件中断
c_int00:
amov #0,xdp
amov #STACK+200h,xsp
amov #SYSSTACK+200h,xssp
;init interupt(中断初始化)
bset intm
;禁止全局中断
mov #1,@ivpd ;初始化DSP中断矢量指
第4章 定时器及硬件中断
4.2 定时器及硬件中断实验
4.2.1 实验目的 ■了解C55x DSP定时器结构。 ■学习C5509定时器初始化。 ■了解C55x DSP中断。 ■学习中断处理。
第4章 定时器及硬件中断 4.2.2 实验设备
■PC兼容机一台;操作系统为Windows 2000(或 WindowsNT 4.0、Windows 98、Windows XP);计算机已经 安装CCS v3.1集成环境软件。
器设定为自动装载模式(ARB=1),当计数器TIM减到0时, 就会从PRD重新装载数据。定时器控制寄存器TCR如图4-2 所示,使用它的特定位可以实现对定时器进行配置、启动、 停止、装载和重新装载等,表4-1是对定时器控制寄存器 TCR的每位进行说明。
第4章 定时器及硬件中断 图4-2 定时器控制寄存器TCR
第4章 定时器及硬件中断
4.1 定时器硬件结构原理
TMS320VC5509 DSP有两个独立的20 bit软件可编程通用 减数计数定时器,它们可用于向CPU提供周期性的中断信号, 或给DMA控制器发送周期同步事件,也可以用于给外部设 备提供周期信号,还可以用于外部事件计数。 20 bit的通用定时器是减数计数器,它由两部分组成:4位预 分频计数器(PSC)和16位主计数器(TIM)。定时器结构框图如 图4-1所示。
第4章 TMS320C54xDSP寻址方式
第4章 TMS320C54xTM DSP汇编语言与混合编程 (2) MVDK 语 法:助记符方式 MVDK Smem,dmad 执行过程:(dmad)→EAR if (RC)≠0 Then (Smem)→通过EAR寻址的Dmem (EAR)+1→EAR Else (Smem)→通过EAR寻址的Dmem 该指令不会影响任何状态位。
第4章 TMS320C54xTM DSP汇编语言与混合编程
功能描述:把一个单数据存储器操作数Smem的内容复制 到一个通过dmad(地址在EAB地址寄存器EAR中)寻址的数 据存储器单元。可以循环执行该指令来转移数据存储器中 的连续字。
第4章 TMS320C54xTM DSP汇编语言与混合编程 例4.32 MVDK DAT10,8000H
一条指令中可对两种立即数编码, 一种是短立即数(3、5、8或9位),短立即数指令编码 为一个字长。 另一种是16位的长立即数,16位立即数的指令编码为两 个字长。
第4章 TMS320C54xTM DSP汇编语言与混合编程
支持立即数的指令
3位或5位立即数 8位立即数 9位立即数 16位立即数 ADD ADDM AND ANDM BITF CMPM LD MAC OR ORM RPT RPTZ ST STM SUB XOT XORM lK
第4章 TMS320C54xTM DSP汇编语言与混合编程 * 直接寻址 指令中的7 bit是一个数据页内的偏移地址,而 所在的数据页则由数据页指针DP或SP决定,该偏移值加上DP 和SP的值决定了在数据存储器中的实际地址; * 间接寻址 按照辅助寄存器中的地址访问存储器; * 存储器映射寄存器寻址 通过寻址存储器映射寄存器实现 寻址; * 堆栈寻址 把数据压入和弹出系统堆栈。
第4章TMS320C54x汇编指令系统
表4-8 与逻辑运算指令
表4-9 或逻辑运算指令
表4-10 异或逻辑运算指令
表4-11 移位逻辑运算指令
表4-12 测试指令 返回本节
4.2.3 程序控制指令
程序控制指令包括分支转移指令、子程序调用指 令、中断指令、返回指令、重复指令、堆栈操作 指令及混合程序控制指令,分别如表4-13、表414、表4-15、表4-16、表4-17、表4-18及表4-19 所示。
表4-2 加法指令
表4-3 减法指令
表4-4 乘法指令
表4-5 乘加和乘减指令
表4-6 双精度(32位操作数)指令
表4-7 专用指令 返回本节
4.2.2 逻辑运算指令
逻辑指令包括与、或、异或(按位)、移位和测 试指令,分别如表4-8、表4-9、表4-10、表4-11、 表4-12所示。
表4-13 分支转移指令
表4-14 子程序调用指令
表4-15 中断指令
表4-16 返回指令
表4-17 Байду номын сангаас复指令
表4-18 堆栈操作指令
表4-19 混合程序控制指令 返回本节
4.2.4 加载和存储指令
加载和存储指令包括加载指令、存储指令、条件 存储指令、并行加载和存储指令、并行加载和乘 法指令、并行存储和加/减法指令、混合加载和存 储指令,分别如表4-20、表4-21、表4-22、表423、表4-24、表4-25、表4-26及表4-27所示。加 载指令是将存储器内容或立即数赋给目的寄存器; 存储指令是把源操作数或立即数存入存储器或寄 存器。
4.1 指令系统中的符号和缩写
表4-1 指令系统中的符号和缩写
返回首页
返回本节
4.2 指令系统
4.2.1 算术运算指令 4.2.2 逻辑运算指令 4.2.3 程序控制指令 4.2.4 加载和存储指令
TMS320C54x
TMS320C54xDSP CPU外设第一章综述1 总线结构C54x包括8条16比特宽度的总线,其中:●一条程序总线(PB)●三条数据总线(CB、DB、EB)●四条地址总线(PAB、CAB、DAB、EAB)2CPUC54x的CPU结构包括:●40比特的ALU,其输入来自16比特立即数、16比特来自数据存储器的数据、暂时存储器、T中的16比特数、数据存储器中两个16比特字、数据存储器中32比特字、累加器中40比特字。
●2个40比特的累加器,分为三个部分,保护位(39-32比特)、高位字(31-16比特)、低位字(15-0比特)。
●桶型移位器,可产生0到31比特的左移或0到16比特的右移。
●17×17比特的乘法器●40比特的加法器●比较选择和存储单元CSSU●数据地址产生器DAGEN●程序地址产生器PAGEN3外设C54x包括:●通用I/O引脚,XF和BIO●定时器●PLL时钟产生器●HPI口,8比特或16比特●同步串口●带缓存串口,BSP●多路带缓存串口,McBSP●时分复用串口,TDM●可编程等待状态产生器●可编程bank-switching模块●外部总线接口●IEEE1149.1标准JTAG口第二章 存储器一般而言,C54x 的存储空间可达192K16比特字,64K 程序空间,64K 数据空间,64KI/O 空间。
依赖其并行的工艺特性和片上RAM 双向访问的性能,在一个机器周期内,C54x 可以执行4条并行并行存储器操作:取指令,两操作数读,一操作数写。
使用片内存储器有三个优点:高速执行(不需要等待),低开销,低功耗。
1 存储空间分配图(以C549为例)复位后,中断矢量表位于程序区FF80H 位置,可重新定位于程序空间任何一个128字的页面(其地址高9比特即页号由PMST 中IPTR 确定)。
2 程序存储区C54x 有片内ROM 、DARAM 、SARAM ,这些区域可以通过软件配置到程序空间。
DSP第四章TMS320C54x定时器/计数器
方波的周期由片上定时器确定,采用中断方法实现。设计 步骤如下: (1)定时器初始化 ●关闭定时器,TCR中的TSS=1。 ●加载PRD。因为输出脉冲周期为4ms。 ●启动定时器,初姑化TDDR,TSS=0,TRB=1
TCR
定时器控制寄存器,包含定时器的 控制和状态位
15~12 11
10
9~6
保留
soft
free
PSC
5
4
TRB
TSS
图4-2 TCR位结构图
3~0 TDDR
表4-2 定时器控制寄存器(TCR)的功能
4.2 时钟发生器
硬件配置PLL
用于C541、C542、C543、C545和C546芯片。 所 谓 硬 件 配 置 PLL , 就 是 通 过 C54x 的 3 个 引 脚
通过外部中断请求输入、检测输入脉冲 频率。
3.周期信号检测
相邻脉冲时间差=两个脉冲之间 的差值+两次延迟响应时间差
相邻脉冲时间间隔=T(n+1)T(n)+3T机器周期
PLLN DIV
0
PLLD Ⅳ
X
PLLMUL 0~14
比例系数 0.5
0
X
15
0.25
1
0
0~14
PLLMUL+1
1
0
15
1
1
1
0或偶数
(PLLMUL+1)÷2
1
1
奇数
PLLMUL÷4
图5-3 PLL锁定时间和CLKOUT频率的关系
4.3 定时器/计数器编程和应用
TMS320C54XDSP原理、编程及应用
4.2 汇编源程序格式
汇编语言是DSP应用软件的基础,编写汇编语言必须要符合 相的格式,这样汇编器才能将源文件转换为机器语言的目标 文件。汇编语言指令书写形式有两种:助记符形式和代数式 形式,本章以助记符指令系统为主介绍。TMS320C54X汇编语 言源程序由源说明语句组成,包括汇编语言指令、汇编伪指 令(汇编命令)、宏指令(宏命令)和注释等,一般一句程序占 据编辑器的一行。汇编器每行最多只能读200个字符,因此源 语句的字符数不能超过200个。一旦长度超过200个字符,汇 编器将自行截去行尾的多余字符并给出警告信息。
1.1 指令系统概述
符号 意义
SHFT
4位移位数(0≤SHFT≤15)
SHIFT 5位移位数(-16≤SHFT≤15) Sind Smem SP src ST0 ST1 SXM 使用间接寻址的单数据存储器操作数 16位单数据存储器操作数 堆栈指针 源累加器(A或B) 状态寄存器0 状态寄存器1 ST1中的符号扩展方式位
4.2.2 汇编语言常量
C54X汇编器支持7种类型的常量:二进制整数、八进制整数、十进 制整数、十六进制整数、字符常量、汇编时间常量和浮点数常量。
汇编器在内部把常量作为32位量常量不能进行符号扩展。例如,常量 FFH等同于00FFH(16进制)或255(10进制),但不是-1。
1. 二进制整数常量 二进制整数常量最多由16个二进制数字组成,其后缀为B(或b)。 如果少于16位,汇编器将向右对齐并在左面补零。下列二进制整 数常量都是有效的。
4.2.1 汇编语言语句格式
1. 标号域
标号供本程序的其他部分或其他程序调用。对于所有C54X汇编指令和 大多数汇编伪指令,标号都是可选项,但伪指令.set和.equ除外,二 者需要标号。标号值和它所指向的语句所在单元的值(地址或汇编时 段程序计数器的值)是相同的。 使用标号时,必须从源语句的第一列开始。一个标号允许最多有32个 字符:A~Z、a~z、0~9、_和$,第一个字符不能是数字。标号对大 小写敏感,如果在启动汇编器时,用到了-c选项,则标号对大小写不 敏感。标号后可跟一个冒号“:”,也可不跟。如果不用标号,则第 一列上必须是空格、分号或星号。
轻松学会DSP——第4章-TMS320C54x软件开发
汇编器对段的处理
2.2.已初始化段 已初始化段包含可执行代码或已初始化数据。
这些段的内容存储在目标文件中,加载程序 时再放到TMS320C54X存储器中。三个用于 建立初始化段的伪指令句法分别为: .text [段起点] .data [段起点] .sect “段名”[,段起点]
汇编器对段的处理
件为真时要汇编代码块。 .else — 标志若.if条件为假时要汇编代码块。 .endif — 标志条件块的结束,并终止该条件代码块。
汇编伪指令
3.引用其他文件 .include '文件名' — 将指定文件复制到当前位置,其
内容可以是程序、数据、符号定义等。 .copy '文件名' — 与.include类似。 .def 符号名 — 在当前文件中定义一个符号,可以被
归档器
Option:归档器工作 -q :不显示状态栏及相关信息; -s :打印全局变量;
Libname: 库文件名 Filename:目标文件
Ar500 -a function sine.obj cos.obj flt.obj
3 、连接器
lnk500 [ -options] filename 1 . ... filename n -e global_symbol:定义程序的进入点; -c:使用C编译器的ROM初始化模式; -cr:使用C编译器的RAM初始化模式; -i dir:指定库文件的路径; -l filename:指定连接时使用的库文件名; -m filename:生成map文件; -o filename:指定生成的out文件名。系统缺省
链接器对段的处理有两个功能。首先,它将 汇编器产生的COFF目标文件(.obj文件)中 的各种段作为输入段,当有多个文件进行链 接时,它将输入段组合起来,在可执行的 COFF输出模块中建立各个输出段。其次,链 接器为输出段选择存储器地址。
DSP应用技术教程 部分习题答案
《TMS320C54x DSP应用技术教程》部分习题答案注意:未提供的参考答案习题(因考试为开卷形式,部分在课堂讲过,部分需要自行思考归纳总结或编程),请参考PPT和书上示例,自行解答。
第1章绪论1.简述Digital Signal Processing 和Digital Signal Processor 之间的区别与联系。
答:前者指数字信号处理的理论和方法,后者则指用于数字信号处理的可编程微处理器,简称数字信号处理器。
数字信号处理器不仅具有可编程性,而且其数字运算的速度远远超过通用微处理器,是一种适合于数字信号处理的高性能微处理器。
数字信号处理器已成为数字信号处理技术和实际应用之间的桥梁,并进一步促进了数字信号处理技术的发展,也极大地拓展了数字信号处理技术的应用领域。
2.什么是DSP技术?答:DSP技术是指使用通用DSP处理器或基于DSP核的专用器件,来实现数字信号处理的方法和技术,完成有关的任务。
5.数字信号处理的实现方法有哪些?答:参见P3-4 1.1.3节。
6.DSP的结构特点有哪些?答:哈佛结构和改进的哈佛结构、多总线结构、流水线技术、多处理单元、特殊的DSP指令、指令周期短、运算精度高、硬件配置强。
7.什么是哈佛结构和冯洛伊曼结构?它们有什么区别?答:参见P5-6 1.2.2节。
8.什么是哈佛结构和冯.诺依曼结构?它们有什么区别?答:DSP处理器将程序代码和数据的存储空间分开,各空间有自己独立的地址总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,这就是哈佛结构。
以奔腾为代表的通用微处理器,其程序代码和数据共用一个公共的存储空间和单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行的,这样的结构称为冯·诺伊曼结构。
采用哈佛结构,可同时取指令和取操作数,并行地进行指令和数据的处理,从而可以大大地提高运算的速度,非常适合于实时的数字信号处理。
而冯·诺伊曼结构当进行高速运算时,取指令和取操作数是分时操作的,这样很容易造成数据传输通道的瓶颈现象,其工作速度较慢。
DSP原理及应用TMS320C54x片内外设及应用实例
应用领域拓展
随着数字信号处理技术的不断发展,DSP的应用领 域也在不断拓展,需要不断探索新的应用场景和市 场需求。
人才培养和生态系统建设
为了推动DSP技术的发展和应用,需要加强 人才培养和生态系统建设,建立完善的开发 环境和工具链。
06
参考文献
参考文献
1
[1] 张雄伟, 杨吉斌. 数字信号处理——原理、算 法与实现[M]. 北京: 清华大学出版社, 2011.
应用场景
在音频处理、信号测量、控制系统 等领域广泛应用。
存储器和I/O引脚
存储器和I/O引脚功能
01
TMS320C54x芯片具有外部存储器和多个I/O引脚,用于扩展外
部存储空间和连接外设。
工作原理
02
通过读写外部存储器实现数据存储,I/O引脚用于输入输出电平
信号。
应用场景
03
在数据存储、外设控制、信号采集等方面具有广泛应用。
FFT在TMS320C54x上的实现
TMS320C54x的硬件结构支持FFT运算,其乘法器和累加器运算单元可以高效地完成 FFT计算。在实现FFT时,需要注意数据的位序和存储方式。
FFT应用实例
通过FFT算法,可以分析语音、图像、雷达等信号的频谱成分,从而实现信号的频域分 析、滤波、调制解调等功能。
TMS320C54x的优势与局限性
• 丰富的外设接口:TMS320C54x系列DSP具有多种外设接口, 如串行通信接口、并行输入输出接口等,方便与外部设备进行 数据交换。
TMS320C54x的优势与局限性
价格较高
由于TMS320C54x系列DSP采用高性能的制程技术和复杂的内 部结构,导致其价格较高,增加了应用成本。
DSP原理及应用TMS320C54x片内外设及应用实例
数字信号处理是如何工作的?TMS320C54x提供了强大的处理能力和片内外 设,可以帮助我们实现各种各样的应用,本次演示将带您深入了解高效的 DSP应用。
DSP原理介绍
1 DSP快速傅里叶变换
用于信号频谱分析及滤波。
3 数字模拟转换器
将模拟信号转换为数字信号。
片内外设介绍
1
高速串行接口
用于连接其他高速设备以及DSP的外
可编程外设接口
2
设模块。
可以实现各种外设和DSP之间的灵活
通讯。
3
嵌入式闪存
可储存程序代码、数据,提高运行速 度。
应用实例1
声音信号处理
实现语音信号的压缩、降 噪和增强等功能。
医疗电子设备
通过DSP对医疗设备信号 进行处理,实现医疗仪器 的精准度和效率的高度提 升。
应用实例3
1
机器视觉
基于DSP的运算速度和精度,可以实时处理图像和视频等信号。
2
雷达信号处理
通过DSP实现雷达信号的识别、追踪和跟踪等功能。
3
电力控制系统
通过嵌入式闪存存储电力控制程序,实现高效电力控制和管理。
应用实例4
1 无线通信
通过DSP实现信号调制、解调等关键功能,提高通讯效率和可靠性。
2 车载信息娱乐系统
自控制
配合传感器实现智能化控 制,提高生产效率、节约 资源。
应用实例2
数字音频工作站
通过数字信号处理技术和DSP 实现音频采集、混音、修剪等 功能。
噪音控制
对噪声信号进行频谱分析和滤 波处理,实现噪音消除和降噪 功能。
音乐制作
DSP可以高效处理各种乐器的 信号,帮助音乐家实现更加理 想的音乐作品。
DSP原理及应用-TMS320C54x软件开发
数字信号处理(DSP)是一种重要的信号处理技术,在各领域有广泛的应用。 本课程将深入介绍DSP原理及TMS320C54x软件开发,帮助您掌握相关知识和 技能。
1. DSP概述
介绍数字信号处理的基本概念、作用和应用领域。
2. 数字信号处理基础
讲解数字信号处理的基本原理、采样和量化技术。320C54x系列数字信号处理器的特点和应用领域。
4. TMS320C54x系列特点
详细介绍TMS320C54x系列数字信号处理器的性能和特点。
5. TMS320C54x芯片架构
解析TMS320C54x芯片的内部结构和功能模块。
6. TMS320C54x软件开发环境
介绍TMS320C54x软件开发所需的开发环境和工具。
7. CCS软件环境概述
讲解CCS(Code Composer Studio)软件开发环境的特点和使用方法。
8. DSP算法设计流程
探讨在DSP开发中的算法设计过程和最佳实践。
TMS320C54x数字信号处理器硬件结构
在片仿真接口 ● 具有符合IEEEll49.1标准的在片仿真接口(JTAG)。 速度 ● 单周期定点指令的执行时间为25/20/15/15/10-ns(40 MIPS/50 MIPS/66 MIPS/80 MIPS/100
MIPS)。
图1 TMS320C54x DSP的内部硬件组成框图1
返回本节
保留 (DROM=1) 外部(DROM=0)
FFFFH
MP/ MC=0 (微型计算机模式)
图2 TMS320VC5402存储器分配图
0 0000H
Page 0 64K
1 0000H
1 3FFFH 1 4000H
Page1: 低16K
外部
Page1: 高48K
外部
2 0000H
2 3FFFH 2 4000H
返回首页
3 TMS320C54x的存储器分配
● 3.1 存储器空间 ● 3.2 程序存储器 ● 3.3 数据存储器 ● 3.4 I/O存储器
返回首页
3.1 存储器空间
● TMS320C54x存储器由3个独立的可选择空间组成:程序空间、数据空间和I/O空间。 ● 程序存储器空间包括程序指令和程序中所需的常数表格;数据存储器空间用于存储需要程序处理
在片外围电路(如图1所示) ● 软件可编程等待状态发生器。 ● 可编程分区转换逻辑电路。 ● 带有内部振荡器。 ● 外部总线关断控制,以断开外部的数据总线、地址总线和控制信号。 ● 数据总线具有总线保持器特性。 ● 可编程定时器。并行主机接口(HPl)。
电源 ● 可用IDLEl、IDLE2和IDLE3指令控制功耗,以工作在省电方式。 ● 可以控制关断CLKOUT输出信号。
图1 TMS320C54x DSP的内部硬件组成框图2
精品课件-TMS320C54X DSP原理及应用-第4章
第4章 TMS320C54x汇编语言程序设计 “1”表示让SPC对准字边界; “2”表示让SPC对准长字/偶地址边界; “128”表示让SPC对准页边界。 当 .align不带操作数时,其缺省值为128,即对准页边界。 4.输出列表格式伪指令 表4-5列出了输出列表格式伪指令。
29
第4章 TMS320C54x汇编语言程序设计 2.常数初始化伪指令 常数初始化伪指令如表4-4所示。 (1) .bes和 .space。汇编器对这些保留的位填0,将位数
乘以16来实现保留字。当标号和 .space一起使用时,标号指向 保留位的第一个字;当标号和 .bes一起使用时,标号指向保留 位的最后一个字。
第4章 TMS320C54x汇编语言程序设计 第4章 TMS320C54x汇编语言 程序设计
4.1 TMS320C54x汇编语言的基本概念 4.2 TMS320C54x汇编语言程序设计的基本方法 4.3 TMS320C54x汇编语言程序的编辑、汇编与链接过程 4.4 汇编器 4.5 链接器 4.6 Simulator的使用方法 4.7 汇编程序举例
( )。
11
第4章 TMS320C54x汇编语言程序设计 TM行。例如:16/(8*2)=1。 同级运算的顺序是从左到右。例如:16/8*2=4。 表4-1给出了表达式的运算符及优先级。
12
第4章 TMS320C54x汇编语言程序设计
32
第4章 TMS320C54x汇编语言程序设计 对于.pstring而言,如果字符串没有占满最后一个字,
则剩余位填0。 (6) .int和 .word。这两个指令分别用来设置一个或
多个16位无符号整型量常数和有符号整型量常数。如 “table:.int 1,2,3,4”、“table:.word 8,6,4, 2”。
TMS320C54x系列DSP内部结构功能笔记
大家在阅读的时候使Word成折叠模式看着会更舒服些。
关于文档里边用到的中文参考资料,附下载地址:/icview-161578-1-1.html前言DSP的本质还是单片机-微机,个人认为,微机类芯片,不论是MCU,ARM还是DSP 甚至是PC上的处理器,我们在学习这类芯片的使用时,首先要学习的便是这些芯片的CPU 核,存储器组织和中断系统。
只有把这几方面的内容掌握之后,你才能说根据其特点来使用这块芯片,Debug时你心中才有数。
至于片上外设,与芯片本身其实并没有太大关系,大可以要使用时再去学习,而且不同芯片的外设其实还都是相通的。
基于此,我把我在学习这类芯片时对于这几块的学习的笔记摘录出来(这篇文档中对是对Ti的TMS320C54x系列的学习笔记),以供大家参考。
我的笔记虽然可能次序,排版,没有市面上的书本组织得好,但我可以说,我决对是面面向应用来写的,而不是为了出书来写的。
市面上的技术类的书,大多数其实只是简单的把官方的文档翻译过来而已,而且在翻译的过程中还省略了很多细节,这些细节其实对于我们的理解和工程开发都是很重要的,另外很多翻译还不准确。
在我的笔记中,中文资料我只是作为一个参考,或者作为一种线索,真正有价值的信息都是来自于我对于官方文档的学习。
每一部分的记录都是以一个新手的态度来写的,这些问题都是新手在学习过程中很可能会遇到或想到的。
虽然排版不好,但当你遇到相关问题或想了解某一块时,把我写的这个Word 文档下载下来,然后使用Word文档的搜索功能搜索自己感兴趣的内容,相信一定会让你得到较为满意的结果的。
不仅是DSP芯片方面的知识笔记,在我向信号处理工程师奋斗的路程上,我对我每一天的学习都作了笔记记录,这些笔记记录都是面向新手,面向细节,面向工程的,都是自己用心的体会。
当有笔记成熟或自成一块时,我会把这些笔记都陆续分享给大家,以供大家在学习或开发过程的参考,希望能为大家节省点时间。
附一张目前自己的笔记文件夹的图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
0
4007H
乘5,内部振荡器工作,PLL工作
0
0
1007H
乘2,内部振荡器工作,PLL工作
1
0
F007H
乘1,内部振荡器工作,PLL工作
1
1
0000H
乘1/2,内部振荡器工作,PLL不工作
0
1
F000H
乘1/4,内部振荡器工作,PLL不工作
1
1
…
保留
表4-5 时钟方式寄存器CLKMD各位域功能
表5-6 比例系数与CLKMD的关系
(2)中断初始化
●中断允许寄存器IFR中的定时中断位TINT=1, 清除未处理完的定时中断。
●中断屏蔽寄存器IMR中的定时屏蔽位TINT=1, 开放定时中断。
●状态控制寄存器ST1中的中断标志位INTM位 清零,开放全部中断。
(3)方波发生器程序清单
2.脉冲频率监测
图4-1 定时器组成框图
表4-1 定时器的三个寄存器
Timer0 地址
0024H
0025H
0026H
Timer1 地址
0030H
0031H
0032H
寄存器
说明
定时器寄存器,每计数一次自动减
TIM
1
定 时 器 周 期 寄 存 器 , 当 TIM 减 为 0
PRD
后,CPU自动将PRD的值装入TIM
频系数TRC的TDDR=0。 时钟频率为4MHz,在XF端输出一个周期入4ms的方波,
方波的周期由片上定时器确定,采用中断方法实现。设计 步骤如下: (1)定时器初始化 ●关闭定时器,TCR中的TSS=1。 ●加载PRD。因为输出脉冲周期为4ms。 ●启动定时器,初姑化TDDR,TSS=0,TRB=1
通过外部中断请求输入、检测输入脉冲 频率。
3.周期信号检测
相邻脉冲时间差=两个脉冲之间 的差值+两次延迟响应时间差
相邻脉冲时间间隔=T(n+1)T(n)+3T机器周期
CLKMD1、CLKMD2和CLKMD3的状态,选定时 钟方式,如表5-3所示。由表5-3可见,不用PLL时, CPU的时钟频率等于晶体振荡器频率或外部时钟 频率的一半;若用PLL,CPU的时钟频率等于晶 体振荡器频率或外部时钟频率乘以系数N (PLLN),使用PLL可以使用比CPU时钟低的 外部时钟信号,以减少高速开关时钟所造成的高 频噪声。
分频(DIV)方式,其比例系数为1/2和1/4,在此 方式下,片内PLL电路不工作以降低功耗。
CLKMD 1 0 0 0 1 1 1 1 0
表4-4 复位时的时钟方式(C5402)
CLKMD 2 0
0
CLKMD 3 0
1
CLKMD寄存 器
E007H
9007H
时钟方式
乘15,内部振荡器工作,PLL工作 乘10,内部振荡器工作,PLL工作
表5-3 时钟方式的配置
软件可编程PLL
软件可编程PLL具有高度的灵活性,其时钟定标 器提供各种时钟乘法器系数,并能直接接通和关 断PLL。PLL的锁定定时器可以用于延迟转换PLL 的时钟方式,直到锁定为止。通过软件编程,可 以选用以下两种时钟方式(如表4-4 , 4-6、图43所示)。
PLL方式,其比例系数共31种。靠锁相环电路完 成。
TCR
定时器控制寄存器,包含定时器的 控制和状态位
1free
PSC
5
4
TRB
TSS
图4-2 TCR位结构图
3~0 TDDR
表4-2 定时器控制寄存器(TCR)的功能
4.2 时钟发生器
硬件配置PLL
用于C541、C542、C543、C545和C546芯片。 所 谓 硬 件 配 置 PLL , 就 是 通 过 C54x 的 3 个 引 脚
第四章 TMS320C54x 定时器/计数器
TMS320C54x片内外设简介
1.通用I/O引脚 2.定时器 3.时钟发生器 4.主机接口(HPI) 5.串行口 6.软件可编程等待状态发生器 7.可编程分区转换逻辑
4.1 定时器结构
定时器的组成框图如图4-1所示。它有3个 存储器映象寄存器:TIM、PRD和TCR。这 3个寄存器在数据存储器中的地址及其说明 如表4-1所示。定时器控制寄存器(TCR) 位结构如图4-2所示,各控制位和状态位的 功能如表4-2所示。
PLLN DIV
0
PLLD Ⅳ
X
PLLMUL 0~14
比例系数 0.5
0
X
15
0.25
1
0
0~14
PLLMUL+1
1
0
15
1
1
1
0或偶数
(PLLMUL+1)÷2
1
1
奇数
PLLMUL÷4
图5-3 PLL锁定时间和CLKOUT频率的关系
4.3 定时器/计数器编程和应用
1.方波发生路 复位时,TIM和PRD的内容为最大值0FFFFH,定时器分