-
Notifications
You must be signed in to change notification settings - Fork 0
/
Somadores.v
44 lines (40 loc) · 782 Bytes
/
Somadores.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
module somador32bits(a,b,cin,cout,s);
parameter SIZE=32;
input [SIZE-1:0] a, b;
input cin;
output [SIZE-1:0] s;
output cout;
wire [SIZE:0] c;
assign c[0] = cin;
assign cout = c[SIZE];
genvar i;
generate
for(i=0; i < SIZE; i= i + 1)
begin:add
full_adder p(a[i], b[i], c[i], c[i+1], s[i]);
end
endgenerate
endmodule
module full_adder(a, b, cin, cout, s);
input a, b, cin;
output cout, s;
assign s = a ^ b ^cin;
assign cout = a&b || a&cin || b&cin;
endmodule
module somador5bits(a,b,cin,cout,s);
parameter SIZE=5;
input [SIZE-1:0] a, b;
input cin;
output [SIZE-1:0] s;
output cout;
wire [SIZE:0] c;
assign c[0] = cin;
assign cout = c[SIZE];
genvar i;
generate
for(i=0; i < SIZE; i= i + 1)
begin:add
full_adder p(a[i], b[i], c[i], c[i+1], s[i]);
end
endgenerate
endmodule