divider是一个32位除以24位的有符号整数除法器,结果取商,忽略小数。直接用VIVADO的DIVIDER GENERATOR 生成。
上图设置了32位除以24的有符号除法器。我们看到小数部分是24位,实际无所谓,在逻辑代码中会被忽略实际综合中也会被优化掉从而不占用逻辑资源。
上图设置了clocks per division是1,这样生成的除法器面积大运行快。可以选择其他数值在资源占用和速度方面折衷。
上图可见输出结果的高32位是商,是我们需要的。
上述的IP保存位div_gen_div_gen_0_0.xci文件。
我们写一个转接文件直接替代verilog/coregen目录下的divider.v文件。
module divider (
input clock,
input reset,
input enable,
input signed [31:0] dividend,
input signed [23:0] divisor,
input input_strobe,
output signed [31:0] quotient,
output output_strobe
);
wire [32+24-1:0]result56 ;
assign quotient = result55[32+24-1:24] ;
div_gen_div_gen_0_0 div_gen_0
(.aclk(clock),
.m_axis_dout_tdata(result56),
.m_axis_dout_tvalid(output_strobe),
.s_axis_dividend_tdata(dividend),
.s_axis_dividend_tvalid(input_strobe),
.s_axis_divisor_tdata(divisor),
.s_axis_divisor_tvalid(input_strobe)
);
endmodule
使用时候将div_gen_div_gen_0_0.xci文件和divider.v加入项目就可以。
链接:https://pan.baidu.com/s/1RuHP-IeBSjr6EB8o0tWNbA
提取码:1w8m