NAME : BHUKYA LACHIRAM NAYAK ROLL NO : CS22B012 LAB 8: **question 1** ```assembly= module halfAdder(y,c,a,b); input a,b; output s,carry; assign s=(~a&b)|(~b&a); assign carry=a&b; endmodule ``` **question 1** ```assembly= module fullAdder(a,b,c,s,cout); input a,b,cin; output s,cout; wire c1,c2,s1; halfAdder HA1(.a(a),.b(b),,s(s1),.carry(c1)); halfAdder HA2(.a(a),.b(b),,s(s),.carry(c2)); assign cout = c1|c2; endmodule ``` **question 1** ```assembly= module FA_testbench(); reg a1,b1,c1; wire y1,y2; fullAdder DUT1(.a(a1),.b(b1),.c(c1),.y=s(y1),.cout(y2)); initial begin a1 = 1'b0; b1=1'b0; c1=1'b0; #100 a1 = 1'b0; b1=1'b0; c1=1'b1; #100 a1 = 1'b0; b1=1'b1; c1=1'b0; #100 a1 = 1'b0; b1=1'b1; c1=1'b1; #100 a1 = 1'b1; b1=1'b0; c1=1'b0; #100 a1 = 1'b1; b1=1'b0; c1=1'b1; #100 a1 = 1'b1; b1=1'b1; c1=1'b0; #100 a1 = 1'b1; b1=1'b1; c1=1'b1; end endmodule ``` **question 2** ```assembly= module rippleAdder( input [3:0] a, input [3:0] b, input cin, output [3:0] sum, output cout ); wire [3:0] carry; wire c0, c1, c2; fullAdder FA0(.a(a[0]), .b(b[0]), .c(cin), .s(sum[0]), .cout(c0)); fullAdder FA1(.a(a[1]), .b(b[1]), .c(c0), .s(sum[1]), .cout(c1)); fullAdder FA2(.a(a[2]), .b(b[2]), .c(c1), .s(sum[2]), .cout(c2)); fullAdder FA3(.a(a[3]), .b(b[3]), .c(c2), .s(sum[3]), .cout(carry[3])); assign cout = carry[3]; endmodule ``` **question 2** ```assembly= module RA_testbench; reg [3:0] a, b; reg cin; wire [3:0] sum; wire cout; rippleAdder RCA( .a(a), .b(b), .cin(cin), .sum(sum), .cout(cout) ); initial begin // some permutations of inputs a = 4'b0000; b = 4'b0000; cin = 0; #100; // 0 + 0 = 0 a = 4'b1010; b = 4'b0101; cin = 0; #100; // 10 + 5 = 15 a = 4'b1111; b = 4'b0001; cin = 1; #100; // 15 + 1 (with carry) = 17 a = 4'b1100; b = 4'b0011; cin = 0; #100; // 12 + 3 = 15 a = 4'b1010; b = 4'b1010; cin = 1; #100; // 10 + 10 (with carry) = 21 end endmodule ``` **question 3** ```assembly= module mux(y,s1,d1,d2); input s1,d1,d2; output y; wire y1,y2; assign y1 = ~s1&d1; assign y2 = s1&s2; assign y = y1|y2; endmodule ``` **question 3** ```assembly= module mux_bench(); reg d1,d2,s1; wire y1; mux DUT1(.s1(s1),.d1(d1),.d2(d2),.y(y1)); initial begin d1=1'b0; d2=1'b1; s1 = 1'b0; #100 s1 = 1'b1; end endmodule ```