欢迎来到天天文库
浏览记录
ID:36853596
大小:292.33 KB
页数:7页
时间:2019-05-16
《MSP430程序库(十三)硬件乘法器使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MSP430程序库<十三>硬件乘法器使用硬件乘法器不占用CPU周期,有硬件实现,速度比软件实现的乘法速度快很多。msp430f14x、msp430f16x中都含有硬件乘法器模块,方便用户需要速度的时候使用。1.硬件介绍:在MSP430系列单片机中,硬件乘法器是外围模块,而不是CPU内核的一部分;所以它的活动与否与CPU的活动与否无关,它的寄存器和其他的外围寄存器一样通过CPU指令读写。硬件乘法器模块支持一下功能:无符号乘法、有符号乘法、无符号乘加、有符号乘加;可以支持16*1616*88*168*8bits的乘法。硬件乘法器的模块框图如下:硬件乘法器模块
2、的四种操作类型(无符号乘法、有符号乘法、无符号乘加、有符号乘加)是由写入的第一个操作数的位置决定的。这个模块有两个操作数寄存器:OP1和OP2、三个结果寄存器RESLO,RESHI,和SUMEXT。RESLO寄存器存储结果的低字(低16位);RESHI寄存器存储结果的高字(高16位);SUMEXT寄存器存储结果的有关信息。结果在3个时钟周期后即可完成;写入OP2后的下一条指令即可读取结果,有一种情况例外:用间接寻址方式访问结果。用间接寻址方式访问结果时,读取结果之前需要有一条NOP指令。操作数OP1有四个地址(MPY:0130hMPYS:0132hMAC
3、:0134hMACS:0136h),这四个寄存器用来选择乘法的操作模式。写入第一个操作数寄存器决定用哪种操作:无符号用符号等,但是不启动相乘操作;写入第二个操作数寄存器启动相乘的操作。计算完成后结果存入寄存器RESLO,RESHI,和SUMEXT。操作数1的四个地址对应的操作:OP1AddressRegisterNameOperation0130hMPYUnsignedmultiply(无符号乘法)0132hMPYSSignedmultiply(有符号乘法)0134hMACUnsignedmultiplyaccumulate(无符号乘加)0136hMAC
4、SSignedmultiplyaccumulate(有符号乘加)四种操作模式下高位结果寄存器的内容如下:ModeRESHIContentsMPYUpper16-bitsoftheresultMPYSTheMSBisthesignoftheresult.Theremainingbitsaretheupper15-bitsoftheresult.Two’scomplementnotationisusedfortheresult.MACUpper16-bitsoftheresultMACSUpper16-bitsoftheresult.Two’scomplem
5、entnotationisusedfortheresult.四种操作模式SUMEXT寄存器的内容:ModeSUMEXTMPYSUMEXTisalways0000hMPYSSUMEXTcontainstheextendedsignoftheresult00000hResultwaspositiveorzero0FFFFhResultwasnegativeMACSUMEXTcontainsthecarryoftheresult0000hNocarryforresult0001hResulthasacarryMACSSUMEXTcontainstheexten
6、dedsignoftheresult00000hResultwaspositiveorzero0FFFFhResultwasnegative连续乘法运算时,如果操作数1不需改变就可以运算,则可以不需要重新写入和以保存内容相同的数;但OP2必须重新写入以启动乘法运算。MACSUnderflowandOverflow(MACS时的上溢和下溢):硬件乘法器不检测有符号乘加时运算结果的上溢出和下溢出。结果的正数范围:0到7FFFFFFFh;负数范围:0FFFFFFFFh到80000000h。下溢出是两个负数的和结果寄存器得到的是正数,上溢出是两个正数的和结果寄存
7、器得到的是负数。SUMEXT寄存器存储有结果的符号,可以根据它判断是否溢出(0000h负数和则上溢0FFFFh正数和则下溢)。使用时程序必须合适的检测、处理MACS的溢出情况。2.程序示例(用户指南上给出的汇编示例):所有乘数模式的例子如下。所有的8x8模式使用的寄存器的绝对地址,因为汇编器将不允许B访问到字寄存器时使用标准定义的文件标签。;16x16UnsignedMultiplyMOV#01234h,&MPY;LoadfirstoperandMOV#05678h,&OP2;Loadsecondoperand;...;Processresults;8x
8、8UnsignedMultiply.Absoluteaddressing.MOV
此文档下载收益归作者所有