Lab 4 DSD
Lab 4 DSD
CPE – 344
Lab 4
Class BCE – 7A
A[x-1] = A[x-2];
Q = X[i];
Prod = A;
end
end
endmodule
Testbench:
module test;
// Inputs
reg [3:0] X;
reg [3:0] Y;
// Outputs
wire [7:0] Prod;
initial begin
X = 7;
Y = 4;
#100;
X = 7;
Y = -4;
#100;
X = -7;
Y = 4;
#100;
X = -7;
Y = -4;
end
endmodule
In lab 2:
Post lab:
8-Bit Booth Multiplier:
Main Code:
module bomulti(X, Y, Prod);
parameter n = 8;
parameter x = 2 * n;
input signed [n-1:0] X, Y;
output signed [x-1:0] Prod;
reg signed [x-1:0] Prod;
reg signed [x-1:0] A;
reg [1:0] temp;
integer i;
reg Q;
reg [n-1:0] Y1;
always @ (X, Y)
begin
A[x-1:n] = 0;
A[n-1:0] = Y;
Q = 1'd0;
for (i = 0; i < n; i = i + 1)
begin
temp = {X[i], Q};
Y1 = (- Y);
if (temp == 2'b01)
begin
A[x-1:n] = A[x-1:n] + Y;
A = A >> 1;
end
else if(temp == 2'b10)
begin
A[x-1:n] = A[x-1:n] + Y1;
A = A >> 1;
end
else if(temp == 2'b11)
begin
A = A >> 1;
end
else if(temp == 2'b00)
begin
A = A >> 1;
end
A[x-1] = A[x-2];
Q = X[i];
Prod = A;
end
end
endmodule
Testbench:
module test;
reg [7:0] X;
reg [7:0] Y;
wire [15:0] Prod;
bomulti uut (
.X(X),
.Y(Y),
.Prod(Prod));
initial begin
X = 25; Y = 15;
#50;
X = 25; Y = -15;
#50;
X = -25; Y = 15;
#50;
X = -25;
Y = -15;
#50; $finish;
end
endmodule
8-Bit Binary Multiplier:
Conclusion:
In this lab, we implemented 4-bit booth multiplier. We also designed 8-bit multiplier by Verilog
programming. We verified our modules with simulations.