DSP课件第三章程序控制和中断管理.ppt_第1页
DSP课件第三章程序控制和中断管理.ppt_第2页
DSP课件第三章程序控制和中断管理.ppt_第3页
DSP课件第三章程序控制和中断管理.ppt_第4页
DSP课件第三章程序控制和中断管理.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

第3章程序控制和中断管理,在执行当前指令的同时,程序流要求处理器生成下一条指令的程序地址,预定程序的路线。程序地址的产生见下图:,3.1程序地址的产生,程序地址产生框图,程序地址产生逻辑使用的硬件,程序地址产生源,3.1.1程序计数器,程序地址产生逻辑使用16位程序计数器(PC)对内部和外部程序存储器寻址,PC中存放将被执行的下一条指令的地址。通过程序地址总线(PAB),从程序存储器该地址处取出指令并装入指令寄存器,当装载入指令寄存器时,PC中保存下一个地址。,装入PC中的地址,3.1.2堆栈,16位宽、8级深的硬件堆栈。当调用子程序或发生中断时,程序地址产生逻辑用其保存返回地址。当CPU进入子程序或中断服务程序时,返回地址自动装入该堆栈的栈顶,这一操作不需附加周期。当子程序或中断服务程序完成时,返回指令将返回地址从栈顶传送到程序计数器。当不需要用8级返回地址时,该堆栈也可用来保存子程序或中断服务程序的有关数据或用于其他目的。,访问堆栈的指令:,PUSH(压入)和POP(弹出)PUSH:把累加器的低16位拷贝到栈顶POP:把栈顶值拷贝到累加器低16位,PSHD和POPD当子程序或中断嵌套超过8级时,利用此指令在数据存储区中建立一个堆栈。PSHD把数据存储器中的值压入栈顶,POPD将栈顶值弹出到数据存储器。,3.1.3微堆栈,微堆栈只有1级深、16位宽,没有可以使用微堆栈保存信息的指令,只有程序地址产生逻辑才能够使用微堆栈。程序地址产生逻辑在执行BLDD、BLPD、MAC、TBLR及TBLW指令时,用微堆栈保存返回地址。执行这些指令时,首先把PC+1的地址送到微堆栈保存,然后用PC存放第一个操作数的地址,用辅助寄存器算术单元ARAU产生第二个操作数的地址,当这些指令重复执行时,PC可使第一个操作数的地址自动增量,ARAU使第二个操作数的地址改变,到所重复的指令完成时再将微堆栈弹回到程序地址产生逻辑。,3.1.4流水线操作,指令流水线包括执行时发生的一系列总线操作。LF240 x的流水线有4个独立的阶段:取指令、指令译码、取操作数和执行指令。4个操作阶段是独立的,在任意的指定周期内,14个不同的指令都被激活,每一条被激活的指令都处于不同的完成阶段。,4级流水线的操作,流水线操作一般是不可见的,但下列情况例外:(1)紧跟在修改全局存储器分配寄存器(GREG)后的单字、单周期指令使用先前的全局映射。(2)在流水线操作的执行阶段,NORM指令修改ARP,并使用当前辅助寄存器,如果随后的两个指令要改变当前辅助寄存器的内容或ARP,则它们将在流水线的译码阶段进行,这将导致NORM指令使用错误的辅助寄存器值,并导致随后的指令使用错误的ARP值。所以在NORM后不要安排改变当前辅助寄存器和ARP内容的指令。,转移、调用和返回改变指令流的顺序,转到新的地址单元去执行指令。转移仅使控制转换到新的地址单元;调用要将返回地址保存到硬件堆栈的栈顶;返回指令将堆栈中的返回地址弹到程序计数器。,3.2转移、调用和返回,3.2.1无条件指令,无条件转移执行无条件转移时,将指定的程序存储器的地址加载到PC上,并从该地址开始执行程序。加载到PC的地址可以来自转移指令的第二个操作数,也可能是累加器的低16位。无条件转移指令有B(转移)和BACC(转移到累加器指定的地址)。,无条件调用执行无条件调用时,将指定的程序存储器的地址加载到PC上,并从该地址开始执行程序。加载到PC的地址可以来自转移指令的第二个操作数,也可能是累加器的低16位。加载PC之前将返回地址保存到堆栈。子程序或函数执行之后,返回指令将返回地址从堆栈加载到PC,从调用指令后的那条指令开始执行。无条件转移指令有CALL、CALA(调用累加器指定单元处的子程序)。,无条件返回执行无条件返回指令(RET)时,将栈顶的值加载到PC,并从该地址继续执行程序。,3.2.2有条件指令,使用多个条件,在条件指令的操作数中可以列出多个条件,必须所有条件都满足才是条件满足。对于每一种组合,必须按如下规则从组1组2中选择条件。组1:最多可选两个条件。每个条件来自不同的类。组2:最多可选3个条件。每个条件来自不同的类,不能有两个条件来自同一类。,条件指令必须能测试到状态位的最新值。直到流水线的执行阶段,即前一条指令执行后一个周期才能认为条件稳定。流水线控制器在条件稳定之前停止对条件指令后的任何指令译码。,条件的稳定性,条件转移(BCND、BANZ):该指令使程序转移到程序存储器的任何地址,只有满足一个或多个由用户指定的条件时,才能实现转移。此时,PC装载转移指令的第2个字,并从该地址开始继续执行此指令。无条件转移指令有BCND(条件转移)和BAND(若当前辅助寄存器不为0,则转移)。,条件指令的执行,条件调用(CC):该指令可使程序根据处理数据的不同在多个子程序间进行选择,只有当用户指定的一个或多个特定条件满足时才能调用。此时,PC装载调用指令的第2个字,并将返回地址保存在堆栈中,然后执行子程序。,条件返回返回指令(RET):与调用或中断配合使用。调用或中断把返回指令保存到堆栈里,被调用的子程序或中断服务程序以返回指令结束,该指令将返回地址从堆栈弹到PC。条件返回指令(RETC):当用户指定的一个或多个条件满足时才执行。利用该指令可使子程序或中断服务程序有多种返回路径。,3.3重复指令,重复指令(RPT):将单条指令重复执行N+1次。N为指令的操作数。执行RPT时,N装入重复计数器RPTC,每执行一次,RPTC减1,直至RPTC为0。如果N是从一个数据存储单元读取,RPTC为16位计数器;如果N为一操作常数,RPTC为8位计数器。,3.4中断,中断是计算机的一种特殊的运行方式。在正常情况下,CPU按照程序预定的路线进行,当外围设备有事件产生需要CUP来处理,即发出中断请求信号,CPU暂停工作,保存好现场,然后转到该中断请求对应的服务子程序的入口处,待服务子程序运行完毕,CPU自动恢复现场,从原停顿点继续往下运行。,计算机采用中断方式,可以节省CPU资源,CPU可以不花时间去轮寻外围设备是否需要服务。每一种计算机都有多个中断源,CPU对中断的响应需要按序进行,需要一个中断管理系统模块对中断源进行管理控制。,3.4.1中断的分类,软件中断由指令INTR、NMI和TRAP产生。硬件中断由来自物理设备的信号产生,包括复位、非屏蔽中断NMI和可屏蔽中断INT1、INT2、INT3、INT4、INT5、INT6。,可屏蔽中断可以通过软件将它们禁止或允许的中断。均为硬件中断。当硬件设备或外部引脚成功地请求了可屏蔽中断时,与其对应的一个或几个标志被激活,无论是否响应此中断,这些标志均被设置为1。不可屏蔽中断不能通过软件将其禁止或允许的中断。包括所有软件中断和两种外部硬件中断和。,外设事件要引起中断,必须保证:外设事件的中断使能位被使能,CPU内核级的6个可屏蔽中断中,能控制该外设事件高级中断至少有一个被使能。在外设事件发生时,首先将其在外设中断控制器中的标志位置1,然后会在中断标志寄存器IFR中的INTx位由硬件置1,表明正在等待CPU响应,从而引起CPU内核的INT1INT6中的一个产生中断。,中断响应的延时,从发出中断请求到得到服务之间的延迟时间,与很多因素有关:(1)软件中断最少要延时4个CPU时钟周期。(2)外部可屏蔽中断最少要延时8个CPU时钟周期。(3)若在使用RPT重复时发生中断,为了保证指令流水线的完整,需等到该重复循环完才响应中断。但复位中断例外。(4)为使CPU能完成返回,在RET指令后中断被禁止,直至在返回指令上至少执行一条指令。(5)读写速度慢的外部存储器需要等待延时,如果中断向量存放在外部存储器,等待状态会影响中断的响应时间。,当CPU接受中断请求时,并不知道是哪一个外设事件引起的中断请求。为了让CPU能够区别这些引起中断的外设事件,DSP控制器给每个中断分配了一个特定的入口地址,称为中断向量。在每个外设中断请求有效时都会产生一个唯一的外设中断向量,这个外设中断向量被装载到外设中断向量寄存器(PIVR)中。CPU应答外设中断时,从PIVR中读取相应中断的向量,并产生一个转到该中断服务程序入口的向量。当某个中断发出请求,而且允许中断,则CPU先将当前的PC加1压入堆栈,即保护返回地址;然后,CPU自动地将该请求中断的向量地址送入PC,CPU便转入该请求中断的服务子程序运行;当碰到服务子程序的返回指令RET时,CPU自动将堆栈中的返回地址弹出到PC中,恢复中断前的程序继续进行。,3.4.2中断向量,为了更好地管理中断复用情况,DSP控制器为事件管理模块的每一个中断分配了一个偏移向量地址,并且当某个事件管理模块发出了请求信号,会自动地将该中断的偏移向量地址写入到对应的事件中断向量寄存器中。当进入DSP内核中断的服务子程序GISR后,将事件中断向量寄存器的内容送到累加器,然后经分支指令便可转入到专为某个事件管理模块中断所写的中断服务子程序SISR的入口。在程序存储器的0000h003FH单元。每个中断有两个地址单元。存放一条两个字的分支指令(如B指令)。这样,可以在较大的程序存储空间中开辟出一块存放中断服务子程序的空间,通过中断向量处的分支指令转入到真正的中断服务子程序空间的入口处。,中断优先级和中断矢量表,TMS320LF240 xCPU提供了6个可屏蔽中断:INT1INT6,INT1优先级最高,INT1最低。利用6个中断级,采用中断扩展设计可以使芯片能够管理46个可屏蔽中断请求。,3.4.3TMS320LF240 x的可屏蔽中断,(1)中断标志寄存器(IFR):位于数据存储器的0060H,用于识别和清除挂起的中断。当中断源INT1INT6中某一级向CPU发出可屏蔽中断请求时,控制寄存器中响应的标志位被置1。如果该中断未被屏蔽,则中断请求被送到CPU,表明该中断正被挂起或等待响应。读取IFR可以识别挂起的中断,向IFR相应的位写1则清除已挂起的中断。把IFR中当前的内容写回IFR则可清除所有挂起的中断CPU响应中断或器件复位则将IFR标志清除。,3.4.3.1CPU中断管理寄存器,IFR,D15D6Reserved-保留位。D5INT6flag-中断6标志位。作为连至INT6的所有外部中断的标志。D4INT5flag-中断5标志位。作为连至INT5的所有外部中断的标志。D3INT4flag-中断4标志位。作为连至INT4的所有外部中断的标志。D2INT3flag-中断3标志位。作为连至INT3的所有外部中断的标志。D1INT2flag-中断2标志位。作为连至INT2的所有外部中断的标志。D0INT1flag-中断1标志位。作为连至INT1的所有外部中断的标志。,(2)中断屏蔽寄存器(IMR):位于数据存储器的0004H,包含所有中断级(INT1INT6)的屏蔽位。读IMR可以识别以被屏蔽或被使能的中断,向IMR中某位写0则屏蔽相应的中断级;写1则使能该中断级。,IMR,D15D6Reserved-保留位。D5INT6mask-中断6屏蔽位。D4INT5mask-中断5屏蔽位。D3INT4mask-中断4屏蔽位。D2INT3mask-中断3屏蔽位。D1INT2mask-中断2屏蔽位。D0INT1mask-中断1屏蔽位。,3.4.3.2外设中断寄存器,外设中断寄存器包括:1个外设中断矢量寄存器(PIVR,地址701Eh);3个外设中断请求寄存器0/1/2(PIRQR0/1/2,地址7010h/7011h/7012h);3个外设中断应答寄存器0/1/2(PIACK0/1/2,地址7014h/7015h/7016h)。外设中断请求寄存器0/1/2和外设中断应答寄存器0/1/2是外设中断扩展模块用来向CPU产生INT1INT6中断请求的内部寄存器。只能对其测试(可读),不能对其编程(不可写)。外设中断请求寄存器0/1/2的某位为1,表明相应的中断请求被挂起;为0,未被挂起。向某位写1将发出一个中断请求到CPU,写入0没影响。向外设中断应答寄存器的某位为1,将引起相应的外设中断应答被插入,从而将相应的外设中断请求位清0,但不改变外设中断矢量寄存器的内容。,3.4.3.3外设中断控制寄存器,(1)外设中断1控制寄存器(XINT1CR),D15XINT1flag-XINT1标志位。指示在XINT1引脚上是否检测到一个跳变,无论外部中断1是否使能,XINT1引脚中跳变时该位总被置位。当相应的中断被应答时,该位被自动清0,通过软件向该位写1或复位是该位被清0。0-未检测到跳变;1-检测到跳变。D14D3Reserved-保留位。D2XINT1polarity-XINT1极性。0-在下降沿产生中断;1-在上升沿产生中断D1XINT1polarity-XINT1优先级。0-高优先级;1-低优先级D0XINT1enable-XINT1使能位。0-屏蔽中断;1-使能中断,(2)外设中断2控制寄存器(XINT2CR),D15XINT2flag-XINT2标志位。指示在XINT1引脚上是否检测到一个跳变,无论外部中断1是否使能,XINT2引脚中跳变时该位总被置位。当相应的中断被应答时,该位被自动清0,通过软件向该位写1或复位是该位被清0。0-未检测到跳变;1-检测到跳变。D14D3Reserved-保留位。D2XINT2polarity-XINT2极性。0-在下降沿产生中断;1-在上升沿产生中断D1XINT2polarity-XINT2优先级。0-高优先级;1-低优先级D0XINT2enable-XINT2使能位。0-屏蔽中断;1-使能中断,3.4.4不可屏蔽中断,(1)硬件非屏蔽中断:TMS320LF240 x有两个复位源:一个外部复位引脚复位和一个程序监视定时器(看门狗)复位。复位引脚为一个I/O脚,如果有内部复位事件(程序监视定时器复位)发生,则该引脚被设置为输出方式,并且为低电平,向外部电路表明器件正在自己复位。外部复位引脚信号和程序监视定时器复位信号相或后一起驱动CPU的复位信号。当复位信号有效后,CPU将终止一切工作,把系统复位到缺省状态上,同时,自动转到复位中断向量0000h处开始程序的运行,因此在程序存储器的首地址0000h必须安排一个分支到主程序入口的指令。,:TMS320LF240 x无该引脚,当器件访问一个无效地址时,将产生非屏蔽中断请求,程序则转移到非屏蔽中断矢量地址0024h处,从中取出一条转移指令,然后转向非屏蔽中断的入口,执行相应的中断服务程序。,无效地址检测:系统和外设模块控制寄存器地址映射中包含不可实现单元,译码逻辑能够检测任何对于这些无效地址的访问。一旦检测到对无效地址的访问,就将系统控制和状态寄存器(SCSR1)中的无效地址标志位(ILLADR)置1,从而产生一个不可屏蔽中断NMI。无论何时检测到访问无效地址都会产生插入一个无效地址条件,无效地址标志位在无效地址条件发生之后被置1,并保持直到软件将其清除。,(2)软件非屏蔽中断INTRK该指令允许启动任何中断,指令操作数K表示CPU将转移到哪个中断矢量单元,当响应INTR中断时,ST0中的INTM位置1,禁止可屏蔽中断。NMI该指令允许转移到中断矢量地址24h,与不可屏蔽中断使用同一单元。即引脚为低或执行NMI均可启动中断。当执行NMI指令时,INTM置1以禁止可屏蔽中断。TRAP该指令使CPU转移到中断矢量地址22h,TRAP不禁止任何不可屏蔽中断。当CPU转移到中断服务程序时,该中断服务程序可以被可屏蔽硬件中断所中断。,3.4.5中断服务程序(ISR),CPU得到中断请求并响应之后,根据中断矢量转移到相应的中断服务程序ISR中,ISR在为中断所要求的任务前需要保存和恢复寄存器的值,并且还要管理中断嵌套。,2中断服务程序嵌套的管理考虑中断嵌套时,需注意:(1)若希望一个可屏蔽中断能够中断ISR,那么,该ISR必须不屏蔽该中断,可在中断服务程序中,对IMR中的相应位设置和执行允许中断指令(CLRCINTM)来解除该中断屏蔽。(2)8级硬件堆栈。如果软件需要的堆栈超过8级,可以使用POPD和PSHD指令将堆栈有效地扩展到数据存储空间。(3)防止意外嵌套功能。在返回指令RET前至少两条指令的位置上插入CLRCINTM指令。,1保存和恢复寄存器值CPU进入中断服务程序(ISR)之前,硬件只将增量后的程序计数器的值自动保存起来,所以在中断服务程序中要用软件对一些重要寄存器的值进行保存和恢复。,3.5复位操作,复位是优先级最高的中断。属于不可屏蔽中断。复位可以在任何时候将器件设置为一个已知状态。复位通常在电源打开之后被启动。由于复位可终止存储器操作并初始化状态位

温馨提示

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

评论

0/150

提交评论