DSP原理与应用 教学课件 ppt 作者 张东亮 第3章C24xDSP的CPU与指令系统

上传人:E**** 文档编号:89190358 上传时间:2019-05-21 格式:PPT 页数:57 大小:864.50KB
返回 下载 相关 举报
DSP原理与应用 教学课件 ppt 作者 张东亮 第3章C24xDSP的CPU与指令系统_第1页
第1页 / 共57页
DSP原理与应用 教学课件 ppt 作者 张东亮 第3章C24xDSP的CPU与指令系统_第2页
第2页 / 共57页
DSP原理与应用 教学课件 ppt 作者 张东亮 第3章C24xDSP的CPU与指令系统_第3页
第3页 / 共57页
DSP原理与应用 教学课件 ppt 作者 张东亮 第3章C24xDSP的CPU与指令系统_第4页
第4页 / 共57页
DSP原理与应用 教学课件 ppt 作者 张东亮 第3章C24xDSP的CPU与指令系统_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《DSP原理与应用 教学课件 ppt 作者 张东亮 第3章C24xDSP的CPU与指令系统》由会员分享,可在线阅读,更多相关《DSP原理与应用 教学课件 ppt 作者 张东亮 第3章C24xDSP的CPU与指令系统(57页珍藏版)》请在金锄头文库上搜索。

1、1,第3章 C24x DSP的CPU与指令系统,本章内容: 3.1 中央处理器 3.2 寻址方式 3.3 C24x DSP汇编指令 3.4 汇编语言命令与程序举例,2,3.1 中央处理器,3.1.1 CPU总体结构,240x的CPU主要由总线、CPU寄存器、程序地址发生器和控制逻辑、辅助寄存器算术单元(ARAU)、中央算术逻辑单元(CALU)、乘法器和移位器等逻辑部件组成。,1)总线。 2)程序地址发生器和控制逻辑。 3)ARAU。产生指令操作数的地址并将其送往对应的数据地址总线。 4)CALU。执行二进制补码的算术运算和布尔运算。 5)乘法器。可以执行1616位的补码乘法运算,并产生32位结

2、果。乘法器采用16位乘数寄存器(TREG)、32位乘积寄存器(PREG)和32位累加器(ACC)。 6)移位器。CPU的移位器实现对操作数的移位操作。,3,240x DSP CPU内部结构功能框图,4,3.1.2 总线结构,多组总线并行机制 程序读、数据读、数据写三种情况 内部地址总线:三组 Address Bus:A015 (C24x) 程序读地址总线PAB (Program Address Bus) 数据读地址总线DRAB (Data Read Address Bus) 数据写地址总线DWAB (Data Write Address Bus) 内部数据总线:三组 Data Bus: D0D

3、15(C24x) 程序读数据总线PRDB 数据读数据总线DRDB 数据写数据总线DWEB 数据写入数据存储器(DM)和程序存储器(PM) 外部Data/Address 总线为单一形式,5,C2000 DSP 总线结构 (24x),6,3.1.3 CPU内核结构,CPU内核模块包括:输入定标移位器、32位中央算术逻辑单元(CALU)、16位16位乘法器、累加器和输出定标移位器等。,CPU内核框图,7,1) 输入定标移位器(Input Scale, Shifter),该单元将来自程序/数据存储器的16位数据调整为32位数据送到中央算术逻辑单元(CALU)。因此,输入定标移位器的16位输入与数据总线

4、相连, 32位输出与CALU单元相连。,输入定标移位器在算术定标及逻辑操作非常有用。 输入定标移位器对输入数据进行0-15位左移。左移时,输出的最低有效位(LSB)为0,最高有效位(MSB)根据状态寄存器ST1的SXM位(符号扩展方式)的值来决定是否进行符号扩展。 当SXM=1时,则高位进行符号扩展;当SXM=0时,则高位填0。 移位的次数由包含在指令中的常量或临时寄存器(TREG, T, Temporary Register )中的值来指定。,8,2 ) 乘法器(Multiplier),1616位的硬件乘法器,单个机器周期内产生一个32位的有符号或无符号乘积。 除了执行无符号乘法指令(MPY

5、U)外,所有的乘法指令均执行有符号的乘法操作,即相乘的两个数都作为二进制的补码数,而运算结果为一个32位的二进制的补码数。 乘法器接收的两个乘数,一个来自16位的临时寄存器(T),另一个通过数据读总线(DRDB)取自数据存储器,或通过程序读总线(PRDB)取自程序存储器。,9,两个输入值相乘后,32位的乘积结果保存在32位的乘积寄存器(P,PREG, Product Register)中。 PREG的输出连接到乘积定标移位器(Product Scale, Shifter) ,通过乘积定标移位器,乘积结果可以从P传到CALU或数据存储器。乘积定标移位器对乘积采用4种乘积移位方式。 移位方式由状态

