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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

10
11
左移4位
右移6位
注:Q31格式是一种二进制小数格式,该格式在二进制小数点 的后面有31个数字。
四、辅助寄存器算术单元 (ARAU)
ARAU的主要功能:是在CALU操作的同时执 行8个辅助寄存器(AR7~AR0)上的算术运 算。 ARAU :对当前辅助寄存器 AR 的内容增加、 减少或作无符号16位算术运算。
SXM位影响SFR(累加器右移)指令的定义
当 SXM = 1 , SFR 完成一个算术右移且累加 器中数据的符号保留;
当 SXM = 0 , SFR 实现一个逻辑右移,最低 位溢出,最高位填0。
但,SXM不影响SFL(累加器左移)指令。
ACC的位操作功能
由于 CALU 的位移动和旋转在累加器中完成 ,因此 CALU 可 以 执 行 布 尔 运 算 , 使 得 DSP 具 有 位 操 作 功 能。。
OVM=1 ,溢出方式使能,累加器发生溢出时装 载以下两个特定值之一:
若为正溢出,累加器装载最大正数7FFF FFFFh; 若为负溢出,累加器装载最大负数8000 0000h。
注意:逻辑运算的结果不发生溢出。
溢出标志位OV
• 当溢出发生时,置OV=1(锁存); • 当未检测到ACC输出时, OV=0(不锁存)。
输出定标器用于累加器的高字位段时 ( 16 ~ 31 位),最高有效位丢失,最低 有效位用移入的低字位段( 0 ~ 15 位) 填写; 当输出定标器用于累加器的低字位段时, 最低有效位填0。
二、16位输入定标移位器 (Input shifter)
输入定标移位器:是1个16到32位的桶型左向移位器。 移位器符号:ISCALE
16bit
ISCALE
32bit
CALU
16 位输入和 数据总线相 连; 32 位输出和 CALU 单 元 相连。
输入定标移位器
•ISCALE 能将输入的 16 位数据的 0 到 16 位在本周期内向 左移位,以得到32位的输出。因此,输入定标移位操作 不需要额外的周期。 •左移范围:0~15 •左移时的符号扩展方式由ST1中的SXM决定
基于 TREG 的移位允许动态调整定标因子,从而使 数据适应不同的系统性能。
三、 16×16位的并行乘法器 (Multiplier)
乘法器:是 1个16X16位的硬件乘法器,它可以在单个 机器周期内产生1个32位结果的有符号或无符号数。
乘法器的输入:
一个来自16位的暂存器(TREG), 另一个通过数据读总线(DRDB)来自数据存储器, 或者通过程序读总线(PRDB)来自程序存储器。 两个输入值相乘后,32位的乘积结果存放在32位的乘积 寄存器(PREG)中。
描述cap1int36evacapture中断cap2int37evacapture中断cap3int38evacapture中断cap4int39evbcapture中断cap5int40evbcapture中断cap6int41evbcapture中断spiint42spi低优先级模式的spi中断rxint43sci低优先级模式的sci接收中断txint44sci低优先级模式的sci发送中断canmbint45can低优先级模式的can邮箱中断canerint46can低优先级模式的can错误中断adcint47adc低优先级模式的adc中断中断名称优先级能否被屏外围中断源模块描述xint148外部中断逻辑低优先级模式的外部引脚中断xint249外部中断逻辑保留位cpu分析中断trapcputrap指令假中断向量cpu假中断向量int8int16cpu软件中断向量int20int31为了让cpu能够区别这些引起中断的外设事件在每个外设中断请求有效时都会产生一个唯一的外设中断向量
乘数和被乘数都视为 2 的补码,其 32 位乘积数也是 2 的补码。
PREG 的输出:连接到乘积定标移位器,通过乘积 定标移位器( PSCALE ),乘积结果可以从 PREG 送到CALU或数据存储器。 乘积定标移位器PSCALE:对乘积结果采用4种乘积 移位方式。
移位方式:由状态寄存器 ST1 的乘积移位方式位( PM ) 指定。
1.中央算术逻辑单元(CALU)
能实现许多算术和逻辑运算功能,且大多数的 运算只需一个时钟周期。 运算功能包括: • 16位加
• 16位减
• 布尔运算 • 位测试 • 移位功能
CLAU有两个输入
一个:总是由累加器(ACC) 提供; 另一个:由乘法器的乘积寄 存器(PSCALE)或输入数据 定标移位器(ISCALE)提 供。
CMPR 指令将 AR0 的内容和当前 AR 的内容进行比 较,并将比较结果存至状态寄存器 ST1中的测试/控 制位TC。
由辅助寄存器指针 ARP 所指定的寄存器( AR7 ~ AR0 ) 被当做当前辅助寄存器AR。
1. 数据装载
辅助寄存器 可以从数据存储器、 ACC 、乘积 寄存器或指令的立即操作数装载。
ARP
当 ARP 装载了新的值后,原来 ARP 的值就装载到辅 助寄存器指针缓冲器ARB中。 寄存器中的内容可存贮在数据存储器中或作为 ARAU的输入。
2407A CPU
功能模块图
注:
Data Bus和 Program Bus 包括地址和数 据位。
CPU地址和数据总线结构
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.
测试/控制标志位TC
根据被测试位的值,对该位置0或1。
CLAU可以根据CLAU和累加器的状态执行分支 类指令。 分支类指令有: • 基于状态位OV(溢出标志); • EQ(累加器等于0)的值执行条件分支指令; • 由累加器提供分支地址执行分支指令。
3. 32位数据输出移位器 (Output shifter)
3. ARAU执行的操作
• 通过执行任何一条支持间接寻址的指令将辅助寄 存器值增1或减1,或者增一个或减一个变址值。
• 将一个常数加至辅助寄存器值或从辅助寄存器值 减去一个常数。该常数取自指令字的 8位最低有效 位。 • 比较 AR0和当前 AR的内容,然后将比较结果放 至状态寄存器ST1中的测试/控制位TC。结果经数 据写总线DWEB传送至TC。
PM
00 01
SHIFT
没有移位 左移1位
说明
乘积结果不移位,直接送到CALU单元或 数据总线。 移去在作 2的补码乘积运算中所产生的附 加符号位 ,得到一个Q31的乘积。 当 与 一 个 13 位 常 数 相 乘 时 , 移 去 在 作 16×13位2的补码乘积运算中所产生的4个 附加符号位,生成一个Q31的乘积。 定标乘积结果,以使 128 次乘加的运算结 果不会使累加器溢出。
• 将ACC的数据进行移位或循环移位。 进位位的状态提供两个条件算子C、NC,它们 影响分支、调用、返回和条件执行。 硬件复位进位位置1。 但,装载累加器、逻辑操作或非算术运算以 及控制指令不影响进位位。
溢出方式位OVM
CLAU的溢出方式可以由ST0的OVM位使能。
OVM=0,累加器发生溢出时装载正常溢出值;
• 进位位C:状态寄存器ST1第9位; • 溢出方式位OVM :状态寄存器ST0第11位;
• 溢出标志位OV:状态寄存器ST0第12位;
• 测试/控制标志位TC:状态寄存器ST1第11位。
位测试指令:允许测试数据存储器中一个字的特定位, 测试操作不影响累加器。
进位位C
影响进位位C的操作:
• 加至ACC或从ACC减;
SFL和SFR(左移、右移)指令 ROL和ROR(左、右旋转)指令
SFL:溢出最高位到进位位,最低位填0。
ROL:溢出最高位到进位位,进位位移至最 低位。
SFR:当为逻辑右移,最低位到进位位,最高 位填0;当为算术右移,最低位到进位位,最 高位31复制30位,进位位不变。
ROR:最低位到进位位,进位位移至最高位。
4. ARAU执行其算术运算
在流水线的译码阶段(即当指令所指明的操作正被 译码时),ARAU执行算术运算。使得在下一条指 令的译码阶段之前能够产生本条指令的地址。
但有一种情况例外:在处理 NORM 异或指令时,是 在流水线的执行过程中完成对辅助寄存器的修改。
5. 辅助寄存器的其他用途
辅助寄存器除用作数据存储器的地址存储器外,还 可用作其他用途 。 • 通过 CMPR 比较指令,利用辅助寄存器支持条件 转移、调用和返回。
2. 说明
1. 辅助寄存器算术单元( ARAU )完全独 立于中央算术逻辑单元(CALU)。 2. 利用包含在辅助寄存器中的 16位地址可以 访问64K数据空间中的任意单元。 这 8 个辅助寄存器提供了强大而灵活的间接 寻址能力。
在一条指令的执行过程中,当前辅助寄存器存 放被访问数据存储区的地址。 若指令为读数据存储区数据,ARAU就将该地 址送至DRAB(数据读地址总线); 若指令为向数据存储区写数据,ARAU就将该 地址送至DWAB(数据写地址总线)。
第2章 F240X系列DSP 内部资源介绍
2.1 F240x系列DSP
CPU (Central Processing Unit)内部功能模块介绍
CPU功能模块: 总线:程序总线和数据总线
运算部分:中央算术逻辑单元,乘法器,输入定标器
辅助寄存器部分:辅助寄存器,ARAU 存储器:FLASH, DARAM 控制部分:程序控制,器件状态配置,堆栈等
数据调整时,输入定标移位器将输入的数据左移 0~16位,移位后输出数据的最低有效位段填 0,而 最高有效位段要根据状态寄存器 ST1 的符号扩展方 式位(SXM)的值来决定。 当SXM=1时,高由指令字所包含的常量或临时寄 存器(TREG)指定。
累加器的高位字和低位字都可 进行单独移位和存储
输出数据移位过程中ACC 中的内容保持不变
CALU的运算结果
一旦 CALU 完成算术运算或逻辑运算操作, 其结果总是送到32位累加器;
由累加器对结果进行附加运算(如移位); I. 累加器 的输出 连接到 32 位输出数据定 标移位器 (OSCALE);
II. 经过 OSCALE 移位,数据的高 16 位和低 16 位分别 移位或存入数据寄存器。
2. 32位累加器ACC
32位累加器是CLAU的寄存器输出。
CALU中的32位运算结果送至累加器中执行 单一的移位或循环操作。 通过进位位实现累加器内容的移位和旋转。 累加器的高位字和低位字分别送至输出数据定 标移位器,在此定标移位后,再存至数据存储 器。
关于运算部分
输入定标器、中 央算术逻辑部分 和乘法器
一、中央算术逻辑部分
1. 32 位 中 央 算 术 逻 辑 单 元 ( Central Arithmetic Logic Unit CALU) 2. 32位累加器(Accumulator ACC)
3. 32位数据输出移位器(Output shifter)
中央处理单元CPU (Central Processing Unit)
1. 32位中央算术逻辑部分(Central Arithmetic Logic Unit CALU ) 2. 16×16位的并行乘法器(Multiplier) 3. 16位输入定标移位器(Input shifter) 4. 辅助寄存器算术单元(ARAU) 5. 状态寄存器
数据输出移位器:为1个16到32位的桶型左向 移位寄存器。 寄存器符号:OSCALE OSCALE 将 32 位累加器输出左移 0 到 7 位,然 后用 SACH 或 SACL 指令将移位器的高位字 (高 16 位)或低位字(低 16 位)输出到数据 写总线(DWEB) 。 当数据传送到数据总线上移位就完成,此时 累加器中的内容仍保持不变。
相关文档
最新文档