|
发表于 2018-11-7 10:07:41
|
显示全部楼层
回复 17# rosshardware
always @(*) begin
sub_dividend_divsor = {1'b0,divivend_cut } - {1'b0, divisor};
end
always @(posedge clk_sys or negedge rst_sys_n) begin
if (rst_sys_n == 1'b0) begin
lsf_dividend <= {LSF_REG_WIDTH{1'b0}};
end
else if ((div_strt == 1'b1) || (div_clr == 1'b1))begin
lsf_dividend <= {{DIVISOR_WIDTH{1‘b0}},dividend};
end
else if (div_cnt_en == 1'b1) begin
if (sub_dividend_divsor[DIVISOR_WIDTH+1] == 1'b1 ) begin
lsf_dividend <= {lsf_dividend[LSF_REG_WIDTH-2:0],1'b0};
end
else begin
lsf_dividend <= {sub_dividend_divsor[DIVISOR_WIDTH-2:0],
lsf_dividend[LSF_REG_WIDTH-DIVIDEND_WIDTH-1:0],1'b0};
end
end
end
楼主想问一下,第一处标红的地方,是否存在结果为负数的情况。
第二处标红的地方是否是表示sub_dividend_divsor为负,但是sub_dividend_divosr只有9bit,你的条件中的sub_dividend_divisor[9](第十位)是否是表示符号位。
第三处标红的地方,好像位宽没对上24bit,{sub_dividend_divisor[6:0](7bit),lsf_dividend[24-16-1:0](8bit),1'b0},一共只有7+8+1 = 16bit |
|