<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430x54x學(xué)習(xí)筆記--硬件乘法器MPY

          MSP430x54x學(xué)習(xí)筆記--硬件乘法器MPY

          作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          硬件乘法器MPY:(平臺:MSP430F5418)

          ·16位乘法器使用方法:

          本文引用地址:http://www.ex-cimer.com/article/201611/322783.htm

          1.無符號數(shù)相乘 result="n1"*n2。第一操作數(shù)n1(16位無符號)賦給MPY寄存器,第二操作數(shù)n2(16位無符號)賦給OP2寄存器,賦值完成后,結(jié)果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.無符號數(shù)乘加操作 result="n1"*n2+n3*n4。第一操作數(shù)n1(16位無符號)賦給MPY寄存器,第二操作數(shù)n2(16位無符號)賦給OP2寄存器,第三操作數(shù)n3(16位無符號)賦給MAC寄存器,第四操作數(shù)n4(16位無符號)賦給OP2寄存器,結(jié)果result(32位無符號)就可以在RESLO(低16位)和RESHI(高165位)中讀取。SUMEXT寄存器中保存進(jìn)位標(biāo)志。
          代碼如下:
          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.有符號數(shù)相乘 result="n1"*n2。第一操作數(shù)n1(16位有符號)賦給MPYS寄存器,第二操作數(shù)n2(16位有符號)賦給OP2寄存器,賦值完成后,結(jié)果result(32位有符號)就可以在RESLO(低16位)、RESHI(高165位)和SUMEXT(符號)中讀取。SUMEXT=0xffff則結(jié)果為負(fù),SUMEXT=0則結(jié)果為正。
          代碼如下:
          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。第一操作數(shù)n1(16位無符號)賦給MPY寄存器,第二操作數(shù)n2(16位無符號)賦給OP2寄存器,第三操作數(shù)n3(16位有符號)賦給MAC寄存器,第四操作數(shù)n4(16位有符號)賦給OP2寄存器,結(jié)果result(32位有符號)就可以在RESLO(低16位)和RESHI(高165位)中讀取。SUMEXT寄存器中保存進(jìn)位和正負(fù)標(biāo)志。
          代碼如下:
          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寄存器,賦值完成后,結(jié)果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位情況類似。


          定點小數(shù)部分還有待研究~~



          關(guān)鍵詞: MSP430x54x硬件乘法器MP

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();