专栏中心

EEPW首页 > 专栏 > MSP430x54x学习笔记--硬件乘法器MPY

MSP430x54x学习笔记--硬件乘法器MPY

发布人:mayer 时间:2009-09-01 来源:工程师 发布文章
MSP430x54x学习笔记--硬件乘法器MPY

 

硬件乘法器MPY:(平台:MSP430F5418)

 

·16位乘法器使用方法:


     1.无符号数相乘 result="n1"*n2。第一操作数n1(16位无符号)赋给MPY寄存器,第二操作数n2(16位无符号)赋给OP2寄存器,赋值完成后,结果result(32位无符号)就可以在RESLO(低16位)和RESHI(高165位)中读取。
代码如下:
  MPY = n1;                            // Load first operand -unsigned mult
  OP2 = n2;                                // Load second operand

  result = RESHI;                           // Load RESHI word result
  result = (result<<16)|RESLO;              // Shift RESHI left and concat with

 

 2.无符号数乘加操作 result="n1"*n2+n3*n4。第一操作数n1(16位无符号)赋给MPY寄存器,第二操作数n2(16位无符号)赋给OP2寄存器,第三操作数n3(16位无符号)赋给MAC寄存器,第四操作数n4(16位无符号)赋给OP2寄存器,结果result(32位无符号)就可以在RESLO(低16位)和RESHI(高165位)中读取。SUMEXT寄存器中保存进位标志。
代码如下:
  MPY = n1;                             // Load first operand -unsigned mult
  OP2 = n2;                             // Load second operand
  MAC = n3;    // Load 3rd operand -unsigned mult
  OP2 = n4;    // Load 4rd operand
  result = RESHI;                           // Load RESHI word result
  result = (result<<16)|RESLO;              // Shift RESHI left and concat with

 

 3.有符号数相乘 result="n1"*n2。第一操作数n1(16位有符号)赋给MPYS寄存器,第二操作数n2(16位有符号)赋给OP2寄存器,赋值完成后,结果result(32位有符号)就可以在RESLO(低16位)、RESHI(高165位)和SUMEXT(符号)中读取。SUMEXT=0xffff则结果为负,SUMEXT=0则结果为正。
代码如下:
  MPYS = n1;                            // Load first operand -signed mult
  OP2 = n2;                                // Load second operand

  result = RESHI;                           // Load RESHI word result
  result = (result<<16)|RESLO;              // Shift RESHI left and concat with

 

 4.有符号乘加操作 result="n1"*n2+n3*n4。第一操作数n1(16位无符号)赋给MPY寄存器,第二操作数n2(16位无符号)赋给OP2寄存器,第三操作数n3(16位有符号)赋给MAC寄存器,第四操作数n4(16位有符号)赋给OP2寄存器,结果result(32位有符号)就可以在RESLO(低16位)和RESHI(高165位)中读取。SUMEXT寄存器中保存进位和正负标志。
代码如下:
  MPY = n1;                             // Load first operand -unsigned mult
  OP2 = n2;                             // Load second operand
  MACS = n3;
  OP2 = n4;
  result = RESHI;                           // Load RESHI word result
  result = (result<<16)|RESLO;              // Shift RESHI left and concat with

 

·32位乘法器使用方法:


 1.无符号相乘 result="n1"*n2。n1(32位无符号)低16位赋给MPY32L寄存器,n1高16位赋给MPY32H寄存器,n2(32位无符号)低16位赋给OP2L寄存器,n2高16位赋给OP2H寄存器,赋值完成后,结果result(64位无符号)就可以在RES0(低位), RES1, RES2 和 RES3(高位)中读取。
代码如下:
  MPY32L = 0x1234;                          // Load lower 16 bits of operand 1
  MPY32H = 0x1234;                          // Load upper 16 bits of operand 1

  OP2L = 0x5678;                            // Load lower 16 bits of operand 2
  OP2H = 0x5678;                            // Load upper 16 bits of operand 2
  result_L = RES1;
  result_L = (result_L<<16)|RES0;
  result_H = RES3;
  result_H = (result_H<<16)|RES2;

其他情况依次类推,与16位情况类似。

定点小数部分还有待研究~~

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

电子科技大学--嵌入式系统应用开发技术30

精于微 智于芯:盛思锐微型化传感器亮相SENSOR CHINA 2025

电子科技大学--嵌入式系统应用开发技术32

这就是为什么安森美半导体公司 (ON) 跌幅超过大盘的原因

锂离子电池热失控的过程解析

电子科技大学--嵌入式系统应用开发技术29

AI赋能的客户体验,助力加速全球化布局

2025-09-26

在FireBeetle2ESP32P4开发板上使用ESP-IDF组件方式读取SHT30温湿度传感器

电路分析基础

如何移植EtherCAT Igh 基于米尔RK3576开发板

​利用集电极-基极结电容的调频发生器电路

电子科技大学--嵌入式系统应用开发技术31

数字电压表设计教程之模数转换原理分析

IC设计入门

资源下载 2007-12-24

英国提供1000万英镑基金以推动下一代半导体开发

EDA/PCB 2025-09-26

“RISC-V商用落地加速营伙伴计划”在北京亦庄发布 聚力推动RISC-V产品方案从原型走向商用落地

电子科技大学--嵌入式系统应用开发技术33

常见硬盘电路原理分析

北邮电子电路课件(方维老师)

自制简易遥控开关电路

更多 培训课堂
更多 焦点
更多 视频

技术专区