Académique Documents
Professionnel Documents
Culture Documents
Uday A Korat
Red Id: 818480618
Top Module:
end
//multiplier output after
//every partial product generation and addition
end
endmodule
Test Bench:
Waveform:
Top Module:
always @* begin
if (WI1 <= WI2) begin
int_in1 = {{(WI2-WI1){in1[WI1+WF1-1]}}, in1[WI1+WF1-1:WF1]};
int_in2 = in2[WI2+WF2-1:WF2];
end
else begin
int_in2 = {{(WI1-WI2){in2[WI2+WF2-1]}}, in2[WI2+WF2-1:WF2]};
int_in1 = in1[WI1+WF1-1:WF1];
end
end
//--------------------------------------------------------------------------//
//FRACTION adjustment
always @* begin
if (WF1 <= WF2) begin
frc_in1 = { in1[WF1-1:0], {(WF2-WF1){1'b0}}};
frc_in2 = in2[WF2-1:0];
end
else begin
frc_in2 = {in2[WF2-1:0], {(WF1-WF2){1'b0}}};
frc_in1 = in1[WF1-1:0];
end
end
//--------------------------------------------------------------------------//
//new adjusted NUMBERS
always @* begin
reg_in1 = {int_in1 , frc_in1};
reg_in2 = {int_in2 , frc_in2};
end
//-------------------------------------------------------// ADDITION of bit adjusted two input
assign tmp = reg_in1 + reg_in2;
//----------------------------------------------------------------------//
//adjust bits for OUTPUT_FRACTION as user define output fraction bitwidth
//padding with zero or truncation from least significant bits
always @* begin
if (WFO >= frc_len) begin
frc_out = {tmp[frc_len-1:0], {(WFO-frc_len){1'b0}}};
end
Test Bench:
Wave Form: