我需要在系统Verilog代码中对浮点数学进行建模,这基本上需要我在系统Verilog中处理浮点数:实数/短实数。我需要能够确定浮点数的尾数,指数和符号。
此问题的c解决方案是将其转换为int指针,然后使用移位运算符: How to get the sign, mantissa and exponent of a floating point number
如果系统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
输出应为短实/实
答案 0 :(得分:1)
由于这是调试浮点实现时的有用功能,因此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