没用过,不懂,请教
在低功耗应用中,请问使用硬件乘法器对功耗有影响么?如果对速度没有要求,那么使用硬件乘法器与否对功耗有什么样的影响?datasheet上有关于硬件乘法器的电流消耗么?
在IAR开发环境,是否在选项里设置使用硬件乘法器就可以不用自己编写了?在CCS开发环境里在哪里设置?
Peter_Zheng:
在MSP430系列单片机中,硬件乘法器是外围模块,而不是CPU内核的一部分;所以它的活动与否与CPU的活动与否无关,它的寄存器和其他的外围寄存器一样通过CPU指令读写。硬件乘法器模块支持一下功能:无符号乘法、有符号乘法、无符号乘加、有符号乘加;可以支持16*16 16*8 8*16 8*8bits的乘法。硬件乘法器模块的四种操作类型(无符号乘法、有符号乘法、无符号乘加、有符号乘加)是由写入的第一个操作数的位置决定的。这个模块有两个操作数寄存器:OP1和OP2、三个结果寄存器RESLO, RESHI, 和SUMEXT。RESLO寄存器存储结果的低字(低16位);RESHI寄存器存储结果的高字(高16位);SUMEXT寄存器存储结果的有关信息。结果在3个时钟周期后即可完成;写入OP2后的下一条指令即可读取结果,有一种情况例外:用间接寻址方式访问结果。用间接寻址方式访问结果时,读取结果之前需要有一条NOP指令。在软件里,直接将数值写入硬件乘法器的寄存器里。
代码可以这么写
MPY = 0x1234; // Load first operand -unsigned mult
OP2 = 0x5678; // Load second operand
另外硬件乘法器主要用来对时间要求苛刻的情况。如:用430进行数字滤波,快速傅里叶变换等。
Fuchong Wang:
回复 Peter_Zheng:
老大呀,好像没有直接回答我的问题呀,
我想知道的是,如果不用硬件乘法器,是否增加运算时间和代码长度?如果增加了运算时间,必然增加功耗是吧?那么如果用了硬件乘法器,情况又是怎样呢?当然了,也许这些疑惑有点夸大了,也许实际上影响很小,但是从理论上搞明白总是也许也还有点点意义呢?举个特例,虽然对时间要求不高,但是乘除法运算(当然这得是不是得看情况,有的不用硬件乘法器是不是也很快?因为cpu实际上没有直接乘除法)很多,那么用与不用有没有区别呢?如果有区别,是否存在一个功耗性能最差(功耗最大)的界点呢?
可能我的问题很低级,说实在的,我快速看过介绍非硬件乘法器乘除法的的汇编原理,但是说老实话都记不清了(记性差,再加上脑袋笨吧,不过如果我也琢磨本帖的问题再加上自己在有心看一下,也许就能不会忘记了)。如果很低级,就麻烦直接短短指点一下该怎样入门呀,我这个问题可笑在哪里(有时候脑袋是没转过弯来,何况脑袋不好使呢),应该去了解哪些最基本的呀
Peter_Zheng:
回复 Fuchong Wang:
亲,你不使用硬件乘法器来做乘法运算,你觉得单片机该如何处理,必然会增加运算时间和代码长度。如果使用硬件乘法器,就是寄存器的操作。不会增加代码量,除了乘法器模块本身的功耗,减少了很多的运算的时钟周期。功耗肯定要比不适用硬件乘法器要低。另外,硬件乘法器主要是在有大量乘除法运算的时候才能突出快速实时的优势,比如FFT,滤波算法的实现。
Fuchong Wang:
回复 Peter_Zheng:
谢谢回答
第一句没看明白到底是什么语气。
您说:不会增加代码量,除了乘法器模块本身的功耗
我就是想知道乘法器模块本身的功耗是什么级别,具体多大呀,存在时间多少?不运算立即不功耗?
Hardy Hu:
MCU的功耗很大一部分是由时钟影响影响的,硬件乘法器的时钟源是MCLK,使用其进行乘法运算可以大量减少CPU的运算量,即MCLK开启的时间,故可以从这方面看用硬件乘法器是降低功耗的,硬件乘法器需要配置MPY32CTL0,里面需要根据实际情况进行运算的乘数,乘法的模式,符号位等设置
Fuchong Wang:
回复 Peter_Zheng:
主要是想从这里直接得到明确答案,所以打扰大侠们了。虽然自己需要不断学习,怎奈精力和脑筋有限呀。
昨天晚上看到了什么RRUX之类的指令,再加最近插秧累的,看得直晕。就想不看了,先用C或者知道的汇编先弄弄出来东西再说。就这样还把zhuangBiXiShu%=64;写成了zhuangBiXiShu/=64;
我问这个问题主要是看到有现成的工程源代码,芯片有硬件乘法器却好像没用,就是有点不明白为什么
Fuchong Wang:
插了一天秧,直到晚上才上网,看到多了回复,有点高兴。
谢谢鸵鸟蝈蝈和Hardy Hu
我问这个问题主要是看到有现成的产品工程源代码,芯片有硬件乘法器却好像没用,就是有点不明白为什么
看了回复,是不是可以这样认为,硬件乘法器尽管是硬件,但是运行功耗非常小可以忽略不计?
再由此推论,只要MSP430CPU支持硬件乘法器,即使程序中乘法运算很少,除了极少数的特例乘法以外,尽量使用硬件乘法器如论对代码量还是速度(尽管没要求)还是功耗都有好处没有坏处呢?
Fuchong Wang:
回复 Richard Ma:
谢谢Richard Ma回答
能不能进一步说明白:C语言开发时,使用硬件乘法器不需要处理,CCS的编译器会自动调用该模块的。
是指使用 MPY之类时 还是就是计算公式表达式时CCS就会自动调用呢?
TI中文支持网




