1 / 154

第 2 章 F240X 系列 DSP 内部资源介绍

第 2 章 F240X 系列 DSP 内部资源介绍. 2.1 F240x 系列 DSP CPU (Central Processing Unit) 内部功能模块介绍. CPU 功能模块 : 总线:程序总线和数据总线 运算部分:中央算术逻辑单元,乘法器,输入定标器 辅助寄存器部分:辅助寄存器, ARAU 存储器: FLASH, DARAM 控制部分:程序控制,器件状态配置,堆栈等. 2407A CPU 功能模块图. 注: Data Bus 和 Program Bus 包括地址和数据位。. CPU 地址和数据总线结构.

astrid
Télécharger la présentation

第 2 章 F240X 系列 DSP 内部资源介绍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 2 章 F240X系列DSP内部资源介绍

  2. 2.1 F240x系列DSPCPU (Central Processing Unit)内部功能模块介绍 CPU功能模块: 总线:程序总线和数据总线 运算部分:中央算术逻辑单元,乘法器,输入定标器 辅助寄存器部分:辅助寄存器,ARAU 存储器:FLASH, DARAM 控制部分:程序控制,器件状态配置,堆栈等

  3. 2407A CPU 功能模块图 注: Data Bus和 Program Bus 包括地址和数据位。

  4. CPU地址和数据总线结构

  5. data-read address bus (DRAB):A 16-bit internal bus that carries the address for each read from data memory. data read bus (DRDB):A 16-bit internal bus that carries data from data memory to the CALU and the ARAU. data-write address bus (DWAB):A 16-bit internal bus that carries the address for each write to data memory. data write bus (DWEB):A 16-bit internal bus that carries data to both program memory and data memory. program address bus (PAB):A 16-bit internal bus that provides the addresses for program-memory reads and writes. program read bus (PRDB):A 16-bit internal bus that carries instruction code and immediate operands, as well as table information, from program memory to the CPU.

  6. 中央处理单元CPU (Central Processing Unit) • 32位中央算术逻辑部分(Central Arithmetic Logic Unit CALU ) • 16×16位的并行乘法器(Multiplier) • 16位输入定标移位器(Input shifter) • 辅助寄存器算术单元(ARAU) • 状态寄存器

  7. 关于运算部分 输入定标器、中央算术逻辑部分和乘法器

  8. 一、中央算术逻辑部分 • 32位中央算术逻辑单元(Central Arithmetic Logic Unit CALU) • 32位累加器(Accumulator ACC) • 32位数据输出移位器(Output shifter)

  9. 1.中央算术逻辑单元(CALU) 能实现许多算术和逻辑运算功能,且大多数的运算只需一个时钟周期。 • 运算功能包括: • 16位加 • 16位减 • 布尔运算 • 位测试 • 移位功能

  10. CLAU有两个输入 一个:总是由累加器(ACC)提供; 另一个:由乘法器的乘积寄存器(PSCALE)或输入数据定标移位器(ISCALE)提供 。 累加器的高位字和低位字都可进行单独移位和存储 输出数据移位过程中ACC中的内容保持不变

  11. CALU的运算结果 一旦CALU完成算术运算或逻辑运算操作,其结果总是送到32位累加器; • 由累加器对结果进行附加运算(如移位); • 累加器的输出连接到32位输出数据定标移位器(OSCALE); • 经过OSCALE移位,数据的高16位和低16位分别移位或存入数据寄存器。

  12. 2. 32位累加器ACC 32位累加器是CLAU的寄存器输出。 CALU中的32位运算结果送至累加器中执行单一的移位或循环操作。 通过进位位实现累加器内容的移位和旋转。 累加器的高位字和低位字分别送至输出数据定标移位器,在此定标移位后,再存至数据存储器。

  13. SFL和SFR(左移、右移)指令ROL和ROR(左、右旋转)指令SFL和SFR(左移、右移)指令ROL和ROR(左、右旋转)指令 SFL:溢出最高位到进位位,最低位填0。 ROL:溢出最高位到进位位,进位位移至最低位。 SFR:当为逻辑右移,最低位到进位位,最高位填0;当为算术右移,最低位到进位位,最高位31复制30位,进位位不变。 ROR:最低位到进位位,进位位移至最高位。

  14. SXM位影响SFR(累加器右移)指令的定义 当SXM=1,SFR完成一个算术右移且累加器中数据的符号保留; 当SXM=0,SFR实现一个逻辑右移,最低位溢出,最高位填0。 但,SXM不影响SFL(累加器左移)指令。

  15. ACC的位操作功能 由于CALU的位移动和旋转在累加器中完成,因此CALU可以执行布尔运算,使得DSP具有位操作功能。。 • 进位位C:状态寄存器ST1第9位; • 溢出方式位OVM :状态寄存器ST0第11位; • 溢出标志位OV:状态寄存器ST0第12位; • 测试/控制标志位TC:状态寄存器ST1第11位。 位测试指令:允许测试数据存储器中一个字的特定位,测试操作不影响累加器。

  16. 进位位C • 影响进位位C的操作: • 加至ACC或从ACC减; • 将ACC的数据进行移位或循环移位。 进位位的状态提供两个条件算子C、NC,它们影响分支、调用、返回和条件执行。 硬件复位进位位置1。 但,装载累加器、逻辑操作或非算术运算以及控制指令不影响进位位。

  17. 溢出方式位OVM CLAU的溢出方式可以由ST0的OVM位使能。 OVM=0,累加器发生溢出时装载正常溢出值; OVM=1,溢出方式使能,累加器发生溢出时装载以下两个特定值之一: 若为正溢出,累加器装载最大正数7FFF FFFFh; 若为负溢出,累加器装载最大负数8000 0000h。 注意:逻辑运算的结果不发生溢出。

  18. 溢出标志位OV • 当溢出发生时,置OV=1(锁存); • 当未检测到ACC输出时, OV=0(不锁存)。 测试/控制标志位TC 根据被测试位的值,对该位置0或1。

  19. CLAU可以根据CLAU和累加器的状态执行分支类指令。CLAU可以根据CLAU和累加器的状态执行分支类指令。 • 分支类指令有: • 基于状态位OV(溢出标志); • EQ(累加器等于0)的值执行条件分支指令; • 由累加器提供分支地址执行分支指令。

  20. 3. 32位数据输出移位器(Output shifter) 数据输出移位器:为1个16到32位的桶型左向移位寄存器。 寄存器符号:OSCALE OSCALE将32位累加器输出左移0到7位,然后用SACH或SACL指令将移位器的高位字(高16位)或低位字(低16位)输出到数据写总线(DWEB) 。 当数据传送到数据总线上移位就完成,此时累加器中的内容仍保持不变。

  21. 输出定标器用于累加器的高字位段时(16~31位),最高有效位丢失,最低有效位用移入的低字位段(0~15位)填写;输出定标器用于累加器的高字位段时(16~31位),最高有效位丢失,最低有效位用移入的低字位段(0~15位)填写; 当输出定标器用于累加器的低字位段时,最低有效位填0。

  22. 16bit 32bit ISCALE CALU 二、16位输入定标移位器(Input shifter) 输入定标移位器:是1个16到32位的桶型左向移位器。移位器符号:ISCALE

  23. 16位输入和数据总线相连; 32位输出和CALU单元相连。

  24. 输入定标移位器 • ISCALE能将输入的16位数据的0到16位在本周期内向左移位,以得到32位的输出。因此,输入定标移位操作不需要额外的周期。 • 左移范围:0~15 • 左移时的符号扩展方式由ST1中的SXM决定

  25. 数据调整时,输入定标移位器将输入的数据左移0~16位,移位后输出数据的最低有效位段填0,而最高有效位段要根据状态寄存器ST1的符号扩展方式位(SXM)的值来决定。数据调整时,输入定标移位器将输入的数据左移0~16位,移位后输出数据的最低有效位段填0,而最高有效位段要根据状态寄存器ST1的符号扩展方式位(SXM)的值来决定。 当SXM=1时,高位进行符号扩展; 当SXM=0时,高位填0。 输入数据的移位量由指令字所包含的常量或临时寄存器(TREG)指定。 基于TREG的移位允许动态调整定标因子,从而使数据适应不同的系统性能。

  26. 三、 16×16位的并行乘法器(Multiplier) 乘法器:是1个16X16位的硬件乘法器,它可以在单个机器周期内产生1个32位结果的有符号或无符号数。 乘法器的输入: 一个来自16位的暂存器(TREG), 另一个通过数据读总线(DRDB)来自数据存储器,或者通过程序读总线(PRDB)来自程序存储器。 两个输入值相乘后,32位的乘积结果存放在32位的乘积寄存器(PREG)中。

  27. 乘数和被乘数都视为2的补码,其32位乘积数也是2的补码。乘数和被乘数都视为2的补码,其32位乘积数也是2的补码。 PREG的输出:连接到乘积定标移位器,通过乘积定标移位器(PSCALE),乘积结果可以从PREG 送到CALU或数据存储器。 乘积定标移位器PSCALE:对乘积结果采用4种乘积移位方式。

  28. 移位方式:由状态寄存器ST1的乘积移位方式位(PM)指定。 注:Q31格式是一种二进制小数格式,该格式在二进制小数点的后面有31个数字。

  29. 四、辅助寄存器算术单元(ARAU) ARAU的主要功能:是在CALU操作的同时执行8个辅助寄存器(AR7~AR0)上的算术运算。 ARAU:对当前辅助寄存器AR的内容增加、减少或作无符号16位算术运算。 由辅助寄存器指针ARP所指定的寄存器(AR7~AR0)被当做当前辅助寄存器AR。

  30. 可以从数据存储器、ACC、乘积寄存器或指令的立即操作数装载。可以从数据存储器、ACC、乘积寄存器或指令的立即操作数装载。 辅助寄存器 ARP 1. 数据装载 当ARP装载了新的值后,原来ARP的值就装载到辅助寄存器指针缓冲器ARB中。 寄存器中的内容可存贮在数据存储器中或作为ARAU的输入。

  31. 2. 说明 1. 辅助寄存器算术单元(ARAU)完全独立于中央算术逻辑单元(CALU)。 2. 利用包含在辅助寄存器中的16位地址可以访问64K数据空间中的任意单元。 这8个辅助寄存器提供了强大而灵活的间接寻址能力。

  32. 在一条指令的执行过程中,当前辅助寄存器存放被访问数据存储区的地址。在一条指令的执行过程中,当前辅助寄存器存放被访问数据存储区的地址。 若指令为读数据存储区数据,ARAU就将该地址送至DRAB(数据读地址总线); 若指令为向数据存储区写数据,ARAU就将该地址送至DWAB(数据写地址总线)。

  33. 3. ARAU执行的操作 • 通过执行任何一条支持间接寻址的指令将辅助寄存器值增1或减1,或者增一个或减一个变址值。 • 将一个常数加至辅助寄存器值或从辅助寄存器值减去一个常数。该常数取自指令字的8位最低有效位。 • 比较AR0和当前AR的内容,然后将比较结果放至状态寄存器ST1中的测试/控制位TC。结果经数据写总线DWEB传送至TC。

  34. 4. ARAU执行其算术运算 在流水线的译码阶段(即当指令所指明的操作正被译码时),ARAU执行算术运算。使得在下一条指令的译码阶段之前能够产生本条指令的地址。 但有一种情况例外:在处理NORM异或指令时,是在流水线的执行过程中完成对辅助寄存器的修改。

  35. 5. 辅助寄存器的其他用途 辅助寄存器除用作数据存储器的地址存储器外,还可用作其他用途 。 • 通过CMPR比较指令,利用辅助寄存器支持条件转移、调用和返回。 • CMPR指令将AR0的内容和当前AR的内容进行比较,并将比较结果存至状态寄存器ST1中的测试/控制位TC。

  36. 将辅助寄存器作为暂存单元。 • 例如,使用LAR指令向辅助寄存器装入数值,以及使用SAR指令将辅助寄存器值存至数据存储器。 • 将辅助寄存器用作软件计数器,根据需要将其增1或减1。

  37. 五、状态寄存器 F240X系列DSP有两个状态寄存器ST0和ST1,是应用中特别重要的两个寄存器。它们含有各种状态和控制位 ST0和ST1的内容可以保存到数据存储器或从数据存储器读出加载到ST0、ST1,从而在子程序调用或进入中断时实现CPU各种状态的保存。

  38. 1. 状态寄存器ST0、ST1每位字符的含义

  39. 2. 状态寄存器ST0和ST1的字段定义

  40. 2.2 存储器和I/O空间 F240X系列DSP的地址映象被组织为3个可独立选择的空间: 程序存储器(64K字); 数据存储器(64K字); 输入/输出(I/O)空间(64K字)。 这些空间提供了共192K字的地址范围。

  41. 2407A存储器映射图

  42. F240X有3组并行总线 程序地址总线(PAB); 数据读地址总线(DRAB); 数据写地址总线(DWAB)。 F240X可以通过3组并行总线访问多个存储空间。 由于总线工作是分离的,所以可以同时访问程序和数据空间。 在一个给定的机器周期内,CALU可以执行多达3次的并行存储器操作。

  43. 存储模式 • TMS320LF240xA控制器配置了如下存储模式: • 双口RAM(DARAM) • 单口RAM(SARAM) • Flash EEPROM • ROM • Boot ROM

  44. (1)双口RAM(DARAM) 所有Lx240xA控制器中有544字×16位的片内DARAM。 在流水线操作方式下,CPU一般在第三个周期读数据,第四个周期写数据。 而DARAM允许在同一个机器周期读、写DARAM,即CPU在一个周期的主段向DARAM写数据;在从段读取DARAM的数据。 当用作片内RAM时,240xA全速运行无等待状态。

  45. DARAM被配置成3块: 块0(B0); 块1(B1); 块2(B2)。 1)B0包含256个字,它即可以配置在数据存储器空间也可以配置在程序存储器空间; 指令SETC CNF,B0配置为程序存储器; 指令CLRC CNF,B0配置为数据存储器。 2)B1包含256个字; 3)B2包含32个字,它们位于数据存储器空间。 指令通过软件动态配置存储器映射图。

More Related