32 lines
662 B
Coq
32 lines
662 B
Coq
|
|
/*
|
||
|
|
Adder de N bits
|
||
|
|
*/
|
||
|
|
`include "./full_adder/full_adder.v"
|
||
|
|
|
||
|
|
module adder_nbit #(parameter N = 8)(
|
||
|
|
input [N-1:0] a,
|
||
|
|
input [N-1:0] b,
|
||
|
|
input carry_in,
|
||
|
|
output [N-1:0] sum,
|
||
|
|
output carry_out
|
||
|
|
);
|
||
|
|
wire [N:0] carry;
|
||
|
|
|
||
|
|
assign carry[0] = carry_in;
|
||
|
|
|
||
|
|
genvar i;
|
||
|
|
generate
|
||
|
|
for (i = 0; i < N; i = i + 1) begin: generar_full_adder
|
||
|
|
full_adder_structural full_adder(
|
||
|
|
.carry_in(carry[i]),
|
||
|
|
.a(a[i]),
|
||
|
|
.b(b[i]),
|
||
|
|
.sum(sum[i]),
|
||
|
|
.carry_out(carry[i+1])
|
||
|
|
);
|
||
|
|
end
|
||
|
|
endgenerate
|
||
|
|
|
||
|
|
assign carry_out = carry[N];
|
||
|
|
|
||
|
|
endmodule
|