RISC-V MCU中文社区

【分享】 (九)浮点乘法指令设计

发表于 全国大学生集成电路创新创业大赛 2023-05-21 15:19:55
0
1296
1

一、团队介绍

报名编号:CICC1327
团队名称:301小队

二、浮点乘法算法

设a = {sa,ea,fa},b = {sb,eb,fb}为两个IEEE754单精度浮点数,试计算c = {sc,ec,fc} = a b。c的绝对值|c| = |a| |b| = {2^(ea-127)1.1fa} {2^(eb-127)1.1fb} = 2^((ea+eb-127)-127) (1.1fa*1.1fb),

运算步骤如下:

符号位异或运算

sc = sa ⊕ sb,得到结果的符号位

阶码相加减

按照定点整数的加减法运算方法对两个浮点数的阶码进行加减运算,因为规格化数的价码e满足1≤e≤254,而ec有可能超出1~254范围,所以当1≤ec≤254,相乘结果为规格化数;当ec>254时,结果用无穷大表示;当ec<1时,相乘结果大于或等于2^-149,用非规格化数表示,否则用0表示。

尾数相乘

按照定点小数的阵列乘法运算方法对两个浮点数的尾数进行乘运算,如果1.1fa1.1fb <2.0,则ec = ea+eb-127,1.1fc = 1.1fa1.1fb,否则ec = ea+eb-127+1,1.1fc = (1.1fa*1.1fb)>>1(右移一位)。

舍入处理

浮点数乘运算结果舍入处理按照(六)浮点舍入模式介绍这篇博客进行舍入操作。

几种特殊运算

(1)假设b≠0并且b≠NAN,则∞ b = ∞;
(2)NAN
b = NAN;
(3)∞ * 0 = NAN。

三、仿真验证


2.50000*1.00000 = 2.50000,功能正确。

喜欢1
用户评论
hzzaz

hzzaz 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板