Synthesizable Verilog中的浮点除法(设计编译器)

时间:2017-03-24 17:40:11

标签: floating-point verilog division

我想在Verilog中编写一个可执行除法的可合成模块,我希望有一个浮点输出。我使用了这段代码,但我知道输入和输出都是错误的数据类型。在基本的verilog中,我知道类型real是不可综合的,因此我想问你如何修改我的代码而不是在分割过程中失去准确性。

module div_J_step1(J_step1, step1);
output [11:0] J_step1;
input [11:0] step1;
wire [11:0] J_step1;

localparam [11:0] J =2048;   

always @* begin
J_step1=J/step1;
end

endmodule

所以我的目标是获得带有一些小数的输出,这些小数将转到另一个块。我将使用Synopsys Design Compiler合成此块。非常感谢!

1 个答案:

答案 0 :(得分:1)

我这样解决了我的问题: 我只是向左移动了J,所以小数位向左移动,我可以将结果作为整数传递给下一个块:

module div_J_step1(J_step1, step1);
output [16:0] J_step1;
input [11:0] step1;
wire [16:0] J_step1;

localparam [16:0] J =2048<<5;   

always @* begin
J_step1=J/step1;
end

endmodule

在下面的块中,我将向右移动&gt;&gt; 5结果,因此我将得到正确的数字。我希望这个答案会有所帮助。再见!