1. Half adder
module top_module(
input a, b,
output cout, sum );
always@(*)
begin
if(a+b>1)
begin
sum=a+b-2'b10;
cout=1;
end
else
begin
sum=a+b;
cout=0;
end
end
endmodule
2..Full adder
module top_module(
input a, b, cin,
output cout, sum );
always@(*)
begin
if(a+b+cin>1)
begin
cout=1;
sum=a+b+cin-2'b10;
end
else
begin
cout=0;
sum=a+b+cin;
end
end
endmodule
3. 3-bit binary adder
module top_module(
input [2:0] a, b,
input cin,
output [2:0] cout,
output [2:0] sum );
assign {cout[0],sum[0]}=a[0]+b[0]+cin;
assign {cout[1],sum[1]}=a[1]+b[1]+cout[0];
assign {cout[2],sum[2]}=a[2]+b[2]+cout[1];
endmodule
4. Adder
module top_module (
input [3:0] x,
input [3:0] y,
output [4:0] sum);
wire [3:0] cout;
assign {cout[0],sum[0]}=x[0]+y[0];
assign {cout[1],sum[1]}=x[1]+y[1]+cout[0];
assign {cout[2],sum[2]}=x[2]+y[2]+cout[1];
assign {cout[3],sum[3]}=x[3]+y[3]+cout[2];
assign sum[4]=cout[3];
endmodule
5.Signed addition overflow
module top_module (
input [7:0] a,
input [7:0] b,
output [7:0] s,
output overflow
); //
// assign s = ...
// assign overflow = ..
assign s=a+b;
assign overflow= (a[7]&b[7]&~s[7])|(~a[7]&~b[7]&s[7]);
endmodule
6. 100-bit binary adder
module top_module(
input [99:0] a, b,
input cin,
output cout,
output [99:0] sum );
assign {cout,sum[99:0]}=a+b+cin;
endmodule
7. 4-digit BCD adder
module top_module (
input [15:0] a, b,
input cin,
output cout,
output [15:0] sum );
wire cout1,cout2,cout3;
bcd_fadd b1(a[3:0],b[3:0],cin,cout1,sum[3:0]);
bcd_fadd b2(a[7:4],b[7:4],cout1,cout2,sum[7:4]);
bcd_fadd b3(a[11:8],b[11:8],cout2,cout3,sum[11:8]);
bcd_fadd b4(a[15:12],b[15:12],cout3,cout,sum[15:12]);
endmodule