资源预览内容
第1页 / 共156页
第2页 / 共156页
第3页 / 共156页
第4页 / 共156页
第5页 / 共156页
第6页 / 共156页
第7页 / 共156页
第8页 / 共156页
第9页 / 共156页
第10页 / 共156页
亲,该文档总共156页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章第三章 TMS320C2XX中央处理单元中央处理单元与程序控制与程序控制1哈工程DSP专业课上一章上一章内容回顾内容回顾(1)明确为什么要学习DSP的硬件组成与体系结构,掌握C2xxDSP的硬件组成与体系结构及其特点。(2)解决在编程序时不知道哪些资源是可用的,怎么用?(3)解决硬件设计时,对引脚信号不知道怎么用?怎样发掘芯片的潜能,也就是说器件的优化设计问题和效能最大化的问题。(打下基础)上一章的主要内容:2哈工程DSP专业课本章教学目的本章教学目的要求同学理解掌握DSP的中央处理单元的组成和程序控制的原理 理解各状态寄存器的状态位及其作用理解流水线的原理以及转移、调用、返回指令的执行过程理解DSP的中断和复位中断和复位操作3哈工程DSP专业课3.1 概述概述3.2 输入定标部分输入定标部分输入定标部分输入定标部分3.3 乘法部分乘法部分3.4 中央算术逻辑部分中央算术逻辑部分3.5 辅助寄存器与状态寄存器辅助寄存器与状态寄存器3.6 程序地址生成与流水线程序地址生成与流水线3.7 转移、调用和返回转移、调用和返回3.8 重复指令重复指令3.9 中断与中断管理中断与中断管理3.10复位操作复位操作3.11节能方式节能方式 本章主要内容本章主要内容4哈工程DSP专业课3.1 概述本章讲述中央处理单元(CPU)的主要组成CPU的 三 个 基 本 部 分(3.2节3.4节)辅 助 寄 存 器 算 术 单 元(ARAU)(3.5节)状态寄存器ST0和ST1(3.5节)包括:输入定标部分、乘法包括:输入定标部分、乘法部分、中央算术逻辑部分部分、中央算术逻辑部分ARAUARAU实现对实现对8 8个辅助寄存个辅助寄存器的算术运算。器的算术运算。状态寄存器决定处理器工作状态寄存器决定处理器工作方式、寻址指针以及显示不方式、寻址指针以及显示不同的处理器状态和算术逻辑同的处理器状态和算术逻辑结果。结果。5哈工程DSP专业课节 能 方 式 (3.11节)C2XX器件程序控制的特点及其处理过程 (3.6节3.10节)涉及到对一个或多个指令块执行顺序的控制,通常,程序流是顺序的,C2XX在连续的程序存储器地址执行指令操作。然而,有时一个程序必须转移到一个非顺序的地址,最后在该新的地址单元顺序地执行指令。为此,C2XX支持转移、调用、返回、重复和中断等操作。 该方式暂停内部程序流并暂时地降低C2XX的功能 6哈工程DSP专业课C2xx的总体框图中央算术逻辑单元:CALU 数据地址产生逻辑(ARAU以及8个AR)累加器:ACC 程序地址产生逻辑 用于CALU的输入输出数据比例移位器 16-bit16-bit乘法器乘积比例移位器7哈工程DSP专业课CPU的输入比例、中央算术逻辑和乘法部分框图8哈工程DSP专业课3.2 输入定标部分输入定标部分 一个32-bit输入数据定标移位器(输入移位器)使一个存储器的16-bit值与32-bit的CALU对齐。 对于数据的算术运算和逻辑运算来说,数据的校准很有必要。 作为程序(或数据)和CALU之间的数据通道,输入移位器操作不需要额外开销。9哈工程DSP专业课下面介绍输入移位器的输入、输出和移位位数。输入输入 程序读总线程序读总线(PRDB)该输入为一个指令操作时给定的常数。输入移位器的15位到0位接收程序存储器(PRDB)或数据存储器(DRDB)的一个16-bit输入。输出输出 在左移期间,移位器中未使用的LSB被零填充,而移位器中的MSB则被零或扩展符填充。数据读总线数据读总线(DRDB)该输入为一个来自数据存储器的数据。接收了一个16-bit数据之后,输入移位器就将该16-bit数据与CALU的32-bit总线对齐: 输入移位器将该16位数据左移016位,然后向CALU送入32位的结果。10哈工程DSP专业课移位位数移位位数输入移位器可以将一个16-bit数据左移016位。移位大小(或移位位数)可从以下方式获得:暂存寄存器暂存寄存器(TREG)的的4个个LSB位位基于TREG的移位操作允许动态地确定数据定标因子,以便它能更好地适应系统性能。在指令字中嵌入一个常数在指令字中嵌入一个常数在指令字中设置移位位数,允许执行特定的数据定标或校准操作。11哈工程DSP专业课 对许多(并非所有的)指令而言,符号扩展方式位(SXM),即状态寄存器ST1的第l0位,决定着在CALU计算中是否采用符号扩展: SXM=0 不采用符号扩展; SXM=l 输入移位器的输出具有符号扩展。符号扩展方式位符号扩展方式位(SXM)图2-3为当SXM=0时,输入数据被左移8位的情况。送入CALU的数据的MSB位被零填充图2-4为当SXM=l时,同样的移位情况。在移位期间,数据具有符号扩展。12哈工程DSP专业课3.3 乘法部分乘法部分 C2XX 使用一个16-bit*l6-bit的硬件乘法器。 它在一个机器周期内可产生一个带符号或不带符号的32bit乘积。13哈工程DSP专业课乘法部分包括:16bit暂存寄存器(TREG)乘法器32bit乘积寄存器(PREG)乘积移位器寄存其中一个被乘数把TREG中的值与数据存储器(或程序存储器)的值相乘接收乘法器的乘积在将PREG的值送入CALU之前,乘积移位器将对PREG值进行定标操作14哈工程DSP专业课3.3.1 乘法器乘法器 在一个机器周期内,16-bit * l6-bit硬件乘法器可以产生一个带符号或不带符号的32-bit乘积。 除在无符号乘法(MPYU指令)周期外,被乘的两个数作二进制补码处理。以下是对乘法器的输入和输出的描述。15哈工程DSP专业课 PREG的输出与32-bit乘积定标移位器相连。经过移位器处理,乘积可以从PREG进入CALU(或数据存储器通过SPH和SPL指令)。输入输入来自数据读总线数据读总线(DRDB)(DRDB)的数据存储器的值。输出输出乘法器接收两个16-bit的输入:总是来自16-bit的暂存寄存器暂存寄存器(TREG)(TREG) 另一个输入为下列数值之一:其中一个输入:在乘法之前,在乘法之前,TREGTREG装载了一个数据读总线装载了一个数据读总线(DRDB)(DRDB)的数值。的数值。乘积寄存器乘积寄存器(PREG)(PREG)用于存储两个用于存储两个16-bit16-bit输入数据相乘之后产生输入数据相乘之后产生的的32-bit32-bit乘积。乘积。来自程序读总线程序读总线(PRDB)(PRDB)的程序存储器的值。16哈工程DSP专业课3.3.2 乘积定标移位器乘积定标移位器 乘积定标移位器(乘积移位器)用于乘积寄存器(PREG)值的定标。输入输入 PREGPREG的输出输出输出 CALUCALU的输入移位器有一个32-bit的输入,它与PREG的输出相连移位器完成移位操作,所有32位的数据被送入CALU,而16位的数据则被存储在数据存储器中。移位方式移位方式乘积定标移位器采用4种乘积移位方式中的一种(参见下表)。17哈工程DSP专业课PM移位描述00不移位乘积进入CALU或数据写总线(DMEB)之前不作移位处理01左移1位移出以二进制补码方式产生的额外符号位以便产生一个Q3110左移4位当与一个13-bit的常数相乘时,移动以一个16-bitXl3-bit的二进制补码相乘方式产生的4个额外符号位以便产生一个Q31+乘积11右移6位对乘积进行定标以便进行多达128次的乘积累加定标,而又使累加器不致溢出。无论状态寄存器ST2的符号扩展方式位(SXM)的值如何,右移方式总是符号扩展的。乘积定标移位器的乘积移位方式注:注:Q31数是一个二进制分数。其中,二进制小数点后有31位数字。注:注:无论状态寄存器ST1的符号扩展方式位(SXM)是为0,还是为l,乘积移位器中进行的右移总是为符号扩展的。18哈工程DSP专业课 移位方式的采用取决于状态寄存器ST1的乘积移位方式(PM)值。第一种移位方式(PM=00)第二、三种方式(PM=01、10)最后一种方式可引起左移位(1位或4位)。 这两种方式有利于进行分数运算或调整乘积。在将乘积送入CALU或数据存储器之前,移位器不对乘积进行移位处理。可使乘积右移6位。 它允许连续进行多达128次的乘/加运算,而不至于引起累加器的溢出。注意,此时注意,此时PREGPREG的内容保持不变;的内容保持不变;该值被拷贝到乘积移位器并在乘该值被拷贝到乘积移位器并在乘积移位器中进行移位处理。积移位器中进行移位处理。19哈工程DSP专业课3.4 中央算术逻辑部分中央算术逻辑部分主要组成中央算术逻辑单元中央算术逻辑单元(CALU)(CALU)32-bit32-bit累加器累加器(ACC)(ACC)输出移位器输出移位器执行一系列的算术和逻辑运算。接收CALU输出,并且可以借助于进位位(C)执行累加器中数值的移位。在将累加器的高位字或低位字的一个拷贝送入数据存储器之前,对该拷贝进行移位处理。图中给出了累加器的高位(ACCH)和低位字(ACCL)。20哈工程DSP专业课 中央算术逻辑单元 21哈工程DSP专业课3.4.1 中央算术逻辑单元中央算术逻辑单元(CALU) 中央算术逻辑单元(CALU)执行一系列的算术和逻辑运算,数字运算是在一个时钟周期内进行。 这些算术和逻辑运算分为四类:位测试、移位和循环它具有独立的算术单元和辅助寄存器算术单元。16-bit加法16-bit减法布尔逻辑运算鉴于CALU可执行布尔运算,因此可以进行位处理。CALU使用累加器进行移位和循环。22哈工程DSP专业课 输入输入CALU有两个输入一个输入总是由32-bit累加器累加器提供另一个输入由以下两个移位器中的一个提供乘积定标移位器乘积定标移位器输入数据定标移位器输入数据定标移位器输出输出CALU输出数据输出数据定标移位器定标移位器32-bit数据存储器数据存储器16-bit累加器累加器32-bit对该运算结果进行移位处理执行一次运算累加器的高16位字和低16位字被分别移位输出输出23哈工程DSP专业课符号扩展方式位符号扩展方式位 对许多(并非所有的)指令而言,符号扩展方式位(SXM),即状态寄存器ST1的第10位,决定着CALU在运算周期内是否采用符号扩展。如果SXM=0,则禁止符号扩展。如果SXM=l,则允许符号扩展。24哈工程DSP专业课3.4.2 累加器累加器下面讨论与累加器相关的状态位和转移指令。状状态态位位进位位进位位(C)(C)溢出方式位溢出方式位(OVM)(OVM)溢出标志位溢出标志位(OV)(OV)检测检测/ /控制状态位控制状态位(TC)(TC) 许多转移指令转移指令可根据C、OV和TC等状态位以及累加器中的数值来完成。25哈工程DSP专业课当累加器加产生一个进位时。当累加器减不产生一个借位时。(例外情况:当SUB指令使用16-bit移位且不产生借位时,则不影响C)。进位位进位位(C)(C)以下情况将影响C(状态寄存器ST1的第9位):与累加器加或减:累加器的单位移位和循环:C=0当累加器减产生一个借位时。当累加器加不产生一个进位时 (例外:当ADD指令使用16-bit移位且不产生进位时,则不影响C)。C=l 在一次左移位或循环期间,累加器的最高有效位被送入C; 在一次右移位或循环期,累加器的最低有效位送入C。26哈工程DSP专业课溢出方式位溢出方式位(OVM)(OVM)OVM(状态寄存器ST0的第11位)决定着累加器算术溢出的情况。当OVM=0,累加器以正常方式溢出。 当累加器处于溢出方式(OVM=1)并且发生一次溢出时,产生下面两种情况:如果溢出方向为正, 则累加器被最大正数值填充(7FFF FFFFh)。如果溢出方向为负, 则累加器被最大负数值填充(8000 0000h)。27哈工程DSP专业课 根据一个测试位的值,TC被置为0或l。 对于NORM指令,如果累加器的两位MSB的异或为真,则TC被置为l。溢出标志位溢出标志位(OV)(OV)OV是状态寄存器ST0的第12位。如果未检测到累加器溢出,则OV为0当溢出(正方向或负方向)发生时,OV为l并被锁存。检测检测/ /控制状态位控制状态位(TC)(TC)TC是状态寄存器ST1的第11位。28哈工程DSP专业课3.4.3 输出数据定标位移器输出数据定标位移器 输出数据定标移位器(输出移位器)有一个32-bit的输入和一个16-bit的输出。它们分别是累加器的32-bit输出和16位的数据总线输入。 输出移位器拷贝累加器的32位数据,并对移位器中的数据执行一次左移(根据相应的存储指令可左移0至7位)。 然后移位器中的高位字(SACH指令)或低位字(SACL指令)被送入数据存储器,累加器内容保持不变。 当输出移位器执行移位时,MSB丢失并且LSB被零填充。29哈工程DSP专业课 图2显示了与图1同样的累加器值被左移6位以及移位后的低位字被存储的情况。 图1显示了累加器值被左移4位以及移位后的高位字被送入数据存储器的情况。图1图230哈工程DSP专业课3.5 辅助寄存器与状态寄存器辅助寄存器与状态寄存器 辅助寄存器算术单元(ARAU)独立于中央算术逻辑单元(CALU)。 它的主要功能是对8个辅助寄存器(从AR7到AR0)执行算术操作。 该操作可与CALU中的操作并行进行。31哈工程DSP专业课ARAU及有关逻辑32哈工程DSP专业课 8个辅助寄存器(AR7-AR0)提供了灵活多变以及功能强大的间接寻址。使用辅助寄存器中的一个16-bit地址就可访问64K数据存储空间的任意单元。 通过向状态寄存器ST0的一个3-bit辅助寄存器指针(ARP)设置一个从0到7的值,就可以选择所需的辅助寄存器。设置数值的方法有它只修改辅助寄存器及ARP它可通过数据读总线DRDB向状态寄存器ST0置入一个数据存储器的值MARMAR指令指令LSTLST指令指令支持间接寻址支持间接寻址的任意指令的任意指令33哈工程DSP专业课 当指令完成后,当前辅助寄存器的内容可通过ARAU执行16位无符号算术运算,实现地址更新。 ARP所指示的寄存器称为当前辅助寄存器或当前AR。在一个指令的处理期,当前辅助寄存器的内容被用作数据存储器的访问地址。 如果指令要求从数据存储器读读,则ARAU就将地址送入数据读地址总线数据读地址总线 如果指令要求向数据存储器写写,则ARAU就将地址送入数据写地址总线数据写地址总线34哈工程DSP专业课3.5.1 ARAU和辅助寄存器功能和辅助寄存器功能ARAU执行以下操作:使辅助寄存器的值增1或减1或增减一个偏移量(通过支持间接寻址的任一指令)。将辅助寄存器值加上一个常量(通过ADRK指令)或使辅助寄存器值减去一个常量(通过SBRK指令)。比较AR0的内容和当前AR的内容,并将比较结果送入状态寄存器ST1的测试/控制状态位(TC)(通过CMPR指令)。通过数据写总线(DWEB)将结果送入TC。常量为一个8位数值,它来自指令字的8个LSB位。35哈工程DSP专业课辅助寄存器辅助寄存器可用作软件可用作软件计数器计数器 辅助寄存器除用于指示数据存储器地址外,它还可用于其它目的。CMPR指令使用辅助寄存器可支持条件转移、调用和返回。CMPR指令将AR0的内容与当前AR的内容进行比较,然后将比较结果置于状态寄存器ST1的测试/控制状态位(TC)。LAR指令向辅助寄存器装载数据SAR指令将AR的值存入数据存储器在必要时可对它们进行增或减操作。37哈工程DSP专业课3.5.2 状态寄存器状态寄存器ST0和和ST1C2XX器件有两个状态寄存器ST0ST0和ST1ST1 这两个寄存器包含状态位和控制位。它们可通过数据存储器存储和装载数据,这样,就可以存储和恢复机器状态。LSTLST指令指令(装载状态寄存器)向ST0和ST1写SSTSST指令指令(存储状态寄存器)从ST0和ST1读INTM位例外,因为它不受LST指令的影响SETCSETC和和CLRCCLRC指令指令可以设置和清除两个寄存器的许多独立位例如符号扩展方式可用SETC SXM置1,可用CLRC SMX清除38哈工程DSP专业课状态寄存器中有几个位被保留;它们通常为逻辑1。 注意:R=读访问;W=写访问;”一”符号后面的值为复位后的值(X为不受复位影响的值)。+为保留位,总是为1。它不受写影响。状态寄存器状态寄存器ST0ST0状态寄存器状态寄存器ST1ST139哈工程DSP专业课命名命名描述描述ARB辅助寄存器指针缓冲器辅助寄存器指针缓冲器辅助寄存器指针缓冲器辅助寄存器指针缓冲器 除在LST(装载状态寄存器)指令期外,每当辅助寄存器指针(AR)被装载,先前的ARP值就被复制到ARB 当ARB通过LST指令被装载时,同样的值也被复制到ARP。ARP辅助寄存器指针辅助寄存器指针辅助寄存器指针辅助寄存器指针它是一个3-bit字段。可以决定在间接寻址方式中使用哪种辅助寄存器。当ARP被装载时,先前的ARP值被复制到ARB寄存器(除在一个LST指令期外)。通过存储器访问指令(使用间接寻址方式)以及通过MAR(修改辅助寄存器)和LST指令可以修改ARP。当ARB通过LST指令被装载时,同样的值被复制到ARP。关于ARP在间接寻址中的使用详情,请参考第4.3章节间接寻址方式。状态寄存器ST0和ST1的位(字段)40哈工程DSP专业课C进位位进位位进位位进位位 如果一次加操作产生了一个进位,则C被设为1;如果一次减操作产生了一个借位,则C被清零。相反地,如果一次加操作不产生一个进位,则C被清零如果一次减操作不产生一个借位,则C被置为1(ADD指令或具有二个16位移位的SUB指令除外)。CNF片内片内片内片内DARAMDARAM配置位配置位配置位配置位 该CNF位决定了可重配置的双存取RAM块是映射到数据空间,还是映射到程序空间。通过SETC CNF,CLRC CNF和LST指令可修改CNF位。复位时,CNF位清零。有关CNF和双存取RAM块的详情,请参考第3章“存储器和I/O空间”。CNF=O可重配置的双存取RAM块被映射到数据空间CNF=l可重配置的双存取RAM块被映射到程序空间41哈工程DSP专业课DP数据页指针数据页指针数据页指针数据页指针 当一个指令采用直接寻址方式时,9-bit的DP字段就与指令字的7个LSB位链接,从而构成一个全16-bit数据存储器地址。有关详情,请参阅第4.2章节直接寻址方式。LST和LDP(装载DP)指令可以修 改DP字段。INTM中断方式位中断方式位中断方式位中断方式位该方式位允许或禁止所有可屏蔽的中断。INT分别通过SETC、INTM和CLRC、INTM指令设置和清除。INTM不影响不可屏中断RS(非)和NMI(非),它也不影响被软件启动的中断。LST(装载状态寄存器)指令不影响INTM(非)。当中断发生时(TRAP指令情况除外),INTM被置1并处于复位状态。INTM=O允许所有非屏蔽的中断被允许。INTM=l禁止所有可屏蔽的中断。42哈工程DSP专业课OV溢出标志位溢出标志位溢出标志位溢出标志位 它保留一个锁存值,该锁存值可指明在CALU中是否己发生溢出。如果CALU中发生溢出,则OV为l。一旦发生溢出,OV位就保留置位状态直到它被复位条件转移指令或LST指令清除。OVW溢出方式位溢出方式位溢出方式位溢出方式位 OVM决定CALU如何处理溢出情况。SETC和CLRC指令可分别设置和清除OVM。LST指令可修改OVM。OVM=0累加器值正常溢出OVM=l在发生溢出时,累加器值被设为最大正值或最大负值PM乘积移位方式乘积移位方式乘积移位方式乘积移位方式 PM决定着在PREG植被送入CALU或数据存储器时PREG值的移位量。注意:PREA的内容保持不变;PREG值被复制到乘积移位器,并在移位器中进行移位处理:可通过SPM和LST指令装载PM。通过复位清除PM。PM=00,乘法器的32-bit乘积被送入CALU或数据存储器,进行移位处理。PM=01,TREG的输出值左移1位(LSB被零填充),然后被送入CALU或数据存储器。PM=10,TREG的输出值左移4位(LSB被零填充)送入CALU或数据存储器。43哈工程DSP专业课SXM符号扩展方式位符号扩展方式位符号扩展方式位符号扩展方式位 SXM不影响某些指令的基本操作。例如,无论SXM存在与否,ADDS指令均可抑制符号扩展。SXM通过SETC,SXM指令被设置位,通过CLRC SXM指令被清除,并可通过LST指令装载。复位可设置SXM为l。SXM=O该方式位抑制符号扩展,SXM=l在数据从输入移位进入累加器时,该方式位使数据产生符号扩展。TCTCTC测试测试测试测试/ /控制标志位控制标志位控制标志位控制标志位TC位可在以下情况下置1:被CMPR测试的比较条件为真,如果使用NORM指令测试时,累加器的2个MSB位的异或为真。根据TC的状态可执行条件转移、调用和返回指令。BIT、BITT、CMPR、LST和NORM指令均可影响TC值。XFXFXF引脚状态位引脚状态位引脚状态位引脚状态位它决定XF引脚的状态。XF引脚是一个通用输出引脚。XF通过SETC指令置1,通过CLRC XF,XF指令清除。XF可被LST指令修改复位时,XF被设为1。44哈工程DSP专业课上一次课主要上一次课主要内容回顾内容回顾3.1 概述概述3.2 输入定标部分输入定标部分输入定标部分输入定标部分3.3 乘法部分乘法部分3.4 中央算术逻辑部分中央算术逻辑部分3.5 辅助寄存器与状态寄存器辅助寄存器与状态寄存器1. C2xx CPU有哪些基本组成,说出个部分的主要功有哪些基本组成,说出个部分的主要功能?2 . C2xx辅助寄存器有几个?主要用作什么功能?辅助寄存器有几个?主要用作什么功能?3. C2xx几个状态寄存器?主要状态信息有哪些?状态寄存器?主要状态信息有哪些?问题?问题?45哈工程DSP专业课本次课教学目的本次课教学目的要求同学理解掌握DSP的中央处理单元的组成和程序控制的原理 理解各状态寄存器的状态位及其作用理解流水线的原理以及转移、调用、返回指令的执行过程理解DSP的中断和复位中断和复位操作前半部分是前半部分是CPUCPU的组成和状态信息的组成和状态信息后半部分是程序控制后半部分是程序控制46哈工程DSP专业课3.6 程序地址生成与流水线程序地址生成与流水线3.7 转移、调用和返回转移、调用和返回3.8 重复指令重复指令3.9 中断与中断管理中断与中断管理3.10复位操作复位操作3.11节能方式节能方式 本次课的主要内容本次课的主要内容47哈工程DSP专业课3.6 程序地址生成与流水线程序地址生成与流水线 在执行当前指令的同时,程序流要求处理器生成下一个程序地址(顺序的或非顺序的)。48哈工程DSP专业课程序地址生成示意图 49哈工程DSP专业课操作程序地址源顺序操作PC(包含程序地址+1)空周期PAR(包含程序地址)从子程序返回栈顶(TOS)从表移动或块移动返回微堆栈(MSTACK)转移到或调用指令设定的地址利用程序读总线(PRDB)方式的转移或调用指令转移到或调用累加器低字所设定的地址利用数据读总线(DRDB)方式的累加低字转移到中断服务程序利用程序读总线(PRDB)方式的中断矢量单元。程序地址生成描述程序地址生成描述50哈工程DSP专业课C2XX程序地址生成逻辑使用以下硬件:程序计数器程序计数器(PC)(PC)C2XX含有一个16-bit的程序计数器(PC)。在提取指令时,PC对内部和外部程序存储器寻址。程序地址寄存器程序地址寄存器(PAR)(PAR)PAR驱动程序地址总线(PAB)。PAB是一个16-bit总线,它提供程序的读、写地址。堆栈堆栈程序地址生成逻辑包括一个16-bit的8级硬件堆栈,用于存储多达8个的返回地址。另外,也可将堆栈用作暂存存储器。微堆栈微堆栈(MSTACK)(MSTACK)有时,程序地址生成逻辑采用16-bit的1级MSTACK来存储一个返回地址。重复计数器重复计数器(RPTC)(RPTC)l6-bit的RPTC可用来确定重复(RPD)指令的重复次数。51哈工程DSP专业课 PC保留将被执行的下一个指令的地址。通过程序地址总线(PAB),可以从该地址(位于程序存储器中)提取一个指令,然后将指令装入指令寄存器。 当指令寄存器被装载时,PC保持下一个地址。3.6.1 程序计数器程序计数器(PC) 程序地址生成逻辑采用16-bit的程序计数器(PC)来对内部和外部程序存储器寻址。52哈工程DSP专业课操作装入PC的地址顺序执行如果当前指令占1个字,则PC装载PC+1;如果当前指令占2个字则PC装载PC+2。转移在执行转移指令后,PC装载操作数(长立即数)子程序调用和返回,PC将下一个指令地址存入堆栈,并将操作数装入PC,返回指令将返回地址从堆栈弹回到PC以便继续执行程序。软件或硬件中断将适当的中断矢量地址装入PC。在该地址单元,转移指令将相应的中断服务程序地址装入PC。计算GOTO累加器低16位的内容被装入PC。使用BACC(转移到累加器中的地址)或CALA(调用累加器指定单元的子程序)指令可以执行计算GOTO操作。装入程序计数器的地址53哈工程DSP专业课 当发生子程序调用或中断时,程序地址生成逻辑使用堆栈存储返回地址。 当一个指令强迫CPU进入子程序或一个中断操作强迫CPU进入中断服务程序时,返回地址被自动装入栈顶;这项工作不需要额外的时间开销。 执行完子程序或中断服务程序后,返回指令将返回地址从栈顶弹回程序计数器。3.6.2 堆栈(堆栈(STACK) 当返回地址不需要8级堆栈时返,堆栈可用来存储子程序或中断服务程序中的有关数据,或用作其它用途的存储器。C2XX具有一个16位的8级硬件堆栈。54哈工程DSP专业课可以用下面两组指令访问堆栈:PUSH指令将累加器的低16位复制到栈顶。PUSHPUSH和和POPPOPPOP指令将栈顶的值送回累加器的低16位。PSHDPSHD和和POPDPOPD 这两条指令允许你在数据存储器中建立一个堆栈,以便处理超过8级的子程序或中断程序嵌套。PSHD指令向栈顶压入一个数据存储器的值。POPD指令则将栈顶的值弹回到数据存储器。55哈工程DSP专业课 每当一个值被压入栈顶,通过一条指令或通过地址生成逻辑时,各级堆栈内容被相应地下压一级,而栈底的内容丢失。因此,如果在POP指令之前发生8次以上的连续压入,则数据将会丢失(发生堆栈溢出)。PUSHPUSH操作操作操作操作56哈工程DSP专业课 POP操作与PUSH操作相反。POP操作将每级堆栈的内容送入上一级的堆栈。经过连续7次POP操作之后的POP操作将得到栈底的值,因此,栈底的值将被逐级复制直到送入累加器或相应的存储单元。POPPOP操作操作操作操作57哈工程DSP专业课 程序地址生成逻辑在执行某些指令之前使用16-bit的一级MSTACK来存储一个返回地址。这些指令使用程序地址生成逻辑为一条两操作数指令提供第二地址。3.6.3 微堆栈微堆栈(MSTACK)BLDD BLPD MAC MACD TBLR TBLW这些指令是:58哈工程DSP专业课 在重复操作时,这些指令使用PC将第一操作数地址加1,并且可以利用辅助寄存器算术单元(ARAU)产生第二操作数地址。 在使用这些指令时,返回地址(提取下一指令地址 )被 压 入 MSTACK。 完 成 这 些 指 令 操 作 后 ,MSTACK值被弹回到程序地址生成逻辑。 MSTACK操作是不可见的。 与堆栈不同的是,微堆栈只能被程序地址生成逻辑所用,MSTACK不能用作存储器。59哈工程DSP专业课3.6.4 3.6.4 流水线操作流水线操作流水线操作流水线操作指令流水线由一系列总线操作组成。C2XX流水线具有4个独立的操作阶段:取指令取指令 译码译码 取操作数取操作数 执行执行 由于4个操作阶段是独立的(因为内部有6套总线),因此,这些操作可以交叠地进行。在任意的指定周期内,1到4个不同的指令均可有效,各条指令均处于一个不同的完成阶段。60哈工程DSP专业课执执行行单单字字、单单周周期期指指令令( (无无等等待待状状态态) )时时的的4 4级级流流水水线线操作示意图操作示意图61哈工程DSP专业课在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯.诺曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,如下图所示,指令1至指令3均为存、取数指令,对冯.诺曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。 如果采用哈佛结构处理以上同样的3条存取数指令,如下图所示,由于取指令和存取数据分别经由不同的存储空间和不同的总线,使得各条指令可以重叠执行,这样,也就克服了数据流传输的瓶颈,提高了运算速度。 62哈工程DSP专业课3.7 转移、调用和返回转移、调用和返回 通过向程序存储器的另一地址单元传送、转移、调用和返回指令,破坏了指令流的顺序。只能向新的地址单元传送指令。将返回地址(调用操作之后的指令地址)压入栈顶。每个被调用的子程序或中断服务程序包含一条返回指令,它便返回地址退出堆栈并返回程序计数器(PC)。转移指令转移指令调用指令调用指令返回指令返回指令65哈工程DSP专业课C2XX具有两种类型的转移、调用和返回:无条件无条件无条件转移、调用或返回无需满足某个特定条件。有条件有条件只有当某个特定条件被满足时,才能执行条件转移、调用或返回。66哈工程DSP专业课3.7.1 无条件转移、调用及返回无条件转移、调用及返回1. 1. 无条件转移无条件转移无条件转移无条件转移 当碰到无条件转移指令时,它总是被无条件执行。 在执行期,将向PC装载指定的程序存储器地址,并在该地址地址处执行程序。 在转移指令进入流水线的执行阶段前,其后的两条指令已被提取,这两条指令将从流水线操作中退出以便它们不被执行,而是从转移地址继续执行无条件转移指令。装装入入PCPC的的地地址址既既可可以以来来自自转转移移指指令令的的第第二二个个字字,也也可可以以来来自自累加器的低累加器的低1616位字。位字。67哈工程DSP专业课无条件转移指令B B转移BACCBACC转移到累加器所指定的地址68哈工程DSP专业课2. 2. 无条件调用无条件调用无条件调用无条件调用当碰到无条件调用指令时,它总是被无条件执行。 在调用指令执行期,将向PC装载指定的程序存储器地址并从这个地址开始执行程序。 PC被装载之前,返回地址被保存在堆栈中。 执行子程序或函数操作之后,返回指令将堆栈中的返回地址装入PC,并继续执行调用之后的指令操作。装装入入PCPC的的地地址址既既可可以以来来自自转转移移指指令令的的第第二二个个字字或或累累加加器器的的低低1616位字。位字。69哈工程DSP专业课 在无条件调用指令进入流水线操作的执行阶段之前,随后的两条指令己被提取。这两条指令将退出流水线操作以使它们不被执行。可以将返回地址存储在堆栈中,并从被调用函数的第一条指令开始继续执行指令操作。无条件调用指令CALLCALLCALACALA调用累加器指定地址单元的子程序70哈工程DSP专业课 在无条件返回指令进入流水线的执行阶段前,随后的两个指令字已被提取。这两条指令将从流水线操作中退出以使它们不被执行。 返回地址将从堆栈中提取,并从该地址开始继续执行程序。3. 无条件返回无条件返回当碰到一个无条件返回(RET)指令时,它总是被无条件执行。 在执行返回指令时,将向PC装载栈顶的值,并从该栈顶值所指定的地址开始继续执行程序。71哈工程DSP专业课 可以将需满足的条件设定为条件指令的操作数。 3.7.2 有条件转移、调用和返回有条件转移、调用和返回 只有当满足一个或多个条件时,才能只有当满足一个或多个条件时,才能执行执行C2XX的条件转移、调用和返回指令。的条件转移、调用和返回指令。72哈工程DSP专业课操作数符号条件条件说明EQACC=0累加器为0NEQACC0累加器不为0LTACC0累加器大于0GEQACC0累加器大于或等于0CC=1进位位为1NCC=0进位位为0OVOV=1累加器溢出NOVOV=0累加器不溢出BIOBIO(非)低引脚为低电平TCTC=1测试/控制标志为1NTCTC=0测试/控制标志为0条件调用和返回的条件列表73哈工程DSP专业课1. 1. 使用多个条件使用多个条件使用多个条件使用多个条件多重条件可被列为条件指令操作数。 如果多重条件被列出,则必须满足所有条件才能执行指令。注意只有某些条件组合才是可用的。74哈工程DSP专业课组组1 1组组2 2A A类类B B类类A A类类B B类类C C类类EQEQOVOVTCTCC CBIOBIONEQNEQNOVNOVNTCNTCNCNCLTLTLEQLEQGTGTGEQGEQ条件分组75哈工程DSP专业课对于每个条件组合,条件必须从以下的Group1和Group2选取:Group1Group1最多可以选择两个条件每个条件必须来自一个不同的目录(A或B);不能从同一个目录选择两个条件。例如可同时测试EQ和OV,但不能同时测试GT和NEQGroup2Group2最多可以选择三个条件每个条件必须来自一个不同的目录(A、B或C);不能从同一个目录选择两个条件。例如可同时测试TC、C和BIO,但不能同时测试C和NC。76哈工程DSP专业课2. 条件的稳定性条件的稳定性条件指令必须条件指令必须能够测试状态能够测试状态位的最新值位的最新值在前一条指令被执行后在前一条指令被执行后的一个周期上,即在流的一个周期上,即在流水线操作的执行阶段以水线操作的执行阶段以前,条件是不稳定的前,条件是不稳定的流水线控制器停止流水线控制器停止对条件指令之后任对条件指令之后任意指令进行译码直意指令进行译码直至到条件趋于稳定至到条件趋于稳定这样因此77哈工程DSP专业课3. 条件转移条件转移 条件转移指令将程序转移到程序存储器的任意单元。 只有当满足一个或多个由用户设定的条件时,才能执行条件转移指令。 如果所有的条件被满足,则PC装载转移指令的第二个字。 该转移指令的第二个字包含了转移地址;并且在该地址继续执行指令。78哈工程DSP专业课 在条件被测试之前,条件转移指令之后的两条指令字己从流水线中被提取。 如果所有的条件被满足,则这两条指令将退出流水线操作,以使它们不被执行,而在转移地址继续执行条件转移指令。 如果条件不被满足,则这两条指令将被执行,而不执行转移指令。 由于条件转移使用的条件是由先前指令的执行结果所确定的,因此,条件转移比无条件转移多用一个周期。79哈工程DSP专业课条件转移指令BCNDBCND有条件转移BANZBANZ当前所选择的辅助寄存器值不等于0时的转移此指令有助于实此指令有助于实 现循环操作。现循环操作。80哈工程DSP专业课4. 条件调用条件调用 只有当满足一个或多个特定条件时才能执行条件调用。这就允许的程序能在多个子程序中进行选择。 如果所有的条件被满足,则向PC装载调用指令的第2个字(它包含子程序的起始地址)。在转移到子程序之前,处理器将把返回地址存储在堆栈中。返回地址是指调用指令的下一个指令地址。 子程序最后必须是一条返回地址。该返回指令将从堆栈中提取返回地址并迫使处理器继续执行调用程序。81哈工程DSP专业课 鉴于需要一个等待周期才能使条件趋于稳定,因此,条件调用比无条件调用多用一周期。 在条件调用指令的条件被测试时,调用指令之后的两条指令字则从流水线中被提取。 如果所有的条件被满足,则这两个指令将从流水线中退出以使它们不被执行,然后从被调用函数的第一条指令开始继续执行条件调用指令。 如果条件不被满足,则这两条指令将被执行,而不是执行调用指令。82哈工程DSP专业课5. 条件返回条件返回 调用或中断将一个返回地址存储到堆栈,然后将程序控制传送到程序存储器中的一个新单元。返回被用于调用和中断。条件返回指令RETCRETC83哈工程DSP专业课 被调用的子程序或中断服务程序包含一个返回指令。该返回指令使返回地址退出堆栈并进入程序计数器(PC)。 只有当1个或多个条件被满足时才能执行条件返回指令(RETC)。 通过使用RETC指令,可以为一个子程序或一个中断服务程序提供一个以上的返回渠道。 如果满足RETC指令执行的所有条件,则处理器将把堆栈中的返回地址装入PC,并继续执行调用或被中断的程序。对返回渠道的选择取对返回渠道的选择取决于被处理的数据。决于被处理的数据。84哈工程DSP专业课 同RET一样,RETC是一个单字指令。然而,由于PC的不连续性,RETC操作的有效执行时间与条件转移(BCND)和条件调用(CC)的有效执行时间一样。 在条件返回指令的条件被测试时,返回指令之后的两个指令字己从流水线中被提取。 如果所有的条件被满足,则这两条指令将退出流水线操作以使这两条指令不被执行而执行调用程序。 如果条件不满足,则执行这两条指令而不执行返回指令。 由于需要一个等待周期才能使条件趋于稳定,因此,条件返回比无条件返回多用一个周期。85哈工程DSP专业课3.8 重复指令重复指令 C2XX重复(RPT)指令允许一条指令的接受次数为N+1次。 当从一个数据存储器单元读取计数值时,RPTC可用作一个16-bit的计数器; 如果计数值被设定为一个操作常数,RPTC为8-bit计数器。N N为为RPTRPT指令的一个操作数。指令的一个操作数。在执行在执行RPTRPT时,时,N N被装入重复计数器被装入重复计数器(RPTC)(RPTC)。 每次执行重复指令时,RPTC值减少1直到RPTC=0。86哈工程DSP专业课 对诸如NORM、MAC和SUBC等指令来说,重复特性是非常有益的,当这些指令被重复时,程序存储器的地址总线和数据总线可以与数据存储器的地址总线,数据总线并行操作,因而可以节约第二操作数的提取时间。 这样,当MACD和BLPD这类指令被重复时就能够在一个单周期内有效地执行。87哈工程DSP专业课 被硬件或软件驱动的中断信号可使C2XX中止当前程序并执行另一个子程序。3.9 中断与中断管理中断与中断管理 中断也可以用于发出信号,表明发出了一个特别事件。 通常,中断是由那些需要向C2XX传送或从C2XX提取数据的硬件设备产生。例如A/DA/D和和D/AD/A转换器转换器以及其它处理器以及其它处理器定时器己完成计数定时器己完成计数例如88哈工程DSP专业课C2XX支持软件和硬件中断软件中断软件中断INTR,NMI或TRAP如可被来自物理器件的一个信号请求这里存在两种类型: 外部硬件中断被外部中断引脚上的信号触发。所有的中断都是负边沿触发的。内部硬件中断来自片内外围的信号触发。可被一条指令请求硬件中断硬件中断89哈工程DSP专业课 如果两种类型的硬件中断同时被触发,则C2XX根据所设置的优先级进行处理。 无论是硬件中断,还是软件中断,它们均置于以下两种方式之一:非屏蔽中断非屏蔽中断 这类中断不能被屏蔽。 C2XX器件将响应这类中断,并从主程序转移到另一个子程序。可屏蔽中断可屏蔽中断 这类中断是硬件中断。通过软件可屏蔽或启动(解除屏蔽)该硬件中断。C2XX非屏蔽中断包括所有的软件中断和两个外部硬件中断:复位(RS)和NMI。90哈工程DSP专业课1个中断方式位(INTM)1个中断向量表与优先级(INTV)2类中断:非屏蔽和可屏蔽中断(例如:/RS、/NMI、INT13)2种中断源(硬件中断、软件中断)3个阶段(请求、处理、响应)3个中断的三个寄存器(IFR、IMR、ICR)1个中断服务程序(IRS)有关中断的总结91哈工程DSP专业课1个中断方式位(INTM)1个中断向量表与优先级(INTV)2类中断:非屏蔽和可屏蔽中断(例如:/RS、/NMI、INT13)2种中断源(硬件中断、软件中断)3个阶段(请求、处理、响应)3个中断的三个寄存器(IFR、IMR、ICR)1个中断服务程序(IRS)有关中断的总结92哈工程DSP专业课3.9.1 中断操作的三个阶段中断操作的三个阶段C2XX分三个主要的阶段来管理中断:确认中断确认中断执行中断执行中断服务程序服务程序接收中断请求接收中断请求来自程序代码的一个软件中断或一个来自引脚或片内器件的硬件中断,请求中止主程序。C2XX必须确认中断请求。如果中断是可屏蔽的,则必须满足某种条件以便C2XX对它进行确认。而对于非屏蔽硬件中断和软件中断来说,确认是立即进行的。 一旦中断被确认,C2XX就转移到其相应的子程序,即中断服务程序(ISR)。C2XX将迫使CPU转移到预先确定的地址单元(中断矢量地址),并执行ISR程序。93哈工程DSP专业课 下表列出了C2XX(除C209外)的中断及其中断矢量地址。另外,该表还列出了每个硬件中断的优先级。 3.9.2 中断表中断表K+向量地址名称优先级功能00hRS(非)1 (最高)硬件复位(不可屏蔽)12hHOLD(非)/INT1(非)4用户可屏蔽中断#124hINT2(非)/ INT3(非)5用户可屏蔽中断#2 和 #336hTINT6用户可屏蔽定时中断48hRINT7用户可屏蔽同步串行口接收中断5AhXINT8用户可屏蔽同步串行口发送中断C2XX中断矢量和优先级94哈工程DSP专业课6ChTXRXINT9用户可屏蔽异步串行口发送/接收中断7Eh10保留810hINT8-用户定义的软件中断912hINT9-用户定义的软件中断1014hINT10-用户定义的软件中断1116hINT11-用户定义的软件中断1218hINT12-用户定义的软件中断131AhINT13-用户定义的软件中断141ChINT14-用户定义的软件中断151EhINT15-用户定义的软件中断1620hINT16-用户定义的软件中断1722hTRAP-TRAP指令向量1824hNMI(非)3不可屏蔽中断1926h2保留2028hINT20-用户定义的软件中断95哈工程DSP专业课212AhINT21-用户定义的软件中断222ChINT22-用户定义的软件中断232EhINT23-用户定义的软件中断2430hINT24-用户定义的软件中断2532hINT25-用户定义的软件中断2634hINT26-用户定义的软件中断2736hINT27-用户定义的软件中断2838hINT28-用户定义的软件中断293AhINT29-用户定义的软件中断303ChINT30-用户定义的软件中断313EhINT31-用户定义的软件中断96哈工程DSP专业课3.9.3 可屏蔽中断可屏蔽中断 当可屏蔽中断被一个硬件设备或一个外部引脚成功地请求时,CPU将设置相应的标志。无论中断是否将被处理器确认,这些标志都将被设置。C2XX器件上有两个含有中断标志位的寄存器中断标志寄存器中断标志寄存器(IFR)(IFR)中断控制寄存器中断控制寄存器(ICR)(ICR)它是一个16-bit的存储器映射寄存器(地址为数据存储器空间的0006h单元)。它是一个16-bit的寄存器,地址为I/O空间的FFECh 。97哈工程DSP专业课 对于除INT2(非)和INT3(非)以外的所有可屏蔽中断,一旦引脚或片内外围发出中断信号,中断请求就被送入CPU。 对于INT2(非)/INT3(非),只有当中断信号不被ICR的屏蔽住所屏蔽时,中断请求才被送入CPU。 IFR含有所有可屏蔽中断的标志位。ICR则包含用于中断和附加的标志位。98哈工程DSP专业课请求INTT2(非)/INT3(非)中断示意图 在CPU接收了一个中断请求后,CPU就必须决定是否确认该请求。 可屏蔽硬件中断只在满足某些条件后才被确认。99哈工程DSP专业课优先级优先级为最高为最高如果同时发生一个以上硬件中断请求,则C2XX就根据所设置的优先级对它们进行处理。其中 1代表最高优先级。IMRIMR屏屏蔽位为蔽位为1 1在中断屏蔽寄存器(IMR)中,中断必须是没有被屏蔽的,IMR是一个16-bit的寄存器,地址为数据存储器空间的0004h。IMR包含了所有可屏蔽中断的屏蔽位。INT2和INT3中断共同使用其中一位。INTMINTM位为位为0 0中断方式(INTM)位,即状态寄存器ST0的第9位,允许或禁止所有可屏蔽中断:INTM=0INTM=0所有非屏蔽中断被允许所有非屏蔽中断被允许INTM=lINTM=l所有非屏蔽中断被禁止所有非屏蔽中断被禁止这些条件包括:100哈工程DSP专业课 当当CPUCPU确认一个中断请求时,确认一个中断请求时,INTMINTM自动自动设置为设置为l l。 通过一个硬件复位或执行一个禁止中断通过一个硬件复位或执行一个禁止中断指令指令(SETC,INTM),INTM(SETC,INTM),INTM可被设置为可被设置为l l。 可以通过执行允许中断指令可以通过执行允许中断指令(CLRC (CLRC INTM)INTM)来清除来清除INTMINTM。 INTMINTM不影响复位。不影响复位。不影响复位。不影响复位。NMI(NMI(非非非非) )或其它软件或其它软件或其它软件或其它软件中断指令(通过中断指令(通过中断指令(通过中断指令(通过TRAPTRAP、NMINMI和和和和INTRINTR指令启指令启指令启指令启动的中断)。动的中断)。动的中断)。动的中断)。 LST( LST(装载状态寄存器装载状态寄存器装载状态寄存器装载状态寄存器) )指令也不影响指令也不影响指令也不影响指令也不影响INTMINTM。 INTMINTM不能修改中断标志寄存器不能修改中断标志寄存器(IFR)(IFR)、中、中断屏蔽寄存器断屏蔽寄存器(IMR)(IMR)或中断控制寄存器或中断控制寄存器(ICR)(ICR)的的内容。内容。101哈工程DSP专业课它将它将INTRINTR指令装入指令总指令装入指令总线,线,INTRINTR指令强迫指令强迫CPUCPU转转移到相应的中断矢量单元移到相应的中断矢量单元当CPU确认一个可屏蔽硬件中断时CPUCPU从程序存储器的中断矢从程序存储器的中断矢量单元提取一条转移指令,量单元提取一条转移指令,从而转入相应的中断服务程从而转入相应的中断服务程序序在在CPUCPU转移到中断服务程序转移到中断服务程序时,时,INTMINTM位被设置为位被设置为1 1,这就阻止了所有其它来自硬这就阻止了所有其它来自硬件的可屏蔽中断的执行件的可屏蔽中断的执行注意INTRINTR指令也指令也可被软件直可被软件直接启动,因接启动,因此,此,INTRINTR指指令也可直接令也可直接启动可屏蔽启动可屏蔽中断的中断中断的中断服务程序。服务程序。102哈工程DSP专业课可屏蔽中断操作示意图103哈工程DSP专业课3.9.4 中断标志寄存器中断标志寄存器(IFR) 16-bit的中断标志寄存器(IFR)被分配在数据存储器空间的0006h地址单元。 IFR包含了所有可屏蔽中断的标志位。当CPU接收到一个可屏蔽中断请求时,IFR中相应的标志置1。这表明中断请求已被挂起或者正等待CPU中断的确认。104哈工程DSP专业课注意:0总是读作0;R=读访问;W1C=向该位写入1将其清0;(一)符号后面的值为复位后的值。C2XX标志寄存器(IFR)-数据存储器地址0006hTXRXINT=0 TXRXINT=l第第615位位 Reserved第615位是保留位并总是为0。第第5位位 TXRXINT(传送传送/接收中断标志接收中断标志) 第5位为异步串行传送接收中断标志位。为避免重复中断,则在中断服务程序中向该位写入1。中断中断TXRXINT未被挂起未被挂起中断中断TXRXINT已被挂起。已被挂起。105哈工程DSP专业课TINT=0TINT=1第第4位位 XINT(传送中断标志传送中断标志) 同步串行口的传送中断位。为避免重复中断,则在中断服务程序中向该位写入1。XINT中断未被挂起中断未被挂起XINT中断己被挂起中断己被挂起XINT=0XINT=1第第3位位 RINT(接收中断标志接收中断标志) 同步串行器的接收中断位。避免重复中断,则在中断服务程序中向该位写入1。RINT中断未被挂起中断未被挂起RINT中断己被挂起。中断己被挂起。RINT=0 RINT=l第第2位位 TINT (定时器中断标志位定时器中断标志位)第二位为定时器中断位。TINT中断未被挂起中断未被挂起TINT中断己被挂起。中断己被挂起。106哈工程DSP专业课第第1位位 INT2(非非)/INT3(非非) 中断中断2/中断中断3标志位。标志位。 INT2(非)引脚和INT3(非)引脚影响第1位。如果INT2(非)有中断请求,则INT2(非)/INT3(非)和(ICR的)FINT2均被自动设为1。如果INT3(非)有中断请求,则INT2(非)/INT3(非)和(ICR的)FINT3均被自动设为1。INT2(INT2(非非非非)/INT3()/INT3(非非非非)=0)=0INT2(非)/INT3(非)均未被挂起INT2(INT2(非非非非)/INT3()/INT3(非非非非)=1)=1 至少有一个中断己被挂起,要想确定是哪个中断己被挂起,或者确定是否两个中断均被挂起,则检测中断控制寄存器(ICR)中的FIN2和FINT3标志位。当CPU确认INT2(非)和INT3(非)时,FINT2和FINT3不被自动清除;它们必须通过中断服务程序来清除。107哈工程DSP专业课第第0位位 HOLD/INT1(保持保持/中断中断1标志位标志位)。 第0位为HOLD(非)或INT1(非)的中断标志位。根据中断控制寄存器中MODE值的不同,对HOLD/INT1引脚的操作也有所不同。当MODE=1时,中断只被引脚上的负沿触发。当MODE=O时,中断可被正沿和负沿触发。 HOLD/INT1=0 HOLD(非非)/INT1(非非)中断未被挂起中断未被挂起HOLD/INT1=lHOLD(非非)/INT1(非非)中断己被挂起中断己被挂起108哈工程DSP专业课可以了解是否有已披挂起的中断.可以清除己披挂起的中断。 如如果果想想清清除除一一个个中中断断请请求求( (并并设设置置其其IFRIFR标标志志位位为为0)0),则则向向其其相相应的应的IFRIFR位写入位写入1 1。 通通过过向向IFRIFR写写IFRIFR的的当当前前内内容容就就可以清除所有己被挂起的中断。可以清除所有己被挂起的中断。确认一个硬件请求也可以清除相应的IFR位。器件复位可清除所有的IFR值。读读IFRIFR写写IFRIFR109哈工程DSP专业课注意 在INTR指令请求中断时,如果相应的IFR位被设置为1,则CPU不能自动清除IFR值。 如果一个应用程序请求清除IFR位,则必须在中断服务程序中清除该IFR位。 为了避免来自同步串行口和异步串行口的重复中断,则应在相应的中断服务程序中清除IFR位(从该中断服务程序返回之前)。110哈工程DSP专业课3.9.5 中断屏蔽寄存器中断屏蔽寄存器(IMR) 16-bit的中断屏蔽寄存器(IMR)被分配在数据存储器空间的00004h地址单元。 IMR用于屏蔽外部和内部的硬件中断。IMR中不含NMI(非)和RS(非),因此,IMR不影响这些中断。111哈工程DSP专业课C2XX(C209除外)的IMR寄存器示意图。 第第515位位 Reserved。第515位 为保留位并总是为0。112哈工程DSP专业课 复位时,IMR位均设为0,这样就屏蔽所有的可屏蔽中断。 若不想屏蔽中断,则设其相若不想屏蔽中断,则设其相应的应的IMRIMR位为位为1 1; 若想屏蔽某个中断,应将它若想屏蔽某个中断,应将它对应的对应的IMRIMR位写为位写为0 0,读读IMRIMR可以检查中断是否己被屏蔽可以检查中断是否己被屏蔽写写IMRIMR可以屏蔽中断或解除中断屏蔽可以屏蔽中断或解除中断屏蔽113哈工程DSP专业课3.9.6 中断控制寄存器中断控制寄存器(ICR) 16-bit的中断控制寄存器(ICR) 地址为I/O空间的FFECh地址单元 中断控制寄存器控制着HOLD(非)/INT1(非)引脚上的操作,并单独控制INT2(非)和INT3(非)中断。114哈工程DSP专业课1. 1. 控制控制HOLD(HOLD(非非)/INT1()/INT1(非非) )引脚引脚 HOLD(非)/INT1(非)引脚用于触发INT1(非)中断,以及向CPU发送一个HOLD信号。 HOLD/INT1的中断矢量地址单元为程序存储器的0002h。115哈工程DSP专业课ICR的MODE位为HOLD(非)/INT1(非)引脚提供两种方式:MODE=0MODE=0MODE=1MODE=1不管MODE的值如何,该引脚均与同一个中断逻辑相连,它启动一个中断服务程序。为区分该引脚上的两种操作,中断服务程序必须测试MODE位的值。引脚为负边沿触发,这样,该此引脚可被适当设置以便启动一个标准的中断(INT1(非)。引脚为负边沿和正边沿触发,这一点对于执行HOLD操作的逻辑运算有必要116哈工程DSP专业课 一一个个中中断断服服务务程程序序 (INT2(非非)和和INT3(非非)中中断断矢矢量量地地址址均均为为程程序序存储器的存储器的0004h单元单元) 。2. 控制控制INT2(非非)和和INT3(非非) INT2(非)和INT3(非)中断均有自己的引脚,然而它们共享: 中中断断标标志志专专用用寄寄存存器器(IFR)中中的同一个标志位的同一个标志位(INT2/INT3)。 中中断断屏屏蔽蔽寄寄存存器器的的(IMR)中中的的同一个屏蔽位。同一个屏蔽位。117哈工程DSP专业课 为了可以单独使用INT2(非)和INT3(非),ICR提供了2个屏蔽位(MINT2和MINT3)和两个标志位(FINT2和FINT3)。 当向INT2(非)和INT3(非)引脚发出中断请求时,MINT2和MINT3确定是否将标志位FINT2、FINT3和INT2/INT3设为1。 如果想屏蔽INT2(非)(阻止标志位FINT2和INT2(非)和INT3(非)被置1),则向MINT2写入0。 如果想屏蔽INT3(非)(阻止标志位FINT3和INT2/INT3被置),则向MINT3写入0。只要INT2/INT3未置为1,CPU就接收不到中断请求。118哈工程DSP专业课当INT2/INT3被置1,则至少有一个中断己被挂起。为了区别究竟发生了哪个中断,可用中为了区别究竟发生了哪个中断,可用中断服务程序测试断服务程序测试FINT2FINT2和和FINT3FINT3,然后转,然后转移到相应的子程序。移到相应的子程序。 如果中断服务程序只是希望响应其中一个中断,则可在ICR中屏蔽另一个中断。通过向ICR标志位(如IFR标志位)写入1,可以清除该标志位。119哈工程DSP专业课第第第第4 4位位位位 MODEMODE引脚模式引脚模式引脚模式引脚模式 第4位为HOLD(非)/INT1(非)引脚模式,可选择下面两个可能模式中的一种模式MODE=0MODE=0( (双沿模式双沿模式双沿模式双沿模式) )HOLD(非)/INT1(非)引脚既是正沿,又是负沿触发,上升沿和下降沿均可触发中断请求,该模式对于完成HOLD操作很有必要。MODE=lMODE=l( (单沿模式单沿模式单沿模式单沿模式) )中断请求只能被HOLD(非) /INT1(非)引脚上的下降沿触发。FNT3=lFNT3=l第第第第3 3位位位位 FINT3FINT3中断中断中断中断3 3标志标志标志标志 如果MINT=3,则INT3(非)引脚上的中断请求将FINT3和IFR的第1位(INT2/INT3)设置为1。INT3(非)未被挂起INT3(非)已被挂起FNT3=0FNT3=0120哈工程DSP专业课MINT3=0MINT3=0MINT3=1MINT3=1第第第第2 2位位位位 FINT2FINT2中断中断中断中断2 2标志标志标志标志 如果MINT2=1,则INT2(非)引脚上的中断请求将FINT2和IFR的第1位(INT2/INT3)设置为1。INT2(非)未被挂起INT2(非)已被挂起INT2=0INT2=0INT2=1INT2=1第第第第1 1位位位位 MINT3MINT3中断中断中断中断3 3屏蔽屏蔽屏蔽屏蔽 第1位屏蔽外部中断INT3(非)或者为与IMR的I/INT3位配合,第1位可解除对INT3(非)的屏蔽。 INT3(非)被屏蔽。 INT3(非)引脚上的中断请求不能将FINT3和IFR的第1位(INT2/INT3)设置为1。 INT3(非)不被屏蔽。 FINT3和INT2/INT3标志位均被INT3(非)引脚上的中断请求设置为1。121哈工程DSP专业课第第0位位 MINT2中断中断2屏蔽屏蔽 第0位屏蔽外部中断INT2(非)或者与IMR的INT2/INT3位配合,第1位可解除对INT2(非)的屏蔽。 MINT2=0 MINT2=0 MINT2=lMINT2=l INT2(非)被屏蔽。 FINT2和IFR的第1位(INT2/INT3)均不被INT2(非)引脚上的中断请求所设置。 INT3(非)不被屏蔽。 FINT3和INT2/INT3标志位均被INT3(非)引脚上的中断请求置为1。122哈工程DSP专业课注意当CPU确认相应的中断时,FINT2和FINT3不被自动清除。如果应用程序需要清除这些标志,则清除必须在中断服务程序中完成。向FINT2和FINT3写入1将把这些位设置为0,但不能清除INT2(非)和INT3(非)的中断请求。欲清除INT2(非)和INT3(非)的中断请求,则需向INT2/INT3位写入1。如果INT2或INT3在ICR中未被屏蔽,则IFR的标志位被置1而不管IMR的第一位(INT2(非)和INT3(非)的值如何。如果IFR的标志位和IMR的标志位被置1,并且INTM位为0(可屏蔽中断被允许),则CPU将确认中断。如果一个中断被IMR和/或ICR屏蔽,则该中断将不被确认(即使INTM=0)。123哈工程DSP专业课复位时,所有ICR位均为零,这意味着:HOLD(非)/INT1(非)引脚既是正边沿触发,又是负边沿触发的(MIDE=0)。FINT2和FINT3标志位被清除。INT2(非)和INT3(非)被屏蔽。124哈工程DSP专业课注意:0总是读作0;R读访问;W=写访问;W1C写入1将该位清0;后的值是复位后的值。C2XX中断控制寄存器(ICR)-I/空间地址FFECh 125哈工程DSP专业课3.9.7 非屏蔽中断非屏蔽中断通过以下两个引脚可以请求硬件非屏蔽中断:RS(RS(非非) )( (复位复位) ) RS(非)是一个能阻止程序流的中断,它使处理器返回一个预定状态,并从地址0000h开始执行程序。 当RS(非)被确认时,状态寄存器ST1的中断模式(INTM)位被设置为1,以禁止其它可屏蔽中断。NMI(NMI(非非) ) 当NMI(非) (NMI(非)引脚,或NMI指令)被激活时,处理器迫使程序控制转向矢量单元24h。另外,可屏蔽中断被禁止(状态寄存器STO的INTM位被置为1)。 尽管NMI使用与可屏蔽中断一样的逻辑,但它是不被屏蔽的。无论INTM位的值如何,NMI(非)产生的中断都会得到响应,不存在NMI(非) 的屏蔽位。如果NMI(非)引脚不被使用,则它应被置为高电平,以防止意外中断。 NMI(非)可被用作软件复位。与硬件复位(RS(非)有所不同的是,NMI(非)既不影响器件的任何模式,也不中止当前有效指令或存储器的操作。126哈工程DSP专业课CPU管理非屏蔽的中断示意图 127哈工程DSP专业课通过以下指令可请求软件中断(非屏蔽的):INTRINTR指令指令 该指令允许启动任何的屏蔽中断,包括用户定义的中断(从INT8到INT6和INT20至INT31)。 指令操作数(K)表示CPU将转移到哪个中断矢量单元。 当INTR中断被确认时,状态寄存器ST1的中断方式(INTM)位被置为1以便禁止其它可屏蔽的中断。注意注意 INTR指令不影响IFR标志。当使用INTR指令启动一个中断时,它既不设置也不清除该标志位。软件与操作不能设置IFR标志位;只有适当的硬件请求可以设置。如果一个硬件请求己经设置了中断标志而又使用INTR指令启动该中断,则INTR指令将不清除IFR标志。128哈工程DSP专业课NMINMI 该指令强迫CPU转移至中断矢量地址24h。 该地址被用于非屏蔽硬件中断NMI(非),因此,可置NMI引脚为低电平或通过执行一条NMI(非)指令来启动NMI(非)中断。当NMI(非)指令被执行时,INTM置l可以禁止所有可屏蔽中断。129哈工程DSP专业课TRAPTRAP 该指令迫使CPU转移到中断矢量地址22h。 TRAP指令不禁止任何可屏蔽中断(INTM不被设置为1),因此当CPU转移到中断服务程序时,该中断服务程序可被可屏蔽硬件中断所中断(RS和NMI除外)。如果INTM位在确认过程中被置1,则所有通过硬件启动的可屏蔽中断被禁止,这样,将不会与该中断服务程序发生冲突。130哈工程DSP专业课 在中断被请求并被确认之后,CPU将根据中断矢量转移到相应的ISR。ISR执行中断任务的程序代码。在执行这些任务的同时,ISR也许还将保存和恢复寄存器的值和管理ISRS嵌套。3.9.8 中断服务程序中断服务程序(ISRS)131哈工程DSP专业课 在CPU进入中断服务程序之前,程序计数器的值是自动存储的。必须对ISR进行设计以便保存并恢复其它重要的寄存器值。例如,如果设计的ISR需要执行一次乘法运算,则它就需要使用乘法寄存器(PREG)。 如果PREG的当前值必须在执行完ISR之后保存在PREG中,则ISR必须保存该值,然后执行新的乘法运算,并存储该结果,然后重新装载原来那个PREG值。 大多数ISRS中,某些寄存器的内容是需要被存储的。如果这样,有必要备份一个通用的保存和恢复程序,然后在每次中断时使用该程序。1. 1. 保存和恢复寄存器值保存和恢复寄存器值保存和恢复寄存器值保存和恢复寄存器值132哈工程DSP专业课2. 管理管理 ISRs嵌套嵌套C2XX硬件堆栈允许 ISRs的嵌套。在考虑ISRS嵌套时,须注意以下几点:如果希望ISR被一个可屏蔽中断所中断,ISR必须通过对IMR位(和ICR值)适当设置和执行允许中断指令(CLRC,INTM)来解除中断屏蔽。8级硬件堆栈。每当执行一个中断或进入一个中断服务程序时,返回地址将被压入硬件堆栈。这就提供了一种返回原来程序的方法。硬件堆栈包含8个单元,这就允许中断或中断服务程序被嵌套8次。(其中一级堆栈是为调试操作所保留的,它被用于断点/单步调试操作。如果使用调试操作,则该级额外堆栈被内部使用)。如果软件需要超过8级的堆栈,则可使用POPD和PSHD指令将堆栈有效地扩展到数据存储器空间。133哈工程DSP专业课如果希望ISR在当前ISR期间发生,而不是在以后发生,则在返回(RET)指令之前的若干条指令中插入CLRC INTM指令。如果不使用ISR嵌套,则可避免堆栈溢出。C2XX具有阻止非常中断嵌套的特性。如果在执行一个CLRC INTM指令期间发生了中断,则C2XX器件总是在处理已挂起的中断之前先完成CLRC INTM和下一条指令。这就确保了在处理一个中断之前,紧随CLRC INTM指令之后的返回指令能得到执行。在新的返回地址被压入堆栈之前,该返回指令将把先前的返回地址弹出栈顶。为了使CPU完成返回操作,在执行尺RET指令之后,中断也将被禁止,直到程序返回后至少一条指令被执行。134哈工程DSP专业课3.9.9 中断等待时间中断等待时间 中断等待时间的长短取决于许多因素,中断等待时间的长度就是提出中断请求到响应请求之间的时间延迟。例如:CPU总是在执行一个软件中断之前完成流水线操作中的所有指令。 讲述决定最小等待时间和可能引起的额外等待时间的诸多因素。 最大等待时间受等待状态和流水线操作保护的影响。本节内容:135哈工程DSP专业课 对于一个外部可屏蔽硬件中断来说,其最小等待时间为8个周期,以实现CPU与外部中断的同步、确认中断以及转移到中断矢量单元。在第9个周期上,中断矢量被提取。 对于一个软件中断来说,最小等待时间为4个周期,以使CPU将程序转移到中断矢量单元。136哈工程DSP专业课1. 1. 流水线操作保护的等待时间流水线操作保护的等待时间流水线操作保护的等待时间流水线操作保护的等待时间多周期指令增加了额外周期以便清空流水线。以下原因可使用指令转化成多周期指令: 外部READY引脚或片内等待状态发生器产生的等待状态,使得来自外部存储器的读、写指令被延迟。 在请求中断时,这些等待状态可能会影响中断请求正在执行的指令,如果中断矢量必须从外部存储器提取,则这些等待状态还会影响到这些中断。137哈工程DSP专业课 如果中断发生在一次HOLD(非)操作期并且中断矢量必须从外部存储器提取,则在HOLDA(非)被解除之前不能提取矢量。 当使用尺RPT执行重复操作时,指令在流水线中被并行执行,并且这些并行操作的有关数据不能保存在中断服务程序中。为了保护被重复操作的有关数据,则CPU锁定除复位以外的所有中断直到完成RPT循环。 多周期指令不能使复位(RS(非)延迟,而NMI(非)可被多周期指令延迟。注意注意:138哈工程DSP专业课2. 2. 堆栈溢出保护的等待时间堆栈溢出保护的等待时间堆栈溢出保护的等待时间堆栈溢出保护的等待时间 每当CPU进入一个中断服务程序或其子程序时,返回地址都将被送入硬件堆栈。然而,C2XX器件可以使硬件堆栈不致溢出。 在程序流中,在程序流中,CLR INTM(CLR INTM(允许可屏蔽中断允许可屏蔽中断) )指令指令及其下一个指令之间不对中断进行处理。这就确保及其下一个指令之间不对中断进行处理。这就确保了在中断被处理之前先执行了在中断被处理之前先执行CLR INTMCLR INTM指令之后的返指令之后的返回指令。回指令。 在新的返回地址被压入堆栈之前,返回指令将在新的返回地址被压入堆栈之前,返回指令将使先前的返回地址退出栈顶。使先前的返回地址退出栈顶。 如果中断是在返回之前发生,则即便堆栈己满,如果中断是在返回之前发生,则即便堆栈己满,新地址仍将被送入硬件堆栈。新地址仍将被送入硬件堆栈。欲使CPU完成返回操作,则在RET指令之后禁止中断,直到程序返回后至少执行一条指令。139哈工程DSP专业课程序控制: (1)程序控制部件 (PCPC、PARPAR、STACKSTACK、MSTACKMSTACK、RPTCRPTC) (2)控制方法 (顺序、转移、调用、返回、指令重复、中断、省电方式) (3)控制条件 (无条件、有条件、条件助记符)流水线(难点) (1)流水线基本原理与优缺点 (2)与程序控制的关系上次课内容总结140哈工程DSP专业课1个中断方式位(INTM)1个中断向量表与优先级(INTV)2类中断:非屏蔽和可屏蔽中断(例如:/RS、/NMI、INT13)2种中断源(硬件中断、软件中断)3个阶段(请求、处理、响应)3个中断的三个寄存器(IFR、IMR、ICR) 有关中断的总结(重点)中断服务程序(IRS)141哈工程DSP专业课3.10 复位操作复位操作复位复位(RS(RS(非非) )是一个非屏蔽外部中断。是一个非屏蔽外部中断。复位可在任何时候将复位可在任何时候将C2XXC2XX设置为一个已知设置为一个已知状态。状态。复位是最高优先级中断,其它中断的发生均复位是最高优先级中断,其它中断的发生均不能优先于复位。不能优先于复位。当机器处于一个未知状态时复位通常在电源当机器处于一个未知状态时复位通常在电源打开之后被启动。由于复位保护可中止存储打开之后被启动。由于复位保护可中止存储器操作并初始化状态位,因此每次复位之后器操作并初始化状态位,因此每次复位之后须重新初始化系统。须重新初始化系统。NMI(NMI(非非) )中断可用作软件复位,它既不中止中断可用作软件复位,它既不中止存储器操作也不初始化状态位。存储器操作也不初始化状态位。142哈工程DSP专业课C2XX器件在经过RS(非)上升沿之后的16个周期后提取第一条指令。处理器在0000h处开始执行操作。0000h地址含有一条转移指令,可使程序转移到系统初始化程序。 将RS(非)置为低电平将导致C2XX终止操作并影响多种寄存器和状态位。 为了在上电之后进行正确的系统操作,RS(非)需要至少6个时钟周期。C2XX器件锁定复位脉冲并产生一个其宽度足以使器件复位的内部复位脉冲。143哈工程DSP专业课当C2XX接收一个复位信号时,发生下列情况:1. 程序控制特性程序控制特性程序计数器被清零,然而,在RS(非)为低电平时,地址总线(Al5-A0)是不确定的。状态寄存器ST0和ST1的状态位装载其复位值:INTM=1、CNF=0、SXM=1、C=1、XF=1和PM=00。(其它状态位未被定义)。INTM(中断方式)位被置1,从而禁止所有可屏蔽的中断。(RS(非)和NMI(非)为不可屏蔽中断)。同时,中断标志寄存器(IFR),中断屏蔽寄存器(IMR)和中断控制寄存器(ICR)被清除。中断控制寄存器(ICR)的MODE位被设为0,这样HOLD(非)/INT1(非)引脚为正沿和负沿触发。重复计数器(RPTC)被清除。144哈工程DSP专业课2. 存储器和存储器和I/O空间空间状态寄存器ST1的CNF(配置控制)位设置为1。这样双存取RAM块B0被映射到数据存储器空间。清除全局存储器分配寄存器(GREG),使所有的存储器为局部存储器。设置等待状态发生器为0FFFH,为外部存储器和I/O访问提供最大的等待状态数。145哈工程DSP专业课定时计数器被设为最大值(0FFFFh),定时器开始减1倒计数。3. 外围外围使同步串行口复位:串行口仿真方式被设为立即停止。错误和状态标志复位。当接收缓冲器不为空时被设置为接收中断。当传送缓冲器可以接收一个或多个字时被设置为传送中断。选定外部时钟和帧同步源。选定连续方式。禁止数字循环方式。启动接收器和传送器。146哈工程DSP专业课使用异步串行口复位:异步串行口仿真方式被设为立即停止。错误和状态标志复位。接收、传送和其它中断被禁止。设定为1个停止位。自动波特校验被禁止。在传输时,TX引脚为高电平。I/O引脚IO0,IO1,IO2和IO3被配置为输入。选择波特率为(CLKOUT1 rate)/16。禁止串行口。CLK寄存器的bit0被清零,以便CLKOUT1引脚输出CLKOUT1信号。147哈工程DSP专业课名称数据存储器地址复位值说明IMR0004h0000h中断屏蔽寄存器GREG0005h0000h全局存储器分配寄存器IFR0006h0000h中断标志寄存器映射到数据空间的片内寄存器复位值148哈工程DSP专业课名称I/O地址复位值说明C209其他C2XXCLK-FFE8h0000hCLKOUT1引脚控制寄存器ICR-FFECh0000h中断控制寄存器SDTR-FFF0hxxxxh同步数据发送与接收寄存器SSPCR-FFF1h0030h同步串行口控制寄存器ADTR-FFF4hxxxxh异步数据发送与接收寄存器ASPCR-FFF5h0000h异步串行口控制寄存器IOSR-FFF6h18xxhI/O状态寄存器BRD-FFF7h0001h波特率除数寄存器TCRFFFChFFF8h0000h定时器控制寄存器PRDFFFDhFFF9hFFFFh定时器周期寄存器TIMFFFEhFFFAhFFFFh定时器技术寄存器WSGRFFFFhFFFCh0FFFh等待状态发生器控制寄存器注:x表示它们不受复位的影响,也与复位时引脚的电平有关。映射到I/O空间的片内寄存器的复位值149哈工程DSP专业课 终止节能方式的方法取决于取决于节能方式是在正常环境下被启动,还是在一次HOLD(非)操作中被启动。3.11 节能方式节能方式 C2XX 器件的节能方式使C2XX核心部分进入休眠方式,并且比正常操作更省电。 执行IDLE指令可启动节能方式。当执行IDLE指令时,程序计数器加1,然后所有的CPU操作被挂起。在C2XX处于节能方式的同时,其内部内容被维护。所有片内RAM的内容保持不变。外围电路继续进行工作。串行口和定时器可以使CPU退出节能状态。如果CLK寄存器的第0位被设为0 ,则CLKOUT1引脚有效。150哈工程DSP专业课1. 节能方式正常终止节能方式正常终止 如果节能方式己被启动,则任何硬件中断(内部的或外部的)均可使处理器退出IDLE状态。 如果使用复位或NMI(非)则CPU将立即执行相应的中断服务程序。 另外,如果使用复位,则寄存器将被设置为复位值。中止节能方式的两种方法的区别:151哈工程DSP专业课INTM=0中断被允许,CPU执行相应的中断服务程序。INTM=1中断被禁止,CPU继续执行IDLE之后的指令。 对于一个节能唤醒处理器的硬件可屏蔽中断来源,它必须是没有被中断屏蔽的寄存器(IMR=1)所屏蔽。 如果中断没有被屏蔽而又发生了中断请求,则不管INTM位(状态寄存器ST0的第9位)的值如何,处理器都将退出IDLE状态。 INTM位的值仅决定节能方式终止之后CPU的执行情况:152哈工程DSP专业课2. 在在HOLD操作期间终止节能方式操作期间终止节能方式 在HOLD操作期,有一个必要的步骤,那就是执行IDLE指令。HOLD操作可影响退出IDLE状态的方式。在执行在执行HOLDHOLD操操作之前,作之前,程序必须程序必须向向MODEMODE位位( (中断控中断控制寄存器制寄存器ICRICR的第的第4 4位写入位写入0 0。使得使得HOLD(HOLD(非非)/INT1()/INT1(非非) )引脚为负引脚为负沿或正沿沿或正沿触发。触发。用用HOLD(HOLD(非非)/INT1()/INT1(非非) )引脚引脚上的下降沿将上的下降沿将迫使迫使CPUCPU转移转移到中断服务程到中断服务程序,该中断服序,该中断服务程序通过务程序通过IDLEIDLE指令启动指令启动HOLDHOLD操作。操作。用用HOLD(HOLD(非非)/INT1()/INT1(非非) )引脚引脚上的上升沿将使上的上升沿将使CPUCPU退出退出IDLEIDLE状状态,并结束态,并结束HOLDHOLD操作。该操作。该上升沿中断会导上升沿中断会导致致CPUCPU转移到中转移到中断服务程序。断服务程序。154哈工程DSP专业课 如果使用复位或NMI(非)则CPU将立即执行相应的中断服务程序。另外,如果使用复位,则某些寄存器的内容将被改变。在HOLD操作期,有三种有效方法可以使CPU退出IDLE状态:利用HOLD(非)/INT1(非)引脚的上升沿。利用复位引脚使系统复位。利用NMI(非)引脚产生非屏蔽中断NMI(非)。155哈工程DSP专业课本章思考与练习题:本章思考与练习题:(1) 试讨论输入移位定标器的作用?输出数据为什么也要定标? (2) DSP乘法器的作用?(3) 计算SXM(移位方式控制字)等于0和1时,下列的16位有符号数据左移6位后其32位结果是什么? 5431 8623 AEDF FF60(4) 试分析F206的32位累加器的动态范围(有符号和无符号数),讨论对无符号数累加多少次才会有发生溢出的可能性?(5) 简述C2xx DSP存储器映射寄存器IMR、GREG、IFR的功能与作用?(6) 试说明流水线的作用?(7) 试分析转移、调用、中断有何异同?(8) 说明为什么DSP可以实现指令重复,指令重复的优点是什么?(9) 简述C2xxDSP可屏蔽中断发生的条件、中断的识别与响应过程?(10) 说明DSP复位信号的作用和时序? 156哈工程DSP专业课
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号