




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3 10硬件乘法器 MPY32 32 BitHardwareMultiplier 硬件乘法器 MPY32 主要内容 MPY32概述MPY32结构MPY32操作操作数寄存器结果寄存器小数部分MPY32库函数MPY32应用举例 硬件乘法器 概述 1 3 我们知道 使用CPU进行复杂的乘法运算 会在很大程度上消耗CPU资源 硬件乘法器作为外设模块 不影响CPU工作 仅需要CPU指令载入操作数 硬件乘法器就可以把运算结果存放到相应寄存器 再利用CPU指令读取寄存器中存储的运算结果 硬件乘法器大大加强了MSP430的功能并提供了软硬件相兼容的范围 提高了数据处理能力 硬件乘法器 MPY32 是一个通过内部总线与CPU相连16位外围模块 如下图所示 硬件乘法器 概述 2 3 硬件乘法器 概述 3 3 硬件乘法器 MPY32 支持以下运算 无符号乘法 MPY 有符号乘法 MPYS 无符号乘加 MAC 有符号乘加 MACS 8位 16位 24位 32位运算饱和模式浮点数模式16 16位 8 16位 16 8位 8 8位与16位硬件乘法器兼容的8位和16位操作8位和24位的乘法运算无需 标记扩展 指令 硬件乘法器 结构 1 1 32位硬件乘法器的结构框图 如右图所示 硬件乘法器 操作 1 10 硬件乘法器支持8位 16位 24位 32位的无符号数乘法 无符号数乘加 有符号数乘法 有符号数乘加操作 操作类型由第一个写入的操作数类型决定 硬件乘法器有2个32位操作数寄存器 操作数OP1和操作数OP2 以及1个64位结果寄存器 通过访问RES0 RES3寄存器获取 为了兼容16 16的硬件乘法器 可以通过RESLO RESHI和SUMEXT三个寄存器访问8位或者16位的运算结果 RESLO存储16 16结果的低字 RESHI存储高字 而SUMEXT则存储结果的有关信息 硬件乘法器 操作 2 10 操作数寄存器操作数0P1内置12个寄存器 如下表所示 将数据载入到乘法器并选择乘法器模式 对给定地址写入第一个操作数的低字时 就选择了乘法运算的类型 但并不开始任何操作 当向后缀为32H的高字寄存器写入第二个字时 乘法器就认为OP1是32位 否则就认为是16位 在写入OP2之前写入的最后一个地址定义了第一个操作数的长度 例如 先写MPY32L再写MPY32H 所有32位数据都将参加运算 OP1被认为是32位的 如果先写的是MPY32H后写MPY32L 那么乘法器就会忽略先写的MPY32H 认为OP1是16位的 并且只有写入MPY32L的数据参加运算 硬件乘法器 操作 3 10 如果操作数OP1值用于连续操作时 可以无需重载OP1而重复执行乘法操作 执行操作时没必要对OP1重新写入 硬件乘法器 操作 4 10 写入第二个操作数到寄存器OP2将会启动乘法操作 对OP2的写操作将启动第二个16位操作数与存储在OP1内值的乘法运算 对OP2的写操作将启动第二个32位操作数乘法运算 乘法器等待OP2H写入一个高字 没有写OP2L的情况下 将忽略对OP2H的写操作 硬件乘法器 操作 5 10 结果寄存器乘法操作的结果总是64位 可以通过寄存器RES0 RES3访问 MPYS或MACS用于有符号操作时 结果通常会有符号位的扩展 在MACS操作之前 结果寄存器载入初始值 那么用户必须保证写入结果寄存器的值是可以符号扩展到64位 除了RES0 RES3 为了与16 16硬件乘法器兼容 8位操作或16位操作的32位结果可以通过RESLO RESHI和SUMEXT访问 在这种情况下 RESLO寄存器保存计算结果的低16位 RESHI寄存器保存高16位 在使用和访问计算结果方面 RES0 RES1分别与RESLO和RESHI相同 结果扩展寄存器SUMEXT的内容取决于乘法器的操作 如下表所列 如果操作数是16位或更短时 32位结果决定符号和进位位 如果其中一个操作数大于16位 则结果为64位 硬件乘法器 操作 6 10 MPYC位反映了乘法器的进位 如下表所列 如果没有选择小数模式或者饱和模式 则该位可以作为结果的第33位或第65位 对于MAC或者MACS操作 MPYC位反映32位或64位累积的进位 不作为MAC和MACS连续操作的33位或第65位 小数部分32位乘法器支持定点信号处理功能 在定点信号处理过程中 小数通常用一个固定的十进制小数来表示 使用Q格式的表示方法来区分不同范围的小数 不同的Q格式表示不同的十进制小数点位置 下图表示有符号Q15数据的16位数据格式 小数点后的每一位 精度为1 2 最高有效位是符号位 最大的负数为08000h 最大的正数是07FFFh 因此 16位有符号的Q15格式可以表示从 1 0到0 999969482 1 0的数 硬件乘法器 操作 7 10 可以通过如下图所示右移小数点来增大表示的范围 16位有符号的Q14格式可以表示从 2 0到1 999938965 2 0的数 乘法器采用16位有符号Q15或32位Q31的好处是 两个在 1 0到1 0范围内的两个数的乘积总是在同一范围内 硬件乘法器 操作 8 10 硬件乘法器 操作 9 10 小数模式 MPYFRAC 0和MPYSAT 0 采用默认乘法模式的两个小数相乘 其结果具有2位符号位 例如 两个16位Q15格式的数相乘 将得到一个32位Q30格式的结果 读取结果寄存器RES1 结果为16位Q15格式 两个32位Q31格式的数相乘 其结果可以通过读取寄存器RES2和RES3获得 当MPYFRAC 1时 结果寄存器的实际值并没有改变 当通过软件访问这个结果时 计算结果左移一位 形成最终的Q格式结果 这样就允许用户通过软件选择读取移位的结果还是未移位的结果 小数模式只能在需要的时候使能 在使用完之后禁止 硬件乘法器 操作 10 10 饱和模式 当寄存器MPY32CTL0的MPYSAT 1时 则使能饱和模式 在饱和模式下 乘法器可以防止有符号数操作结果的上溢或者下溢 如果发生上溢 结果将被设置成正的最大有效值 如果发生下溢 结果将被设置成负的最大有效值 这可以减少控制系统在溢出条件下的数学结果 饱和模式只能在需要的时候使能 在使用完之后应禁止 硬件乘法器 库函数 1 3 硬件乘法器API分成3组函数 模块配置函数 操作数设置函数 结果返回函数 模块配置相关API MPY32 setWriteDelay MPY32 setSaturationMode MPY32 resetSaturationMode MPY32 setFractionMode MPY32 resetFractionMode 硬件乘法器 库函数 2 3 操作数设置相关API MPY32 setOperandOne8Bit MPY32 setOperandOne16Bit MPY32 setOperandOne24Bit MPY32 setOperandOne32Bit MPY32 setOperandTwo8Bit MPY32 setOperandTwo16Bit MPY32 setOperandTwo24Bit MPY32 setOperandTwo32Bit 硬件乘法器 库函数 3 3 结果返回相关API MPY32 getResult8Bit MPY32 getResult16Bit MPY32 getResult24Bit MPY32 getResult32Bit MPY32 getResult64Bit MPY32 getSumExtension MPY32 getCarryBitValue 硬件乘法器 应用举例 1 6 例1 利用硬件乘法器计算两个16位无符号整数的乘积 0 x1234 0 x5678第二个操作数写入完毕 乘法运算就开始 结果存放在RESLO RESHI中 ACLK REFO 32 768kHz MCLK SMCLK 默认DCO 相关程序如下 includevoidmain void WDTCTL WDTPW WDTHOLD 关闭看门狗定时器MPY 0 x1234 载入第一个无符号整型操作数 表明是无符号乘法OP2 0 x5678 载入第二个无符号整型操作数后 开始运算 bis SR register LPM4 bits 进入LPM4 调试用 验证结果是否正确 正确结果RESLO 0 x0060 RESHI 0 x0626 no operation 硬件乘法器 应用举例 2 6 用库函数调用 实现例1相同功能相关程序如下 include inc hw memmap h include driverlib 5xx 6xx mpy32 h include driverlib 5xx 6xx wdt h include driverlib 5xx 6xx gpio h voidmain void 关闭看门狗定时器WDT hold MSP430 BASEADDRESS WDT A 载入第一个无符号整型操作数 表明是无符号乘法MPY32 setOperandOne16Bit MSP430 BASEADDRESS MPY32 MPY32 MULTIPLY UNSIGNED 0 x1234 载入第二个无符号整型操作数后 开始运算MPY32 setOperandTwo16Bit MSP430 BASEADDRESS MPY32 0 x5678 进入LPM4 bis SR register LPM4 bits 调试用 验证结果是否正确 no operation 硬件乘法器 应用举例 3 6 例2 利用硬件乘法器计算两个16位无符号整数的乘积 0 x12341234 0 x56785678 第二个操作数写入完毕 乘法运算就开始 结果存放在RES0 RES1 RES2 RES3中 ACLK REFO 32 768kHz MCLK SMCLK 默认DCO相关程序如下 includevoidmain void 关闭看门狗定时器WDTCTL WDTPW WDTHOLD 载入第一个32位无符号整型操作数的低16位 表明是无符号乘法MPYS32L 0 x1234 MPYS32H 0 x1234 载入第一个32位无符号整型操作数的高16位OP2L 0 x5678 载入第二个32位无符号整型操作数的低16位OP2H 0 x5678 载入第二个32位无符号整型操作数的高16位 开始运算 delay cycles 10 等待结果就绪 bis SR register LPM4 bits 进入LPM4 调试用 验证结果是否正确 正确结果RES0 0 x0060 RES1 0 x06E6 RES2 0 x0CAC RES3 0 x0626 no operation 硬件乘法器 应用举例 4 6 用库函数调用 实现例2相同功能 include inc hw memmap h include driverlib 5xx 6xx mpy32 h include driverlib 5xx 6xx wdt h include driverlib 5xx 6xx gpio h uint64Result voidmain void 关闭看门狗定时器WDT hold MSP430 BASEADDRESS WDT A 载入第一个无符号整型操作数 表明是无符号乘法MPY32 setOperandOne32Bit MSP430 BASEADDRESS MPY32 MPY32 MULTIPLY UNSIGNED 0 x12341234 载入第二个无符号整型操作数 开始运算MPY32 setOperandTwo32Bit MSP430 BASEADDRESS MPY32 0 x56785678 delay cycles 10 等待结果就绪MPY32 getResult64Bit MSP430 BASEADDRESS MPY32 bis SR register LPM4 bits 进入LPM4 调试用 验证结果是否正确 no operation 硬件乘法器 应用举例 5 6 例3 利用硬件乘法器计算一组32位无符号整数的乘积 第二个操作数写入完毕 第一次乘法运算就自动开始 接下来执行第二次的乘加操作 结果存放在RES0 RES1 RES2和RES3中 SUMEXT包含结果的扩展标志 ACLK REFO 32 768kHz MCLK SMCLK 默认DCO includevoidmain void WDTCTL WDTPW WDTHOLD 关闭看门狗定时器 载入第一个32位无符号整型操作数的低16位 表明是无符号乘法MPY32L 0 x1234 MPY32H 0 x1234 载入第一个32位无符号整型操作数的高16位OP2L 0 x5678 载入第二个32位无符号整型操作数的低16位OP2H 0 x5678 载入第二个32位无符号整型操作数的高16位 开始运算MACS32L 0 x1234 载入第三个32位无符号整型操作数的低16位MACS32H 0 x1234 载入第三个32位无符号整型操作数的高16位OP2L 0 x5678 载入第四个无符号整型操作数的低16位OP2H 0 x5678 载入第四个无符号整型操作数的高16位 delay cycles 10 等待结果就绪 bis SR register LPM4 bits 进入LPM4 no operat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 艺术类培训管理制度
- 苏州家纺店管理制度
- 茶楼茶艺师管理制度
- 集中充电桩管理制度
- 小学语文《小公鸡和小鸭子》课件
- 毕业设计(论文)答辩 -后扰流板对汽车气动特性影响的仿真分析
- 广西钦州市第四中学2024-2025学年高一下学期学业水平合格性考试模拟试卷地理试卷(九)(含答案)
- 幼儿园大班《认识人民币》教案
- 从职业生涯规划书看舞蹈生的成长之路
- 山东中考济宁题目及答案
- 2025年供应链管理考试题及答案
- 2025-2030中国冷热交换器行业市场现状分析及竞争格局与投资发展研究报告
- 美容院和干洗店合同协议
- 前程无忧测评题库
- ICU经口气管插管患者口腔黏膜压力性损伤预防的最佳证据总结 - 学习与临床应用
- 2025急性心梗诊疗指南
- 【闵行区人民法院】上海市闵行区劳动人事争议调解仲裁与审判白皮书(2023-2024年)
- 智能药柜管理系统行业深度调研及发展战略咨询报告
- 大数据导论题库习题试卷及答案
- 住院费用清单2
- 2025水发集团限公司招聘若干人(山东)易考易错模拟试题(共500题)试卷后附参考答案
评论
0/150
提交评论