Floating point 如何在verilog系统中获取实/短实的符号、尾数和指数

Floating point 如何在verilog系统中获取实/短实的符号、尾数和指数,floating-point,system-verilog,Floating Point,System Verilog,我需要在系统verilog代码中建立浮点数学模型,这基本上需要我在系统verilog:real/shortreal中操作浮点数。我需要的能力,以确定尾数,指数和符号的浮点数 此问题的c解决方案是将其转换为int指针,然后使用shift运算符: 如果system verilog支持短实数上的部分/位选择运算符,则函数的外观如下: function automatic shortreal conv2shortreal (bit sign, bit[7:0] exp, bit[22:0] manti

我需要在系统verilog代码中建立浮点数学模型,这基本上需要我在系统verilog:real/shortreal中操作浮点数。我需要的能力,以确定尾数,指数和符号的浮点数

此问题的c解决方案是将其转换为int指针,然后使用shift运算符:

如果system verilog支持短实数上的部分/位选择运算符,则函数的外观如下:

function automatic shortreal conv2shortreal (bit sign, bit[7:0] exp, bit[22:0] mantissa);
conv2shortreal[31] = sign;
conv2shortreal[30:23] = exp;
conv2shortreal[22:0] = mantissa;
endfunction

输出应为shortreal/real

,因为这是调试浮点实现时的一个有用功能,SystemVerilog内置了转换功能(适用于IEEE754):

shortreal  r;
bit        sign;
bit [7:0]  exp;
bit [22:0] mantissa;

r = $bitstoshortreal({sign, exp, mantissa}); // Convert from floating point parts to shortreal
{sign, exp, mantissa} = $shortrealtobits(r); // Convert from short real to floating point parts