FPGA 定点数转化为浮点数

时间:2024-03-17 09:55:18

浮点数据分为单精度和双精度,单精度32位,双精度64位。分为3个部分,S为最高符号位,E为指数位(又称为阶码),M表示尾数。
IEEE 754标准
FPGA 定点数转化为浮点数

在此,主要介绍定点数转化为单精度浮点类型
S最高符号位(bit31),E指数位(bit30~bit23),M尾数(bit22 ~ bit0)
FPGA 定点数转化为浮点数
示例1:0x0000_0011转化为单精度浮点数,二进制表达为32’b0000_0000_0000_0000_0000_0000_0001_0001, 定点数为正数,S为0,指数E表达式为32(输入数据的位宽)-1+127(偏置)-27(第一位非零值前面0的个数)=131,十六进制0x83,二进制’b1000_0011,把32位二进制定点数向左移位,直到最高位为非零位为止,这时从次高位开始取23位数即为尾数。所以转换后的浮点数为0_10000011_0001000_0000_0000_0000_0000 16进制为41880000h。
FPGA 定点数转化为浮点数

示例2:0x7FFF_FFFF转化为单精度浮点数,二进制表达为32’b0111_1111_1111_1111_1111_1111_1111_1111, 定点数为正数,S为0,指数E表达式为32(输入数据的位宽)-1+127(偏置)-1(第一位非零值前面0的个数)=157,十六进制0x9D,二进制’b1001_1101,把32位二进制定点数向左移位,直到最高位为非零位为止,这时从次高位开始取23位数即为尾数。所以转换后的浮点数为0_10011101_1111111_1111_1111_1111_1111 ,进行舍入处理,截掉的为 'b11111111 ,大于0xff的一半,浮点数加1,为32’h4F000000h。
FPGA 定点数转化为浮点数
示例2:0x8000_0011转化为单精度浮点数,二进制表达为32’b1000_0000_0000_0000_0000_0000_0001_0001, 定点数为负数,S为1,指数E表达式为32(输入数据的位宽)-1+127(偏置)-0(第一位非零值前面0的个数)=158,十六进制0x9E,二进制’b1001_1110,把32位二进制定点数向左移位,直到最高位为非零位为止,这时从次高位开始取23位数即为尾数。所以转换后的浮点数为1_10011110_0000000_0000_0000_0000_0000 ,进行舍入处理,截掉的为 'b00010001 ,小于0xff的一半,浮点数不变,浮点数为32’hCF000000h。
FPGA 定点数转化为浮点数