BEE213051
BEE213051
SAAD AHMED
BEE213051
Assignment # 1
ASIC DESIGN & FPGA
SUBMITTED TO
Dr. Imtiaz Ahmed Taj
DATE
14-OCT-2024
HALF ADDER MODULE
module HA(sum,cout,a,b);
input a,b;
output sum, cout;
xor g1(sum,a,b);
and g2(cout,a,b);
endmodule
module FA(sum,cout,a,b,cin);
input a,b,cin;
output sum,cout;
wire w1, w2, w3;
HA FA1(.a(a), .b(b), .sum(w1),.cout(w2));
or g3(cout,w3,cin);
endmodule
input [3:0]a,b;
input cin;
output [3:0]sum;
output cout;
endmodule
module 16BFA(sum,cout,a,b,cin);
input [15:0]a,b;
input cin;
output [15:0]sum;
output cout;
wire c0, c1, c2;
FA 16bfa0(.a(a[3:0]), .b(b[3:0]), .sum(sum[3:0]), .cin(cin), .cout(c0) );
endmodule
module 16-BITFA_TB
reg clk;
reg [15:0] a, b;
reg cin;
wire [15:0] sum;
wire cout;
initial begin
clk = 0;
forever #5 clk = ~clk;
end
initial begin
for (int i = 0; i < 2**16; i++) begin
a = i;
for (int j = 0; j < 2**8; j++) begin
b = j;
cin = 0;
@(posedge clk);
$display("a = %h, b = %h, cin = %h, sum = %h, cout = %h", a, b, cin, sum, cout);
cin = 1;
@(posedge clk);
$display("a = %h, b = %h, cin = %h, sum = %h, cout = %h", a, b, cin, sum, cout);
end
end
$finish;
end
endmodule