新聞中心

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

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

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

        ·16位乘法器使用方法:

        本文引用地址:http://www.104case.com/article/201611/322783.htm

        1.無(wú)符號(hào)數(shù)相乘 result="n1"*n2。第一操作數(shù)n1(16位無(wú)符號(hào))賦給MPY寄存器,第二操作數(shù)n2(16位無(wú)符號(hào))賦給OP2寄存器,賦值完成后,結(jié)果result(32位無(wú)符號(hào))就可以在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.無(wú)符號(hào)數(shù)乘加操作 result="n1"*n2+n3*n4。第一操作數(shù)n1(16位無(wú)符號(hào))賦給MPY寄存器,第二操作數(shù)n2(16位無(wú)符號(hào))賦給OP2寄存器,第三操作數(shù)n3(16位無(wú)符號(hào))賦給MAC寄存器,第四操作數(shù)n4(16位無(wú)符號(hào))賦給OP2寄存器,結(jié)果result(32位無(wú)符號(hào))就可以在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.有符號(hào)數(shù)相乘 result="n1"*n2。第一操作數(shù)n1(16位有符號(hào))賦給MPYS寄存器,第二操作數(shù)n2(16位有符號(hào))賦給OP2寄存器,賦值完成后,結(jié)果result(32位有符號(hào))就可以在RESLO(低16位)、RESHI(高165位)和SUMEXT(符號(hào))中讀取。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.有符號(hào)乘加操作 result="n1"*n2+n3*n4。第一操作數(shù)n1(16位無(wú)符號(hào))賦給MPY寄存器,第二操作數(shù)n2(16位無(wú)符號(hào))賦給OP2寄存器,第三操作數(shù)n3(16位有符號(hào))賦給MAC寄存器,第四操作數(shù)n4(16位有符號(hào))賦給OP2寄存器,結(jié)果result(32位有符號(hào))就可以在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.無(wú)符號(hào)相乘 result="n1"*n2。n1(32位無(wú)符號(hào))低16位賦給MPY32L寄存器,n1高16位賦給MPY32H寄存器,n2(32位無(wú)符號(hào))低16位賦給OP2L寄存器,n2高16位賦給OP2H寄存器,賦值完成后,結(jié)果result(64位無(wú)符號(hào))就可以在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;


        其他情況依次類(lèi)推,與16位情況類(lèi)似。


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



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

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 上饶市| 闻喜县| 鄱阳县| 文登市| 新河县| 阜南县| 通道| 十堰市| 财经| 尉犁县| 金寨县| 深圳市| 合阳县| 夹江县| 广汉市| 南丰县| 沾化县| 陵川县| 双江| 永平县| 孟津县| 沽源县| 肇源县| 溧阳市| 正宁县| 罗定市| 东乌珠穆沁旗| 公安县| 和顺县| 宁陵县| 高雄县| 晋城| 德州市| 蒲城县| 南开区| 台州市| 蒙山县| 吉木萨尔县| 崇信县| 长阳| 交口县|