TRUTH TABLE:
A | B | SUM | CARRY |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
HALF ADDER GATE MODELING:
`timescale 1ns / 1ps module halfAdder (sum,carry,a,b); input a,b; output sum; output carry; assign sum = a^b; assign carry = a&b; endmodule
TESTBENCH:
`timescale 1ns / 1ps module halfAdderTB(); reg ta,tb; wire tsum,tcarry; halfAdder DUT(.sum(tsum),.carry(tcarry),.a(ta),.b(tb)); initial begin $monitor("time=%d, ta = %b, tb = %b, tsum = %b, tcarry = %b t",$time,ta,tb,tsum,tcarry); ta = 1'b0; tb = 1'b0; #2; ta = 1'b0; tb = 1'b1; #2; ta = 1'b1; tb = 1'b0; #2; ta = 1'b1; tb = 1'b1; #2; $finish; end initial begin $dumpfile("halfAdderTB.vcd"); $dumpvars; end endmodule
Output:
time= 0, ta = 0, tb = 0, tsum = 0, tcarry = 0 time= 2, ta = 0, tb = 1, tsum = 1, tcarry = 0 time= 4, ta = 1, tb = 0, tsum = 1, tcarry = 0 time= 6, ta = 1, tb = 1, tsum = 0, tcarry = 1