打印

MSP430学习笔记之八:硬件乘法器

[复制链接]
3516|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lilihua0721|  楼主 | 2011-9-26 18:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MSP430学习笔记之八:硬件乘法器



硬件乘除法器是一个通过内总线与CPU相连的16位外围模块。MSP430单片机可以在内部改变CPU结构和指令的情况下增加功能,这种结构特别适用于对运算速度要求很严格的情况,硬件乘法器大大提高了MSP430单片机的数据处理能力,其支持的运算如下:
无符号乘法(MPY
有符号乘法MPYS
无符号乘法MAC
有符号乘法MACS
16X16位、8X1616X88X8位。

操作数寄存器:
OP1 (第1操作数)
OP2
(第2操作数)
第一个操作数可源于MPYMPYSMACMACS四个寄存器,它们能确定乘法的类型。当第二个操作数写入后,相应的乘法操作立即执行,一般需4个周期。
结果寄存器:
RESHI(结果高字节寄存器)
RESLO(结果低字节寄存器)
SUMEXT(结果扩展寄存器)
寄存器RESHIRESLO的内容为两个16位相乘的32位乘积结果。而寄存器SUMEXT的内容由执行的乘法模式及乘积结果决定。

MPY
操作数1
指示操作数为无符号数相乘
MPYS
操作数1
指示操作数为有符号数相乘
MAC
操作数1
指示操作数为有符号数累加
OP_2
操作数2
RESLO
结果低字节寄存器
RESHI

结果高字节寄存器
SUMEXT 结果扩展寄存器
以上寄存器均是16位的字寄存器,在使用时,用户可以以字节操作或字操作,这样就开成了不同位数乘法的4种运算。

步骤:

写第一操作数OP1,来源于MPYMPYSMACMACS四个寄存器。
写第二操作数OP2,写入完毕,乘法运算开始进行。
保存结果,存放在RESHIRESLOSUMEXT中。

第二个操作数写入完毕乘法就开始。一般在取出结果前插入1-2条指令,以保证足够的运算时间。在一个单片机中只有一个硬件乘法器,若遇到多处使用,须在每一次用完之后再进行下次运算。
结果进行何种运算,只要操作数类型为8X8型,操作过程就要使用寄存器的绝对地址,而不能使用符号形式。寄存器MPYMPYSMACMACSOP2的地址分别为:0130H0132H0134H0136H, 0138H

  
msp4309.JPG (39.47 KB)
2011-3-13 14:39



还是简单的例程:

两组无符号数相乘结果放在另一个数组中

#include "msp430x16x.h"
unsigned long int Result[7];
unsigned int Data1[7];
unsigned int Data2[7];
unsigned char i;
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;
  for(i=0;i<7;i++)
  {
      Data1 = 250 * i;
      Data2 = 130 * i;
  }
  for(i=0;i<7; i++)
  {
    MPY = Data1;
    OP2 = Data2;
    _NOP();
    _NOP();
    _NOP();
    _NOP();  
    Result = RESHI;
    Result <<=16;
    Result += RESLO;
  }
  _NOP();
}

相关帖子

沙发
msp430ing| | 2011-9-27 14:47 | 只看该作者
是否TI是做DSP的,所以单片机里面也喜欢做个乘法器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

470

帖子

2

粉丝