|  | 
 
 发表于 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
 | 
 |