哈工程DSP专业课课件第三章.ppt
《哈工程DSP专业课课件第三章.ppt》由会员分享,可在线阅读,更多相关《哈工程DSP专业课课件第三章.ppt(156页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 TMS320C2XX中央处理单元中央处理单元与程序控制与程序控制上一章上一章内容回顾内容回顾(1)明确为什么要学习DSP的硬件组成与体系结构,掌握C2xxDSP的硬件组成与体系结构及其特点。(2)解决在编程序时不知道哪些资源是可用的,怎么用?(3)解决硬件设计时,对引脚信号不知道怎么用?怎样发掘芯片的潜能,也就是说器件的优化设计问题和效能最大化的问题。(打下基础)上一章的主要内容:本章教学目的本章教学目的要求同学理解掌握DSP的中央处理单元的组成和程序控制的原理 理解各状态寄存器的状态位及其作用理解流水线的原理以及转移、调用、返回指令的执行过程理解DSP的中断和复位中断和复位操作
2、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
3、.5节)包括:输入定标部分、乘法包括:输入定标部分、乘法部分、中央算术逻辑部分部分、中央算术逻辑部分ARAUARAU实现对实现对8 8个辅助寄存个辅助寄存器的算术运算。器的算术运算。状态寄存器决定处理器工作状态寄存器决定处理器工作方式、寻址指针以及显示不方式、寻址指针以及显示不同的处理器状态和算术逻辑同的处理器状态和算术逻辑结果。结果。节 能 方 式 (3.11节)C2XX器件程序控制的特点及其处理过程 (3.6节3.10节)涉及到对一个或多个指令块执行顺序的控制,通常,程序流是顺序的,C2XX在连续的程序存储器地址执行指令操作。然而,有时一个程序必须转移到一个非顺序的地址,最后在该新的地址单
4、元顺序地执行指令。为此,C2XX支持转移、调用、返回、重复和中断等操作。该方式暂停内部程序流并暂时地降低C2XX的功能 C2xx的总体框图中央算术逻辑单元:CALU 数据地址产生逻辑(ARAU以及8个AR)累加器:ACC 程序地址产生逻辑 用于CALU的输入输出数据比例移位器 16-bit16-bit乘法器乘积比例移位器CPU的输入比例、中央算术逻辑和乘法部分框图3.2 输入定标部分输入定标部分 一个32-bit输入数据定标移位器(输入移位器)使一个存储器的16-bit值与32-bit的CALU对齐。对于数据的算术运算和逻辑运算来说,数据的校准很有必要。作为程序(或数据)和CALU之间的数据通
5、道,输入移位器操作不需要额外开销。下面介绍输入移位器的输入、输出和移位位数。输入输入 程序读总线程序读总线(PRDB)该输入为一个指令操作时给定的常数。输入移位器的15位到0位接收程序存储器(PRDB)或数据存储器(DRDB)的一个16-bit输入。输出输出 在左移期间,移位器中未使用的LSB被零填充,而移位器中的MSB则被零或扩展符填充。数据读总线数据读总线(DRDB)该输入为一个来自数据存储器的数据。接收了一个16-bit数据之后,输入移位器就将该16-bit数据与CALU的32-bit总线对齐:输入移位器将该16位数据左移016位,然后向CALU送入32位的结果。移位位数移位位数输入移位
6、器可以将一个16-bit数据左移016位。移位大小(或移位位数)可从以下方式获得:暂存寄存器暂存寄存器(TREG)的的4个个LSB位位基于TREG的移位操作允许动态地确定数据定标因子,以便它能更好地适应系统性能。在指令字中嵌入一个常数在指令字中嵌入一个常数在指令字中设置移位位数,允许执行特定的数据定标或校准操作。对许多(并非所有的)指令而言,符号扩展方式位(SXM),即状态寄存器ST1的第l0位,决定着在CALU计算中是否采用符号扩展:SXM=0 不采用符号扩展;SXM=l 输入移位器的输出具有符号扩展。符号扩展方式位符号扩展方式位(SXM)图2-3为当SXM=0时,输入数据被左移8位的情况。
7、送入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硬件乘法器可以产生一个带符
8、号或不带符号的32-bit乘积。除在无符号乘法(MPYU指令)周期外,被乘的两个数作二进制补码处理。以下是对乘法器的输入和输出的描述。PREG的输出与32-bit乘积定标移位器相连。经过移位器处理,乘积可以从PREG进入CALU(或数据存储器通过SPH和SPL指令)。输入输入来自数据读总线数据读总线(DRDB)(DRDB)的数据存储器的值。输出输出乘法器接收两个16-bit的输入:总是来自16-bit的暂存寄存器暂存寄存器(TREG)(TREG)另一个输入为下列数值之一:其中一个输入:在乘法之前,在乘法之前,TREGTREG装载了一个数据读总线装载了一个数据读总线(DRDB)(DRDB)的数值
9、。的数值。乘积寄存器乘积寄存器(PREG)(PREG)用于存储两个用于存储两个16-bit16-bit输入数据相乘之后产生输入数据相乘之后产生的的32-bit32-bit乘积。乘积。来自程序读总线程序读总线(PRDB)(PRDB)的程序存储器的值。3.3.2 乘积定标移位器乘积定标移位器 乘积定标移位器(乘积移位器)用于乘积寄存器(PREG)值的定标。输入输入 PREGPREG的输出输出输出 CALUCALU的输入移位器有一个32-bit的输入,它与PREG的输出相连移位器完成移位操作,所有32位的数据被送入CALU,而16位的数据则被存储在数据存储器中。移位方式移位方式乘积定标移位器采用4种
10、乘积移位方式中的一种(参见下表)。PM移位描述00不移位乘积进入CALU或数据写总线(DMEB)之前不作移位处理01左移1位移出以二进制补码方式产生的额外符号位以便产生一个Q3110左移4位当与一个13-bit的常数相乘时,移动以一个16-bitXl3-bit的二进制补码相乘方式产生的4个额外符号位以便产生一个Q31+乘积11右移6位对乘积进行定标以便进行多达128次的乘积累加定标,而又使累加器不致溢出。无论状态寄存器ST2的符号扩展方式位(SXM)的值如何,右移方式总是符号扩展的。乘积定标移位器的乘积移位方式注:注:Q31数是一个二进制分数。其中,二进制小数点后有31位数字。注:注:无论状态
11、寄存器ST1的符号扩展方式位(SXM)是为0,还是为l,乘积移位器中进行的右移总是为符号扩展的。移位方式的采用取决于状态寄存器ST1的乘积移位方式(PM)值。第一种移位方式(PM=00)第二、三种方式(PM=01、10)最后一种方式可引起左移位(1位或4位)。这两种方式有利于进行分数运算或调整乘积。在将乘积送入CALU或数据存储器之前,移位器不对乘积进行移位处理。可使乘积右移6位。它允许连续进行多达128次的乘/加运算,而不至于引起累加器的溢出。注意,此时注意,此时PREGPREG的内容保持不变;的内容保持不变;该值被拷贝到乘积移位器并在乘该值被拷贝到乘积移位器并在乘积移位器中进行移位处理。积
12、移位器中进行移位处理。3.4 中央算术逻辑部分中央算术逻辑部分主要组成中央算术逻辑单元中央算术逻辑单元(CALU)(CALU)32-bit32-bit累加器累加器(ACC)(ACC)输出移位器输出移位器执行一系列的算术和逻辑运算。接收CALU输出,并且可以借助于进位位(C)执行累加器中数值的移位。在将累加器的高位字或低位字的一个拷贝送入数据存储器之前,对该拷贝进行移位处理。图中给出了累加器的高位(ACCH)和低位字(ACCL)。中央算术逻辑单元 3.4.1 中央算术逻辑单元中央算术逻辑单元(CALU)中央算术逻辑单元(CALU)执行一系列的算术和逻辑运算,数字运算是在一个时钟周期内进行。这些算
13、术和逻辑运算分为四类:位测试、移位和循环它具有独立的算术单元和辅助寄存器算术单元。16-bit加法16-bit减法布尔逻辑运算鉴于CALU可执行布尔运算,因此可以进行位处理。CALU使用累加器进行移位和循环。输入输入CALU有两个输入一个输入总是由32-bit累加器累加器提供另一个输入由以下两个移位器中的一个提供乘积定标移位器乘积定标移位器输入数据定标移位器输入数据定标移位器输出输出CALU输出数据输出数据定标移位器定标移位器32-bit数据存储器数据存储器16-bit累加器累加器32-bit对该运算结果进行移位处理执行一次运算累加器的高16位字和低16位字被分别移位输出输出符号扩展方式位符号
14、扩展方式位 对许多(并非所有的)指令而言,符号扩展方式位(SXM),即状态寄存器ST1的第10位,决定着CALU在运算周期内是否采用符号扩展。如果SXM=0,则禁止符号扩展。如果SXM=l,则允许符号扩展。3.4.2 累加器累加器下面讨论与累加器相关的状态位和转移指令。状状态态位位进位位进位位(C)(C)溢出方式位溢出方式位(OVM)(OVM)溢出标志位溢出标志位(OV)(OV)检测检测/控制状态位控制状态位(TC)(TC)许多转移指令转移指令可根据C、OV和TC等状态位以及累加器中的数值来完成。当累加器加产生一个进位时。当累加器减不产生一个借位时。(例外情况:当SUB指令使用16-bit移位
15、且不产生借位时,则不影响C)。进位位进位位(C)(C)以下情况将影响C(状态寄存器ST1的第9位):与累加器加或减:累加器的单位移位和循环:C=0当累加器减产生一个借位时。当累加器加不产生一个进位时(例外:当ADD指令使用16-bit移位且不产生进位时,则不影响C)。C=l 在一次左移位或循环期间,累加器的最高有效位被送入C;在一次右移位或循环期,累加器的最低有效位送入C。溢出方式位溢出方式位(OVM)(OVM)OVM(状态寄存器ST0的第11位)决定着累加器算术溢出的情况。当OVM=0,累加器以正常方式溢出。当累加器处于溢出方式(OVM=1)并且发生一次溢出时,产生下面两种情况:如果溢出方向
16、为正,则累加器被最大正数值填充(7FFF FFFFh)。如果溢出方向为负,则累加器被最大负数值填充(8000 0000h)。根据一个测试位的值,TC被置为0或l。对于NORM指令,如果累加器的两位MSB的异或为真,则TC被置为l。溢出标志位溢出标志位(OV)(OV)OV是状态寄存器ST0的第12位。如果未检测到累加器溢出,则OV为0当溢出(正方向或负方向)发生时,OV为l并被锁存。检测检测/控制状态位控制状态位(TC)(TC)TC是状态寄存器ST1的第11位。3.4.3 输出数据定标位移器输出数据定标位移器 输出数据定标移位器(输出移位器)有一个32-bit的输入和一个16-bit的输出。它们
17、分别是累加器的32-bit输出和16位的数据总线输入。输出移位器拷贝累加器的32位数据,并对移位器中的数据执行一次左移(根据相应的存储指令可左移0至7位)。然后移位器中的高位字(SACH指令)或低位字(SACL指令)被送入数据存储器,累加器内容保持不变。当输出移位器执行移位时,MSB丢失并且LSB被零填充。图2显示了与图1同样的累加器值被左移6位以及移位后的低位字被存储的情况。图1显示了累加器值被左移4位以及移位后的高位字被送入数据存储器的情况。图1图23.5 辅助寄存器与状态寄存器辅助寄存器与状态寄存器 辅助寄存器算术单元(ARAU)独立于中央算术逻辑单元(CALU)。它的主要功能是对8个辅
18、助寄存器(从AR7到AR0)执行算术操作。该操作可与CALU中的操作并行进行。ARAU及有关逻辑 8个辅助寄存器(AR7-AR0)提供了灵活多变以及功能强大的间接寻址。使用辅助寄存器中的一个16-bit地址就可访问64K数据存储空间的任意单元。通过向状态寄存器ST0的一个3-bit辅助寄存器指针(ARP)设置一个从0到7的值,就可以选择所需的辅助寄存器。设置数值的方法有它只修改辅助寄存器及ARP它可通过数据读总线DRDB向状态寄存器ST0置入一个数据存储器的值MARMAR指令指令LSTLST指令指令支持间接寻址支持间接寻址的任意指令的任意指令 当指令完成后,当前辅助寄存器的内容可通过ARAU执
19、行16位无符号算术运算,实现地址更新。ARP所指示的寄存器称为当前辅助寄存器或当前AR。在一个指令的处理期,当前辅助寄存器的内容被用作数据存储器的访问地址。如果指令要求从数据存储器读读,则ARAU就将地址送入数据读地址总线数据读地址总线 如果指令要求向数据存储器写写,则ARAU就将地址送入数据写地址总线数据写地址总线3.5.1 ARAU和辅助寄存器功能和辅助寄存器功能ARAU执行以下操作:使辅助寄存器的值增1或减1或增减一个偏移量(通过支持间接寻址的任一指令)。将辅助寄存器值加上一个常量(通过ADRK指令)或使辅助寄存器值减去一个常量(通过SBRK指令)。比较AR0的内容和当前AR的内容,并将
20、比较结果送入状态寄存器ST1的测试/控制状态位(TC)(通过CMPR指令)。通过数据写总线(DWEB)将结果送入TC。常量为一个8位数值,它来自指令字的8个LSB位。辅助寄存器辅助寄存器可用作软件可用作软件计数器计数器 辅助寄存器除用于指示数据存储器地址外,它还可用于其它目的。CMPR指令使用辅助寄存器可支持条件转移、调用和返回。CMPR指令将AR0的内容与当前AR的内容进行比较,然后将比较结果置于状态寄存器ST1的测试/控制状态位(TC)。LAR指令向辅助寄存器装载数据SAR指令将AR的值存入数据存储器在必要时可对它们进行增或减操作。3.5.2 状态寄存器状态寄存器ST0和和ST1C2XX器
21、件有两个状态寄存器ST0ST0和ST1ST1 这两个寄存器包含状态位和控制位。它们可通过数据存储器存储和装载数据,这样,就可以存储和恢复机器状态。LSTLST指令指令(装载状态寄存器)向ST0和ST1写SSTSST指令指令(存储状态寄存器)从ST0和ST1读INTM位例外,因为它不受LST指令的影响SETCSETC和和CLRCCLRC指令指令可以设置和清除两个寄存器的许多独立位例如符号扩展方式可用SETC SXM置1,可用CLRC SMX清除状态寄存器中有几个位被保留;它们通常为逻辑1。注意:R=读访问;W=写访问;”一”符号后面的值为复位后的值(X为不受复位影响的值)。+为保留位,总是为1。
22、它不受写影响。状态寄存器状态寄存器ST0ST0状态寄存器状态寄存器ST1ST1命名命名描述描述ARB辅助寄存器指针缓冲器辅助寄存器指针缓冲器辅助寄存器指针缓冲器辅助寄存器指针缓冲器 除在LST(装载状态寄存器)指令期外,每当辅助寄存器指针(AR)被装载,先前的ARP值就被复制到ARB 当ARB通过LST指令被装载时,同样的值也被复制到ARP。ARP辅助寄存器指针辅助寄存器指针辅助寄存器指针辅助寄存器指针它是一个3-bit字段。可以决定在间接寻址方式中使用哪种辅助寄存器。当ARP被装载时,先前的ARP值被复制到ARB寄存器(除在一个LST指令期外)。通过存储器访问指令(使用间接寻址方式)以及通过
23、MAR(修改辅助寄存器)和LST指令可以修改ARP。当ARB通过LST指令被装载时,同样的值被复制到ARP。关于ARP在间接寻址中的使用详情,请参考第4.3章节间接寻址方式。状态寄存器ST0和ST1的位(字段)C进位位进位位进位位进位位 如果一次加操作产生了一个进位,则C被设为1;如果一次减操作产生了一个借位,则C被清零。相反地,如果一次加操作不产生一个进位,则C被清零如果一次减操作不产生一个借位,则C被置为1(ADD指令或具有二个16位移位的SUB指令除外)。CNF片内片内片内片内DARAMDARAM配置位配置位配置位配置位 该CNF位决定了可重配置的双存取RAM块是映射到数据空间,还是映射
24、到程序空间。通过SETC CNF,CLRC CNF和LST指令可修改CNF位。复位时,CNF位清零。有关CNF和双存取RAM块的详情,请参考第3章“存储器和I/O空间”。CNF=O可重配置的双存取RAM块被映射到数据空间CNF=l可重配置的双存取RAM块被映射到程序空间DP数据页指针数据页指针数据页指针数据页指针 当一个指令采用直接寻址方式时,9-bit的DP字段就与指令字的7个LSB位链接,从而构成一个全16-bit数据存储器地址。有关详情,请参阅第4.2章节直接寻址方式。LST和LDP(装载DP)指令可以修 改DP字段。INTM中断方式位中断方式位中断方式位中断方式位该方式位允许或禁止所有
25、可屏蔽的中断。INT分别通过SETC、INTM和CLRC、INTM指令设置和清除。INTM不影响不可屏中断RS(非)和NMI(非),它也不影响被软件启动的中断。LST(装载状态寄存器)指令不影响INTM(非)。当中断发生时(TRAP指令情况除外),INTM被置1并处于复位状态。INTM=O允许所有非屏蔽的中断被允许。INTM=l禁止所有可屏蔽的中断。OV溢出标志位溢出标志位溢出标志位溢出标志位 它保留一个锁存值,该锁存值可指明在CALU中是否己发生溢出。如果CALU中发生溢出,则OV为l。一旦发生溢出,OV位就保留置位状态直到它被复位条件转移指令或LST指令清除。OVW溢出方式位溢出方式位溢出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工程 DSP 专业课 课件 第三
限制150内