dsp第四章程序控制

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四章程序控制和中断管理•程序控制是指CPU对程序运行的控制•通常程序是顺序执行的,即在连续的程序存储器地址上取指并执行。但有时程序需要转移到不连续的地址,然后再连续执行新地址处的指令。•TMS320C2000中影响程序控制操作的指令有:分支转移调用与返回重复指令中断复位§4.1程序地址的产生•在执行当前指令的同时,程序流要求处理器生成下一条指令的程序地址。它是顺序或非顺序的。•程序地址产生逻辑使用以下硬件:•(1)程序计数器(PC):C2000为16位PC。•(2)程序地址寄存器(PAR):驱动程序地址总线(PAB),提供程序的读、写地址。•(3)堆栈:16位宽、8级硬件堆栈.最多可保存8个返回地址。•(4)微堆栈(MSTACK):16位,1级深的堆栈,用于保存一个返回地址。•(5)重复计数器(RPTC):16位,与重复指令(RPT)一起,用来确定RPT后面的一条指令重复执行一定次数。一、程序计数器(PC)•程序计数器(PC)存放将被执行的下一条指令的地址。•影响PC加载方式的程序控制操作:(1)复位(2)顺序执行(3)分支转移(4)由累加器转移(5)子程序调用与返回(6)从累加器调用与返回(7)软件或硬件中断加载到PC的地址:PC←0000h(复位向量地址)一、程序计数器(PC)•程序计数器(PC)存放将被执行的下一条指令的地址。•PC的加载方式:(1)复位(2)顺序执行(3)分支转移(4)由累加器转移(5)子程序调用与返回(6)从累加器调用与返回(7)软件或硬件中断加载到PC的地址:PC←PC+1例:PC目标代码指令0108be42CLRCOVM0109bd00LDP#0010a……一、程序计数器(PC)•程序计数器(PC)存放将被执行的下一条指令的地址。•PC的加载方式:(1)复位(2)顺序执行(3)分支转移(4)由累加器转移(5)子程序调用与返回(6)从累加器调用与返回(7)软件或硬件中断加载到PC的地址:PC=转移指令之后16位立即数例:Bpma一、程序计数器(PC)•程序计数器(PC)存放将被执行的下一条指令的地址。•PC的加载方式:(1)复位(2)顺序执行(3)分支转移(4)由累加器转移(5)子程序调用与返回(6)从累加器调用与返回(7)软件或硬件中断加载到PC的地址:PC=累加器的低16位值例:BACC一、程序计数器(PC)•程序计数器(PC)存放将被执行的下一条指令的地址。•PC的加载方式:(1)复位(2)顺序执行(3)分支转移(4)由累加器转移(5)子程序调用与返回(6)从累加器调用与返回(7)软件或硬件中断调用:1.将PC中下一条指令的地址压入堆栈,2.将调用指令后的16位立即数装入PC;返回:将返回地址从堆栈中弹回PC。例:PC指令0100CALL01e0h0102…一、程序计数器(PC)•程序计数器(PC)存放将被执行的下一条指令的地址。•PC的加载方式:(1)复位(2)顺序执行(3)分支转移(4)由累加器转移(5)子程序调用与返回(6)从累加器调用与返回(7)软件或硬件中断调用:1.将PC中下一条指令的地址压入堆栈,2.将累加器中的低16位数装入PC;返回:将返回地址从堆栈中弹回PC。例:PC指令0100CALA0101…一、程序计数器(PC)•程序计数器(PC)存放将被执行的下一条指令的地址。•PC的加载方式:(1)复位(2)顺序执行(3)分支转移(4)由累加器转移(5)子程序调用与返回(6)从累加器调用与返回(7)软件或硬件中断将PC压入堆栈,然后用适当的中断向量单元地址装入PC。通常在该单元地址中存放一条转移指令,又将相应的中断服务子程序地址装入PC。例:INT2产生中断0004ff80B1000h1000………………0108be42CLRCOVM0109bd00LDP#0010a8b8fMAR*,AR7010bb93fLACL#3Fh响应中断PC=010ah压入堆栈一、程序计数器(PC)•程序计数器(PC)存放将被执行的下一条指令的地址。•PC的加载方式:(1)复位(2)顺序执行(3)分支转移(4)由累加器转移(5)子程序调用与返回(6)从累加器调用与返回(7)软件或硬件中断将PC压入堆栈,然后用适当的中断向量单元地址装入PC。通常在该单元地址中存放一条转移指令,又将相应的中断服务子程序地址装入PC。例:INT2产生中断0004ff80B1000h1000………………0108be42CLRCOVM0109bd00LDP#0010a8b8fMAR*,AR7010bb93fLACL#3Fh中断向量0004h装入PC一、程序计数器(PC)•程序计数器(PC)存放将被执行的下一条指令的地址。•PC的加载方式:(1)复位(2)顺序执行(3)分支转移(4)由累加器转移(5)子程序调用与返回(6)从累加器调用与返回(7)软件或硬件中断将PC压入堆栈,然后用适当的中断向量单元地址装入PC。通常在该单元地址中存放一条转移指令,又将相应的中断服务子程序地址装入PC。例:INT2产生中断0004ff80B1000h1000………………0108be42CLRCOVM0109bd00LDP#0010a8b8fMAR*,AR7010bb93fLACL#3Fh转移指令1000h装入PC二、堆栈•硬件堆栈区:16位宽、8级深•用途:当调用子程序或发生中断时,程序地址产生逻辑利用该堆栈保存一个16位返回地址。当CPU进入子程序或中断服务程序时,返回地址自动装入该堆栈的栈顶。当子程序或中断服务程序完成时,返回指令将返回地址从栈顶传送到程序计数器PC。堆栈也可以用来保存数据或用于其他目的。•有两组访问堆栈的指令:1)PUSH和POP:•PUSH:把累加器(32位)的低半部分(低16位)拷贝到栈顶。•POP:把栈顶的值拷贝到累加器的低半部分2)PSHD和POPD:当子程序或中断嵌套超过8级时,可利用这两条指令在数据存储区中建立一个堆栈。即把堆栈区延伸到数据存储区。•PSHDdma;将数据存储器中的值压入栈顶。•POPDdma;将栈项的值弹出到数据存储器。•每当一个数值压入栈顶,堆栈中每级的内容都下移一级,栈底(第8级)的内容则丢失。PSHDdma•弹出操作把堆栈中每一级的值都拷贝到较高的下一级。操作与压入操作相反,POPDdma三、微堆栈(MSTACK)•微堆栈共有1级深、16位宽,与堆栈不同,它的操作是不可见的。•执行下列指令时,程序地址产生逻辑,利用微堆栈保存返回地址。块传送BLDDBLPD乘且累加MAC、MACD表读写TBLD、TBLW例:RPT#9BLDD#lk,*+源地址目的地址操作过程:执行PC+1,然后(PC)→(MSTACK)lk(源地址)→PC(源地址)→(目的地址)PC+1→PC利用重复指令,进行数据块传送,直到重复计数器(RPTC)=0;(MSTACK)→(PC)四、流水线操作•TMS320C2000的流水线有4个独立的阶段:取指令→指令译码→取操作数→执行指令•由于这4个操作阶段是独立的,因此,这些操作可以重叠进行。在任意的指定周期内,1-4个不同的指令均被激活,每一条被激活的指令均处于一个不同的完成阶段。•对于单字、单周期指令(无等待状态),4级流水线的操作示意图如下:§4.2转移、调用和返回•转移、调用和返回将改变指令流的顺序,转到新的地址单元去执行指令。•转移:仅使程序控制转换到新的地址单元。采用跳转指令•调用:子程序调用中断服务程序要将返回地址保存到硬件堆栈的栈顶。被调用的子程序或中断服务程序都以返回指令结束。•转移、调用和返回指令的类型:无条件转移、调用和返回有条件转移、调用和返回一、无条件指令•无条件转移指令Bpma;用指令中给定的地址pma装载PCBACC;用累加器中低16位数值ACC(0—15)装载PC•无条件调用指令CALLpma;将返回地址压入堆栈,用pma装载PCCALA;将返回地址压入堆栈,用ACC(0—15)装载PC•无条件返回指令RET;将栈顶的值(返回地址)加载到PC二、有条件指令•有条件指令指仅当某些指定的条件满足时才执行。•条件及符号•条件的组合:在条件指令的操作数中可以有多个条件。注意:某些条件只有组合才是有意义的。对于每一种组合,必须按如下规则从组1和组2中选择条件。同一类的条件不能组合。•有条件指令•条件转移指令BCNDpma,cond1[,cond2[,…]];条件cond1,cond2都满足时转移。例:BCNDPGM1,LEQ,OVBANZpma;当前AR≠0时,转移。•条件调用指令CCpma,cond1[,cond2[,…]];条件cond1,cond2都满足时调用。例:CC00BFh,LEQ,OV•条件返回指令RETCcond1[,cond2[,…]];条件cond1,cond2都满足时返回。§4.3重复指令•重复指令(RPT)允许紧跟在RPT后的那一条指令重复执行N+1。N为RRT指令中的一个操作数。•在执行RPT时,计数值N被装入重复计数器(RPTC),然后,被重复的指令每执行一次,RPTC就减1,直至RPTC为0。例:指令执行前寄存器状态:ARP=1;AR1=300h执行指令:RPT#9;下一条指令执行10次BLDD#320h,*+上面的指令执行结果:将数据存储器:0320h—032Ah单元的内容-0300h—030Ah中§4.4中断中断是由软件或硬件产生一个信号,该信号引起CPU挂起主程序,并转而执行一个子程序,即中断服务子程序。一、概述1)中断信号的产生:•C2000支持软件和硬件两种中断。软件中断:由中断指令INTR,NMI或TRAP请求。硬件中断:外部中断——由外部中断引脚上的信号触发,如:RS,NMI内部中断——由片内外设的信号触发。2)中断优先级•硬件中断可能同时产生,CPU依据中断源的优先级顺序而执行相应的中断服务子程序。•C240X的硬件中断分为两级:CPU中断(8个)(核心级、一级)外设中断(46个),分别挂在CPU中断中6个可屏蔽中断之下。(二级)•CPU中断优先级为1--------RESET;复位中断2--------保留3--------NMI;不可屏蔽中断4--------INT1;可屏蔽中断5--------INT2;可屏蔽中断6--------INT3;可屏蔽中断7--------INT4;可屏蔽中断8--------INT5;可屏蔽中断9--------INT6;可屏蔽中断3)可屏蔽中断与不可屏蔽中断•可屏蔽中断:指可以用软件设置使它们禁止(屏蔽)或允许(不屏蔽)的中断,可屏蔽中断均为硬件中断。(C240X硬件中断分两级中断)•C240X的可屏蔽中断为INT1—INT6(CPU中断,即一级中断)这些中断源下面挂着外设和外部引脚,如:ADC、SPI、SCI、事件管理器等。(外设中断,即二级中断)•不可屏蔽中断:包括:所有的软件中断两种外部硬件中断:(RS,NMI)。对于不可屏蔽中断,CPU总是要响应,并从主程序转移到相应中断服务程序。4)中断矢量•中断矢量指CPU响应中断后,PC装载的地址。•MS320C2000器件CPU中断的中断矢量表安排在程序存储器地址为0000h—003Fh的64个单元。•每个CPU中断分配了两个地址单元,用以存放一条两个字的转移指令。•外设中断(二级中断)的中断矢量放在外设中断矢量寄存器(PIVR)中中断名称中断矢量RESET复位0000h保留位0026hNMI0024hINT10002hINT20004hINT30006hINT40008hINT5000AhINT6000Ch保留位000EhTRAP0022hINT8-INT160010h-0020hINT20-INT310028h-003Fh5)中断操作步骤•TMS320C2000管理中断分为3个主要阶段:(1)接受中断请求:来自程序代码的软件中断请求、来自引脚或片内设备硬件中断请求到达CPU时,该中断挂起,或说在等待响应。(2)响应中断:如果是可屏蔽中断,则必须满足一定的条件时CPU才会响应;对非屏蔽中断则立即响应。(3

1 / 62
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功