bits, real, shortreal之间的转换
系统函数 | 说明 |
---|---|
$bitstoreal | 64bit的整数转换为双精度浮点数 |
$bitstoshortreal | 把64bit的整数转换为单精度浮点数 |
$realtobits | 双精度浮点数据转换为63bit整数 |
$shortrealtobits | 单精度浮点数据转换为63bit整数 |
例如:
localparam [31:0] test = 32'h3fb0d05d;
localparam [63:0] test2 = 64'h3fb0d05d;
localparam [63:0] test3 = 64'hc00e35603fb0d05d;
localparam [63:0] test_long = 64'h_3FF61A0BE5109071;
real rr = 3.14;
initial begin
$display("$bitstoreal(test) = %h = %f", test, $bitstoreal(test));
$display("$bitstoreal(test3) = %h = %f", test3, $bitstoreal(test3));
$display("$bitstoreal(test_long) = %h = %f", test_long, $bitstoreal(test_long));
$display("$bitstoshortreal(test) = %h = %f", test, $bitstoshortreal(test));
$display("$bitstoshortreal(test2) = %h = %f", test2, $bitstoshortreal(test2));
$display("$realtobits(rr) = %f = %h ", rr, $realtobits(rr) );
$display("$shortrealtobits(rr) = %f = %h ", rr, $shortrealtobits(rr) );
end
打印结果:
# $bitstoreal(test) = 3fb0d05d = 0.000000
# $bitstoreal(test3) = c00e35603fb0d05d = -3.776062
# $bitstoreal(test_long) = 3ff61a0be5109071 = 1.381359
# $bitstoshortreal(test) = 3fb0d05d = 1.381359
# $bitstoshortreal(test2) = 000000003fb0d05d = 1.381359
# $realtobits(rr) = 3.140000 = 40091eb851eb851f
# $shortrealtobits(rr) = 3.140000 = 4048f5c3