欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    哈工程DSP专业课课件第三章.ppt

    • 资源ID:5694251       资源大小:1.57MB        全文页数:156页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    哈工程DSP专业课课件第三章.ppt

    第三章 TMS320C2XX中央处理单元与程序控制,上一章内容回顾,(1)明确为什么要学习DSP的硬件组成与体系结构,掌握C2xxDSP的硬件组成与体系结构及其特点。(2)解决在编程序时不知道哪些资源是可用的,怎么用?(3)解决硬件设计时,对引脚信号不知道怎么用?怎样发掘芯片的潜能,也就是说器件的优化设计问题和效能最大化的问题。(打下基础),上一章的主要内容:,本章教学目的,要求同学理解掌握DSP的中央处理单元的组成和程序控制的原理 理解各状态寄存器的状态位及其作用理解流水线的原理以及转移、调用、返回指令的执行过程理解DSP的中断和复位操作,3.1 概述3.2 输入定标部分3.3 乘法部分3.4 中央算术逻辑部分3.5 辅助寄存器与状态寄存器3.6 程序地址生成与流水线3.7 转移、调用和返回3.8 重复指令3.9 中断与中断管理3.10复位操作3.11节能方式,本章主要内容,3.1 概述,本章讲述中央处理单元(CPU)的主要组成,CPU的三个基本部分(3.2节3.4节),辅助寄存器算术单元(ARAU)(3.5节),状态寄存器ST0和ST1(3.5节),包括:输入定标部分、乘法部分、中央算术逻辑部分,ARAU实现对8个辅助寄存器的算术运算。,状态寄存器决定处理器工作方式、寻址指针以及显示不同的处理器状态和算术逻辑结果。,节能方式(3.11节),C2XX器件程序控制的特点及其处理过程(3.6节3.10节),涉及到对一个或多个指令块执行顺序的控制,通常,程序流是顺序的,C2XX在连续的程序存储器地址执行指令操作。然而,有时一个程序必须转移到一个非顺序的地址,最后在该新的地址单元顺序地执行指令。为此,C2XX支持转移、调用、返回、重复和中断等操作。,该方式暂停内部程序流并暂时地降低C2XX的功能,C2xx的总体框图,中央算术逻辑单元:CALU 数据地址产生逻辑(ARAU以及8个AR)累加器:ACC 程序地址产生逻辑 用于CALU的输入输出数据比例移位器 16-bit16-bit乘法器乘积比例移位器,CPU的输入比例、中央算术逻辑和乘法部分框图,3.2 输入定标部分,一个32-bit输入数据定标移位器(输入移位器)使一个存储器的16-bit值与32-bit的CALU对齐。对于数据的算术运算和逻辑运算来说,数据的校准很有必要。作为程序(或数据)和CALU之间的数据通道,输入移位器操作不需要额外开销。,下面介绍输入移位器的输入、输出和移位位数。,输入,程序读总线(PRDB)该输入为一个指令操作时给定的常数。,输入移位器的15位到0位接收程序存储器(PRDB)或数据存储器(DRDB)的一个16-bit输入。,输出,在左移期间,移位器中未使用的LSB被零填充,而移位器中的MSB则被零或扩展符填充。,数据读总线(DRDB)该输入为一个来自数据存储器的数据。,接收了一个16-bit数据之后,输入移位器就将该16-bit数据与CALU的32-bit总线对齐:,输入移位器将该16位数据左移016位,然后向CALU送入32位的结果。,移位位数,输入移位器可以将一个16-bit数据左移016位。移位大小(或移位位数)可从以下方式获得:,暂存寄存器(TREG)的4个LSB位基于TREG的移位操作允许动态地确定数据定标因子,以便它能更好地适应系统性能。,在指令字中嵌入一个常数在指令字中设置移位位数,允许执行特定的数据定标或校准操作。,对许多(并非所有的)指令而言,符号扩展方式位(SXM),即状态寄存器ST1的第l0位,决定着在CALU计算中是否采用符号扩展:SXM=0 不采用符号扩展;SXM=l 输入移位器的输出具有符号扩展。,符号扩展方式位(SXM),图2-3为当SXM=0时,输入数据被左移8位的情况。送入CALU的数据的MSB位被零填充,图2-4为当SXM=l时,同样的移位情况。在移位期间,数据具有符号扩展。,3.3 乘法部分,C2XX 使用一个16-bit*l6-bit的硬件乘法器。它在一个机器周期内可产生一个带符号或不带符号的32bit乘积。,乘法部分包括:,16bit暂存寄存器(TREG),乘法器,32bit乘积寄存器(PREG),乘积移位器,寄存其中一个被乘数,把TREG中的值与数据存储器(或程序存储器)的值相乘,接收乘法器的乘积,在将PREG的值送入CALU之前,乘积移位器将对PREG值进行定标操作,3.3.1 乘法器,在一个机器周期内,16-bit*l6-bit硬件乘法器可以产生一个带符号或不带符号的32-bit乘积。除在无符号乘法(MPYU指令)周期外,被乘的两个数作二进制补码处理。,以下是对乘法器的输入和输出的描述。,PREG的输出与32-bit乘积定标移位器相连。经过移位器处理,乘积可以从PREG进入CALU(或数据存储器通过SPH和SPL指令)。,输入,来自数据读总线(DRDB)的数据存储器的值。,输出,乘法器接收两个16-bit的输入:,总是来自16-bit的暂存寄存器(TREG),另一个输入为下列数值之一:,其中一个输入:,在乘法之前,TREG装载了一个数据读总线(DRDB)的数值。,乘积寄存器(PREG),用于存储两个16-bit输入数据相乘之后产生的32-bit乘积。,来自程序读总线(PRDB)的程序存储器的值。,3.3.2 乘积定标移位器,乘积定标移位器(乘积移位器)用于乘积寄存器(PREG)值的定标。,输入 PREG的输出,输出 CALU的输入,移位器有一个32-bit的输入,它与PREG的输出相连,移位器完成移位操作,所有32位的数据被送入CALU,而16位的数据则被存储在数据存储器中。,移位方式,乘积定标移位器采用4种乘积移位方式中的一种(参见下表)。,乘积定标移位器的乘积移位方式,注:Q31数是一个二进制分数。其中,二进制小数点后有31位数字。注:无论状态寄存器ST1的符号扩展方式位(SXM)是为0,还是为l,乘积移位器中进行的右移总是为符号扩展的。,移位方式的采用取决于状态寄存器ST1的乘积移位方式(PM)值。,第一种移位方式(PM=00),第二、三种方式(PM=01、10),最后一种方式,可引起左移位(1位或4位)。这两种方式有利于进行分数运算或调整乘积。,在将乘积送入CALU或数据存储器之前,移位器不对乘积进行移位处理。,可使乘积右移6位。它允许连续进行多达128次的乘/加运算,而不至于引起累加器的溢出。,注意,此时PREG的内容保持不变;该值被拷贝到乘积移位器并在乘积移位器中进行移位处理。,3.4 中央算术逻辑部分,主要组成,中央算术逻辑单元(CALU),32-bit累加器(ACC),输出移位器,执行一系列的算术和逻辑运算。,接收CALU输出,并且可以借助于进位位(C)执行累加器中数值的移位。,在将累加器的高位字或低位字的一个拷贝送入数据存储器之前,对该拷贝进行移位处理。,图中给出了累加器的高位(ACCH)和低位字(ACCL)。,中央算术逻辑单元,3.4.1 中央算术逻辑单元(CALU),中央算术逻辑单元(CALU)执行一系列的算术和逻辑运算,数字运算是在一个时钟周期内进行。这些算术和逻辑运算分为四类:,位测试、移位和循环,它具有独立的算术单元和辅助寄存器算术单元。,16-bit加法,16-bit减法,布尔逻辑运算,鉴于CALU可执行布尔运算,因此可以进行位处理。,CALU使用累加器进行移位和循环。,输入,CALU有两个输入,一个输入总是由32-bit累加器提供,另一个输入由以下两个移位器中的一个提供,乘积定标移位器,输入数据定标移位器,输出,CALU,输出数据定标移位器32-bit,数据存储器16-bit,累加器32-bit,对该运算结果进行移位处理,执行一次运算,累加器的高16位字和低16位字被分别移位,输出,符号扩展方式位,对许多(并非所有的)指令而言,符号扩展方式位(SXM),即状态寄存器ST1的第10位,决定着CALU在运算周期内是否采用符号扩展。如果SXM=0,则禁止符号扩展。如果SXM=l,则允许符号扩展。,3.4.2 累加器,下面讨论与累加器相关的状态位和转移指令。,状态位,进位位(C),溢出方式位(OVM),溢出标志位(OV),检测/控制状态位(TC),许多转移指令可根据C、OV和TC等状态位以及累加器中的数值来完成。,当累加器加产生一个进位时。当累加器减不产生一个借位时。(例外情况:当SUB指令使用16-bit移位且不产生借位时,则不影响C)。,进位位(C),以下情况将影响C(状态寄存器ST1的第9位):,与累加器加或减:,累加器的单位移位和循环:,C=0,当累加器减产生一个借位时。当累加器加不产生一个进位时(例外:当ADD指令使用16-bit移位且不产生进位时,则不影响C)。,C=l,在一次左移位或循环期间,累加器的最高有效位被送入C;在一次右移位或循环期,累加器的最低有效位送入C。,溢出方式位(OVM),OVM(状态寄存器ST0的第11位)决定着累加器算术溢出的情况。,当OVM=0,累加器以正常方式溢出。当累加器处于溢出方式(OVM=1)并且发生一次溢出时,产生下面两种情况:,如果溢出方向为正,则累加器被最大正数值填充(7FFF FFFFh)。,如果溢出方向为负,则累加器被最大负数值填充(8000 0000h)。,根据一个测试位的值,TC被置为0或l。对于NORM指令,如果累加器的两位MSB的异或为真,则TC被置为l。,溢出标志位(OV),OV是状态寄存器ST0的第12位。,如果未检测到累加器溢出,则OV为0,当溢出(正方向或负方向)发生时,OV为l并被锁存。,检测/控制状态位(TC),TC是状态寄存器ST1的第11位。,3.4.3 输出数据定标位移器,输出数据定标移位器(输出移位器)有一个32-bit的输入和一个16-bit的输出。它们分别是累加器的32-bit输出和16位的数据总线输入。,输出移位器拷贝累加器的32位数据,并对移位器中的数据执行一次左移(根据相应的存储指令可左移0至7位)。然后移位器中的高位字(SACH指令)或低位字(SACL指令)被送入数据存储器,累加器内容保持不变。当输出移位器执行移位时,MSB丢失并且LSB被零填充。,图2显示了与图1同样的累加器值被左移6位以及移位后的低位字被存储的情况。,图1显示了累加器值被左移4位以及移位后的高位字被送入数据存储器的情况。,图1,图2,3.5 辅助寄存器与状态寄存器,辅助寄存器算术单元(ARAU)独立于中央算术逻辑单元(CALU)。,它的主要功能是对8个辅助寄存器(从AR7到AR0)执行算术操作。该操作可与CALU中的操作并行进行。,ARAU及有关逻辑,8个辅助寄存器(AR7-AR0)提供了灵活多变以及功能强大的间接寻址。使用辅助寄存器中的一个16-bit地址就可访问64K数据存储空间的任意单元。,通过向状态寄存器ST0的一个3-bit辅助寄存器指针(ARP)设置一个从0到7的值,就可以选择所需的辅助寄存器。,设置数值的方法有,它只修改辅助寄存器及ARP,它可通过数据读总线DRDB向状态寄存器ST0置入一个数据存储器的值,MAR指令,LST指令,支持间接寻址的任意指令,当指令完成后,当前辅助寄存器的内容可通过ARAU执行16位无符号算术运算,实现地址更新。,ARP所指示的寄存器称为当前辅助寄存器或当前AR。在一个指令的处理期,当前辅助寄存器的内容被用作数据存储器的访问地址。,如果指令要求从数据存储器读,则ARAU就将地址送入数据读地址总线,如果指令要求向数据存储器写,则ARAU就将地址送入数据写地址总线,3.5.1 ARAU和辅助寄存器功能,ARAU执行以下操作:,使辅助寄存器的值增1或减1或增减一个偏移量(通过支持间接寻址的任一指令)。,将辅助寄存器值加上一个常量(通过ADRK指令)或使辅助寄存器值减去一个常量(通过SBRK指令)。,比较AR0的内容和当前AR的内容,并将比较结果送入状态寄存器ST1的测试/控制状态位(TC)(通过CMPR指令)。通过数据写总线(DWEB)将结果送入TC。,常量为一个8位数值,它来自指令字的8个LSB位。,通常,例外,地址的产生发生在下一指令的译码之前,ARAU在流水线操作的译码阶段执行算术操作,在处理NORM指令时,对辅助寄存器和/或ARP的修改是在流水线操作的执行阶段进行。,辅助寄存器可用作软件计数器,辅助寄存器除用于指示数据存储器地址外,它还可用于其它目的。,CMPR指令,使用辅助寄存器可支持条件转移、调用和返回。,CMPR指令将AR0的内容与当前AR的内容进行比较,然后将比较结果置于状态寄存器ST1的测试/控制状态位(TC)。,LAR指令,向辅助寄存器装载数据,SAR指令,将AR的值存入数据存储器,在必要时可对它们进行增或减操作。,3.5.2 状态寄存器ST0和ST1,C2XX器件有两个状态寄存器ST0和ST1,这两个寄存器包含状态位和控制位。它们可通过数据存储器存储和装载数据,这样,就可以存储和恢复机器状态。,LST指令(装载状态寄存器),向ST0和ST1写,SST指令(存储状态寄存器),从ST0和ST1读,INTM位例外,因为它不受LST指令的影响,SETC和CLRC指令,可以设置和清除两个寄存器的许多独立位,例如,符号扩展方式可用SETC SXM置1,可用CLRC SMX清除,状态寄存器中有几个位被保留;它们通常为逻辑1。,注意:R=读访问;W=写访问;”一”符号后面的值为复位后的值(X为不受复位影响的值)。+为保留位,总是为1。它不受写影响。,状态寄存器ST0,状态寄存器ST1,状态寄存器ST0和ST1的位(字段),上一次课主要内容回顾,3.1 概述3.2 输入定标部分3.3 乘法部分3.4 中央算术逻辑部分3.5 辅助寄存器与状态寄存器,1.C2xx CPU有哪些基本组成,说出个部分的主要功能?2.C2xx辅助寄存器有几个?主要用作什么功能?3.C2xx几个状态寄存器?主要状态信息有哪些?,问题?,本次课教学目的,要求同学理解掌握DSP的中央处理单元的组成和程序控制的原理 理解各状态寄存器的状态位及其作用理解流水线的原理以及转移、调用、返回指令的执行过程理解DSP的中断和复位操作,前半部分是CPU的组成和状态信息后半部分是程序控制,3.6 程序地址生成与流水线3.7 转移、调用和返回3.8 重复指令3.9 中断与中断管理3.10复位操作3.11节能方式,本次课的主要内容,3.6 程序地址生成与流水线,在执行当前指令的同时,程序流要求处理器生成下一个程序地址(顺序的或非顺序的)。,程序地址生成示意图,程序地址生成描述,C2XX程序地址生成逻辑使用以下硬件:,程序计数器(PC),C2XX含有一个16-bit的程序计数器(PC)。在提取指令时,PC对内部和外部程序存储器寻址。,程序地址寄存器(PAR),PAR驱动程序地址总线(PAB)。PAB是一个16-bit总线,它提供程序的读、写地址。,堆栈,程序地址生成逻辑包括一个16-bit的8级硬件堆栈,用于存储多达8个的返回地址。另外,也可将堆栈用作暂存存储器。,微堆栈(MSTACK),有时,程序地址生成逻辑采用16-bit的1级MSTACK来存储一个返回地址。,重复计数器(RPTC),l6-bit的RPTC可用来确定重复(RPD)指令的重复次数。,PC保留将被执行的下一个指令的地址。通过程序地址总线(PAB),可以从该地址(位于程序存储器中)提取一个指令,然后将指令装入指令寄存器。当指令寄存器被装载时,PC保持下一个地址。,3.6.1 程序计数器(PC),程序地址生成逻辑采用16-bit的程序计数器(PC)来对内部和外部程序存储器寻址。,装入程序计数器的地址,当发生子程序调用或中断时,程序地址生成逻辑使用堆栈存储返回地址。当一个指令强迫CPU进入子程序或一个中断操作强迫CPU进入中断服务程序时,返回地址被自动装入栈顶;这项工作不需要额外的时间开销。执行完子程序或中断服务程序后,返回指令将返回地址从栈顶弹回程序计数器。,3.6.2 堆栈(STACK),当返回地址不需要8级堆栈时返,堆栈可用来存储子程序或中断服务程序中的有关数据,或用作其它用途的存储器。,C2XX具有一个16位的8级硬件堆栈。,可以用下面两组指令访问堆栈:,PUSH指令将累加器的低16位复制到栈顶。,PUSH和POP,POP指令将栈顶的值送回累加器的低16位。,PSHD和POPD,这两条指令允许你在数据存储器中建立一个堆栈,以便处理超过8级的子程序或中断程序嵌套。,PSHD指令向栈顶压入一个数据存储器的值。,POPD指令则将栈顶的值弹回到数据存储器。,每当一个值被压入栈顶,通过一条指令或通过地址生成逻辑时,各级堆栈内容被相应地下压一级,而栈底的内容丢失。因此,如果在POP指令之前发生8次以上的连续压入,则数据将会丢失(发生堆栈溢出)。,PUSH操作,POP操作与PUSH操作相反。POP操作将每级堆栈的内容送入上一级的堆栈。经过连续7次POP操作之后的POP操作将得到栈底的值,因此,栈底的值将被逐级复制直到送入累加器或相应的存储单元。,POP操作,程序地址生成逻辑在执行某些指令之前使用16-bit的一级MSTACK来存储一个返回地址。这些指令使用程序地址生成逻辑为一条两操作数指令提供第二地址。,3.6.3 微堆栈(MSTACK),BLDD BLPD MAC MACD TBLR TBLW,这些指令是:,在重复操作时,这些指令使用PC将第一操作数地址加1,并且可以利用辅助寄存器算术单元(ARAU)产生第二操作数地址。在使用这些指令时,返回地址(提取下一指令地址)被压入MSTACK。完成这些指令操作后,MSTACK值被弹回到程序地址生成逻辑。,MSTACK操作是不可见的。与堆栈不同的是,微堆栈只能被程序地址生成逻辑所用,MSTACK不能用作存储器。,3.6.4 流水线操作,指令流水线由一系列总线操作组成。,C2XX流水线具有4个独立的操作阶段:,取指令 译码 取操作数 执行,由于4个操作阶段是独立的(因为内部有6套总线),因此,这些操作可以交叠地进行。在任意的指定周期内,1到4个不同的指令均可有效,各条指令均处于一个不同的完成阶段。,执行单字、单周期指令(无等待状态)时的4级流水线操作示意图,在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯.诺曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,如下图所示,指令1至指令3均为存、取数指令,对冯.诺曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。,如果采用哈佛结构处理以上同样的3条存取数指令,如下图所示,由于取指令和存取数据分别经由不同的存储空间和不同的总线,使得各条指令可以重叠执行,这样,也就克服了数据流传输的瓶颈,提高了运算速度。,流水线操作一般是不可见的,但下列情况例外:,在修改全局存储器分配寄存器(GREG)之后,一条单字、单周期指令立即使用先前的全局映射方向。,在流水线操作的执行阶段,NORM指令修改辅助寄存器指针(ARP),并使用当前辅助寄存器(被ARP指明的)。,如果随后的两个指令字要改变当前辅助寄存器的内容或ARP,则它们将在流水线操作的译码阶段进行(在执NORM指令之前)。这将导致NORM指令使用错误的辅助寄存器值,并导致随后的指令使用错误的ARP值,C2XX CPU的两相操作由正相和负相组成。正相里执行所有的交换逻辑;负相里锁存结果。尽管顺序操作需要多级流水线来完成,但两相操作为计算逻辑的执行提供了更多的时间。这使得C2XX能以更快的时钟频率运行。,CPU是采用正、负两相静态逻辑的。,3.7 转移、调用和返回,通过向程序存储器的另一地址单元传送、转移、调用和返回指令,破坏了指令流的顺序。,只能向新的地址单元传送指令。,将返回地址(调用操作之后的指令地址)压入栈顶。,每个被调用的子程序或中断服务程序包含一条返回指令,它便返回地址退出堆栈并返回程序计数器(PC)。,转移指令,调用指令,返回指令,C2XX具有两种类型的转移、调用和返回:,无条件,无条件转移、调用或返回无需满足某个特定条件。,有条件,只有当某个特定条件被满足时,才能执行条件转移、调用或返回。,3.7.1 无条件转移、调用及返回,1.无条件转移,当碰到无条件转移指令时,它总是被无条件执行。,在执行期,将向PC装载指定的程序存储器地址,并在该地址处执行程序。,在转移指令进入流水线的执行阶段前,其后的两条指令已被提取,这两条指令将从流水线操作中退出以便它们不被执行,而是从转移地址继续执行无条件转移指令。,装入PC的地址既可以来自转移指令的第二个字,也可以来自累加器的低16位字。,无条件转移指令,B,转移,BACC,转移到累加器所指定的地址,2.无条件调用,当碰到无条件调用指令时,它总是被无条件执行。,在调用指令执行期,将向PC装载指定的程序存储器地址并从这个地址开始执行程序。,PC被装载之前,返回地址被保存在堆栈中。执行子程序或函数操作之后,返回指令将堆栈中的返回地址装入PC,并继续执行调用之后的指令操作。,装入PC的地址既可以来自转移指令的第二个字或累加器的低16位字。,在无条件调用指令进入流水线操作的执行阶段之前,随后的两条指令己被提取。这两条指令将退出流水线操作以使它们不被执行。可以将返回地址存储在堆栈中,并从被调用函数的第一条指令开始继续执行指令操作。,无条件调用指令,CALL,CALA,调用累加器指定地址单元的子程序,在无条件返回指令进入流水线的执行阶段前,随后的两个指令字已被提取。这两条指令将从流水线操作中退出以使它们不被执行。返回地址将从堆栈中提取,并从该地址开始继续执行程序。,3.无条件返回,当碰到一个无条件返回(RET)指令时,它总是被无条件执行。,在执行返回指令时,将向PC装载栈顶的值,并从该栈顶值所指定的地址开始继续执行程序。,可以将需满足的条件设定为条件指令的操作数。,3.7.2 有条件转移、调用和返回,只有当满足一个或多个条件时,才能执行C2XX的条件转移、调用和返回指令。,条件调用和返回的条件列表,1.使用多个条件,多重条件可被列为条件指令操作数。,如果多重条件被列出,则必须满足所有条件才能执行指令。,注意,只有某些条件组合才是可用的。,条件分组,对于每个条件组合,条件必须从以下的Group1和Group2选取:,Group1,最多可以选择两个条件,每个条件必须来自一个不同的目录(A或B);不能从同一个目录选择两个条件。,例如,可同时测试EQ和OV,但不能同时测试GT和NEQ,Group2,最多可以选择三个条件,每个条件必须来自一个不同的目录(A、B或C);不能从同一个目录选择两个条件。,例如,可同时测试TC、C和BIO,但不能同时测试C和NC。,2.条件的稳定性,条件指令必须能够测试状态位的最新值,在前一条指令被执行后的一个周期上,即在流水线操作的执行阶段以前,条件是不稳定的,流水线控制器停止对条件指令之后任意指令进行译码直至到条件趋于稳定,这样,因此,3.条件转移,条件转移指令将程序转移到程序存储器的任意单元。,只有当满足一个或多个由用户设定的条件时,才能执行条件转移指令。,如果所有的条件被满足,则PC装载转移指令的第二个字。该转移指令的第二个字包含了转移地址;并且在该地址继续执行指令。,在条件被测试之前,条件转移指令之后的两条指令字己从流水线中被提取。,如果所有的条件被满足,则这两条指令将退出流水线操作,以使它们不被执行,而在转移地址继续执行条件转移指令。,如果条件不被满足,则这两条指令将被执行,而不执行转移指令。,由于条件转移使用的条件是由先前指令的执行结果所确定的,因此,条件转移比无条件转移多用一个周期。,条件转移指令,BCND,有条件转移,BANZ,当前所选择的辅助寄存器值不等于0时的转移,此指令有助于实 现循环操作。,4.条件调用,只有当满足一个或多个特定条件时才能执行条件调用。这就允许的程序能在多个子程序中进行选择。,如果所有的条件被满足,则向PC装载调用指令的第2个字(它包含子程序的起始地址)。在转移到子程序之前,处理器将把返回地址存储在堆栈中。,返回地址是指调用指令的下一个指令地址。,子程序最后必须是一条返回地址。该返回指令将从堆栈中提取返回地址并迫使处理器继续执行调用程序。,鉴于需要一个等待周期才能使条件趋于稳定,因此,条件调用比无条件调用多用一周期。,在条件调用指令的条件被测试时,调用指令之后的两条指令字则从流水线中被提取。,如果所有的条件被满足,则这两个指令将从流水线中退出以使它们不被执行,然后从被调用函数的第一条指令开始继续执行条件调用指令。,如果条件不被满足,则这两条指令将被执行,而不是执行调用指令。,5.条件返回,调用或中断将一个返回地址存储到堆栈,然后将程序控制传送到程序存储器中的一个新单元。,返回被用于调用和中断。,条件返回指令,RETC,被调用的子程序或中断服务程序包含一个返回指令。该返回指令使返回地址退出堆栈并进入程序计数器(PC)。,只有当1个或多个条件被满足时才能执行条件返回指令(RETC)。,通过使用RETC指令,可以为一个子程序或一个中断服务程序提供一个以上的返回渠道。,如果满足RETC指令执行的所有条件,则处理器将把堆栈中的返回地址装入PC,并继续执行调用或被中断的程序。,对返回渠道的选择取决于被处理的数据。,同RET一样,RETC是一个单字指令。然而,由于PC的不连续性,RETC操作的有效执行时间与条件转移(BCND)和条件调用(CC)的有效执行时间一样。,在条件返回指令的条件被测试时,返回指令之后的两个指令字己从流水线中被提取。,如果所有的条件被满足,则这两条指令将退出流水线操作以使这两条指令不被执行而执行调用程序。,如果条件不满足,则执行这两条指令而不执行返回指令。,由于需要一个等待周期才能使条件趋于稳定,因此,条件返回比无条件返回多用一个周期。,3.8 重复指令,C2XX重复(RPT)指令允许一条指令的接受次数为N+1次。,当从一个数据存储器单元读取计数值时,RPTC可用作一个16-bit的计数器;如果计数值被设定为一个操作常数,RPTC为8-bit计数器。,N为RPT指令的一个操作数。在执行RPT时,N被装入重复计数器(RPTC)。,每次执行重复指令时,RPTC值减少1直到RPTC=0。,对诸如NORM、MAC和SUBC等指令来说,重复特性是非常有益的,当这些指令被重复时,程序存储器的地址总线和数据总线可以与数据存储器的地址总线,数据总线并行操作,因而可以节约第二操作数的提取时间。这样,当MACD和BLPD这类指令被重复时就能够在一个单周期内有效地执行。,被硬件或软件驱动的中断信号可使C2XX中止当前程序并执行另一个子程序。,3.9 中断与中断管理,中断也可以用于发出信号,表明发出了一个特别事件。,通常,中断是由那些需要向C2XX传送或从C2XX提取数据的硬件设备产生。,例如,A/D和D/A转换器以及其它处理器,定时器己完成计数,例如,C2XX支持软件和硬件中断,软件中断,INTR,NMI或TRAP,如,可被来自物理器件的一个信号请求,这里存在两种类型:,外部硬件中断被外部中断引脚上的信号触发。所有的中断都是负边沿触发的。,内部硬件中断来自片内外围的信号触发。,可被一条指令请求,硬件中断,如果两种类型的硬件中断同时被触发,则C2XX根据所设置的优先级进行处理。,无论是硬件中断,还是软件中断,它们均置于以下两种方式之一:,非屏蔽中断,这类中断不能被屏蔽。C2XX器件将响应这类中断,并从主程序转移到另一个子程序。,可屏蔽中断,这类中断是硬件中断。通过软件可屏蔽或启动(解除屏蔽)该硬件中断。,C2XX非屏蔽中断包括所有的软件中断和两个外部硬件中断:复位(RS)和NMI。,1个中断方式位(INTM)1个中断向量表与优先级(INTV)2类中断:非屏蔽和可屏蔽中断(例如:/RS、/NMI、INT13)2种中断源(硬件中断、软件中断)3个阶段(请求、处理、响应)3个中断的三个寄存器(IFR、IMR、ICR)1个中断服务程序(IRS),有关中断的总结,1个中断方式位(INTM)1个中断向量表与优先级(INTV)2类中断:非屏蔽和可屏蔽中断(例如:/RS、/NMI、INT13)2种中断源(硬件中断、软件中断)3个阶段(请求、处理、响应)3个中断的三个寄存器(IFR、IMR、ICR)1个中断服务程序(IRS),有关中断的总结,3.9.1 中断操作的三个阶段,C2XX分三个主要的阶段来管理中断:,确认中断,执行中断服务程序,接收中断请求,来自程序代码的一个软件中断或一个来自引脚或片内器件的硬件中断,请求中止主程序。,C2XX必须确认中断请求。如果中断是可屏蔽的,则必须满足某种条件以便C2XX对它进行确认。而对于非屏蔽硬件中断和软件中断来说,确认是立即进行的。,一旦中断被确认,C2XX就转移到其相应的子程序,即中断服务程序(ISR)。C2XX将迫使CPU转移到预先确定的地址单元(中断矢量地址),并执行ISR程序。,下表列出了C2XX(除C209外)的中断及其中断矢量地址。另外,该表还列出了每个硬件中断的优先级。,3.9.2 中断表,C2XX中断矢量和优先级,3.9.3 可屏蔽中断,当可屏蔽中断被一个硬件设备或一个外部引脚成功地请求时,CPU将设置相应的标志。无论中断是否将被处理器确认,这些标志都将被设置。,C2XX器件上有两个含有中断标志位的寄存器,中断标志寄存器(IFR),中断控制寄存器(ICR),它是一个16-bit的存储器映射寄存器(地址为数据存储器空间的0006h单元)。,它是一个16-bit的寄存器,地址为I/O空间的FFECh。,对于除INT2(非)和INT3(非)以外的所有可屏蔽中断,一旦引脚或片内外围发出中断信号,中断请求就被送入CPU。对于INT2(非)/INT3(非),只有当中断信号不被ICR的屏蔽住所屏蔽时,中断请求才被送入CPU。,IFR含有所有可屏蔽中断的标志位。,ICR则包含用于中断和附加的标志位。,请求INTT2(非)/INT3(非)中断示意图,在CPU接收了一个中断请求后,CPU就必须决定是否确认该请求。可屏蔽硬件中断只在满足某些条件后才被确认。,优先级为最高,如果同时发生一个以上硬件中断请求,则C2XX就根据所设置的优先级对它们进行处理。其中 1代表最高优先级。,IMR屏蔽位为1,在中断屏蔽寄存器(IMR)中,中断必须是没有被屏蔽的,IMR是一个16-bit的寄存器,地址为数据存储器空间的0004h。IMR包含了所有可屏蔽中断的屏蔽位。INT2和INT3中断共同使用其中一位。,INTM位为0,中断方式(INTM)位,即状态寄存器ST0的第9位,允许或禁止所有可屏蔽中断:,INTM=0所有非屏蔽中断被允许,INTM=l所有非屏蔽中断被禁止,这些条件包括:,它将INTR指令装入指令总线,INTR指令强迫CPU转移到相应的中断矢量单元,当CPU确认一个可屏蔽硬件中断时,CPU从程序存储器的中断矢量单元提取一条转移指令,从而转入相应的中断服务程序,在CPU转移到中断服务程序时,INTM位被设置为1,这就阻止了所有其它来自硬件的可屏蔽中断的执行,注意,INTR指令也可被软件直接启动,因此,INTR指令也可直接启动可屏蔽中断的中断服务程序。,可屏蔽中断操作示意图,3.9.4 中断标志寄存器(IFR),16-bit的中断标志寄存器(IFR)被分配在数据存储器空间的0006h地址单元。,IFR包含了所有可屏蔽中断的标志位。当CPU接收到一个可屏蔽中断请求时,IFR中相应的标志置1。这表明中断请求已被挂起或者正等待CPU中断的确认。,注意:0总是读作0;R=读访问;W1C=向该位写入1将其清0;(一)符号后面的值为复位后的值。,C2XX标志寄存器(IFR)-数据存储器地址0006h,TXRXINT=0 TXRXINT=l,第615位 Reserved,第615位是保留位并总是为0。,第5位 TXRXINT(传送/接收中断标志),第5位为异步串行传送接收中断标志位。为避免重复中断,则在中断服务程序中向该位写入1。,中断TXRXINT未被挂起,中断TXRXINT已被挂起。,TINT=0TINT=1,第4位 XINT(传送中断标志),同步串行口的传送中断位。为避免重复中断,则在中断服务程序中向该位写入1。,XINT中断未被挂起,XINT中断己被挂起,XINT=0XINT=1,第3位 RINT(接收中断标志),同步串行器的接收中断位。避免重复中断,则在中断服务程序中向该位写入1。,RINT中断未被挂起,RINT中断己被挂起。,RINT=0 RINT=l,第2位 TINT(定时器中断标志位),第二位为定时器中断位。,TINT中断未被挂起,TINT中断己被挂起。,第1位 INT2(非)/INT3(非)中断2/中断3标志位。,INT2(非)引脚和INT3(非)引脚影响第1位。如果INT2(非)有中断请求,则INT2(非)/INT3(非)和(ICR的)FINT2均被自动设为1。如果INT3(非)有中断请求,则INT2(非)/INT3(非)和(ICR的)FINT3均被自动设为1。,INT2(非)/INT3(非)=0,INT2(非)/INT3(非)均未被挂起,INT2(非)/INT3(非)=1,至少有一个中断己被挂起,要想确定是哪个中断己被挂起,或者确定是否两个中断均被挂起,则检测中断控制寄存器(ICR)中的FIN2和FINT3标志位。当CPU确认INT2(非)和INT3(非)时,FINT2和FINT3不被自动清除;它们必须通过中断服务程序来清除。,第0位 HOLD/INT1(保持/中断1标志位)。,第0位为HOLD(非)或INT1(非)的中断标志位。根据中断控制寄存器中MODE值的不同,对HOLD/INT1引脚的操作也有所不同。当MODE=1时,中断只被引脚上的负沿触发。当MODE=O时,中断可被正沿和负沿触发。,HOLD/INT1=0,HOLD(非)/INT1(非)中断未被挂起,HOLD/INT1=l,HOLD(非)/INT1(非)中断己被挂起,可以了解是否有已披挂起的中断.,可以清除己披挂起的中断。,如果想清除一个中断请求(并设置其IFR标志位为0),则向其相应的IFR位写入1。通过向IFR写IFR的当前内容就可以清除所有己被挂起的中断。,确认一个硬件请求也可以清除相应的IFR位。,器件复位可清除所有的IFR值。,读IFR,写IFR,注意,在INTR指令请求中断时,如果相应的IFR位被设置为1,则CPU不能自动清除IFR值。如果一个应用程序请求清除IFR位,则必须在中断服务程序中清除该IFR位。,为了避免来自同步串行口和异步串行口的重复中断,则应在相应的中断服务程序中清除IFR位(从该中断服务程序返回之前)。,3.9.5 中断屏蔽寄存器(IMR),16-bit的中断屏蔽寄存器(IMR)被分配在数据存储器空间的00004h地址单元。,IMR用于屏蔽外部和内部的硬件中断。IMR中不含NMI(非)和RS(非),因此,IMR不影响这些中断。,C2XX(C209除外)的IMR寄存器示意图。,第515位 Reserved。,第515位 为保留位并总是为0。,复位时,IMR位均设为0,这样就屏蔽所有的可屏蔽中断。,若不想屏蔽中断,则设其相应的IMR位为1;若想屏蔽某个中断,应将它对应的IMR位写为0,,读IMR,可以检查中断是否己被屏蔽,写IMR,可以屏蔽中断或解除中断屏蔽,3.9.6 中断控制寄存器(ICR),16-bit的中断控制寄存器(ICR)地址为I/O空间的FFECh地址单元,中断控制寄存器控制着HOLD(非)/INT1(非)引脚上的操作,并单独控制INT2(非)和INT3(非)中断。,1.控制HOLD(非)/INT1(非)引脚,HOLD(非)/INT1(非)引脚用于触发INT1(非)中断,以及向CPU发送一个HOLD信号。,HOLD/INT1的中断矢量地址单元为程序存储器的0002h。,ICR的MODE位为HOLD(非)/INT1(非

    注意事项

    本文(哈工程DSP专业课课件第三章.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开