DSP课件第三章程序控制和中断管理.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《DSP课件第三章程序控制和中断管理.ppt》由会员分享,可在线阅读,更多相关《DSP课件第三章程序控制和中断管理.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 程序控制和中断管理程序控制和中断管理在执行当前指令的同时,程序流要求处理器生成下一条在执行当前指令的同时,程序流要求处理器生成下一条指令的程序地址,预定程序的路线。指令的程序地址,预定程序的路线。程序地址的产生见下图:程序地址的产生见下图:程序地址的产生程序地址的产生程序地址产生框图程序地址产生框图 程序地址产生逻辑使用的硬件程序地址产生逻辑使用的硬件器件功能程序计数器(PC)对内部和外部程序存储器寻址程序地址寄存器(PAR)驱动程序地址总线,提供程序的读、写地址堆栈保存返回地址微堆栈(MATACK)保存返回地址重复计数器(RPTC)与重复指令(RPT)一起,用来 确定RPT后的一
2、条指令重复执行的次数。程序地址产生源程序地址产生源操作程序地址来源顺序操作程序计数器PC(程序地址+1)空周期程序地址寄存器PAR(程序地址+1)从子程序返回堆栈栈顶(TOS)从表传送或块传送返回微堆栈(MSTACK)转移到或调用指令中指定的地址转移到或调用累加器低半部分指定的地址转移到中断服务程序转移或调用指令,即利用程序读总线(PRDB)的方式获取程序地址。累加器的低半部分,即利用数据读总线(DRDB)的方式获取程序地址中断矢量单元,即利用程序读总线(PRDB)的方式获取程序地址。程序计数器程序计数器程序地址产生逻辑使用程序地址产生逻辑使用16位程序计数器(位程序计数器(PC)对内部和)对
3、内部和外部程序存储器寻址,外部程序存储器寻址,PC中存放将被执行的下一条指令的地中存放将被执行的下一条指令的地址。通过程序地址总线(址。通过程序地址总线(PAB),从程序存储器该地址处取),从程序存储器该地址处取出指令并装入指令寄存器,当装载入指令寄存器时,出指令并装入指令寄存器,当装载入指令寄存器时,PC中保中保存下一个地址。存下一个地址。装入装入PC中的地址中的地址将累加器低16位加载到PC。利用BACC(转移到累加器中的地址)或CALA(调用累加器指令单元的子程序)指令可实现计算转移操作加载到PC的地址顺序执行若当前指令字是一个字,则将PC+1加载到PC若当前指令字是两个字,则将PC+2
4、加载到PC转移转移指令后的长立即数直接加载到PC子程序调用和返回调用指令:将PC中的下一条指令的地址压入堆栈,然后将调用的指令后的长立即数加载到PC返回指令:将返回地址从堆栈中弹回PC软件或硬件中断将相应的中断矢量地址装入PC。在该矢量单元,通常有一条转移指令,又将相应的中断服务程序的地址加载到PC计算转移代码操作堆栈堆栈 16位宽、位宽、8级深的硬件堆栈。当调用子程序或发生中断时,级深的硬件堆栈。当调用子程序或发生中断时,程序地址产生逻辑用其保存返回地址。程序地址产生逻辑用其保存返回地址。当当CPU进入子程序或中断服务程序时,返回地址自动装进入子程序或中断服务程序时,返回地址自动装入该堆栈的
5、栈顶,这一操作不需附加周期。入该堆栈的栈顶,这一操作不需附加周期。当子程序或中断服务程序完成时,返回指令将返回地址当子程序或中断服务程序完成时,返回指令将返回地址从栈顶传送到程序计数器。从栈顶传送到程序计数器。当不需要用当不需要用8级返回地址时,该堆栈也可用来保存子程序级返回地址时,该堆栈也可用来保存子程序或中断服务程序的有关数据或用于其他目的。或中断服务程序的有关数据或用于其他目的。访问堆栈的指令:访问堆栈的指令:PUSH(压入)和(压入)和POP(弹出)(弹出)PUSH:把累加器的低:把累加器的低16位拷贝到栈顶位拷贝到栈顶 POP:把栈顶值拷贝到累加器低把栈顶值拷贝到累加器低16位位PS
6、HD和和POPD 当子程序或中断嵌套超过当子程序或中断嵌套超过8级时,利用此指令在数据存级时,利用此指令在数据存储区中建立一个堆栈。储区中建立一个堆栈。PSHD把数据存储器中的值压入栈把数据存储器中的值压入栈顶,顶,POPD将栈顶值弹出到数据存储器。将栈顶值弹出到数据存储器。微堆栈微堆栈微堆栈只有微堆栈只有1级深、级深、16位宽,没有可以使用微堆栈保存信位宽,没有可以使用微堆栈保存信息的指令,只有程序地址产生逻辑才能够使用微堆栈。息的指令,只有程序地址产生逻辑才能够使用微堆栈。程序地址产生逻辑在执行程序地址产生逻辑在执行BLDD、BLPD、MAC、TBLR及及TBLW指令时,用微堆栈保存返回地
7、址。执行这些指令时,指令时,用微堆栈保存返回地址。执行这些指令时,首先把首先把PC+1的地址送到微堆栈保存,然后用的地址送到微堆栈保存,然后用PC存放第一个存放第一个操作数的地址,用辅助寄存器算术单元操作数的地址,用辅助寄存器算术单元ARAU产生第二个操产生第二个操作数的地址,当这些指令重复执行时,作数的地址,当这些指令重复执行时,PC可使第一个操作数可使第一个操作数的地址自动增量,的地址自动增量,ARAU使第二个操作数的地址改变,到所使第二个操作数的地址改变,到所重复的指令完成时再将微堆栈弹回到程序地址产生逻辑。重复的指令完成时再将微堆栈弹回到程序地址产生逻辑。流水线操作流水线操作 指令流水
8、线包括执行时发生的一系列总线操作。指令流水线包括执行时发生的一系列总线操作。LF240 x的的流水线有流水线有4个独立的阶段:取指令、指令译码、取操作数和执行个独立的阶段:取指令、指令译码、取操作数和执行指令。指令。4个操作阶段是独立的,在任意的指定周期内,个操作阶段是独立的,在任意的指定周期内,14个不个不同的指令都被激活,每一条被激活的指令都处于不同的完成阶段。同的指令都被激活,每一条被激活的指令都处于不同的完成阶段。4级流水线的操作级流水线的操作 流水线操作一般是不可见的,但下列情况例外:流水线操作一般是不可见的,但下列情况例外:(1)紧跟在修改全局存储器分配寄存器()紧跟在修改全局存储
9、器分配寄存器(GREG)后的单字、)后的单字、单周期指令使用先前的全局映射。单周期指令使用先前的全局映射。(2)在流水线操作的执行阶段,)在流水线操作的执行阶段,NORM指令修改指令修改ARP,并使,并使用当前辅助寄存器,如果随后的两个指令要改变当前辅助寄存用当前辅助寄存器,如果随后的两个指令要改变当前辅助寄存器的内容或器的内容或ARP,则它们将在流水线的译码阶段进行,这将导,则它们将在流水线的译码阶段进行,这将导致致NORM指令使用错误的辅助寄存器值,并导致随后的指令使指令使用错误的辅助寄存器值,并导致随后的指令使用错误的用错误的ARP值。所以在值。所以在NORM后不要安排改变当前辅助寄存后
10、不要安排改变当前辅助寄存器和器和ARP内容的指令。内容的指令。转移、调用和返回改变指令流的顺序,转到新的地址转移、调用和返回改变指令流的顺序,转到新的地址单元去执行指令。单元去执行指令。转移仅使控制转换到新的地址单元;调用要将返回地转移仅使控制转换到新的地址单元;调用要将返回地址保存到硬件堆栈的栈顶;返回指令将堆栈中的返回地址址保存到硬件堆栈的栈顶;返回指令将堆栈中的返回地址弹到程序计数器。弹到程序计数器。3.2 转移、调用和返回转移、调用和返回3.2.1 无条件指令无条件指令n无条件转移无条件转移 执行无条件转移时,将指定的程序存储器的地址加载执行无条件转移时,将指定的程序存储器的地址加载到
11、到PC上,并从该地址开始执行程序。加载到上,并从该地址开始执行程序。加载到PC的地址可的地址可以来自转移指令的第二个操作数,也可能是累加器的低以来自转移指令的第二个操作数,也可能是累加器的低16位。位。无条件转移指令有无条件转移指令有B(转移)和(转移)和BACC(转移到累加(转移到累加器指定的地址)。器指定的地址)。n无条件调用无条件调用 执行无条件调用时,将指定的程序存储器的地址加载执行无条件调用时,将指定的程序存储器的地址加载到到PC上,并从该地址开始执行程序。加载到上,并从该地址开始执行程序。加载到PC的地址可的地址可以来自转移指令的第二个操作数,也可能是累加器的低以来自转移指令的第二
12、个操作数,也可能是累加器的低16位。加载位。加载PC 之前将返回地址保存到堆栈。子程序或函数之前将返回地址保存到堆栈。子程序或函数执行之后,返回指令将返回地址从堆栈加载到执行之后,返回指令将返回地址从堆栈加载到PC,从调,从调用指令后的那条指令开始执行。用指令后的那条指令开始执行。无条件转移指令有无条件转移指令有CALL、CALA(调用累加器指定(调用累加器指定单元处的子程序)。单元处的子程序)。n无条件返回无条件返回 执行无条件返回指令(执行无条件返回指令(RET)时,将栈顶的值加载)时,将栈顶的值加载到到PC,并从该地址继续执行程序。,并从该地址继续执行程序。3.2.2 有条件指令有条件指
13、令操作符号条件描述EQNEQLTLEQGTGEQCNCOVNOVBIOTCNTCACC=0ACC0ACC0ACC0C=1C=0OV=1OV=0BIO低TC=1TC=0累加器的值等于0累加器的值不等于0累加器的值小于0累加器的值不小于0累加器的值大于0累加器的值不大于0进位位置1进位位清0检测到累加器溢出检测到累加器不溢出BIO引脚为低电平测试/控制位置1测试/控制位清0使用多个条件使用多个条件组1组2A类B类B类A类C类EQNEQLTLEQGTGEQOVNOVNTCTCCNCBIO 在条件指令的操作数中可以列出多个条件,必须所有条件都满足才是条件满足。在条件指令的操作数中可以列出多个条件,必须
14、所有条件都满足才是条件满足。对于每一种组合,必须按如下规则从组对于每一种组合,必须按如下规则从组1组组2中选择条件。中选择条件。组组1:最多可选两个条件。每个条件来自不同的类。:最多可选两个条件。每个条件来自不同的类。组组2:最多可选:最多可选3个条件。每个条件来自不同的类,不能有两个条件来自同一类。个条件。每个条件来自不同的类,不能有两个条件来自同一类。条件指令必须能测试到状态位的最新值。直到流水线条件指令必须能测试到状态位的最新值。直到流水线的执行阶段,即前一条指令执行后一个周期才能认为条件的执行阶段,即前一条指令执行后一个周期才能认为条件稳定。流水线控制器在条件稳定之前停止对条件指令后的
15、稳定。流水线控制器在条件稳定之前停止对条件指令后的任何指令译码。任何指令译码。条件的稳定性条件的稳定性n条件转移(条件转移(BCND、BANZ):):该指令使程序转移到程序存储器的任何地址,只有满该指令使程序转移到程序存储器的任何地址,只有满足一个或多个由用户指定的条件时,才能实现转移。此时,足一个或多个由用户指定的条件时,才能实现转移。此时,PC装载转移指令的第装载转移指令的第2个字,并从该地址开始继续执行此个字,并从该地址开始继续执行此指令。指令。无条件转移指令有无条件转移指令有BCND(条件转移)和(条件转移)和BAND(若(若当前辅助寄存器不为当前辅助寄存器不为0,则转移)。,则转移)
16、。条件指令的执行条件指令的执行n 条件调用(条件调用(CC):):该指令可使程序根据处理数据的不同在多个子程序间进该指令可使程序根据处理数据的不同在多个子程序间进行选择,只有当用户指定的一个或多个特定条件满足时才行选择,只有当用户指定的一个或多个特定条件满足时才能调用。此时,能调用。此时,PC装载调用指令的第装载调用指令的第2个字,并将返回地个字,并将返回地址保存在堆栈中,然后执行子程序。址保存在堆栈中,然后执行子程序。n 条件返回条件返回 返回指令(返回指令(RET):):与调用或中断配合使用。调用或中断把返回指令保存与调用或中断配合使用。调用或中断把返回指令保存到堆栈里,被调用的子程序或中
17、断服务程序以返回指令到堆栈里,被调用的子程序或中断服务程序以返回指令结束,该指令将返回地址从堆栈弹到结束,该指令将返回地址从堆栈弹到PC。条件返回指令(条件返回指令(RETC):):当用户指定的一个或多个条件满足时才执行。利用该当用户指定的一个或多个条件满足时才执行。利用该指令可使子程序或中断服务程序有多种返回路径。指令可使子程序或中断服务程序有多种返回路径。重复指令重复指令重复指令(重复指令(RPT):将单条指令重复执行):将单条指令重复执行N+1次。次。N为指令的操作数。为指令的操作数。执行执行RPT时,时,N装入重复计数器装入重复计数器RPTC,每执行一次,每执行一次,RPTC减减1,直
18、至,直至RPTC为为0。如果。如果N是从一个数据存储单是从一个数据存储单元读取,元读取,RPTC为为16位计数器;如果位计数器;如果N为一操作常数,为一操作常数,RPTC为为8位计数器。位计数器。中断中断 中断是计算机的一种特殊的运行方式。在正常情况下,中断是计算机的一种特殊的运行方式。在正常情况下,CPU按照程序预定的路线进行,当外围设备有事件产生需要按照程序预定的路线进行,当外围设备有事件产生需要CUP来处来处理,即发出中断请求信号,理,即发出中断请求信号,CPU暂停工作,保存好现场,然后转暂停工作,保存好现场,然后转到该中断请求对应的服务子程序的入口处,待服务子程序运行完到该中断请求对应
19、的服务子程序的入口处,待服务子程序运行完毕,毕,CPU自动恢复现场,从原停顿点继续往下运行。自动恢复现场,从原停顿点继续往下运行。计算机采用中断方式,可以节省计算机采用中断方式,可以节省CPU资源,资源,CPU可以不花可以不花时间去轮寻外围设备是否需要服务。每一种计算机都有多个中时间去轮寻外围设备是否需要服务。每一种计算机都有多个中断源,断源,CPU对中断的响应需要按序进行,需要一个中断管理系对中断的响应需要按序进行,需要一个中断管理系统模块对中断源进行管理控制。统模块对中断源进行管理控制。3.4.1 中断的分类中断的分类n软件中断软件中断由指令由指令INTR、NMI和和TRAP产生。产生。n
20、硬件中断硬件中断由来自物理设备的信号产生,包括复位由来自物理设备的信号产生,包括复位 、非屏蔽中、非屏蔽中断断NMI和可屏蔽中断和可屏蔽中断INT1、INT2、INT3、INT4、INT5、INT6。n 可屏蔽中断可屏蔽中断 可以通过软件将它们禁止或允许的中断。均为硬件中断。可以通过软件将它们禁止或允许的中断。均为硬件中断。当硬件设备或外部引脚成功地请求了可屏蔽中断时,与其对当硬件设备或外部引脚成功地请求了可屏蔽中断时,与其对应的一个或几个标志被激活,无论是否响应此中断,这些标应的一个或几个标志被激活,无论是否响应此中断,这些标志均被设置为志均被设置为1。n 不可屏蔽中断不可屏蔽中断不能通过软
21、件将其禁止或允许的中断。包括所有软件中不能通过软件将其禁止或允许的中断。包括所有软件中断和两种外部硬件中断断和两种外部硬件中断 和和 。外设事件要引起中断,必须保证:外设事件的中断使能外设事件要引起中断,必须保证:外设事件的中断使能位被使能,位被使能,CPU内核级的内核级的6个可屏蔽中断中,能控制该外设个可屏蔽中断中,能控制该外设事件高级中断至少有一个被使能。在外设事件发生时,首先事件高级中断至少有一个被使能。在外设事件发生时,首先将其在外设中断控制器中的标志位置将其在外设中断控制器中的标志位置1,然后会在中断标志,然后会在中断标志寄存器寄存器IFR中的中的INTx位由硬件置位由硬件置1,表明
22、正在等待,表明正在等待CPU响应,响应,从而引起从而引起CPU内核的内核的INT1INT6中的一个产生中断。中的一个产生中断。中断响应的延时中断响应的延时 从发出中断请求到得到服务之间的延迟时间,与很多因从发出中断请求到得到服务之间的延迟时间,与很多因素有关:素有关:(1)软件中断最少要延时)软件中断最少要延时4个个CPU时钟周期。时钟周期。(2)外部可屏蔽中断最少要延时)外部可屏蔽中断最少要延时8个个CPU时钟周期。时钟周期。(3)若在使用)若在使用RPT重复时发生中断,为了保证指令流水线的完重复时发生中断,为了保证指令流水线的完整,需等到该重复循环完才响应中断。但复位中断例外。整,需等到该
23、重复循环完才响应中断。但复位中断例外。(4)为使)为使CPU能完成返回,在能完成返回,在RET指令后中断被禁止,直至在指令后中断被禁止,直至在返回指令上至少执行一条指令。返回指令上至少执行一条指令。(5)读写速度慢的外部存储器需要等待延时,如果中断向量存)读写速度慢的外部存储器需要等待延时,如果中断向量存放在外部存储器,等待状态会影响中断的响应时间。放在外部存储器,等待状态会影响中断的响应时间。当当CPU接受中断请求时,并不知道是哪一个外设事件引起的接受中断请求时,并不知道是哪一个外设事件引起的中断请求。为了让中断请求。为了让CPU能够区别这些引起中断的外设事件,能够区别这些引起中断的外设事件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 课件 第三 章程 控制 中断 管理
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内