6、寄存器ST1的乘积移位方式位(PM, Product Mode)指定,对于执行乘法/累加操作、进行小数运算或者进行小数乘积的调整都很有用。,10,乘积定标移位器的乘积移位方式,PM 移位 作用和意义 00 无移位 乘积送CALU或数据写总线,不移位 01 左移1位 移去二进制补码乘法产生的额外符号 位,产生Q31格式的乘积 10 左移4位 当与一个13位的常数相乘时,移去在 1613位(常数)二进制补码产生的 额外的4位符号位,产生Q31格式的乘积 11 右移6位 对乘积结果定标,以使得运行128次的 乘积累加而累加器不会溢出 注:Q31格式是一种二进制小数格式,表示有31位二进制小数,11,

7、3)中央算术逻辑单元,中央算术逻辑单元(CALU, Central ALU)实现大部分算术和逻辑运算功能,大多数功能只需一个时钟周期,这些运算功能包括:16位加、16位减、逻辑运算、位测试以及移位和循环功能。 由于CALU可以执行布尔运算,因此使得控制器具有位操作功能。CALU的移位和循环在累加器中完成。 CALU是一个独立的算术单元,它和辅助寄存器算术单元(ARAU)在程序执行时,是完全不同的两个模块。,12,一旦操作在CALU中被执行,运算结果会被传送到累加器中,在累加器中再实现如移位等附加操作。 CALU有两个输入,一个由累加器提供,另一个由乘积寄存器(P)或输入数据定标移位器的输出提供

8、。当CALU执行完一次操作后将结果送至32位累加器,由累加器对其结果进行移位。累加器的输出送到32位输出数据定标移位器经过输出数据定标移位器,累加器的高、低16位字可分别被移位或存入数据寄存器。,13,CALU的溢出饱和方式可以由状态寄存器ST0的溢出模式(OVM)位来使能或禁止。 根据CALU和累加器的状态,CALU可执行各种分支指令。这些指令可以根据这些状态位有意义的结合,有条件地执行。为了溢出管理,这些条件包括OV(根据溢出跳转)和EQ(根据累加器是否为0跳转)等。另外,BACC(跳到累加器指定的地址)指令可以跳转到由累加器所指定的程序存储器地址;不影响累加器的位测试指令(BIT和BIT

9、T)允许对数据存储器中的一个指定位进行测试。 对绝大多数的指令,状态寄存器ST1的第10位符号扩展位(SXM)决定了在CALU计算时是否使用符号扩展。 SXM=0,符号扩展无效;SXM=1,符号扩展有效。,14,4) 累加器(ACC,32位, 高16位ACCH, 低16位ACCL),当CALU中的运算完成后,其结果就被送至累加器,并在累加器中执行单一的移位或循环操作。 累加器的高位和低位字中的任意一个可以被送至输出数据定标移位器,在此定标移位后,再保存于数据存储器。与累加器有关的状态位和转移指令: 进位标志位C 状态寄存器ST1的第9位。下述情况之一将影响进位标志位C。,15,加到累加器或从累

10、加器减 当C=0,减结果产生借位时或加结果未产生进位时。 当C=1,加结果产生进位时或减结果未产生借位时。 2)将累加器数值移1位或循环移1位 在左环移或循环左移的过程中,累加器的最高有效位被送至C位。在右环移或循环右移的过程中,累加器的最低有效位被送至C位。,16,溢出方式标志位OVM 状态寄存器ST0的第11位。OVM位决定ACC如何反映算术运算的溢出。 OVM=1,ACC运算溢出, 累加器被设定为下列两个特定值之一: 若正溢出,ACC中填最大正数:7FFF FFFFh 若负溢出,ACC中填最大负数:8000 0000h OVM=0,ACC中的结果正常溢出。,17,溢出标志位OV 状态寄存

