《DSP课件第3章程序控制与中断管理.ppt》由会员分享,可在线阅读,更多相关《DSP课件第3章程序控制与中断管理.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章 程序控制和中断管理程序控制和中断管理在执行当前指令的同时,程序流要求处理器生成下一条在执行当前指令的同时,程序流要求处理器生成下一条指令的程序地址,预定程序的路线。指令的程序地址,预定程序的路线。程序地址的产生见下图:程序地址的产生见下图:3.1 程序地址的产生程序地址的产生程序地址产生框图程序地址产生框图 程序地址产生逻辑使用的硬件程序地址产生逻辑使用的硬件器件功能程序计数器(PC)对内部和外部程序存储器寻址程序地址寄存器(PAR)驱动程序地址总线,提供程序的读、写地址堆栈保存返回地址微堆栈(MATACK)保存返回地址重复计数器(RPTC)与重复指令(RPT)一起,用来 确定RP
2、T后的一条指令重复执行的次数。程序地址产生源程序地址产生源操作程序地址来源顺序操作程序计数器PC(程序地址+1)空周期程序地址寄存器PAR(程序地址+1)从子程序返回堆栈栈顶(TOS)从表传送或块传送返回微堆栈(MSTACK)转移到或调用指令中指定的地址转移到或调用累加器低半部分指定的地址转移到中断服务程序转移或调用指令,即利用程序读总线(PRDB)的方式获取程序地址。累加器的低半部分,即利用数据读总线(DRDB)的方式获取程序地址中断矢量单元,即利用程序读总线(PRDB)的方式获取程序地址。1、程序计数器、程序计数器程序地址产生逻辑使用程序地址产生逻辑使用16位程序计数器(位程序计数器(PC
3、)对内部和)对内部和外部程序存储器寻址,外部程序存储器寻址,PC中存放将被执行的下一条指令的地中存放将被执行的下一条指令的地址。通过程序地址总线(址。通过程序地址总线(PAB),从程序存储器该地址处取),从程序存储器该地址处取出指令并装入指令寄存器,当装载入指令寄存器时,出指令并装入指令寄存器,当装载入指令寄存器时,PC中保中保存下一个地址。存下一个地址。装入装入PC中的地址中的地址将累加器低16位加载到PC。利用BACC(转移到累加器中的地址)或CALA(调用累加器指令单元的子程序)指令可实现计算转移操作加载到PC的地址顺序执行若当前指令字是一个字,则将PC+1加载到PC若当前指令字是两个字
4、,则将PC+2加载到PC转移转移指令后的长立即数直接加载到PC子程序调用和返回调用指令:将PC中的下一条指令的地址压入堆栈,然后将调用的指令后的长立即数加载到PC返回指令:将返回地址从堆栈中弹回PC软件或硬件中断将相应的中断矢量地址装入PC。在该矢量单元,通常有一条转移指令,又将相应的中断服务程序的地址加载到PC计算转移代码操作2、堆栈、堆栈 16位宽、位宽、8级深的硬件堆栈。当调用子程序或发生中断时,级深的硬件堆栈。当调用子程序或发生中断时,程序地址产生逻辑用其保存返回地址。程序地址产生逻辑用其保存返回地址。当当CPU进入子程序或中断服务程序时,返回地址自动装进入子程序或中断服务程序时,返回
5、地址自动装入该堆栈的栈顶,这一操作不需附加周期。入该堆栈的栈顶,这一操作不需附加周期。当子程序或中断服务程序完成时,返回指令将返回地址当子程序或中断服务程序完成时,返回指令将返回地址从栈顶传送到程序计数器。从栈顶传送到程序计数器。当不需要用当不需要用8级返回地址时,该堆栈也可用来保存子程序级返回地址时,该堆栈也可用来保存子程序或中断服务程序的有关数据或用于其他目的。或中断服务程序的有关数据或用于其他目的。访问堆栈的指令:访问堆栈的指令:PUSH(压入)和(压入)和POP(弹出)(弹出)PUSH:把累加器的低:把累加器的低16位拷贝到栈顶位拷贝到栈顶 POP:把栈顶值拷贝到累加器低把栈顶值拷贝到
6、累加器低16位位PSHD和和POPD 当子程序或中断嵌套超过当子程序或中断嵌套超过8级时,利用此指令在数据存储区中建立级时,利用此指令在数据存储区中建立一个堆栈。一个堆栈。PSHD把数据存储器中的值压入栈顶,把数据存储器中的值压入栈顶,POPD将栈顶值弹将栈顶值弹出到数据存储器。出到数据存储器。3、微堆栈、微堆栈微堆栈只有微堆栈只有1级深、级深、16位宽,没有可以使用微堆栈保存信息的指令,位宽,没有可以使用微堆栈保存信息的指令,只有程序地址产生逻辑才能够使用微堆栈。只有程序地址产生逻辑才能够使用微堆栈。程序地址产生逻辑在执行程序地址产生逻辑在执行BLDD、BLPD、MAC、TBLR及及TBLW
7、指指令时,用微堆栈保存返回地址。执行这些指令时,首先把令时,用微堆栈保存返回地址。执行这些指令时,首先把PC+1的地址送的地址送到微堆栈保存,然后用到微堆栈保存,然后用PC存放第一个操作数的地址,用辅助寄存器算术存放第一个操作数的地址,用辅助寄存器算术单元单元ARAU产生第二个操作数的地址,当这些指令重复执行时,产生第二个操作数的地址,当这些指令重复执行时,PC可使可使第一个操作数的地址自动增量,第一个操作数的地址自动增量,ARAU使第二个操作数的地址改变,到所使第二个操作数的地址改变,到所重复的指令完成时再将微堆栈弹回到程序地址产生逻辑。重复的指令完成时再将微堆栈弹回到程序地址产生逻辑。4、
8、流水线操作、流水线操作 指令流水线包括执行时发生的一系列总线操作。指令流水线包括执行时发生的一系列总线操作。LF240 x的流水线有的流水线有4个个独立的阶段:取指令、指令译码、取操作数和执行指令。独立的阶段:取指令、指令译码、取操作数和执行指令。4个操作阶段是独立个操作阶段是独立的,在任意的指定周期内,的,在任意的指定周期内,14个不同的指令都被激活,每一条被激活的指令个不同的指令都被激活,每一条被激活的指令都处于不同的完成阶段。都处于不同的完成阶段。4级流水线的操作级流水线的操作 流水线操作一般是不可见的,但下列情况例外:流水线操作一般是不可见的,但下列情况例外:(1)紧跟在修改全局存储器
9、分配寄存器()紧跟在修改全局存储器分配寄存器(GREG)后的单字、单周期指令)后的单字、单周期指令使用先前的全局映射。使用先前的全局映射。(2)在流水线操作的执行阶段,)在流水线操作的执行阶段,NORM指令修改指令修改ARP,并使用当前辅助寄,并使用当前辅助寄存器,如果随后的两个指令要改变当前辅助寄存器的内容或存器,如果随后的两个指令要改变当前辅助寄存器的内容或ARP,则它们,则它们将在流水线的译码阶段进行,这将导致将在流水线的译码阶段进行,这将导致NORM指令使用错误的辅助寄存器指令使用错误的辅助寄存器值,并导致随后的指令使用错误的值,并导致随后的指令使用错误的ARP值。所以在值。所以在NO
10、RM后不要安排改变后不要安排改变当前辅助寄存器和当前辅助寄存器和ARP内容的指令。内容的指令。转移、调用和返回改变指令流的顺序,转到新的地址单元去执行转移、调用和返回改变指令流的顺序,转到新的地址单元去执行指令。指令。转移仅使控制转换到新的地址单元;调用要将返回地址保存到硬转移仅使控制转换到新的地址单元;调用要将返回地址保存到硬件堆栈的栈顶;返回指令将堆栈中的返回地址弹到程序计数器。件堆栈的栈顶;返回指令将堆栈中的返回地址弹到程序计数器。3.2 转移、调用和返回转移、调用和返回1、无条件指令、无条件指令n无条件转移无条件转移 执行无条件转移时,将指定的程序存储器的地址加载到执行无条件转移时,将
11、指定的程序存储器的地址加载到PC上,并上,并从该地址开始执行程序。加载到从该地址开始执行程序。加载到PC的地址可以来自转移指令的第二的地址可以来自转移指令的第二个操作数,也可能是累加器的低个操作数,也可能是累加器的低16位。位。无条件转移指令有无条件转移指令有B(转移)和(转移)和BACC(转移到累加器指定的地(转移到累加器指定的地址)。址)。n无条件调用无条件调用 执行无条件调用时,将指定的程序存储器的地址加载到执行无条件调用时,将指定的程序存储器的地址加载到PC上,上,并从该地址开始执行程序。加载到并从该地址开始执行程序。加载到PC的地址可以来自转移指令的第的地址可以来自转移指令的第二个操
12、作数,也可能是累加器的低二个操作数,也可能是累加器的低16位。加载位。加载PC 之前将返回地址保之前将返回地址保存到堆栈。子程序或函数执行之后,返回指令将返回地址从堆栈加载存到堆栈。子程序或函数执行之后,返回指令将返回地址从堆栈加载到到PC,从调用指令后的那条指令开始执行。,从调用指令后的那条指令开始执行。无条件转移指令有无条件转移指令有CALL、CALA(调用累加器指定单元处的子(调用累加器指定单元处的子程序)。程序)。n无条件返回无条件返回 执行无条件返回指令(执行无条件返回指令(RET)时,将栈顶的值加载到)时,将栈顶的值加载到PC,并从,并从该地址继续执行程序。该地址继续执行程序。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):):当用户指定的一个或多个条件满足时才执行。利用该指令可使当用户指定的一个或多个条件满足时才执行。利用该指令可使子程序或中断服务程序有多种返回路径。子程序或中断服务程序有多种返回路径。3.3 重复指令重复指令重复指令(重复指令(RPT):将单条指令重复执行):将单条指令重复执行N+1次。次。N为指令的操为指令的操作数。作数。执行执行RPT时,时,N装入重复计数器装入重复计数器RPTC,每执行一次,每
18、执行一次,RPTC减减1,直至,直至RPTC为为0。如果。如果N是从一个数据存储单元读取,是从一个数据存储单元读取,RPTC为为16位位计数器;如果计数器;如果N为一操作常数,为一操作常数,RPTC为为8位计数器。位计数器。3.4 中断中断 中断是计算机的一种特殊的运行方式。在正常情况下,中断是计算机的一种特殊的运行方式。在正常情况下,CPU按照程序预按照程序预定的路线进行,当外围设备有事件产生需要定的路线进行,当外围设备有事件产生需要CUP来处理,即发出中断请求信来处理,即发出中断请求信号,号,CPU暂停工作,保存好现场,然后转到该中断请求对应的服务子程序的暂停工作,保存好现场,然后转到该中
19、断请求对应的服务子程序的入口处,待服务子程序运行完毕,入口处,待服务子程序运行完毕,CPU自动恢复现场,从原停顿点继续往下自动恢复现场,从原停顿点继续往下运行。运行。计算机采用中断方式,可以节省计算机采用中断方式,可以节省CPU资源,资源,CPU可以不花时间去轮寻外可以不花时间去轮寻外围设备是否需要服务。每一种计算机都有多个中断源,围设备是否需要服务。每一种计算机都有多个中断源,CPU对中断的响应需对中断的响应需要按序进行,需要一个中断管理系统模块对中断源进行管理控制。要按序进行,需要一个中断管理系统模块对中断源进行管理控制。1、中断的分类、中断的分类n软件中断软件中断由指令由指令INTR、N
20、MI和和TRAP产生。产生。n硬件中断硬件中断由来自物理设备的信号产生,包括复位由来自物理设备的信号产生,包括复位 、非屏蔽中断、非屏蔽中断NMI和可和可屏蔽中断屏蔽中断INT1、INT2、INT3、INT4、INT5、INT6。n 可屏蔽中断可屏蔽中断 可以通过软件将它们禁止或允许的中断。均为硬件中断。当硬件设备可以通过软件将它们禁止或允许的中断。均为硬件中断。当硬件设备或外部引脚成功地请求了可屏蔽中断时,与其对应的一个或几个标志被或外部引脚成功地请求了可屏蔽中断时,与其对应的一个或几个标志被激活,无论是否响应此中断,这些标志均被设置为激活,无论是否响应此中断,这些标志均被设置为1。n 不可
21、屏蔽中断不可屏蔽中断不能通过软件将其禁止或允许的中断。包括所有软件中断和两种外不能通过软件将其禁止或允许的中断。包括所有软件中断和两种外部硬件中断部硬件中断 和和 。外设事件要引起中断,必须保证:外设事件的中断使能位被使能,外设事件要引起中断,必须保证:外设事件的中断使能位被使能,CPU内核级的内核级的6个可屏蔽中断中,能控制该外设事件高级中断至少有一个个可屏蔽中断中,能控制该外设事件高级中断至少有一个被使能。在外设事件发生时,首先将其在外设中断控制器中的标志位置被使能。在外设事件发生时,首先将其在外设中断控制器中的标志位置1,然后会在中断标志寄存器,然后会在中断标志寄存器IFR中的中的INT
22、x位由硬件置位由硬件置1,表明正在等待,表明正在等待CPU响应,从而引起响应,从而引起CPU内核的内核的INT1INT6中的一个产生中断。中的一个产生中断。中断响应的延时中断响应的延时 从发出中断请求到得到服务之间的延迟时间,与很多因素有关:从发出中断请求到得到服务之间的延迟时间,与很多因素有关:(1)软件中断最少要延时)软件中断最少要延时4个个CPU时钟周期。时钟周期。(2)外部可屏蔽中断最少要延时)外部可屏蔽中断最少要延时8个个CPU时钟周期。时钟周期。(3)若在使用)若在使用RPT重复时发生中断,为了保证指令流水线的完整,需等到重复时发生中断,为了保证指令流水线的完整,需等到该重复循环完
23、才响应中断。但复位中断例外。该重复循环完才响应中断。但复位中断例外。(4)为使)为使CPU能完成返回,在能完成返回,在RET指令后中断被禁止,直至在返回指令上指令后中断被禁止,直至在返回指令上至少执行一条指令。至少执行一条指令。(5)读写速度慢的外部存储器需要等待延时,如果中断向量存放在外部存)读写速度慢的外部存储器需要等待延时,如果中断向量存放在外部存储器,等待状态会影响中断的响应时间。储器,等待状态会影响中断的响应时间。当当CPU接受中断请求时,并不知道是哪一个外设事件引起的中断请求。为接受中断请求时,并不知道是哪一个外设事件引起的中断请求。为了让了让CPU能够区别这些引起中断的外设事件,
24、能够区别这些引起中断的外设事件,DSP控制器给每个中断分配了一控制器给每个中断分配了一个特定的入口地址,称为中断向量。个特定的入口地址,称为中断向量。在每个外设中断请求有效时都会产生一个唯一的外设中断向量,这个外设在每个外设中断请求有效时都会产生一个唯一的外设中断向量,这个外设中断向量被装载到外设中断向量寄存器(中断向量被装载到外设中断向量寄存器(PIVR)中。)中。CPU应答外设中断时,应答外设中断时,从从PIVR中读取相应中断的向量,并产生一个转到该中断服务程序入口的向量。中读取相应中断的向量,并产生一个转到该中断服务程序入口的向量。当某个中断发出请求,而且允许中断,则当某个中断发出请求,
25、而且允许中断,则CPU先将当前的先将当前的PC加加1压入堆栈,即压入堆栈,即保护返回地址;然后,保护返回地址;然后,CPU自动地将该请求中断的向量地址送入自动地将该请求中断的向量地址送入PC,CPU便便转入该请求中断的服务子程序运行;当碰到服务子程序的返回指令转入该请求中断的服务子程序运行;当碰到服务子程序的返回指令RET时,时,CPU自动将堆栈中的返回地址弹出到自动将堆栈中的返回地址弹出到PC中,恢复中断前的程序继续进行。中,恢复中断前的程序继续进行。2、中断向量、中断向量 为了更好地管理中断复用情况,为了更好地管理中断复用情况,DSP控制器为事件管理模块的每一个中断控制器为事件管理模块的每
26、一个中断分配了一个偏移向量地址,并且当某个事件管理模块发出了请求信号,会自分配了一个偏移向量地址,并且当某个事件管理模块发出了请求信号,会自动地将该中断的偏移向量地址写入到对应的事件中断向量寄存器中。当进入动地将该中断的偏移向量地址写入到对应的事件中断向量寄存器中。当进入DSP内核中断的服务子程序内核中断的服务子程序GISR后,将事件中断向量寄存器的内容送到累加后,将事件中断向量寄存器的内容送到累加器,然后经分支指令便可转入到专为某个事件管理模块中断所写的中断服务器,然后经分支指令便可转入到专为某个事件管理模块中断所写的中断服务子程序子程序SISR的入口。的入口。n在程序存储器的在程序存储器的
27、0000h003FH单元。单元。n每个中断有两个地址单元。存放一条两个字的分支指令(如每个中断有两个地址单元。存放一条两个字的分支指令(如B指令)。这样,指令)。这样,可以在较大的程序存储空间中开辟出一块存放中断服务子程序的空间,通过可以在较大的程序存储空间中开辟出一块存放中断服务子程序的空间,通过中断向量处的分支指令转入到真正的中断服务子程序空间的入口处。中断向量处的分支指令转入到真正的中断服务子程序空间的入口处。中断优先级和中断矢量表中断优先级和中断矢量表 TMS320LF240 xCPU提供了提供了6个可屏蔽中断:个可屏蔽中断:INT1INT6,INT1优先优先级最高,级最高,INT1最
28、低。利用最低。利用6个中断级,采用中断扩展设计可以使芯片能够个中断级,采用中断扩展设计可以使芯片能够管理管理46个可屏蔽中断请求。个可屏蔽中断请求。3、TMS320LF240 x的可屏蔽中断的可屏蔽中断中断标志寄存器(中断标志寄存器(IFR):):位于数据存储器的位于数据存储器的0060H,用于识别和清除挂起的中断。,用于识别和清除挂起的中断。当中断源当中断源INT1INT6中某一级向中某一级向CPU发出可屏蔽中断请求时,控制寄存发出可屏蔽中断请求时,控制寄存器中响应的标志位被置器中响应的标志位被置1。如果该中断未被屏蔽,则中断请求被送到。如果该中断未被屏蔽,则中断请求被送到CPU,表明该中断
29、正被挂起或等待响应。表明该中断正被挂起或等待响应。读取读取IFR可以识别挂起的中断,向可以识别挂起的中断,向IFR相应的位写相应的位写1则清除已挂起的中断。则清除已挂起的中断。把把IFR中当前的内容写回中当前的内容写回IFR则可清除所有挂起的中断则可清除所有挂起的中断CPU响应中断或器件复响应中断或器件复位则将位则将IFR标志清除。标志清除。(1)、)、CPU中断管理寄存器中断管理寄存器IFRINT1 flagINT2 flagINT3 flagINT4 flagINT5 flagINT6 flagReservedD15D6D0D1D2D3D4D5D15D6 Reserved-保留位。D5 I
30、NT6 flag-中断6标志位。作为连至INT6的所有外部中断的标志。D4 INT5 flag-中断5标志位。作为连至INT5的所有外部中断的标志。D3 INT4 flag-中断4标志位。作为连至INT4的所有外部中断的标志。D2 INT3 flag-中断3标志位。作为连至INT3的所有外部中断的标志。D1 INT2 flag-中断2标志位。作为连至INT2的所有外部中断的标志。D0 INT1 flag-中断1标志位。作为连至INT1的所有外部中断的标志。中断屏蔽寄存器(中断屏蔽寄存器(IMR):):位于数据存储器的位于数据存储器的0004H,包含所有中断级(,包含所有中断级(INT1INT6
31、)的屏蔽位。)的屏蔽位。读读IMR可以识别以被屏蔽或被使能的中断,向可以识别以被屏蔽或被使能的中断,向IMR中某位写中某位写0则屏蔽相则屏蔽相应的中断级;写应的中断级;写1则使能该中断级。则使能该中断级。IMRINT1 maskINT2 maskINT3 maskINT4 maskINT5 maskINT6 maskReservedD15D6D0D1D2D3D4D5D15D6 Reserved-保留位。D5 INT6 mask-中断6屏蔽位。D4 INT5 mask-中断5屏蔽位。D3 INT4 mask-中断4屏蔽位。D2 INT3 mask-中断3屏蔽位。D1 INT2 mask-中断2屏
32、蔽位。D0 INT1 mask-中断1屏蔽位。(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是外设中断扩展是外设中断扩展模块用来向模块用来向
33、CPU产生产生INT1INT6中断请求的内部寄存器。只能对其测试中断请求的内部寄存器。只能对其测试(可读),不能对其编程(不可写)。(可读),不能对其编程(不可写)。外设中断请求寄存器外设中断请求寄存器0/1/2的某位为的某位为1,表明相应的中断请求被挂起;,表明相应的中断请求被挂起;为为0,未被挂起。向某位写,未被挂起。向某位写1将发出一个中断请求到将发出一个中断请求到CPU,写入,写入0没影响。向没影响。向外设中断应答寄存器的某位为外设中断应答寄存器的某位为1,将引起相应的外设中断应答被插入,从而,将引起相应的外设中断应答被插入,从而将相应的外设中断请求位清将相应的外设中断请求位清0,但不
34、改变外设中断矢量寄存器的内容。,但不改变外设中断矢量寄存器的内容。(3)外设中断控制寄存器外设中断控制寄存器外设中断外设中断1控制寄存器(控制寄存器(XINT1CR)XINT1 flagReservedXINT1 polarityXINT1 priorityXINT1 enableD14D3D0D1D2D15D15 XINT1 flag-XINT1标志位。指示在XINT1引脚上是否检测到一个跳变,无论外部中断1是否使能,XINT1引脚中跳变时该位总被置 位。当相应的中断被应答时,该位被自动清0,通过软件向该位写1 或复位是该位被清0。0-未检测到跳变;1-检测到跳变。D14 D3 Reserv
35、ed-保留位。D2 XINT1 polarity-XINT1极性。0-在下降沿产生中断;1-在上升沿产生中断D1 XINT1 polarity-XINT1优先级。0-高优先级;1-低优先级D0 XINT1 enable-XINT1使能位。0-屏蔽中断;1-使能中断外设中断外设中断2控制寄存器(控制寄存器(XINT2CR)XINT2 flagReservedXINT2 polarityXINT2 priorityXINT2 enableD14D3D0D1D2D15D15 XINT2 flag-XINT2标志位。指示在XINT1引脚上是否检测到一个跳变,无论外部中断1是否使能,XINT2引脚中跳变
36、时该位总被置 位。当相应的中断被应答时,该位被自动清0,通过软件向该位写1 或复位是该位被清0。0-未检测到跳变;1-检测到跳变。D14 D3 Reserved-保留位。D2 XINT2 polarity-XINT2极性。0-在下降沿产生中断;1-在上 升沿产生中断D1 XINT2 polarity-XINT2优先级。0-高优先级;1-低优先级D0 XINT2 enable-XINT2使能位。0-屏蔽中断;1-使能中断4、不可屏蔽中断、不可屏蔽中断(1)硬件非屏蔽中断)硬件非屏蔽中断 :TMS320LF240 x有两个复位源:一个外部复位引脚复位和一个有两个复位源:一个外部复位引脚复位和一个程
37、序监视定时器(看门狗)复位。程序监视定时器(看门狗)复位。复位引脚为一个复位引脚为一个I/O脚,如果有内部复位事件(程序监视定时器复脚,如果有内部复位事件(程序监视定时器复位)发生,则该引脚被设置为输出方式,并且为低电平,向外部电路位)发生,则该引脚被设置为输出方式,并且为低电平,向外部电路表明器件正在自己复位。表明器件正在自己复位。外部复位引脚信号和程序监视定时器复位信号相或后一起驱动外部复位引脚信号和程序监视定时器复位信号相或后一起驱动CPU的复位信号。的复位信号。当复位信号有效后,当复位信号有效后,CPU将终止一切工作,把系统复位到缺省状态将终止一切工作,把系统复位到缺省状态上,同时,自
38、动转到复位中断向量上,同时,自动转到复位中断向量0000h处开始程序的运行,因此在处开始程序的运行,因此在程序存储器的首地址程序存储器的首地址0000h必须安排一个分支到主程序入口的指令。必须安排一个分支到主程序入口的指令。:TMS320LF240 x无该引脚,当器件访问一个无效地址时,将产生无该引脚,当器件访问一个无效地址时,将产生非屏蔽中断请求非屏蔽中断请求 ,程序则转移到非屏蔽中断矢量地址,程序则转移到非屏蔽中断矢量地址0024h处,从处,从中取出一条转移指令,然后转向非屏蔽中断的入口,执行相应的中断服中取出一条转移指令,然后转向非屏蔽中断的入口,执行相应的中断服务程序。务程序。无效地址
39、检测:系统和外设模块控制寄存器地址映射中包含不可实现单无效地址检测:系统和外设模块控制寄存器地址映射中包含不可实现单元,译码逻辑能够检测任何对于这些无效地址的访问。一旦检测到对无元,译码逻辑能够检测任何对于这些无效地址的访问。一旦检测到对无效地址的访问,就将系统控制和状态寄存器(效地址的访问,就将系统控制和状态寄存器(SCSR1)中的无效地址标)中的无效地址标志位(志位(ILLADR)置)置1,从而产生一个不可屏蔽中断,从而产生一个不可屏蔽中断NMI。无论何时检测。无论何时检测到访问无效地址都会产生插入一个无效地址条件,无效地址标志位在无到访问无效地址都会产生插入一个无效地址条件,无效地址标志
40、位在无效地址条件发生之后被置效地址条件发生之后被置1,并保持直到软件将其清除。,并保持直到软件将其清除。(2)软件非屏蔽中断)软件非屏蔽中断 INTR K 该指令允许启动任何中断,指令操作数该指令允许启动任何中断,指令操作数K表示表示CPU将转移到哪个中断将转移到哪个中断矢量单元,当响应矢量单元,当响应INTR中断时,中断时,ST0中的中的INTM位置位置1,禁止可屏蔽中断。,禁止可屏蔽中断。NMI该指令允许转移到中断矢量地址该指令允许转移到中断矢量地址24h,与不可屏蔽中断,与不可屏蔽中断 使用同一单使用同一单元。即元。即 引脚为低或执行引脚为低或执行NMI均可启动均可启动 中断。当执行中断
41、。当执行NMI指令时,指令时,INTM置置1以禁止可屏蔽中断。以禁止可屏蔽中断。TRAP该指令使该指令使CPU转移到中断矢量地址转移到中断矢量地址22h,TRAP不禁止任何不可屏蔽中不禁止任何不可屏蔽中断。当断。当CPU转移到中断服务程序时,该中断服务程序可以被可屏蔽硬件中转移到中断服务程序时,该中断服务程序可以被可屏蔽硬件中断所中断。断所中断。5、中断服务程序(、中断服务程序(ISR)CPU得到中断请求并响应之后,根据中断矢量转移到相应的中断服得到中断请求并响应之后,根据中断矢量转移到相应的中断服务程序务程序ISR中,中,ISR在为中断所要求的任务前需要保存和恢复寄存器的值,在为中断所要求的
42、任务前需要保存和恢复寄存器的值,并且还要管理中断嵌套。并且还要管理中断嵌套。(2 2)中断服务程序嵌套的管理中断服务程序嵌套的管理 考虑中断嵌套时,需注意:考虑中断嵌套时,需注意:若希望一个可屏蔽中断能够中断若希望一个可屏蔽中断能够中断ISR,那么,该,那么,该ISR必须不屏蔽该中断,必须不屏蔽该中断,可在中断服务程序中,对可在中断服务程序中,对IMR中的相应位设置和执行允许中断指令(中的相应位设置和执行允许中断指令(CLRC INTM)来解除该中断屏蔽。)来解除该中断屏蔽。8级硬件堆栈。如果软件需要的堆栈超过级硬件堆栈。如果软件需要的堆栈超过8级,可以使用级,可以使用POPD和和PSHD 指
43、令将堆栈有效地扩展到数据存储空间。指令将堆栈有效地扩展到数据存储空间。防止意外嵌套功能。在返回指令防止意外嵌套功能。在返回指令RET前至少两条指令的位置上插入前至少两条指令的位置上插入CLRC INTM指令。指令。(1 1)保存和恢复寄存器值保存和恢复寄存器值 CPU进入中断服务程序(进入中断服务程序(ISR)之前,硬件只将增量后的程序计数器)之前,硬件只将增量后的程序计数器的值自动保存起来,所以在中断服务程序中要用软件对一些重要寄存器的的值自动保存起来,所以在中断服务程序中要用软件对一些重要寄存器的值进行保存和恢复。值进行保存和恢复。3.5 复位操作复位操作 复位是优先级最高的中断。属于不可
44、屏蔽中断。复位可以在任何复位是优先级最高的中断。属于不可屏蔽中断。复位可以在任何时候将器件设置为一个已知状态。复位通常在电源打开之后被启动。时候将器件设置为一个已知状态。复位通常在电源打开之后被启动。由于复位可终止存储器操作并初始化状态位,因此每次复位后必须重由于复位可终止存储器操作并初始化状态位,因此每次复位后必须重新初始化系统。新初始化系统。进行复位时,自动对以下几部分进行如下工作:进行复位时,自动对以下几部分进行如下工作:(1)控制部分)控制部分 在控制部分将在控制部分将PC,IFR、IMR、ICR、RPTC全部清全部清0。将将ST0、ST1中的各状态位加载为复位值:中的各状态位加载为复
45、位值:OV=1,INTM=1,CNF=0,SXM=1,C=1,XF=1,PM=00。(2)存储器和)存储器和I/O空间空间 ST1中中CNF=0,DRAM中中B0被影射到数据存储空间。被影射到数据存储空间。全局存储器分配寄存器全局存储器分配寄存器GREG清为清为0,全部存储器为局部存储器。,全部存储器为局部存储器。(3)片内外设)片内外设3.6 低功耗模式低功耗模式(1)进入低功耗模式)进入低功耗模式 TMS320LF240 x有三种低功耗模式:有三种低功耗模式:IDLE1、IDLE2、HALT。有。有SCSR1指定。指定。所有所有240 x器件有两个时钟:器件有两个时钟:CPU时钟(时钟(为
46、大部分为大部分CPU逻辑提供时钟)逻辑提供时钟)和系统时钟(从和系统时钟(从CPU的的CLKOUT引出,提供外部时钟与引出,提供外部时钟与CPU中断逻辑时中断逻辑时钟。)钟。)当当CPU进入进入IDLE1模式时,模式时,CPU时钟停止工作而系统时钟继续工作。时钟停止工作而系统时钟继续工作。执行执行IDLE可进入低功耗模式。当执行可进入低功耗模式。当执行IDLE指令时,程序计数器加指令时,程序计数器加1,CPU停止所有操作,器件处于低功耗模式。此时,内部寄存器内容停止所有操作,器件处于低功耗模式。此时,内部寄存器内容全部保持,片内全部保持,片内RAM的内容保持不变。的内容保持不变。当当CPU进入
47、进入IDLE2模式时,模式时,CPU时钟系统时钟都停止工作。时钟系统时钟都停止工作。当当CPU进入进入HALT模式时,模式时,CPU时钟系统时钟都停止工作。且振荡时钟系统时钟都停止工作。且振荡器、器、WDCLK、PLL的时钟输入均被关断。的时钟输入均被关断。(2)结束低功耗模式)结束低功耗模式 如果低功耗模式已经启动,则任何硬件中断都可以使处理器脱离如果低功耗模式已经启动,则任何硬件中断都可以使处理器脱离IDLE状态。状态。若使用若使用NMI和复位引脚,和复位引脚,CPU将立即执行相应的中断服务程序,如将立即执行相应的中断服务程序,如果是复位,则寄存器将被设置为复位值。果是复位,则寄存器将被设置为复位值。若使用可屏蔽中断源唤醒处理器,该中断源必须没有被中断屏蔽寄若使用可屏蔽中断源唤醒处理器,该中断源必须没有被中断屏蔽寄存器所屏蔽。此时存器所屏蔽。此时INTM的值将决定结束低功耗模式后的值将决定结束低功耗模式后CPU的动作。的动作。INTM=0,中断被允许,中断被允许,CPU执行相应的中断服务程序,执行相应的中断服务程序,INTM=1,中断被禁止,中断被禁止,CPU将继续执行将继续执行IDLE后的程序。后的程序。