哈工程DSP专业课课件第三章.ppt
《哈工程DSP专业课课件第三章.ppt》由会员分享,可在线阅读,更多相关《哈工程DSP专业课课件第三章.ppt(156页珍藏版)》请在三一办公上搜索。
1、第三章 TMS320C2XX中央处理单元与程序控制,上一章内容回顾,(1)明确为什么要学习DSP的硬件组成与体系结构,掌握C2xxDSP的硬件组成与体系结构及其特点。(2)解决在编程序时不知道哪些资源是可用的,怎么用?(3)解决硬件设计时,对引脚信号不知道怎么用?怎样发掘芯片的潜能,也就是说器件的优化设计问题和效能最大化的问题。(打下基础),上一章的主要内容:,本章教学目的,要求同学理解掌握DSP的中央处理单元的组成和程序控制的原理 理解各状态寄存器的状态位及其作用理解流水线的原理以及转移、调用、返回指令的执行过程理解DSP的中断和复位操作,3.1 概述3.2 输入定标部分3.3 乘法部分3.
2、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、(3.6节3.10节),涉及到对一个或多个指令块执行顺序的控制,通常,程序流是顺序的,C2XX在连续的程序存储器地址执行指令操作。然而,有时一个程序必须转移到一个非顺序的地址,最后在该新的地址单元顺序地执行指令。为此,C2XX支持转移、调用、返回、重复和中断等操作。,该方式暂停内部程序流并暂时地降低C2XX的功能,C2xx的总体框图,中央算术逻辑单元:CALU 数据地址产生逻辑(ARAU以及8个AR)累加器:ACC 程序地址产生逻辑 用于CALU的输入输出数据比例移位器 16-bit16-bit乘法器乘积比例移位器,CPU的输入比例、中央算术逻辑和乘法部分框图,3.2 输入定标部分,一个32-
4、bit输入数据定标移位器(输入移位器)使一个存储器的16-bit值与32-bit的CALU对齐。对于数据的算术运算和逻辑运算来说,数据的校准很有必要。作为程序(或数据)和CALU之间的数据通道,输入移位器操作不需要额外开销。,下面介绍输入移位器的输入、输出和移位位数。,输入,程序读总线(PRDB)该输入为一个指令操作时给定的常数。,输入移位器的15位到0位接收程序存储器(PRDB)或数据存储器(DRDB)的一个16-bit输入。,输出,在左移期间,移位器中未使用的LSB被零填充,而移位器中的MSB则被零或扩展符填充。,数据读总线(DRDB)该输入为一个来自数据存储器的数据。,接收了一个16-b
5、it数据之后,输入移位器就将该16-bit数据与CALU的32-bit总线对齐:,输入移位器将该16位数据左移016位,然后向CALU送入32位的结果。,移位位数,输入移位器可以将一个16-bit数据左移016位。移位大小(或移位位数)可从以下方式获得:,暂存寄存器(TREG)的4个LSB位基于TREG的移位操作允许动态地确定数据定标因子,以便它能更好地适应系统性能。,在指令字中嵌入一个常数在指令字中设置移位位数,允许执行特定的数据定标或校准操作。,对许多(并非所有的)指令而言,符号扩展方式位(SXM),即状态寄存器ST1的第l0位,决定着在CALU计算中是否采用符号扩展:SXM=0 不采用符
6、号扩展;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的值送入C
7、ALU之前,乘积移位器将对PREG值进行定标操作,3.3.1 乘法器,在一个机器周期内,16-bit*l6-bit硬件乘法器可以产生一个带符号或不带符号的32-bit乘积。除在无符号乘法(MPYU指令)周期外,被乘的两个数作二进制补码处理。,以下是对乘法器的输入和输出的描述。,PREG的输出与32-bit乘积定标移位器相连。经过移位器处理,乘积可以从PREG进入CALU(或数据存储器通过SPH和SPL指令)。,输入,来自数据读总线(DRDB)的数据存储器的值。,输出,乘法器接收两个16-bit的输入:,总是来自16-bit的暂存寄存器(TREG),另一个输入为下列数值之一:,其中一个输入:,在
8、乘法之前,TREG装载了一个数据读总线(DRDB)的数值。,乘积寄存器(PREG),用于存储两个16-bit输入数据相乘之后产生的32-bit乘积。,来自程序读总线(PRDB)的程序存储器的值。,3.3.2 乘积定标移位器,乘积定标移位器(乘积移位器)用于乘积寄存器(PREG)值的定标。,输入 PREG的输出,输出 CALU的输入,移位器有一个32-bit的输入,它与PREG的输出相连,移位器完成移位操作,所有32位的数据被送入CALU,而16位的数据则被存储在数据存储器中。,移位方式,乘积定标移位器采用4种乘积移位方式中的一种(参见下表)。,乘积定标移位器的乘积移位方式,注:Q31数是一个二
9、进制分数。其中,二进制小数点后有31位数字。注:无论状态寄存器ST1的符号扩展方式位(SXM)是为0,还是为l,乘积移位器中进行的右移总是为符号扩展的。,移位方式的采用取决于状态寄存器ST1的乘积移位方式(PM)值。,第一种移位方式(PM=00),第二、三种方式(PM=01、10),最后一种方式,可引起左移位(1位或4位)。这两种方式有利于进行分数运算或调整乘积。,在将乘积送入CALU或数据存储器之前,移位器不对乘积进行移位处理。,可使乘积右移6位。它允许连续进行多达128次的乘/加运算,而不至于引起累加器的溢出。,注意,此时PREG的内容保持不变;该值被拷贝到乘积移位器并在乘积移位器中进行移
10、位处理。,3.4 中央算术逻辑部分,主要组成,中央算术逻辑单元(CALU),32-bit累加器(ACC),输出移位器,执行一系列的算术和逻辑运算。,接收CALU输出,并且可以借助于进位位(C)执行累加器中数值的移位。,在将累加器的高位字或低位字的一个拷贝送入数据存储器之前,对该拷贝进行移位处理。,图中给出了累加器的高位(ACCH)和低位字(ACCL)。,中央算术逻辑单元,3.4.1 中央算术逻辑单元(CALU),中央算术逻辑单元(CALU)执行一系列的算术和逻辑运算,数字运算是在一个时钟周期内进行。这些算术和逻辑运算分为四类:,位测试、移位和循环,它具有独立的算术单元和辅助寄存器算术单元。,1
11、6-bit加法,16-bit减法,布尔逻辑运算,鉴于CALU可执行布尔运算,因此可以进行位处理。,CALU使用累加器进行移位和循环。,输入,CALU有两个输入,一个输入总是由32-bit累加器提供,另一个输入由以下两个移位器中的一个提供,乘积定标移位器,输入数据定标移位器,输出,CALU,输出数据定标移位器32-bit,数据存储器16-bit,累加器32-bit,对该运算结果进行移位处理,执行一次运算,累加器的高16位字和低16位字被分别移位,输出,符号扩展方式位,对许多(并非所有的)指令而言,符号扩展方式位(SXM),即状态寄存器ST1的第10位,决定着CALU在运算周期内是否采用符号扩展。
12、如果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指
13、令使用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被
14、置为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指令)被送入数据存储器,累加器内容保持不变。当输出移位
15、器执行移位时,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的一
16、个3-bit辅助寄存器指针(ARP)设置一个从0到7的值,就可以选择所需的辅助寄存器。,设置数值的方法有,它只修改辅助寄存器及ARP,它可通过数据读总线DRDB向状态寄存器ST0置入一个数据存储器的值,MAR指令,LST指令,支持间接寻址的任意指令,当指令完成后,当前辅助寄存器的内容可通过ARAU执行16位无符号算术运算,实现地址更新。,ARP所指示的寄存器称为当前辅助寄存器或当前AR。在一个指令的处理期,当前辅助寄存器的内容被用作数据存储器的访问地址。,如果指令要求从数据存储器读,则ARAU就将地址送入数据读地址总线,如果指令要求向数据存储器写,则ARAU就将地址送入数据写地址总线,3.5.
17、1 ARAU和辅助寄存器功能,ARAU执行以下操作:,使辅助寄存器的值增1或减1或增减一个偏移量(通过支持间接寻址的任一指令)。,将辅助寄存器值加上一个常量(通过ADRK指令)或使辅助寄存器值减去一个常量(通过SBRK指令)。,比较AR0的内容和当前AR的内容,并将比较结果送入状态寄存器ST1的测试/控制状态位(TC)(通过CMPR指令)。通过数据写总线(DWEB)将结果送入TC。,常量为一个8位数值,它来自指令字的8个LSB位。,通常,例外,地址的产生发生在下一指令的译码之前,ARAU在流水线操作的译码阶段执行算术操作,在处理NORM指令时,对辅助寄存器和/或ARP的修改是在流水线操作的执行
18、阶段进行。,辅助寄存器可用作软件计数器,辅助寄存器除用于指示数据存储器地址外,它还可用于其它目的。,CMPR指令,使用辅助寄存器可支持条件转移、调用和返回。,CMPR指令将AR0的内容与当前AR的内容进行比较,然后将比较结果置于状态寄存器ST1的测试/控制状态位(TC)。,LAR指令,向辅助寄存器装载数据,SAR指令,将AR的值存入数据存储器,在必要时可对它们进行增或减操作。,3.5.2 状态寄存器ST0和ST1,C2XX器件有两个状态寄存器ST0和ST1,这两个寄存器包含状态位和控制位。它们可通过数据存储器存储和装载数据,这样,就可以存储和恢复机器状态。,LST指令(装载状态寄存器),向ST
19、0和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 辅助寄存器与
20、状态寄存器,1.C2xx CPU有哪些基本组成,说出个部分的主要功能?2.C2xx辅助寄存器有几个?主要用作什么功能?3.C2xx几个状态寄存器?主要状态信息有哪些?,问题?,本次课教学目的,要求同学理解掌握DSP的中央处理单元的组成和程序控制的原理 理解各状态寄存器的状态位及其作用理解流水线的原理以及转移、调用、返回指令的执行过程理解DSP的中断和复位操作,前半部分是CPU的组成和状态信息后半部分是程序控制,3.6 程序地址生成与流水线3.7 转移、调用和返回3.8 重复指令3.9 中断与中断管理3.10复位操作3.11节能方式,本次课的主要内容,3.6 程序地址生成与流水线,在执行当前指令
21、的同时,程序流要求处理器生成下一个程序地址(顺序的或非顺序的)。,程序地址生成示意图,程序地址生成描述,C2XX程序地址生成逻辑使用以下硬件:,程序计数器(PC),C2XX含有一个16-bit的程序计数器(PC)。在提取指令时,PC对内部和外部程序存储器寻址。,程序地址寄存器(PAR),PAR驱动程序地址总线(PAB)。PAB是一个16-bit总线,它提供程序的读、写地址。,堆栈,程序地址生成逻辑包括一个16-bit的8级硬件堆栈,用于存储多达8个的返回地址。另外,也可将堆栈用作暂存存储器。,微堆栈(MSTACK),有时,程序地址生成逻辑采用16-bit的1级MSTACK来存储一个返回地址。,
22、重复计数器(RPTC),l6-bit的RPTC可用来确定重复(RPD)指令的重复次数。,PC保留将被执行的下一个指令的地址。通过程序地址总线(PAB),可以从该地址(位于程序存储器中)提取一个指令,然后将指令装入指令寄存器。当指令寄存器被装载时,PC保持下一个地址。,3.6.1 程序计数器(PC),程序地址生成逻辑采用16-bit的程序计数器(PC)来对内部和外部程序存储器寻址。,装入程序计数器的地址,当发生子程序调用或中断时,程序地址生成逻辑使用堆栈存储返回地址。当一个指令强迫CPU进入子程序或一个中断操作强迫CPU进入中断服务程序时,返回地址被自动装入栈顶;这项工作不需要额外的时间开销。执
23、行完子程序或中断服务程序后,返回指令将返回地址从栈顶弹回程序计数器。,3.6.2 堆栈(STACK),当返回地址不需要8级堆栈时返,堆栈可用来存储子程序或中断服务程序中的有关数据,或用作其它用途的存储器。,C2XX具有一个16位的8级硬件堆栈。,可以用下面两组指令访问堆栈:,PUSH指令将累加器的低16位复制到栈顶。,PUSH和POP,POP指令将栈顶的值送回累加器的低16位。,PSHD和POPD,这两条指令允许你在数据存储器中建立一个堆栈,以便处理超过8级的子程序或中断程序嵌套。,PSHD指令向栈顶压入一个数据存储器的值。,POPD指令则将栈顶的值弹回到数据存储器。,每当一个值被压入栈顶,通
24、过一条指令或通过地址生成逻辑时,各级堆栈内容被相应地下压一级,而栈底的内容丢失。因此,如果在POP指令之前发生8次以上的连续压入,则数据将会丢失(发生堆栈溢出)。,PUSH操作,POP操作与PUSH操作相反。POP操作将每级堆栈的内容送入上一级的堆栈。经过连续7次POP操作之后的POP操作将得到栈底的值,因此,栈底的值将被逐级复制直到送入累加器或相应的存储单元。,POP操作,程序地址生成逻辑在执行某些指令之前使用16-bit的一级MSTACK来存储一个返回地址。这些指令使用程序地址生成逻辑为一条两操作数指令提供第二地址。,3.6.3 微堆栈(MSTACK),BLDD BLPD MAC MACD
25、 TBLR TBLW,这些指令是:,在重复操作时,这些指令使用PC将第一操作数地址加1,并且可以利用辅助寄存器算术单元(ARAU)产生第二操作数地址。在使用这些指令时,返回地址(提取下一指令地址)被压入MSTACK。完成这些指令操作后,MSTACK值被弹回到程序地址生成逻辑。,MSTACK操作是不可见的。与堆栈不同的是,微堆栈只能被程序地址生成逻辑所用,MSTACK不能用作存储器。,3.6.4 流水线操作,指令流水线由一系列总线操作组成。,C2XX流水线具有4个独立的操作阶段:,取指令 译码 取操作数 执行,由于4个操作阶段是独立的(因为内部有6套总线),因此,这些操作可以交叠地进行。在任意的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工程 DSP 专业课 课件 第三
链接地址:https://www.31ppt.com/p-5694251.html