[发明专利]一种在低位宽MCU上实现32位无符号数整型乘法运算的方法在审
| 申请号: | 202010134300.4 | 申请日: | 2020-03-02 |
| 公开(公告)号: | CN111596888A | 公开(公告)日: | 2020-08-28 |
| 发明(设计)人: | 李飞 | 申请(专利权)人: | 成都优博创通信技术股份有限公司 |
| 主分类号: | G06F7/523 | 分类号: | G06F7/523 |
| 代理公司: | 成都为知盾专利代理事务所(特殊普通合伙) 51267 | 代理人: | 李汉强 |
| 地址: | 610000 四*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 低位 mcu 实现 32 符号 整型 乘法 运算 方法 | ||
本发明一种在低位宽MCU上实现32位无符号数整型乘法运算的方法,X=A*B。(X、A和B的数据类型都是32位无符号整型数)在低于32位的MCU平台上,上式的直接运算结果X将会直接溢出,要正确使用上面乘法运算必须将满足A*B的理论运算值小于232;方法包括:将32位无符号整型数据A表示为①,将32位无符号整型数据B表示为②;步骤S2:将①和②带入A*B得到③;将表达式③中(AH*BL+AL*BH)按④表示;将表达式④带入③得到⑤;表达式⑤中的D表示为DH*216+DL得到⑥;表达式⑥中DL*216+AL*BL表示为⑦;本发明其优点是在小于32位的MCU平台上能够实现;该方法作为基础方法,可拓展应用于多个多位(n*16)宽的无符号数乘法运算。
技术领域
本发明具体涉及32位无符号数整型乘法运算技术领域,特别涉及一种在低位宽MCU上实现32位无符号数整型乘法运算的方法。
背景技术
在某些应用领域中如光模块的RSSI监控上报,要求在极短的时间内对RSSI数据运算处理完成,RSSI校准参数通常为浮点数,但由于成本等原因,光模块使用的MCU基本不带硬件浮点运算单元,这些浮点运算仅靠软件代码实现,软件浮点运算比较耗时,其运算速度受限于MCU主频,通常不满足RSSI上报时间要求;为解决这一问题,常用做法是RSSI校准时将这点浮点校准参数进行放大后取整,并将这些整型校准参数写入MCU。光模块在工作过程中MCU将校准参数与采样ADC值进行整数运算处理,并完成RSSI上报,这种处理方法利用整型数运算代替浮点数运算,在可接受的精度损失范围内即实现了功能又满足了时间要求,整型数运算代替浮点数运算的同时也带来了一个弊端:整型运算能处理的数据范围远小于浮点数运算。例如:1个 16位的MCU平台,其编译器最大支持整型数据为32位,而两个32 位整型数的乘法运算结果为64位,其值已经溢出。
发明内容
本发明的目的在于克服现有技术中存在的上述问题,提供一种在低位宽MCU上实现32位无符号数整型乘法运算的方法;
一种在低位宽MCU上实现32位无符号数整型乘法运算的方法,其特征在于X=A*B。(X、A和B的数据类型都是32位无符号整型数)在低于32位的MCU平台上,上式的直接运算结果X将会直接溢出,要正确使用上面乘法运算必须将满足A*B的理论运算值小于232;
所述方法包括:
步骤S1:将32位无符号整型数据A表示为①,将32位无符号整型数据B表示为②;
步骤S2:将①和②带入A*B得到③;
步骤S3:将表达式③中(AH*BL+AL*BH)按④表示;
步骤S4:将表达式④带入③得到⑤;
步骤S5:表达式⑤中的D表示为DH*216+DL得到⑥;
步骤S6:表达式⑥中DL*216+AL*BL表示为⑦;
步骤S7:将表达式⑦带入⑥得到⑧;
步骤S7:将表达式⑧中的运算结果作为64位数的高32位保存;
步骤S8:在RSSI监控中计算温度补偿量;
所述步骤S1中,将32位无符号整型数据A表示为A=AH*216+AL,其中AH为高16位,AL为低16位,B表示为:B=BH*216+BL,例: 0x12345678=0x1234*216+0x5678,0x1234为AH,0x5678为AL。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都优博创通信技术股份有限公司,未经成都优博创通信技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010134300.4/2.html,转载请声明来源钻瓜专利网。





