floating-point - 如何在系统verilog中获取实数/短实数的符号、尾数和指数
问题描述
我需要在系统verilog代码中对浮点数学进行建模,这基本上需要我在系统verilog中操作浮点数:real/shortreal。我需要能够确定浮点数的尾数、指数和符号。
这个问题的一个 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
输出应该是 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
推荐阅读
- google-bigquery - 如何在bigquery中使用基于另一个列值的列值
- javascript - 子组件中的变量为空,VueJs
- javascript - CanvasJs图表未呈现
- python - 如何修复我在这个程序中得到的 0 输出?
- sql - 如何从第二个表中的一个表中选择不存在的数据?
- python - 创建列表值的十六进制转储
- python - Python 组合函数
- html - 每当我按下按钮时如何使其从透明变为白色并再次按下以将其从白色变为透明?
- java - 如何在Android中匹配时间模式
- checkbox - 如果复选框的值作为变量传递,getElementById 不起作用