DSP完整课件第3章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Leabharlann Baidu 数据写
3.1.2 乘法器
16×16位的硬件乘法器, 16×16位的硬件乘法器, 位的硬件乘法器 可以在一个机器周期内完成 有符号或无符号数的乘法运 有符号或无符号数的乘法运 乘积结果为32 32位 算,乘积结果为32位。 工作原理: 工作原理: TREG的内容和来自数 TREG的内容和来自数 据存储器或程序存储器中 的数相乘, 的数相乘,乘积存放到乘 积寄存器(PREG) (32位 积寄存器(PREG) 中(32位 然后, )。然后,通过乘积移位 PREG的值 器(PSCALE) 将PREG的值 在送往CALU CALU或进行移位定 在送往CALU或进行移位定 标处理送入数据存储器。 标处理送入数据存储器。
2010
退出
状态寄存器ST0 ST0和 3.1.6 状态寄存器ST0和ST1
状态寄存器ST0和ST1,含有各种状态和控制位。 状态寄存器ST0和ST1,含有各种状态和控制位。状态寄存 ST0 器的内容可以被保存到数据寄存器, 器的内容可以被保存到数据寄存器,也可从数据寄存器中进行 加载。 加载。 状态寄存器ST0 1) 状态寄存器ST0 位 名 称 复位值 15~13 ~ ARP X 12 OV 0 11 OVM X 10 1 1 9 INTM 1 8~0 ~ DP X
2010
退出
累加器(ACC) 3.1.4 累加器(ACC)
3)溢出标志位OV 溢出标志位OV 累加器发生溢出时,OV=1,反之为 反之为0 当累加器发生溢出时,OV=1,反之为0。 4)测试/控制标志位TC 测试/控制标志位TC 根据被测试位的值置1 或清0 根据被测试位的值置1,或清0。 与累加器有关的转移指令主要取决于以上标志位状态, 与累加器有关的转移指令主要取决于以上标志位状态,及累 加器的值。 加器的值。
2010
退出
3.1 CPU功能模块 CPU功能模块
CPU是 CPU是DSP 的核心部件, 的核心部件, 主要进行取数 取数、 主要进行取数、 运算( 运算(加、乘、 移位等) 移位等)、送数 的操作。包括: 的操作。包括: 输入定标移位 器、中央算术 逻辑单元(CALU) 逻辑单元(CALU) 和乘法单元等。 和乘法单元等。
2010
退出
累加器(ACC) 3.1.4 累加器(ACC)
存放CALU中的运算结果, 存放CALU中的运算结果,其存放的数据可以执行单一的移位 CALU中的运算结果 或循环操作。 或循环操作。其中的高位或低位字可以进入输出定标移位器进行 移位后再存放进数据存储器。 ACC有关的状态位有 有关的状态位有: 移位后再存放进数据存储器。与ACC有关的状态位有: 进位标志位C 1)进位标志位C 累加器中的数据相加时,结果有进位或减法无借位时C=1 C=1; ① 当累加器中的数据相加时,结果有进位或减法无借位时C=1; 相减时,结果有借位或或加法无进位时, 相减时,结果有借位或或加法无进位时,C=0 。 累加器中的数据被移动1位时, ② 当累加器中的数据被移动1位时,累加器中的最低位或最高位 进入C 进入C。 2)溢出方式控制位OVM 溢出方式控制位OVM OVM决定ACC运算结果发生溢出时 是否进行溢出处理。 决定ACC运算结果发生溢出时, OVM决定ACC运算结果发生溢出时,是否进行溢出处理。 OVM=1,当运算结果发生溢出时 ACC结果被设定为确定值 当运算结果发生溢出时, 结果被设定为确定值: ① 若OVM=1,当运算结果发生溢出时,ACC结果被设定为确定值: 若正向溢出, FFFFH(最大正数 最大正数); 若正向溢出,ACC=7FFF FFFFH(最大正数); 若负向溢出, 0000H(最小负数 最小负数) 若负向溢出,ACC=8000 0000H(最小负数)。 OVM=0,ACC溢出为 溢出为0. ② 若OVM=0,ACC溢出为0.
2010
退出
状态寄存器ST0 ST0和 3.1.6 状态寄存器ST0和ST1
状态寄存器ST0 1) 状态寄存器ST0 INTM:全局中断屏蔽控制位。 INTM:全局中断屏蔽控制位。全局屏蔽或使能所有的可屏蔽 中断。INTM=0时 使能所有可屏蔽的中断;INTM=1时 中断。INTM=0时,使能所有可屏蔽的中断;INTM=1时,禁止 所有的可屏蔽中断。复位或可屏蔽中断发生时(TRAP (TRAP指令除外 所有的可屏蔽中断。复位或可屏蔽中断发生时(TRAP指令除外 INTM置 禁止中断。 ),INTM置1,禁止中断。 位 名 称 复位值 15~13 ~ ARP X 12 OV 0 11 OVM X 10 1 1 9 INTM 1 8~0 ~ DP X
11
注:移位后,PREG中的值不变。 移位后,PREG中的值不变。 中的值不变
2010
3.1.3 中央算术逻辑单元
由32位的中央算术逻辑单元(CALU)、32位的累加器(ACC) 32位的中央算术逻辑单元(CALU)、32位的累加器(ACC) 位的中央算术逻辑单元(CALU) 位的累加器 以及32位的输出移位器组成。 32位的输出移位器组成 以及32位的输出移位器组成。
2010
数据读 程序读
退出
3.1.2 乘法器
乘积移位器根据状态寄存器ST1中的PM值的不同, 乘积移位器根据状态寄存器ST1中的PM值的不同,可 ST1中的PM值的不同 进行4种不同形式的移位操作。 进行4种不同形式的移位操作。 PM 00 01 10 移位 不移位 左移1 左移1 位 左移4 左移4 位 右移6 右移6 位 作用和意义 乘积送到CALU或数据写总线, 乘积送到CALU或数据写总线,不移位 CALU或数据写总线 移去二进制补码乘法产生的冗余符号位, 移去二进制补码乘法产生的冗余符号位,产生 Q31格式的乘积 Q31格式的乘积 当与一个13位的常数相乘时,移去在16X13位 当与一个13位的常数相乘时,移去在16X13位 13位的常数相乘时 16X13 常数)二进制补码产生的4位冗余符号位, (常数)二进制补码产生的4位冗余符号位,产 Q31格式的乘积 生Q31格式的乘积 对乘积结果定标,以使得运行128 128次的乘积累 对乘积结果定标,以使得运行128次的乘积累 加而累加器不会溢出 退出
ARP:辅助寄存器指针。利用MAR、LST指令可以修改状态寄存 ARP:辅助寄存器指针。利用MAR、LST指令可以修改状态寄存 MAR ST0中的辅助寄存器指针(ARP)。 中的辅助寄存器指针(ARP) 器ST0中的辅助寄存器指针(ARP)。在间接寻址时用于选择当 前辅助寄存器。在ARP被装载时,原先的ARP值被复制到ARB中。 前辅助寄存器。 ARP被装载时,原先的ARP值被复制到ARB中 被装载时 ARP值被复制到ARB 退出
3.1.5 输出数据定标移位器
根据相应的存储指令中指定的位数, 根据相应的存储指令中指定的位数,将累加器输出的内容左 然后将移位器的高16位或低16位存储到数据RAM 16位或低16位存储到数据RAM中 移0~7位,然后将移位器的高16位或低16位存储到数据RAM中。 7 注意: 注意:累加器中的数据不变
2010
状态寄存器ST0 ST0和 3.1.6 状态寄存器ST0和ST1
状态寄存器ST0 1) 状态寄存器ST0 OV:溢出标志位。当中央算术逻辑单元发生溢出时,OV=1, OV:溢出标志位。当中央算术逻辑单元发生溢出时,OV=1,直 溢出标志位 到发生复位、执行以OV(溢出) NOV(不溢出 OV(溢出 不溢出) 到发生复位、执行以OV(溢出)或NOV(不溢出)为条件的转移指 或执行LST指令时被清0 LST指令时被清 令、或执行LST指令时被清0。 位 名 称 复位值 15~13 ~ ARP X 12 OV 0 11 OVM X 10 1 1 9 INTM 1 8~0 ~ DP X
2010
退出
3.1.3 中央算术逻辑单元
注意几个问题: 注意几个问题: (1)当加到累加器或从累加器减或将累加器数值移1 (1)当加到累加器或从累加器减或将累加器数值移1位或循环 当加到累加器或从累加器减或将累加器数值移 位时将影响进位标志位 影响进位标志位C 移1位时将影响进位标志位C。 (2)溢出方式位(OVM)决定累加器如何处理算术运算的溢出, (2)溢出方式位(OVM)决定累加器如何处理算术运算的溢出, 溢出方式位(OVM)决定累加器如何处理算术运算的溢出 OVM=1且有溢出发生时 累加器自动填充最大值或最小值; 且有溢出发生时, 当OVM=1且有溢出发生时,累加器自动填充最大值或最小值; OVM=0时 累加器中的结果正常溢出。 当OVM=0时,累加器中的结果正常溢出。 (3)当未检测到累加器溢出时,其值为0 当溢出发生时, (3)当未检测到累加器溢出时,其值为0;当溢出发生时, 当未检测到累加器溢出时 OV位被置 位被置1 OV位被置1。 (4)根据被测试位的结果,测试控制标志位(TC)位被置1 (4)根据被测试位的结果,测试控制标志位(TC)位被置1或0。 根据被测试位的结果 (TC)位被置
2010
退出
3.1.1 输入定标移位器
用于完成不同数据格式之间的转换。 用于完成不同数据格式之间的转换。 因为240x芯片的数据总线是16位 240x芯片的数据总线是16 因为240x芯片的数据总线是16位,而中央算术逻辑单元 (CALU)是32位 必须把16位数据转换为32 16位数据转换为32位 实现数据格式转换。 (CALU)是32位,必须把16位数据转换为32位,实现数据格式转换。 因此,输入定标移位器的16位输入与数据总线相连,32位输出与 16位输入与数据总线相连 因此,输入定标移位器的16位输入与数据总线相连,32位输出与 CALU单元相连 单元相连。 CALU单元相连。 输入定标移位器作为从数据总线到CALU CALU之间的数据传输 输入定标移位器作为从数据总线到CALU之间的数据传输 路径的一部分,不会额外占用CPU的时钟开销。 CPU的时钟开销 路径的一部分,不会额外占用CPU的时钟开销。 定标移位器对输入数据进行0 15位左移 位左移。 定标移位器对输入数据进行0-15位左移。 左移时,输出数据的最低有效位(LSB) (LSB)为 最高有效位(MSB) 左移时,输出数据的最低有效位(LSB)为0,最高有效位(MSB) 根据状态寄存器ST1的符号扩展控制位SXM ST1的符号扩展控制位SXM的值来决定是否需要进 根据状态寄存器ST1的符号扩展控制位SXM的值来决定是否需要进 行符号扩展。 行符号扩展。 (1)当SXM=1时 高位进行符号扩展; (1)当SXM=1时,高位进行符号扩展; (2)当SXM=0时 高位填0 (2)当SXM=0时,高位填0。 移位次数由包含在指令中的常量或临时寄存器(TREG)中的值 移位次数由包含在指令中的常量或临时寄存器(TREG)中的值 (TREG) 来指定。 来指定。 2010 退出
OVM:溢出方式位。OVM决定CALU发生溢出时的处理方式。当 OVM:溢出方式位。OVM决定CALU发生溢出时的处理方式。 决定CALU发生溢出时的处理方式 OVM=0时 累加器中结果正常溢出; OVM=1时 OVM=0时,累加器中结果正常溢出;当OVM=1时,根据溢出的 情况,累加器被设置成它的最大正值(7FFFFFFFh) (7FFFFFFFh)或负值 情况,累加器被设置成它的最大正值(7FFFFFFFh)或负值 (80000000h)。SETC、CLRC、LST指令均可修改OVM。 指令均可修改OVM (80000000h)。SETC、CLRC、LST指令均可修改OVM。
第3章 TMS320LF240x的CPU功能模 TMS320LF240x的CPU功能模 块和时钟模块
3.1 CPU功能模块 CPU功能模块 3.2 锁相环(PLL)时钟模块和低功耗模式 锁相环(PLL) (PLL)时钟模块和低功耗模式
作业: ) 作业:7)CPU 的主要功能 8)ARn的作用 ) 的作用 9)什么是DARAM、SARAM )什么是 、 10)PLL的作用 ) 的作用