Files
nand2tetris_verilog/add16.v
2024-06-13 21:13:15 -07:00

23 lines
497 B
Verilog

`ifndef _add16_v
`define _add16_v
`include "halfadder.v"
`include "fulladder.v"
module Add16 (input [15:0] a, input [15:0] b, output [15:0] out);
wire [16:1] c;
genvar i;
generate
for (i=0; i<16; i=i+1)
begin
if (i==0)
HalfAdder u1 (.a(a[i]), .b(b[i]), .sum(out[i]), .carry(c[i+1]));
else
FullAdder u1 (.a(a[i]), .b(b[i]), .c(c[i]), .sum(out[i]), .carry(c[i+1]));
end
endgenerate
endmodule
`endif