




已阅读5页,还剩184页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程回顾 DSP应用技术 DSP基本概念DSP的硬件结构DSP的软件结构应用系统设计 DSP的概念DSP的分类DSP的特点DSP的发展 TMS320C54x系列DSP各部件工作原理 软件体系指令系统编程方法 汇编语言 C语言 设计流程开发调试 开发工具 第1章DSP及其应用概述 什么是DSPDSP的特点DSP的分类TMS320系列DSP DigitalSignalProcessing数字信号处理DigitalSignalProcessor数字信号处理器 一 DSP的含义 二 可编程DSP芯片的特点 1 采用数据总线和程序总线分离的哈佛结构或改进的哈佛结构 2 片内多总线结构 3 采用流水线技术 4 配有专用的硬件乘法 累加器 5 具有特殊的DSP指令 6 快速的指令周期 7 带有DMA通道和串口 中断处理器 定时控制器 软硬件等待功能等 8 支持多处理器结构 9 节电管理和低功耗 二 TMS320系列DSP芯片的特点 1 改进的哈佛结构 采用双存储空间和数条总线 即一条程序总线和多条数据总线 允许程序空间和数据空间之间相互传送数据 可以同时访问指令和数据 比传统处理器的冯 诺依曼结构具有更高的数据处理能力和指令执行速度 2 多总线结构 可以同时进行取指令和多个数据存取操作 并由辅助寄存器自动增减地址进行寻址 使CPU在一个机器周期内可多次对数据空间和程序空间进行访问 解决传统芯片的总线冲突问题 大大提高系统的速度和效率 如 TMS320C54x系列内部有P C D E四组总线 每组总线中都有地址总线和数据总线 这样在1个机器周期内可完成如下操作 从程序存储器中取1条指令 从数据存储器中读2个操作数 向数据存储器写1个操作数 DSP芯片广泛采用流水线 使取指 译码 取操作数和执行等操作可以重叠执行 即实现多条指令的并行执行 从而在不提高时钟频率的条件下减少每条指令的执行时间 C54x的流水线操作由6个操作阶段 周期 组成 预取指 取指 译码 寻址 读操作数 执行彼此相互独立 在任何1个机器周期内 可以有1 6条不同的指令同时工作 每条指令可在不同的周期内工作在不同的操作阶段 3 流水线操作 DSP芯片都配有专用的硬件乘法 累加器 可在1个周期内完成一次乘法和一次加法操作 乘法速度越快 DSP的性能越高 4 专用的硬件乘法 累加器 5 特殊的DSP指令 完成特殊功能的指令 C54x系列共计15条 如FTRS和DELAY指令等 6 快速的指令周期 哈佛结构 流水线操作 专用的硬件乘法器 特殊的DSP指令及继承电路的优化设计 目前TMS320系列处理器的指令周期已经达到了20ns以下 有的甚至达到了几个ns 这使得DSP芯片能够实时实现许多DSP应用 3种分类方式 1 按基础特性分 2 按数据格式分 3 按用途分 静态DSP芯片 工作时钟一致性DSP芯片 指令类型 三 DSP芯片的种类 定点DSP芯片 定点格式浮点DSP芯片 浮点格式 通用型DSP芯片专用型DSP芯片 TMS320C54xDSP属于16位通用 定点 一致性芯片 四 TMS320系列DSP芯片 TI公司的通用型DSP芯片可归纳为四大系列 即 C6000 C64x C62x C67x 系列 主要用于高性能复杂的通信系统 C5000 C5x C54x C55x OMAP5910 系列 主要用于低功耗 便携的无线通信终端产品 C2000 C2x C2xx 系列 主要用于数字控制系统 C3x第一代浮点DSP系列 五 DSP芯片的选择 1 运算速度 最重要的性能指标2 价格3 运算精度4 硬件资源 5 开发工具6 功耗7 其它因素 六 DSP典型系统 第2章C54xDSP硬件结构 基本结构内核结构和原理片内外设节电模式外部总线流水线 TMS320C54x是TI公司为实现低功耗 高速实时信号处理而专门设计的16位定点DSP芯片 采用改进的哈佛结构 具有高度的操作灵活性和运行速度 适应于远程通信等实时嵌入式应用的需要 现广泛应用于无线通信系统 如数字蜂窝通信 无线数据通信 调制解调器等领域 1 C54x的基本结构 C54xDSP系列芯片种类很多 但结构基本相同 围绕1组程序总线 3组数据总线和4组地址总线而建立的改进的哈佛结构 主要由中央处理器CPU 内部总线控制 特殊功能寄存器 数据存储器RAM 程序存储器ROM I O接口扩展功能 串行口 主机通信接口HPI 定时器 中断系统等部分组成 不同型号的C54xDSP芯片CPU结构与功能完全相同 其差异主要体现在存储器容量 片内外设 供电电压 速度以及封装上 TMS320C54xDSP的引脚 C54x芯片采用CMOS制造工艺 采用塑料或陶瓷四方扁平封装 生产型号不同引脚个数也不同 VC5402共有144个引脚 按功能可分为电源引脚 时钟引脚 控制引脚 地址和数据引脚 串行口引脚 主机接口引脚 通用I O引脚和测试引脚8个部分 2 C54x内核的结构和原理 一 C54x的内部总线结构 片内3套8组16位总线 1组程序总线 PB 和3组数据总线 CB DB EB 以及对应的4组地址总线 PAB CAB DAB EAB 4套总线可同时操作 CB DB是与读操作相关的数据总线 用来传送从数据存储器读出的数据 EB是与写操作相关的数据总线 用来传送写入数据存储器的数据 3组数据总线分别与不同的功能单元相连接 将CPU PAGEN DAGEN 片内外设 数据存储器等连接在一起 PB主要用来传送取自程序存储器的指令代码和立即操作数 4组地址总线主要用来提供执行指令所需的地址 C54x读 写操作占用总线情况 2 C54x内核的结构和原理 二 优化的CPU结构 采用先进的多总线结构实现 由控制部件和运算部件组成 1个40位算术逻辑单元ALU 包括1个40位的桶形移位器和2个独立的40位累加器 ACCA和ACCB 1个17 17位并行乘法器 与1个40位专用加法器相连 可用于进行非流水线的单周期乘法 累加 MAC 运算 比较 选择 存储单元 CSSU 用于提高维特比编译码的速度 指数编码器 是支持单周期指令EXP的专用硬件 可在一个周期内计算40位累加器数值的指数 CPU状态和控制寄存器 图3ALU的功能框图 ALU输入数据的预处理 1 数据存储器操作数在低16位时 则当SXM 0 高24位用0填充 SXM 1 高24位扩展为符号 符号扩展 图3ALU的功能框图 ALU输入数据的预处理 2 数据存储器操作数在高16位时 则当SXM 0 39 32位和15 0位用0填充 SXM 1 39 32位扩展为符号 15 0位用0填充 图3ALU的功能框图 ALU的输出为40位运算结果 除存储器操作指令 ADDM ANDM ORM XORM 外 ALU的运算结果通常都被送到累加器A和B 溢出处理 若OVM 0 对运算结果不进行任何调整 直接送累加器 若OVM 1 饱和逻辑使能 根据溢出方向 累加器加载最大正32位值 007FFFFFFFH 或最小负32位值 FF80000000H 当发生溢出时 与目标累加器相关的溢出标志位OVA或OVB被置1 直到复位或执行溢出条件指令 通过使结果保持为最大值或最小值 ALU的饱和逻辑可防止结果产生溢出 图3ALU的功能框图 40位的累加器ACCA和ACCB存放从ALU或乘累加单元输出的数据 也能输出到ALU或乘法器 加法器中 累加器 1 累加器ACCA和ACCB是CPU内核中最繁忙的寄存器 ALU要进行的大部分运算都要通过累加器A或B进行中转 2 累加器ACCA和ACCB都可以分为3部分 保护位 高阶位 低阶位 保护位用于防止迭代运算中产生的溢出 AG BG AH BH AL和BL都是存储器映射寄存器 MMR 可使用寄存器寻址的方式进行操作 ACCA的32 16位可用作乘累加单元的一个输入 例 假设累加器A 0FF43211234H 观察数据存储单元TEMP中内容的变化情况 STHA 8 TEMP T 2112HSTHA 8 TEMP T FF43HSTLA 8 TEMP T 3400HSTLA 8 TEMP T 2112H 例 STHB 8 AR7 MAC单元包括1个17位 17位的乘法器和1个40位的专用加法器 MAC单元具有强大的乘累加功能 在一个流水线周期内可以完成1次乘法运算和1次加法运算 乘累加单元 ST0反映寻址要求和运行中间状态ST1反映寻址要求 计算的初始设置 I O及中断控制PMST主要设定并控制处理器的工作方式 反映其工作状态 CPU状态和控制寄存器 1 通过设置PMST中的MP MC 0 可以使能或禁止内ROM 2 通过设置PMST中的DROM 1 可以将部分片内ROM映射到数据存储空间 3 通过设置PMST中的OVLY 1 可以将片内DARAM映射到程序存储空间 PMST与存储器配置有关 2 C54x内核的结构和原理 三 存储空间 C54xDSP的存储空间可达192K字 分为3个独立的可选择空间 64K字的数据存储空间 64K字的程序存储空间 64K字的I O空间 用于存放执行指令所使用的数据 包括需要程序处理的数据或数据处理的中间结果 用来存放要执行的指令以及指令执行中所需的常数表格 用于对片外设备的访问 也可用于扩展外部数据存储空间 程序存储器ROM C54x的程序存储器可由ROM和RAM配置而成 即程序空间可定义在ROM上 也可定义在RAM中 当需要高速运行程序时 可将片外ROM中的程序调入片内RAM 以提高程序的运行速度 降低对外部ROM的速度要求 增强系统的整体抗干扰性 不同型号的C54x 其ROM的容量配置不同 VC5402有20根地址线 可寻址1兆字的外部程序空间 分成16页 每页64千字 图2VC5402扩展程序存储空间结构图 图3片内ROM程序存储器映射 高2K字的地址 VC5402有4k字的内部ROM 当MP MC 0 这4k字被映射到程序空间地址范围为F000H FFFFH 其中高2k字ROM中的内容由TI公司定义 当处理器复位时 复位和中断向量被映射到起始地址为FF80H的程序空间 在C54xDSP的片内ROM中 128字被保留用于器件的测试 写到片内ROM并且在片内ROM执行的应用程序代码必须保留128字 FF00H FF7FH 数据存储器RAM 有两种片内数据存储器 双访问 双寻址RAM DARAM 在一个指令周期内 可对其进行2次存取操作 1次读出和1次写入 单访问 单寻址RAM SARAM 在一个指令周期内 只能进行1次存取操作 1次读或写 不同型号的C54x 其DARAM和SARAM的容量和存取速度不同 低1k字的数据空间包括存储器映射的CPU寄存器 存储器映射外设寄存器 32位的暂存寄存器和896字的DARAM 0080H 03FFH 这些寄存器驻留在数据页第0页 数据地址0000h 007Fh 包栝 26个CPU寄存器 0000H 001FH 访问不需要插入等待周期 外设寄存器 0020H 005F 用于控制外围电路的状态 可作为外设的数据存储器 具有专用的外设总线结构 暂存存储器RAM块 0060H 007FH 包括32个字的DARAM 用于存储变量 避免对大RAM块进行分段 从0080H开始 按每80H个存储单元为一个数据块 将DARAM分成若干数据块 便于CPU并行操作 提高芯片的高速处理能力 具有64k字的I O空间 主要用于对片外设备的访问 利用I O空间可以扩展外部存储器 使用两条指令PORTR和PORTW对I O空间寻址 无须通过累加器 直接与存储单元互传数据 访问I O是对I O映射的器件进行访问 而不是访问存储器 I O空间 3 C54x的片内外设 定时器 C54x具有一个带4位预分频器的16位定时电路 是软件可编程减法计数器 用来产生定时中断 可由专门状态位编程实现停止 重启动 复位和禁止 在每个CLKOUT周期 定时 计数器减少1 每次减少到0则产生一个定时中断 为CPU提供时钟信号 由内部振荡器和锁相环 PLL 电路组成 可通过内部晶振或外部时钟源驱动 PLL具有频率放大和信号提纯功能 利用PLL的特性 可以锁定时钟发生器的振荡频率 为系统提供高稳定的时钟频率 PLL能使时钟电源乘上一个特定的系数 得到一个比内部CPU时钟频率低的时钟源 时钟发生器 主机通信接口 HPI HPI提供与主机设备或主处理器接口的并行端口 用于DSP与其他总线或CPU进行通信 通过片内存储器实现C54x器件与主机进行数据交换 不同型号的器件HPI配置不同 可分为8位标准HPI接口 8位 16位增强型HPI接口 HPI具有两种工作方式 共用访问模式和仅主机访问模式 C5402 C5410带有HPI 8 C5420为HPI 16 SP 标准同步串行口 高速 全双工串口 可与编码器 A D转换器等串行设备直接通信 BSP 缓冲同步串口 增强型全双工和双缓冲同步串口 工作在CLKOUT频率 在SP基础上增加一个自动缓冲单元 ABU 允许串口直接读写内存 实现与CPU的并行操作 TDM 时分多路同步串口 增强的同步串口 允许数据分时多路转换 可配置为同步串口SP方式和TDM方式 应用于多处理器 McBSP 多通道带缓冲同步串行口 高速 双向 通道数多 数据格式范围宽等特点 可与其它C54x器件 编程器或串口器件通信 McBSP以标准串口为基础 并进行了很多功能扩展 C5402带有2个多通道缓冲串行口McBSP 串行口 不同型号的器件配置的串口功能不同 C54x有多种省电方式 可使CPU暂停工作处于休眠状态 以减小功耗 但保持CPU中的内容 当省电方式结束后 CPU可以继续正常工作 C54x有4种省电方式 闲置方式1 2 3和保持方式 省电方式的实现 执行IDLE1 IDLE2和IDLE3三条指令 使外部信号HOLD 0 状态位HM 1 4 C54x的节电方式 外部总线关断 关片内外设接口时钟 主时钟关断 用指令禁止CLKOUT信号输出 其他省电方式 区别 包括数据总线 地址总线以及一组控制信号组成 可以用来寻址片外存储器和I O口 外部总线优先级 数据存取的优先级高于程序的读取 1 外部总线的组成 5 C54x的外部总线 2 软件可编程等待状态发生器SWWSR 软件可编程等待状态发生器可通过编程来延长总线的等待周期 最多可达到7 14个机器周期 若外部器件要求插入的等待周期大于7 14个时 可以利用硬READY线来实现 当所有的外部器件都配置在0等待状态时 加到等待状态发生器的内部时钟将被关断 器件工作在省电状态 例如 STM 349B SWWSR 349BH 0011010010011011 SWWSR 0011010010011011 I O空间 3个等待状态 数据空间 2个等待状态 程序空间 3个等待状态 复位时 SWWSR 7FFFH 程序 数据和I O空间都被插入7个等待状态 流水线操作 各条指令以机器周期为单位 相差一个时间周期而连续并行工作 操作原理 将指令分成几个子操作 每个子操作由不同的操作阶段完成 每隔一个机器周期 每个操作阶段就可以进入一条新指令 在同一个机器周期内 在不同的操作阶段可以处理多条指令 相当于并行执行了多条指令 6 C54x的流水线操作 C54xDSP有一个6级深度的指令流水线 C54xDSP的流水线操作由6个操作阶段或操作周期组成 这6个操作阶段彼此相互独立 可并行操作 允许指令的重叠执行 在任何一个机器周期内 可以有1 6条不同的指令同时工作 每条指令可在不同的周期内工作在不同的操作阶段 6级流水线结构介绍 图2流水线的6个阶段中的各个操作 1 程序预取指P 在T1机器周期内 CPU将PC中的内容 即下一条要执行指令的地址 加载到程序地址总线PAB 找到指令代码的存储单元 这6级流水线结构的功能如下 图2流水线的6个阶段中的各个操作 2 取指F 在T2机器周期内 CPU从选中的程序存储单元中 取出指令代码加载到程序总线PB 从PB上取指令字并装入指令寄存器IR P F完成了一条指令的取指 这6级流水线结构的功能如下 图2流水线的6个阶段中的各个操作 3 译码D 在T3机器周期内 对指令寄存器IR的内容译码 确定所操作的存储器的类型 数据地址产生单元DAGEN和CPU的控制信号 此过程产生执行指令所需要的一系列控制信号 这6级流水线结构的功能如下 图2流水线的6个阶段中的各个操作 4 寻址A 即寻址操作数 在T4机器周期内 根据指令的不同 CPU将数据1和数据2 如果有 的读地址分别加载到DAB和CAB 并对辅助寄存器和堆栈指针进行修正 此过程是2阶段操作数读顺序的第一阶段 给出的是读的地址 这6级流水线结构的功能如下 图2流水线的6个阶段中的各个操作 5 读数R 在T5机器周期内 CPU将从数据总线DB和CB上读入该读操作数 如果是并行操作指令 则将数据3的写地址加载到EAB上 此过程是2阶段操作数读顺序的第二阶段 同时是2阶段操作数写顺序的开始 D A R完成了数据读入 这6级流水线结构的功能如下 图2流水线的6个阶段中的各个操作 6 执行X 在T6机器周期内 CPU按照操作码要求执行指令 并将写数据3加载到EB 写入指定的存储单元 完成操作数写序列 指令在本阶段中被执行 R X完成了数据写 这6级流水线结构的功能如下 图2流水线的6个阶段中的各个操作 如CPU访问DARAM会发生时序冲突的情况 同时从同一存储块中取指令和读操作数 同时对同一存储块进行写操作和读第2操作数 C54x的流水线结构 允许多条指令同时利用CPU的内部资源 由于CPU资源有限 当多于一个流水线上的指令同时访问同一资源时 可能产生时序 流水线 冲突 解决办法 由CPU通过延时自动解决 通过程序解决 如重新安排指令或插入NOP指令 流水线冲突 第3章C54xDSP中断系统 中断定义中断分类中断标志寄存器和中断屏蔽寄存器中断响应过程重新映射中断向量地址 中断系统是DSP应用系统实现实时操作和多任务多进程操作的关键部分 C54x的中断系统根据芯片型号的不同 提供了24 30个硬件及软件中断源 分为11 17个中断优先级 可实现多层任务嵌套 中断 CPU正处理某件事情 执行程序 时 外部发生了某一事件并向CPU发信号请求去处理 CPU暂时中断当前工作 转去处理这一事件 进入中断服务程序 处理完再回来继续原来的工作 实现这种功能的部件称为中断系统 产生中断的请求源称为中断源 一 定义 1 C54x中断定义 硬件和软件驱动都可以使C54x产生中断 硬件中断是由外围设备信号产生的中断 有两种形式 受外部中断信号 A D D A及其他处理器 触发的外部硬件中断由片内外设电路 定时器 串行口 HPI等 引起的内部硬件中断软件中断一般由程序指令 INTR TRAP RESET等 引起 二 硬件中断和软件中断 三 中断优先级 软件中断不分优先级 硬件中断有优先级 当多个硬件中断同时触发时 C54x按照它们的优先级顺序进行处理 优先级较高的中断会被先处理 1表示最高优先级 在一个实际DSP应用中 不同的中断可能在任何时间或相同时间发生 因此 对DSP来说 必须划分中断的优先级 ISR按照这个次序执行 故通常对每个中断类型设置一个中断优先级 VC5402有30个中断源和16个中断优先级 RS优先级最高 表1VC5402的30个中断和16个优先级 表1VC5402中断和优先级 续 C54x的中断分两类 可屏蔽中断和不可屏蔽中断 可屏蔽中断 可通过软件设置来屏蔽或使能 可屏蔽中断受ST1寄存器中全局中断屏蔽位INTM和中断屏蔽寄存器IMR中相应位的影响 当INTM 0时 IMR中某位为1 则开放相应中断 C54x最多可以支持16个用户可屏蔽中断 SINT15 SINT0 有的处理器只用了其中的一部分 如VC5402只有13个可屏蔽中断 有些中断又有两个名称 因为这些中断可以通过软件或硬件进行初始化 2 C54x中断分类 C54x的中断可分两类 可屏蔽中断和不可屏蔽中断 VC5402的13个硬件可屏蔽中断 非屏蔽中断 这些中断是不能够屏蔽的 C54x对这一类中断总是响应 并从主程序转移到中断服务程序 包括所有的软件中断和两个外部硬件中断RS 复位 和NMI 非屏蔽中断 可通过硬件控制也可通过软件控制 RS对C54x所有操作方式产生影响 NMI中断不会对C54x的任何操作方式产生影响 但其中断响应时 所有其他中断将被禁止 一般 它被分给时间关键的中断资源 表1VC5402中断和优先级 非屏蔽中断 表1VC5402中断和优先级 续 可屏蔽中断 3 IFR和IMR C54x中断系统设置两个中断寄存器 中断标志寄存器IFR和中断屏蔽寄存器IMR 都是存储器映射的CPU寄存器 1 中断标志寄存器 IFR对各硬件中断进行标志 当一个中断出现时 IFR中的相应的中断标志位置1 直到被CPU识别为止 2 中断屏蔽寄存器 IMR主要用来使能或禁用除RS和NMI外的硬件中断 若ST1中INTM 0 IMR中某位置1 就能开放相应的中断 4 中断响应过程 C54x的中断控制主要是屏蔽某些中断 避免其他中断对当前运行程序的干扰 以及防止同级中断之间的响应竞争 中断处理过程可分三个阶段 1 中断请求2 中断响应3 执行中断服务程序ISR 一个中断由硬件器件或者软件指令请求 如果请求的中断是可屏蔽中断 则不管该中断是否被处理器应答 IFR寄存器中相应的中断标志位都被置1 当请求的中断响应后 该标志位自动被清除 1 硬件中断请求外部硬件中断 由外部中断口的信号发出请求 内部硬件中断 由片内外设的信号发出中断请求 1 接收中断请求 2 软件中断请求软件中断由如下程序指令发出中断请求 INTRK TRAPK RESET 软件中断和不可屏蔽中断会立即被响应 对于可屏蔽中断 要满足三个条件才能被CPU响应 当前中断优先级最高 同时出现多个中断时 INTM位为0 即全局中断开放 IMR中相应位为1 即该中断开放满足上述条件后 CPU响应中断 终止当前正在进行的操作 INTR指令会强制PC转到相应的中断向量地址 取出中断服务程序地址 CPU在取到软件向量的第一个字后会发出中断响应信号 IACK 中断应答 对可屏蔽中断 IACK会清除IFR中相应的中断标志位 2 中断响应 当中断响应后 CPU会进行如下操作 保存现场 将程序计数器PC的值压入堆栈 远程返回指令FRETE可以用于从ISR返回 2 将中断向量的地址加载到PC 3 从中断向量所指向的地址开始取指 4 执行分支转移指令 进入用户自定义的中断服务程序 5 执行ISR直到出现返回指令 6 从堆栈中弹出返回地址到PC中 7 继续执行主程序 3 执行中断服务程序ISR 5 重新映射中断向量地址 中断向量地址由PMST寄存器中的IPTR 9位中断向量地址指针 和左移两位后的中断向量号K 0 31 左移两位后再变成7位 组成 复位时 IPTR所有的位被置1 IPTR 1FFH 并按此值将复位向量映射到程序存储器 故硬件复位后总是从FF80H开始执行程序 加载除1FFH之外的值到IPTR后 中断向量可以映射到其他地址 DSP中提供的中断是以中断向量表的形式出现的 图2中断向量地址的产生示例 例 INT0的中断向量号K为16 第4章C54xDSP的软件体系 汇编语言源程序的格式汇编指令寻址方式公共目标文件格式汇编语言程序设计CCS开发调试工具 助记符指令语法格式 label mnemonic operandlist comment 标号区 助记符区 操作数区 注释区 代数指令语法格式 标号区 指令 注释区 一 汇编语言源文件格式 助记符 指令 一定不能从第一列开始 否则视为标号 所有语句必须以标号 空格 或 开头 用作标号的符号在程序中表示地址 助记符指令语法格式 标号区 助记符 操作数 注释区 SYM1 set2 符号SYM1 2start LD SYM1 AR1 将2装入AR1 word016H 初始化字 016H RET 返回 算数运算指令逻辑运算指令程序控制指令装载和存储 数据传送 指令 TMS320C54x的指令系统共有129条基本指令 由于操作数的寻址方式不同 又可派生至205条指令 按功能分为如下几类 二 汇编指令 表4 2指令系统中的符号和缩写 表4 3 1加法指令 算术运算指令 表4 3 2减法指令 算术运算指令 算术运算指令 表4 3 3减法指令 续 表4 3 4乘法指令 算术运算指令 表4 3 5乘加和乘减指令 算术运算指令 算术运算指令 表4 3 5乘加和乘减指令 续 表4 3 6双精度 32位操作数 指令 算术运算指令 表4 3 7专用指令 算术运算指令 表4 4 1与逻辑运算指令 逻辑运算指令 表4 4 2或逻辑运算指令 逻辑运算指令 表4 4 3异或逻辑运算指令 逻辑运算指令 表4 4 4移位逻辑运算指令 逻辑运算指令 表4 4 5测试指令 逻辑运算指令 表4 5 1分支转移指令 程序控制指令 表4 5 2子程序调用指令 程序控制指令 表4 5 3中断指令 程序控制指令 表4 5 4返回指令 程序控制指令 表4 5 5重复指令 程序控制指令 表4 5 6堆栈操作指令 程序控制指令 表4 5 7混合程序控制指令 程序控制指令 表4 6 1加载指令 加载和存储指令 表4 6 2存储指令 加载和存储指令 表4 5 3条件存储指令 加载和存储指令 表4 6 4并行加载和存储指令 加载和存储指令 表4 6 5并行加载和乘法指令 加载和存储指令 表4 6 6并行存储和加 减法指令 加载和存储指令 表4 6 7并行存储和乘法指令 加载和存储指令 表4 6 8混合加载和存储指令 数据块传送指令 加载和存储指令 C54x有7种基本的数据寻址方式 立即寻址绝对寻址累加器寻址直接寻址间接寻址MMR寄存器寻址堆栈寻址 指令提供一个操作数 指令提供一个操作数地址 以累加器内容为地址访问程序空间某单元 寻址地址为DP或SP加上指令提供的偏移量 利用辅助寄存器访问存储器 用来改变MMR寄存器 用来管理系统堆栈中的操作 部分寻址缩略语 指令中含有一个固定的立即数LD 0 ARP ARP 2 k3 LD 3 ASM ASM 3 k5 LD 50 DP DP 50 k9 LD 1234 A A 1234 lk STM FFFFh IMR IMR FFFFh lk 立即数寻址示例 绝对寻址示例 指令中含有所要寻找的操作数的16位存储单元地址数据存储器地址 dmad 寻址 MVDKSmem dmadMVDMdmad MMRMVKDdmad SmemMVMDMMR dmad程序存储器地址 pmad 寻址 MACDSmem pmad srcMACPSmem pmad srcMVDPSmem pmadMVPDpmad Smem端口地址 PA 寻址PORTRPA SmemPORTWSmem PA lk 寻址适用于支持单数据存储器操作数的指令 1 MVDKSmem dmad 功能描述 把一个单数据存储器操作数Smem的内容复制到一个通过dmad 地址在EAB地址寄存器EAR中 寻址的数据存储器单元 可以循环执行该指令来转移数据存储器中的连续字 数据存储器地址 dmad 寻址 例4 32MVDKDAT10 8000H DataMemory 2 MVKDdmad Smem功能描述 把数据从一数据存储器单元转移到另一个数据存储器单元中 源数据存储器单元由一个16bit立即数dmad寻址 然后转移到Smem中 循环执行该指令可以转移数据存储器中的连续字 使用间接寻址 例4 36MVKD1000H AR5 DataMemory 1 MACDSmem pmad src功能描述 一个单数据存储器值Smem与一个程序存储器值pmad相乘 乘积和源累加器src的值相加 结果存放在src中 另外 还把数据存储器值Smem装入到T寄存器和紧接着Smem地址的数据单元中去 该指令受FRCT和OVM的影响 并影响到OVsrc 程序存储器地址 pmad 寻址 ProgramMemory 例4 75MACD AR3 COEFFS A 2 MVDPSmem pmad功能描述 把严格的16bit单数据存储器操作数Smem复制到一个由16bit立即数pmad寻址的程序存储器单元中 通过循环执行该指令可以把数据存储器中的连续字 使用间接寻址 转移到由16bit立即数寻址的连续的程序存储器空间中 例4 35MVDPDAT0 0FE00H DataMemory ProgramMemory 端口地址 PA 寻址 1 PORTRPA Smem PA Smem功能描述 从一个外部I O口PA 地址为16bit立即数 把一个16bit数读入到指定的数据存储器单元Smem中 2 PORTWSmem PA Smem PA功能描述 把指定的数据存储器单元Smem中的16bit数写到外部I O口PA中去 例4 41PORTR05H INDAT INDAT equ60H I OMemory DataMemory 例4 42PORTWOUTDAT 05H OUTDAT equ07H I OMemory DataMemory 例如 把数据空间中地址为BUFFER单元中的数据传送到累加器A 指令可写为 LD BUFFER A 采用一个符号或是一个特定的值来指明数据空间的地址 适用于所有支持单数据存储器操作数的指令 长立即数 Ik 寻址 累加器寻址示例 将累加器的内容作为地址去访问程序存储单元 即将累加器中的内容作为地址 用来对存放数据的程序存储器寻址 用于完成程序存储空间与数据存储空间之间的数据传输 READASmem功能 把累加器A所确定的程序存储器单元中的一个字 传送到单数据存储器 Smem 操作数所确定的数据存储器单元中 2 WRITASmem功能 把Smem操作数所确定的数据单元中的一个字 传送到累加器A所确定的程序存储器单元中去 ProgramMemory DataMemory 例4 43READADAT6 例4 44WRITADAT5 ProgramMemory DataMemory 直接寻址示例 指令中只含有数据存储器的低7位地址 偏移地址dmad 利用数据指针DP和堆栈指针SP寻址 所要寻址的数据存储器16位地址是由基地址和偏移地址构成 CPL 0时 数据存储器16位地址由DP和偏移地址dmad构成 CPL 1时 数据存储器16位地址由SP加偏移地址dmad构成 直接寻址标识 变量前加 如 x 在偏移量前加 如 5 例 RSBXCPL 基地址为DPLD 3 DP 设置当前页面为3LD x A 将x值加载到累加器ALD 4 DP 设置当前页面为4 y所在的页面ADD y A 将y值加到累加器A 例4 7LD AR4 DP DataMemory 间接寻址示例 根据辅助寄存器 AR0 AR7 给出的16位地址进行寻址 例4 6LD AR3 T DataMemory 例4 48ADDC AR2 5 A DataMemory Smem src C src ADDCSmem src 存储器映像寄存器寻址示例 LDMMMR dst 将MMR加载到累加器MVDMdmad MMR 数据存储器向MMR传送数据MVMDMMR dmad MMR向指定地址传送数据MVMMMMRx MMRy MMRx向MMRy传送数据POPMMMR 将数据从栈顶弹至MMRPSHMMMR 将MMR数据压入堆栈STLMsrc MMR 累加器低位存入MMRSTM lk MMR 长立即数lk存入MMR 主要用于修改存储器映像寄存器的内容 1 LDMMMR dst功能描述 把存储器映射寄存器MMR中的值装入到目的累加器dst中 不管DP的当前值或ARx的高9位的值是多少 都把有效地址的高9位清0 以指定为在数据页0中 例4 12LDMAR4 A 2 STLMsrc MMR src 15 0 MMR功能描述 把源累加器src的低端 15 0位 存放到存储器映射寄存器MMR中 无论DP的当前值或ARx的高9位是多少 都对有效地址的高9位清0 指令允许src存放在数据第0页中的任何一个存储器单元中而不必修改状态寄存器ST0中的DP域 例4 23STLMA BRC 堆栈寻址示例 利用SP指针 按照先进后出的原则进行寻址 PSHDSmem 将Smem中的数据压入堆栈PSHMMMR 将MMR中的数据压入堆栈POPDSmem 将数据从栈顶弹至Smem中POPMMMR 将数据从栈顶弹至MMR中 例4 169POPDDAT10 DataMemory 1 POPDSmem TOS Smem SP 1 SP功能描述 把由SP寻址的数据存储器单元的内容转移到由Smem确定的数据存储器单元中 然后SP执行加1操作 DataMemory 例4 170POPMAR5 2 POPMMMR TOS MMR SP 1 SP功能描述 把由SP寻址的数据存储器单元的内容转移到指定的存储器映射寄存器MMR中 然后SP执行加1操作 例4 171PSHD AR3 DataMemory 3 PSHDSmem SP 1 SP Smem TOS功能描述 SP执行减1操作后 把存储器单元Smem的内容压入堆栈指针SP指向的数据存储器单元中去 例4 155INTR3 DataMemory 4 中断指令 压栈 INTRk SP 1 SP PC 1 TOS 中断向量 PC 1 INTM该指令影响INTM和IFR 例4 160RET DataMemory 5 RET D TOS PC SP 1 SP功能描述 出栈 把栈顶TOS单元中的16bit数据弹入到程序指针PC中 堆栈指针SP加1 DataMemory 例4 150CALAA 6 子程序调用指令 压栈 CALA D src 非延迟调用 SP 1 SP PC 1 TOS src 15 0 PC延迟调用 SP 1 SP PC 3 TOS src 15 0 PC 例 计算 主要程序如下 bssx 10 为变量分配11个字的空间 bssy 1STM x AR1 设置数据段的首地址STM 9 AR2 AR2作为循环计数器 初值为9 执行10次加法LD 0 A 累加器清0loop ADD AR1 A 累加运算 并修改地址BANZloop AR2 若计数值不为0 则循环 并计数值减1 若计数值为0 则结束循环STLA y 累加和存入y中 循环操作程序BANZ举例 例 对一个数组进行初始化 x 5 0 0 0 0 0 bssx 5STM x AR1LD 0 ARPT 4STLA AR1 利用RPTZ代替LD和RPT bssx 5STM x AR1RPTZA 4STLA AR1 单指令重复操作举例 注意 对x 5 中的5个元素置0 重复次数为4 即执行1次STLA AR1 指令后 再重复执行4次 RPTZ指令设定重复次数后 再对累加器清零 例 对数组x 5 中的每个元素加1 bssx 5start LD 1 16 BSTM 4 BRCSTM x AR4RPTBnext 1ADD AR4 16 B ASTHA AR4 next LD 0 B 块程序重复操作举例 设置数组空间 立即数1送入BH 设置重复次数 BRC 4 循环5次 数组首地址x送入AR4 设置循环结束地址 数组数据左移16位与BH相加 存入数组结果 并修改地址 B清0 注意 块结束地址REA通常取程序块最后一条指令的下一条指令地址 1 重复次数为4次 RPTB指令可以响应中断 例 对数组x 5 1 2 3 4 5 初始化 bssx 5 datatable word1 2 3 4 5 textstart STM x AR1 RPT 4MVPDtable AR1 重复执行MVPD指令 可以实现程序存储器至数据存储器的数据传送 在系统初始化过程中十分有用 bssx 20 bssy 20 STM x AR2STM y AR3RPT 19MVDD AR2 AR3 数据到数据 例 将数据存储器中的数组x 20 复制到数组y 20 在数字信号处理时 经常需要将数据存储器中的一批数据传送到数据存储器的另一个地址空间 例 将数据存储器中的数组x 20 复制到数组y 20 title copy asm 为汇编源程序取名 mmregs 定义存储器映象寄存器stack usect STACK 30H 设置堆栈 bssx 20 为数组x分配20个存储单元 bssy 20 为数组y分配20个存储单元 datatable word1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 defstart 定义标号start text start STM x AR1 将目的地首地址赋给AR1PRT 19MVPDtable AR1 程序到数据STM x AR2 将x的首地址存入AR2STM y AR3 将y的首地址存入AR3RPT 19MVDD AR2 AR3 数据到数据 将地址x开 始的20个值复制到地址y 开始的20个单元end Bend end 例 将数据存储器中的数组x 10 复制到数组y 10 title copy asm 为汇编源程序取名 mmregs 定义存储器映象寄存器stack usect STACK 30H 设置堆栈 bssx 10 为数组x分配10个存储单元 bssy 10 为数组y分配10个存储单元 datatable word1 2 3 4 5 6 7 8 9 10 defstart 定义标号start text start STM 0 SWWSR 复位SWWSRSTM stack 30H SP 初始化堆指针STM x AR1 将目的地首地址赋给AR1RPT 9 设定重复传送的次数为10次MVPDtable AR1 程序存储器传送到数据存储器STM x AR2 将x的首地址存入AR2STM y AR3 将y的首地址存入AR3RPT 9 设置重复执行10次下条指令MVDD AR2 AR3 将地址x开始的20个值 复制到地址y开始的20个单元end Bend end 例1 编写求解加 减法的程序 计算z x y w SUM1 LD x A 将x地址的内容送AADD y A 将y地址的内容与A中x值相加SUB w A 将A中的内容与w相减 得zSTLA z 计算结果存入z地址中例2 写求解直线方程的程序 计算y ax b SUM2 LD a T 取a地址 T aMPY x B 完成ax相乘 B axADD b B 完成ax b B ax bSTLB y 计算结果存入y地址中 加减法和乘法运算 练习 计算y x1 a1 x2 a2 核心语句 LD x1 TMPY a1 BLD x2 TMAC a2 BSTLB ySTHB y 1 T x1 B x1a1 T x2 乘法累加 B x1a1 x2a2 计算结果的低字BL存入y中 计算结果的高字BH存入y 1中 例2 计算 主要程序如下 example asm title example asm mmregsstack usect STACK 10H 为堆栈指定空间 bssa 4 为变量分配9个字的空间 bssx 4 bssy 1 defstart datatable word1 2 3 4 变量初始化 word8 6 4 2 text SUM STM a AR3 子程序执行STM x AR4RPTZA 3MAC AR3 AR4 ASTLA yRET end Start STM 0 SWWSR 插入0个等待状态STM STACK 10H SP 设置堆栈指针STM a AR1 AR1指向aRPT 7 移动8个数据MVPDtable AR1 程序到数据CALLSUM 调用子程序 例3 求4项乘积aixi i 1 2 3 4 中的最大值 并存放累加器A中 程序 STM a AR1STM x AR2STM 2 AR3LD AR1 TMPY AR2 Aloop1 LD AR1 TMPY AR2 BMAXABANZloop1 AR3 ai首地址a给AR1 xi首地址x给AR2 设置计数器AR3 2 取系数T ai 并修改AR1 乘法运算A aixi 并修改AR2 取系数T ai 并修改AR1 乘法运算B aixi 并修改AR2 求A和B中的最大值 若AR3 0 则循环 并修改AR3 若AR3 0 则不循环 例1 编写计算z x y和f d e的主要程序语句 bssx 3 bssd 3STM x AR5STM d AR2LD 0 ASMLD AR5 16 AADD AR5 16 ASTA AR5 LD AR2 BADD AR2 16 BSTHB AR2 bssx 3 bssd 3 STM x AR5 LD 0 ASM LD AR5 16 A ADD AR5 16 A STA AR5 LD AR2 B ADD AR2 16 B STHB AR2 STM d AR2 例 用并行运算指令编写计算z x y和f d e的程序 title example asm mmregsstack usect STACK 10H bssx 3 bssd 3 defstart datatable word0123H 1027H 0 1020H 0345H 0 textstart STM 0 SWWSRSTM stack 10H SPSTM x AR1 RPT 5MVPDtable AR1 STM x AR2STM d AR3LD 0 ASMLD AR2 16 AADD AR2 16 ASTA AR2 并行指令 LD AR3 BADD AR3 16 BSTHB AR3end Bend end 例编制求解的程序 利用双操作数指令可以节省机器周期 循环次数越多 节省的机器周期数也越多 本例中 在每次循环中 双操作数指令都比单操作数指令少用一个周期 节省的总机器周期数 1T N 迭代次数 NT 单操作数指令方案双操作数指令方案LD 0 BLD 0 BSTM a AR2STM a AR2STM x AR3STM x AR3STM 19 BRCSTM 19 BRCRPTBdone 1RPTBdone 1LD AR2 T 1TMPY AR2 AR3 A 1TMPY AR3 A 1TADDA B 1TADDA B 1Tdone STHB ydone STHB ySTLB y 1STLB y 1 C54x应用软件的开发可在TI公司提供的开发环境中进行 用户可以用C C 语言或汇编语言编写源文件 asm 经C编译器 汇编器生成COFF格式的目标文件 obj 再用链接器进行链接 生成在C54x上可执行的目标代码 out 然后利用调试工具对可执行的目标代码进行仿真和调试 当调试完成后 通过Hex代码转换工具 将调试后的可执行目标代码转换成EPROM编程器能接受的代码 并将该代码固化到EPROM中或加载到用户的应用系统中 以便DSP目标系统脱离计算机单独运行 四 COFF文件格式 汇编器和链接器生成的目标文件 是一个可以在C54x器件上执行的文件 这些目标文件的格
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注册验船师资格考试(B级船舶检验专业法律法规)测试题及答案五
- 幼儿园师德师风工作总结汇报5篇
- 2025年注册验船师考试(C级船舶检验专业基础安全)冲刺试题及答案一
- 2025年国际旅行社导游岗位面试题及标准答案公布
- 2025年房地产销售招聘面试技巧与模拟题集答案
- 四川省资阳市安岳县石羊中学2026届化学高一上期末调研试题含解析
- 2025年青少年心理健康辅导培训课程试题及答案
- 2025年食盐储备库管理知识模拟考试题库
- 2025年初级软件工程师考试模拟题及答题技巧指导
- 2025年街道安全员实操面试题库大全
- 2025年广西南宁职业技术大学招聘教职人员考试笔试试题(含答案)
- 红十字应急救护创伤止血
- 2025-2026学年高二上学期开学入学教育主题班会【课件】
- (新教材)人教版二年级上册小学数学教学计划+教学进度表
- 出租房屋安全管理办法
- 寺庙安全隐患排查台账内容
- 广西旅游发展集团有限公司招聘考试真题2024
- 大模型备案-落实算法安全主体责任基本情况
- 会议摄影拍摄教学课件
- 2025年中国邮政集团有限公司湖北省分公司招聘笔试备考试题附答案详解
- 森林草原湿地荒漠化普查项目方案投标文件(技术方案)
评论
0/150
提交评论