原Verilog程序如下:
wire [22:0] Total_Max;
reg [23:0] Mixed_Max;
wire [23:0] overflow_elim;
assign overflow_elim = mixed_audio[23:0] * Total_Max/Mixed_Max;
仿真之后得出的結(jié)果overflow_elim 總是0。
于是將overflow_elim 的位寬從24bit增加到48bit,即:
wire [47:0] overflow_elim;
然后就能出線正確的結(jié)果。
這其中的思想應(yīng)該和軟件是一致的,需要足夠的存儲空間來存儲mixed_audio[23:0] * Total_Max的計算結(jié)果。
Total_Max是23bit的數(shù),因此和mixed_audio相乘之后的最大值為48bit。然后在進(jìn)行除法操作