11、器ST0的第12位, C=0,累加器未溢出; C=1,累加器溢出,且被锁存。 测试/控制标志位TC ST1的第11位,根据被测位的值置1或清0。 与累加器有关的转移指令大都取决于C、OV、TC的状态和累加器的值。,18,5)输出定标移位器(Output Scale, Shifter ),它存储指令中指定的位数,将累加器输出的内容左移0-7位,然后将移位器的高位字或低位字存到数据存储器中(用SACH或SACL指令,Save to)。在此过程中,累加器的内容保持不变。,19,3.1.4 状态寄存器(Status)ST0和ST1,状态寄存器ST0和ST1包含了DSP运行时的各种状态和控制位。内容可被

12、读出并保存到数据存储器(用SST指令),或从数据存储器读出加载到ST0和ST1 (用LST指令, Load ST),用来在子程序调用或进入中断时实现CPU各种状态的保存。 可用指令对ST0和ST1中的各个位单独置1或清0 (SETC或CLRC指令)。 可对比8086的F寄存器,8051的PSW寄存器。,20,状态寄存器ST0,ARP 当前辅助寄存器指针 000-111,AR0-AR7 OV 溢出标志位,为1时,有溢出。 OVM 溢出模式位。 OVM=1, 溢出时,A中为最大或最小值。 OVM=0,按正常溢出。 INTM中断模式位,可禁止(INTM=1)或使能可屏蔽中断 DP 数据存储器页面指针

13、(Data Page) 9位,用于直接寻址地址的高9位,与指令中的低7位共同形成16位地址。,21,状态寄存器ST1,ARB 辅助寄存器指针缓冲器,存放ARP。 CNF 片内DARAM B0配置位。CNF=0, B0映射为数据存储器(DM); CNF=1, B0映射为程序存储器(PM) TC 测试标志位。 SXM 符号扩展模式位。SXM=1, 允许符号扩展。 C 进位位。 XF, XF引脚状态位。复位时,XF=1。 PM,乘积移位模式位,PM=00(没有移位,复位值),01(左移1位), 10 (左移4位), 11 (右移6位),22,3.1.5 辅助寄存器算术单元ARAU,辅助寄存器算术单元

14、ARAU 辅助寄存器AR0-AR7: 间接寻址 当前工作辅助寄存器 (由ARP选择) AR+1, AR-1 (*+, *-) AR+-AR0 (*0+,*0-) *BR0+- (反向进位),ARAU完全独立于中央算术逻辑单元。主要功能是在CALU操作的同时执行8个辅助寄存器AR7-AR0中的算术运算, AR7-AR0提供了强大而灵活的间接寻址能力。,23,利用ARAU中的16位地址可访问数据存储器64K字空间的任一单元。 可通过指令向ST0的ARP指针装入3位(0-7)数据来选择某一辅助寄存器(AR0-7, Auxiliary Register )。 ARAU的8个辅助寄存器提供了强大而灵活的

15、间接寻址能力。利用辅助寄存器中的16位地址可访问数据存储器64K字空间的任一单元。,ARAU除可对数据存储器的寻址外,还可用作它用: (1) 通过CMPR比较指令,利用辅助寄存器支持条件转移、调用和返回; (2) 利用辅助寄存器作为暂存单元; (3) 利用辅助寄存器进行软件计数。根据需要将其加1或减1。,24,3.2 寻址方式,C24x CPU三种基本寻址方式:立即寻址、直接寻址和间接寻址。,1. 立即寻址,立即寻址: 指令中包含一个立即数。 立即数可分为短立即数(8,9,13位)和长短立即数(16 位) 例: RPT #k ;下面的指令重复执行k+1次, #k为8位 LDP #k ; DP=

16、k, #k为9 位 MPY #k ; P = T*k, #k为13 位, P: Product, T: TREG ADD #lk, shift ; ACC = ACC+#lk左移shift次 #lk为16 位 LACC #10h ; ACC=#10H, “#”号表示立即数 ( LACC 10h ; 直接寻址,当前DP的第10h单元数据送 累加器ACC中),25,2. 直接寻址,数据存储器(DM: Data Memory)直接地址由高9位DP (Data Page Pointer数据页面指针)和低7位地址共同组成。 数据页面指针DP的范围:0511页,dma=0127 即DP指向512页中的一页, dma表示该页128单元之一。 512*128W=64 KW 机器码格式:D158为操作码, D7=0, D60 页内地址(dma) 例. LDP #4 ; DP=#4 =0000 0010 0, ADD 9h ; ACC = ACC+(209h), 9=000 1001 高9位DP低7位dma: 0000 0010 0 000 10

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号