gpt4 book ai didi

floating-point - 系统 Verilog 中的浮点除法

转载 作者:行者123 更新时间:2023-12-05 01:02:54 25 4
gpt4 key购买 nike

我想使用 real 数据类型在 System Verilog 中使用 float 。我尝试了以下代码,但它似乎不起作用。我得到 2.000000 我期望 2.500000 的地方。

模块:

module real_check(input [31:0]a, [31:0]b,
output real c);
assign c = a/b;
endmodule

测试台:

module tb_real_check();

real c;
reg[31:0] a, b;
real_check dut(a, b, c);

initial
begin

a <= 5;
b <= 2;
#50;
$display("Answer : %f ", c);

end
endmodule

最佳答案

你在做integer division .计算 int/int (reg[31:0]/reg[31:0]) 时,结果为整数。因此,当您计算 5/2 时,您会将 2.5 truncated 转换为 2,然后将其转换为 float 点 (real) 数字为 2.000...。如果您想要浮点除法(丢弃小数),您需要将操作数(除数和除数)设为 float 。

因此,要修复您的代码,您的模块需要将两个 float 作为输入:

module real_check(input real a, real b,
output real c);

并且在您的测试用例中,您需要将 ab 声明为 float :

real a, b;

关于floating-point - 系统 Verilog 中的浮点除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24713618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com