DSP原理及应用PPT教程第四章 程序流程控制.ppt
《DSP原理及应用PPT教程第四章 程序流程控制.ppt》由会员分享,可在线阅读,更多相关《DSP原理及应用PPT教程第四章 程序流程控制.ppt(46页珍藏版)》请在三一办公上搜索。
1、第四章 程序流程控制,程序流程:指的是指令的执行顺序。C55x中影响指令执行顺序的主要有:程序跳转(分支)指令重复执行 条件执行 中断 程序调用 程序的流程控制主要与指令缓冲单元(I单元)和程序流程单元(P单元)有关。,第四章 程序流程控制,P单元产生24位的程序地址,并放到PAB总线上。I单元的IBQ从32位的程序总线读取32比特的指令代码。译码器从IBQ中读取48比特的指令进行译码,将指令和立即数分派到相应的单元执行。,第四章 程序流程控制,一、跳转(分支)跳转:通过跳转指令改变PC的值,使程序跳到指令指定的分支地址执行。跳转指令可以是有条件的,也可以是无条件的。1、条件跳转 判断条件co
2、nd,如果条件成立则将目标地址装入PC,完成跳转。(1)BCC 14,cond;4比特长相对PC的无符号偏移(2)BCC L8,cond;8比特长相对PC的有符号偏移(3)BCC L16,cond;16比特长相对PC的有符号偏移(4)BCC P24,cond;24比特的绝对地址。,第四章 程序流程控制,在指令流水线的读(R)环节判断条件cond;cond条件可以是寄存器ACx,ARx,Tx与0值的比较,也可以是测试位TCx以及进位标志CARRY的值。若条件为真,就把l4、L8、L16、P24指定的程序地址装入PC中,完成分支跳转。跳转指令不能重复执行。举例:,004055 BCC branch
3、,*AR0!=#0004056 00F05A branch:.,程序地址,假设AR0的值为3000,AR0的值不等于0,条件为真,跳转到标号为branch处执行,这时PC=00F05A,第四章 程序流程控制,2、无条件跳转 不需要满足任何条件,直接将目标地址装入PC。(1)B ACx;把ACx的低24位的值装入到PC中(2)B L7;7比特长相对PC的有符号偏移(3)B L16;16比特长相对PC的有符号偏移(4)B P24;24比特的绝对地址,举例:MOV#1,AC1 B branch;address:004042:MOV#2,AC1 branch:;address:006047:MOV#0
4、,AC1,跳转前 PC 004042 AC1 00 0000 0001跳转后 PC 006047 AC1 00 0000 0000,第四章 程序流程控制,二、指令重复指令重复:指重复执行一定次数的一条或者一段指令。包括无条件单指令重复,有条件单指令重复,块重复三种形式。1、无条件单指令重复:(1)RPT#n;将下一条指令重复执行n+1次(2)RPT CSR;CSR单重复寄存器,下一条指令重复CSR+1次(3)RPTADD CSR,TAx;下一条指令重复CSR+1次后,TAx+CSR-CSR(4)RPTADD CSR,k4;下一条指令重复CSR+1次后,CSR+k4-CSR(5)RPTSUB C
5、SR,k4;下一条指令重复CSR+1次后,CSRk4-CSR,第四章 程序流程控制,举例:RPTADD CSR,T1 MOV*AR0,T0;重复 CSR+1次后,T1的值加到CSR中。2、有条件单重复指令 RPTCC k8,cond;当条件为真时,下一条指令重复K8+1次 每次重复在流水线的执行(X)阶段检查cond定义的条件,当条件不满足时,停止单指令重复。最大重复执行次数为28-1=255举例:RPTCC#7,AC1#0 ADD#1,AC0;AC0=AC0+1,执行流水线分为8个环节:F/,D,AD,AC1,AC2,R,X,W,第四章 程序流程控制,以下指令不能用做单指令循环体:B;跳转
6、IDLE;空闲指令 RPTBLOCAL;块重复 RESET;软件复位 MOV RPTC,TAx;RPTC单指令重复计数器 TRAP;软件陷阱 MOV dbl(Lmem),RETA RPTB;块重复 CALL;子程序调用 RPT;单指令重复 INTR;中断陷阱 XCC;条件执行 RET;从子程序返回,第四章 程序流程控制,3、块重复:同时重复多条指令。块重复(块循环)的语法形式为:(1)RPTBLOCAL label(2)RPTB label执行步骤:(1)重复执行次数由块重复计数器(BRC0或BRC1)定义。(2)由RPTB或RPTBLOCAL定义块的开始地址,并放入到块重复起始地址寄存器(R
7、SA)中。(3)由RPTB或RPTBLOCAL后面的标号(label)定义块的结束地址,并放到块重复结束地址寄存器(REA)中。,第四章 程序流程控制,特点:(1)由于BRC0或BRC1是16比特计数器,所以最大重复次数是64k,在初始化块重复计数器时,其值应为实际重复次数减1。(2)一个循环体内的最小执行周期为2个机器周期。RPTBLOCAL和RPTB区别RPTBLOCAL被定义为指令缓冲队列(IBQ)的本地循环,即直接从IBQ中获取循环体指令,这样可以减少功率消耗,但是循环体指令的字数不能超过56个字节。当循环体指令超过56个字节时,使用RPTB块循环。,第四章 程序流程控制,支持两层块循
8、环 一层循环(外循环):BRC0,RSA0,REA0;二层循环(内循环):BRC1,RSA1,REA1,BRS1;内循环完成后跳到外循环执行。如果再次进入内循环,则不需要初始化BRC1,块重复备份寄存器(BRS1)自动保存内循环块的重复次数。任何一个块循环内都可以嵌套单指令重复。所以C55x可以支持三层指令循环。,第四章 程序流程控制,块重复举例 MOV#31,BRC0;对外循环块重复计数器BRC0赋值,重复32次。MOV#127,BRC1;对内循环块重复计数器BRC1赋值,重复128次。RPTB OuterLoop;定义外循环块的起始地址。MOV#0,AC0 RPTB InnerLoop;定
9、义内循环块的起始地址。MAC*AR0,*CDP+,AC0 MOV*AR3+,T0 InnerLoop:;内循环块的结束地址。SUB#(127*2),AR0 OuterLoop:;外循环块的结束地址。NOP,第四章 程序流程控制,三、条件执行 条件执行:即有条件的执行下一条指令。XCC label,cond XCCPART label,cond注:使用这两条指令时,必须注意条件作用的流水线阶段不同。例1:如果T0=0 XCCPART label,T0!=#0 ADD*AR2+,AC0 label:MOV*AR2,AC0,AR指针的修改是在流水线的寻址阶段(AD)发生的,而使用XCCPART从流水
10、线的寻址阶段(AD)到读操作数(R)阶段都是无条件的,只有在流水线执行(X)阶段才是有条件的。故无论条件T0!=#0成立与否,AR2都会被修改。,条件满足:即T0!=#0,执行ADD指令,AR2被修改条件不满足:执行MOV指令,但在执行该指令前,AR2指针已被修改了。,执行流水线分为8个环节:F/,D,AD,AC1,AC2,R,X,W,第四章 程序流程控制,例2:XCC label,T0!=#0 ADD*AR2+,AC0 label:MOV*AR2,AC1 使用XCC指令时,从流水线的寻址(AD)到执行(X)阶段都是有条件的。所以只有当条件满足时,AR2和AC0的值才能被修改。本例中,条件不满
11、足,所以AR2和AC0的值没有被修改。,中断是为DSP具有对外界异步事件的处理能力而设置的。当DSP的外界异步事件发生时,CPU暂停当前的工作去处理外界异步事件,当处理完成后,再回到原来被中断的地方,继续执行原来的工作。1、中断(1)由硬件或软件信号产生的,它使DSP暂停当前程序转而去执行中断服务程序(ISR),从而可以实时的进行事件处理。(2)TMS320C5509支持32个ISR,有的即可以用软件触发也可以由硬件触发,有的只能由软件触发。软件中断:由程序指令产生,如:INTR、TRAP、RESET硬件中断:由设备的信号产生,可以是外部引脚信号(外部中断),也可以是片内外设信号(内部中断)。
12、,四、中 断,第四章 程序流程控制,(3)中断可分为可屏蔽中断和非屏蔽中断两类。可屏蔽中断:用软件将其设置为禁止中断或允许中断。非屏蔽中断:不能被禁止,一旦产生,CPU立即响应中断。2、中断处理的四个步骤(1)CPU接收中断请求,挂起当前程序;(2)响应中断请求:可屏蔽中断须满足某些条件,非屏蔽中断立即响应。(3)准备中断服务程序 CPU完成当前的指令执行,清除流水线中未译码的指令。在数据堆栈和系统堆栈中保存相关寄存器的内容,从中断矢量表中取出中断矢量,中断矢量指针(IVPD、IVPH)指向中断服务程序。,第四章 程序流程控制,(4)执行中断服务程序ISR包含中断返回指令,当中断返回时,自动恢
13、复以前保存在寄存器中的内容。3、中断矢量及其优先级CPU接受和响应中断请求后,产生一个中断矢量地址,地址指向相关中断服务程序的中断矢量。书中表4-2。多个中断同时发生时,CPU按照事先定义的优先级进行处理。优先级为0的优先权最高,随着优先级数的逐步增加,优先权逐步减小。,vector:rs b _c_int00 nop nopnmi b _ret nop nopint0 b _ret nop nop.dmac5 b _ret nop nop,第四章 程序流程控制,4、中断管理寄存器C55x芯片有8个中断管理寄存器。Interrupt Vector Pointers(IVPD,IVPH)Inte
14、rrupt Flag Registers(IFR0,IFR1)Interrupt Enable Registers(IER0,IER1)Debug Interrupt Enable Registers(DBIER0,DBIER1)中断矢量指针(IVPD,IVPH)均为16比特的寄存器,指向程序空间的中断矢量(中断服务表IST的基地址)。,第四章 程序流程控制,DSP中断矢量指针(IVPD)指向包含DSP中断矢量的256字节的程序页,DSP中断矢量序号是015,2431,这些矢量可以被映射到只分配给DSP的存储空间。主机中断矢量指针(IVPH)指向包含主机中断矢量的256字节的程序页。主机中断矢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP原理及应用PPT教程第四章 程序流程控制 DSP 原理 应用 PPT 教程 第四 程序 流程 控制
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2240153.html