原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;
仿真之后得出的結果overflow_elim 總是0。
于是將overflow_elim 的位寬從24bit增加到48bit,即:
wire [47:0] overflow_elim;
然后就能出線正確的結果。
這其中的思想應該和軟件是一致的,需要足夠的存儲空間來存儲mixed_audio[23:0] * Total_Max的計算結果。
Total_Max是23bit的數,因此和mixed_audio相乘之后的最大值為48bit。然后在進行除法操作