DSP第四章-DSP程序流程控制PPT课件_第1页
DSP第四章-DSP程序流程控制PPT课件_第2页
DSP第四章-DSP程序流程控制PPT课件_第3页
DSP第四章-DSP程序流程控制PPT课件_第4页
DSP第四章-DSP程序流程控制PPT课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章程序流程控制 程序流程 指的是指令的执行顺序 C55x中影响指令执行顺序的主要有 程序跳转 分支 指令重复执行条件执行中断程序调用程序的流程控制主要与指令缓冲单元 I单元 和程序流程单元 P单元 有关 第四章程序流程控制 P单元产生24位的程序地址 并放到PAB总线上 I单元的IBQ从32位的程序总线读取32比特的指令代码 译码器从IBQ中读取48比特的指令进行译码 将指令和立即数分派到相应的单元执行 第四章程序流程控制 一 跳转 分支 跳转 通过跳转指令改变PC的值 使程序跳到指令指定的分支地址执行 跳转指令可以是有条件的 也可以是无条件的 1 条件跳转判断条件cond 如果条件成立则将目标地址装入PC 完成跳转 1 BCC14 cond 4比特长相对PC的无符号偏移 2 BCCL8 cond 8比特长相对PC的有符号偏移 3 BCCL16 cond 16比特长相对PC的有符号偏移 4 BCCP24 cond 24比特的绝对地址 第四章程序流程控制 在指令流水线的读 R 环节判断条件cond cond条件可以是寄存器ACx ARx Tx与0值的比较 也可以是测试位TCx以及进位标志CARRY的值 若条件为真 就把l4 L8 L16 P24指定的程序地址装入PC中 完成分支跳转 跳转指令不能重复执行 举例 004055BCCbranch AR0 0004056 00F05Abranch 程序地址 假设AR0的值为3000 AR0的值不等于0 条件为真 跳转到标号为branch处执行 这时PC 00F05A 第四章程序流程控制 2 无条件跳转不需要满足任何条件 直接将目标地址装入PC 1 BACx 把ACx的低24位的值装入到PC中 2 BL7 7比特长相对PC的有符号偏移 3 BL16 16比特长相对PC的有符号偏移 4 BP24 24比特的绝对地址 举例 MOV 1 AC1Bbranch address 004042 MOV 2 AC1 branch address 006047 MOV 0 AC1 跳转前PC004042AC10000000001跳转后PC006047AC10000000000 第四章程序流程控制 二 指令重复指令重复 指重复执行一定次数的一条或者一段指令 包括无条件单指令重复 有条件单指令重复 块重复三种形式 1 无条件单指令重复 1 RPT n 将下一条指令重复执行n 1次 2 RPTCSR CSR单重复寄存器 下一条指令重复CSR 1次 3 RPTADDCSR TAx 下一条指令重复CSR 1次后 TAx CSR CSR 4 RPTADDCSR k4 下一条指令重复CSR 1次后 CSR k4 CSR 5 RPTSUBCSR k4 下一条指令重复CSR 1次后 CSR k4 CSR 第四章程序流程控制 举例 RPTADDCSR T1MOV AR0 T0 重复CSR 1次后 T1的值加到CSR中 2 有条件单重复指令RPTCCk8 cond 当条件为真时 下一条指令重复K8 1次每次重复在流水线的执行 X 阶段检查cond定义的条件 当条件不满足时 停止单指令重复 最大重复执行次数为2 8 1 255举例 RPTCC 7 AC1 0ADD 1 AC0 AC0 AC0 1 执行流水线分为8个环节 F D AD AC1 AC2 R X W 第四章程序流程控制 以下指令不能用做单指令循环体 B 跳转IDLE 空闲指令RPTBLOCAL 块重复RESET 软件复位MOVRPTC TAx RPTC单指令重复计数器TRAP 软件陷阱MOVdbl Lmem RETARPTB 块重复CALL 子程序调用RPT 单指令重复INTR 中断陷阱XCC 条件执行RET 从子程序返回 第四章程序流程控制 3 块重复 同时重复多条指令 块重复 块循环 的语法形式为 1 RPTBLOCALlabel 2 RPTBlabel执行步骤 1 重复执行次数由块重复计数器 BRC0或BRC1 定义 2 由RPTB或RPTBLOCAL定义块的开始地址 并放入到块重复起始地址寄存器 RSA 中 3 由RPTB或RPTBLOCAL后面的标号 label 定义块的结束地址 并放到块重复结束地址寄存器 REA 中 第四章程序流程控制 特点 1 由于BRC0或BRC1是16比特计数器 所以最大重复次数是64k 在初始化块重复计数器时 其值应为实际重复次数减1 2 一个循环体内的最小执行周期为2个机器周期 RPTBLOCAL和RPTB区别RPTBLOCAL被定义为指令缓冲队列 IBQ 的本地循环 即直接从IBQ中获取循环体指令 这样可以减少功率消耗 但是循环体指令的字数不能超过56个字节 当循环体指令超过56个字节时 使用RPTB块循环 第四章程序流程控制 支持两层块循环一层循环 外循环 BRC0 RSA0 REA0 二层循环 内循环 BRC1 RSA1 REA1 BRS1 内循环完成后跳到外循环执行 如果再次进入内循环 则不需要初始化BRC1 块重复备份寄存器 BRS1 自动保存内循环块的重复次数 任何一个块循环内都可以嵌套单指令重复 所以C55x可以支持三层指令循环 第四章程序流程控制 块重复举例MOV 31 BRC0 对外循环块重复计数器BRC0赋值 重复32次 MOV 127 BRC1 对内循环块重复计数器BRC1赋值 重复128次 RPTBOuterLoop 定义外循环块的起始地址 MOV 0 AC0 RPTBInnerLoop 定义内循环块的起始地址 MAC AR0 CDP AC0MOV AR3 T0 InnerLoop 内循环块的结束地址 SUB 127 2 AR0 OuterLoop 外循环块的结束地址 NOP 第四章程序流程控制 三 条件执行条件执行 即有条件的执行下一条指令 XCClabel condXCCPARTlabel cond注 使用这两条指令时 必须注意条件作用的流水线阶段不同 例1 如果T0 0XCCPARTlabel T0 0ADD AR2 AC0label MOV AR2 AC0 AR指针的修改是在流水线的寻址阶段 AD 发生的 而使用XCCPART从流水线的寻址阶段 AD 到读操作数 R 阶段都是无条件的 只有在流水线执行 X 阶段才是有条件的 故无论条件T0 0成立与否 AR2都会被修改 条件满足 即T0 0 执行ADD指令 AR2被修改条件不满足 执行MOV指令 但在执行该指令前 AR2指针已被修改了 执行流水线分为8个环节 F D AD AC1 AC2 R X W 第四章程序流程控制 例2 XCClabel T0 0ADD AR2 AC0label MOV AR2 AC1使用XCC指令时 从流水线的寻址 AD 到执行 X 阶段都是有条件的 所以只有当条件满足时 AR2和AC0的值才能被修改 本例中 条件不满足 所以AR2和AC0的值没有被修改 中断是为DSP具有对外界异步事件的处理能力而设置的 当DSP的外界异步事件发生时 CPU暂停当前的工作去处理外界异步事件 当处理完成后 再回到原来被中断的地方 继续执行原来的工作 1 中断 1 由硬件或软件信号产生的 它使DSP暂停当前程序转而去执行中断服务程序 ISR 从而可以实时的进行事件处理 2 TMS320C5509支持32个ISR 有的即可以用软件触发也可以由硬件触发 有的只能由软件触发 软件中断 由程序指令产生 如 INTR TRAP RESET硬件中断 由设备的信号产生 可以是外部引脚信号 外部中断 也可以是片内外设信号 内部中断 四 中断 第四章程序流程控制 3 中断可分为可屏蔽中断和非屏蔽中断两类 可屏蔽中断 用软件将其设置为禁止中断或允许中断 非屏蔽中断 不能被禁止 一旦产生 CPU立即响应中断 2 中断处理的四个步骤 1 CPU接收中断请求 挂起当前程序 2 响应中断请求 可屏蔽中断须满足某些条件 非屏蔽中断立即响应 3 准备中断服务程序CPU完成当前的指令执行 清除流水线中未译码的指令 在数据堆栈和系统堆栈中保存相关寄存器的内容 从中断矢量表中取出中断矢量 中断矢量指针 IVPD IVPH 指向中断服务程序 第四章程序流程控制 4 执行中断服务程序ISR包含中断返回指令 当中断返回时 自动恢复以前保存在寄存器中的内容 3 中断矢量及其优先级CPU接受和响应中断请求后 产生一个中断矢量地址 地址指向相关中断服务程序的中断矢量 书中表4 2 多个中断同时发生时 CPU按照事先定义的优先级进行处理 优先级为0的优先权最高 随着优先级数的逐步增加 优先权逐步减小 vector rsb c int00nopnopnmib retnopnopint0b retnopnop dmac5b retnopnop 第四章程序流程控制 4 中断管理寄存器C55x芯片有8个中断管理寄存器 InterruptVectorPointers IVPD IVPH InterruptFlagRegisters IFR0 IFR1 InterruptEnableRegisters IER0 IER1 DebugInterruptEnableRegisters DBIER0 DBIER1 中断矢量指针 IVPD IVPH 均为16比特的寄存器 指向程序空间的中断矢量 中断服务表IST的基地址 第四章程序流程控制 DSP中断矢量指针 IVPD 指向包含DSP中断矢量的256字节的程序页 DSP中断矢量序号是0 15 24 31 这些矢量可以被映射到只分配给DSP的存储空间 主机中断矢量指针 IVPH 指向包含主机中断矢量的256字节的程序页 主机中断矢量序号是16 23 这些矢量可以被映射到分配给DSP和主机共享的存储空间 若IVPD和IVPH内容相同 则32个中断矢量均位于相同的256字节程序页中 第四章程序流程控制 DSP的硬件复位 使这两个指针都指向FFFFh 即指向0 xFFFF00的地址 软件复位对这两个指针没有影响 一般在程序初始化时设定中断矢量指针的值 防止取非法指令代码 在修改中断矢量指针 IVPD IVPH 前应当确定 1 禁止所有的可屏蔽中断 ST1 55 BSETINTM 2 要求每个硬件非屏蔽中断对新旧IVPD值分别有一个中断矢量和一个中断服务程序 第四章程序流程控制 中断矢量地址的形成CPU将16比特的中断矢量指针与5比特的中断矢量序号级联然后左移三位形成中断矢量地址 第四章程序流程控制 中断标志寄存器 IFR 和中断使能寄存器 IER 它们包含所有的可屏蔽中断的标志位和使能位 IFR0和IER0寄存器 IFR1和IER1寄存器 第四章程序流程控制 当CPU接收到一个可屏蔽中断请求时 CPU将IFR中的相应标志位置1 表明此中断被挂起或等待CPU响应 因此可以通过读IFR来识别挂起中断 中断标识寄存器的修改可以写入0来清除挂起中断响应硬件中断请求能清除IFR中相应的标志位 RESET能清除所有IFR中的标志位 第四章程序流程控制 中断使能寄存器 IER0 IER1 用于对可屏蔽中断的使能 将中断使能寄存器中相应位置1 表示允许一个可屏蔽中断置0表示禁止响应可屏蔽中断 RESET时全部置0 禁止所有可屏蔽中断 MOV 0 x02C8 IER0 0000001011001000 打开中断 INT2 McBSP1收 发中断和DMAC1中断 第四章程序流程控制 5 可屏蔽中断可以通过软件禁止和允许的中断称为可屏蔽中断 55x的可屏蔽中断都是硬件中断 1 C55x的可屏蔽中断有 序号2 23的中断矢量 这22个中断都可以通过DSP引脚或外设信号触发 第四章程序流程控制 2 设置一个可屏蔽中断用到的寄存器ST1 55中的INTM 中断模式位 位 允许 INTM 0 或禁止 INTM 1 所有的可屏蔽中断IER0和IER1 IFR0和IFR1 DBIER0和DBIER1 第四章程序流程控制 3 可屏蔽中断标准处理流程 CPU接受一个可屏蔽中断请求 CPU设置并锁存IFR0或IFR1中断相应位 IER0或IER1中断相应位为1 CPU才响应中断 INTM 0时 允许所有的中断 CPU才响应中断 完成流水线译码阶段的指令 清除流水线中其它的指令清除IFR0或IFR1中断相应位 表示中断已被响应 自动保护中断现场INTM 1 DBGM 1 EALLOW 0 禁止访问非cpu仿真寄存器 ISR最后的返回指令 执行自动现场恢复 第四章程序流程控制 6 非屏蔽中断CPU收到非屏蔽中断请求时 无条件响应并跳转到相应的中断服务程序 ISR 非屏蔽中断包括硬件复位中断 将RESET 引脚电平置为低 强制DSP复位并执行复位中断ISR 硬件NMI 中断 将NMI 引脚电平置为低 强制CPU执行相应ISR 它提供一个通用的无条件中断的硬件方式 所有的软件中断 中断矢量序号为0 31中的任何一个软中断 第四章程序流程控制 2 产生软件中断的指令方式INTR k5 k5的5比特可以指32个软件中断中的任何一个 在执行ISR前自动保护现场 并置INTM 1 TRAP k5 与INTR k5不同的是不置位INTMRESET 软件复位 第四章程序流程控制 3 非屏蔽中断标准处理流程 第四章程序流程控制 7 DSP复位复位是一种非屏蔽中断 任何时候都可以对DSP进行复位硬件复位 CPU放弃所有操作 清空指令流水线 复位CPU的寄存器 然后按照非屏蔽中断的标准处理流程执行复位ISR 软件复位 由软件指令触发 复位时仅影响中断状态寄存器 IFR0 IFR1 和三个状态寄存器 ST0 55 ST1 55 ST2 55 DSP的硬件复位使中断矢量指针 IVPD IVPH 的值为FFFFh 即指向0 xFFFF00的地址 软件复位对它们没有影响 第四章程序流程控制 五 程序调用当一个子程序被调用时 正在指令缓冲单元中译码的指令地址被保存到RETA寄存器或堆栈中 该地址用于返回时继续执行子程序调用前的指令 1 无条件程序调用程序执行到下列指令时就调用子程序 CALLACx 子程序的地址由ACx 23 0 值决定CALLL16 16比特长相对于PC的有符号的偏移量 CALLP24 24比特长的绝对地址 第四章程序流程控制 子程序调用过程 1 在流水线寻址阶段 AD 将数据堆栈 SP 指针减1 字 然后将RETA的低16位压入数据堆栈 2 在流水线寻址阶段 AD 将系统堆栈 SSP 指针减1 字 然后将RETA的高8位和CFCT 控制流程关系寄存器 8位 的值压入系统堆栈 3 将调用子程序返回地址 CALL语句的下一条语句的地址 保存到RETA中 当前循环标志保存到CFCT中 4 将子程序的程序地址装入PC中 清除当前循环关系标志 注意 循环关系指的是当前重复循环的类型和状态记录 第四章程序流程控制 2 无条件返回RET 执行无条件返回到主程序 返回过程 1 RETA中的返回地址装入PC 从CFCT中恢复循环关系标志 2 从数据堆栈 SP 中恢复RETA的低16位 SP指针加1 2 从系统堆栈 SSP 恢复RETA的高8位和CFCT SSP指针加1 第四章程序流程控制 3 条件程序调用CALLCCL16 condCALLCCP24 cond子程序调用过程 在流水线寻址阶段 AD 将数据堆栈 SP 指针减1 字 然后将RETA的低16位压入数据堆栈 在流水线寻址阶段 AD 将系统堆栈 SSP 指针减1 字 然后将RETA的高8位和CFCT的值压入系统堆栈 将调用子程序返回地址保存到RETA中 当前循环标志保存到CFCT中 在程序流水线的读 R 阶段对cond条件判断 条件为真时调用子程序 第四章程序流程控制 3 条件返回RETCCcond返回过程 RETA中的返回地址装入PC 从CFCT中恢复循环关系标志 从数据堆栈 SP 中恢复RETA的低16位 SP指针加1 从系统堆栈 SSP 恢复RETA的高8位和CFCT SSP指针加1 在程序流水线的读 R 阶段对cond条件判断 条件为真时返回到主程序 第四章程序流程控制 六 堆栈当程序调用中断服务程序或子程序时 将程序计数器PC的值或一些重要寄存器的值进行压栈保护 以便程序返回时能从间断处正常继续执行 1 数据堆栈和系统堆栈C55x支持两个16比特的软件堆栈 分别被称为数据堆栈 用SP访问 和系统堆栈 用SSP访问 SP和SSP指针寄存器的高8位是公用的为SPH SPH可以分别与SP和SSP级联构成23位地址 扩展数据堆栈指针扩展系统堆栈指针 第四章程序流程控制 程序计数器PC的值是24位的 调用子程序时 通过压栈进行保护 数据堆栈保存返回地址的低16位 系统堆栈保存高8位 第四章程序流程控制 2 堆栈配置C55x提供三种堆栈配置方式 一种为快返回过程 另两种为慢返回过程 它们的区别在于保护和恢复PC和循环关系寄存器的方式不同 1 慢返回过程 将返回地址和循环关系标志保存到堆栈 但CPU从中断服务程序或子程序返回时 其速度与存储器的存取速度有关 具有慢速返回的双16比特堆栈 数据堆栈和系统堆栈相互独立 当访问数据堆栈时修改SP但SSP不变 执行返回时不使用返回地址寄存器 RETA 和流程控制寄存器 CFCT 第四章程序流程控制 具有慢速返回的32比特堆栈 数据堆栈和系统堆栈被视为单一的32比特堆栈 当访问数据堆栈时用相同的增量修改SP和SSP 执行返回时不使用返回地址寄存器 RETA 和流程控制寄存器 CFCT 2 快返回过程 将返回地址和循环关系标志保存到返回地址寄存器 RETA 和流程控制寄存器 CFCT 中 因而能够很快的恢复 具有快速返回的双16比特堆栈 数据堆栈和系统堆栈相互独立 当访问数据堆栈时修改SP但SSP不变 执行快速返回时使用返回地址寄存器 RETA 和流程控制寄存器 CFCT 注 上文说的循环关系寄存器和流程控制寄存器都指CFCT 第四章程序流程控制 例 堆栈定义步骤以及初始化 1 声明具有适当长度的未初始化段 2 将堆栈指针指向栈顶 3 在连接命令文件 cmd 中 将堆栈段放入内部存储区内 sp stack len set100ssp stack len set100sp stack usect stack sp stack lenssp stack usect stack ssp stack len textA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论