Reputation: 27
I am writing a Verilog code for a 4-bit binary incrementer, and I need to take (1) as an input in the circuit.
module incre_4(S,Cout,A,Cin)
reg x = 1;
input [3:0]A,1,Cin;
output [3:0]S,Cout;
wire C1,C2,C3;
full_add FA0(S[0],C1,x,A[0],Cin),
FA1(S[1],C2,x,A[1],C1),
FA2(S[2],C3,x,A[2],C2),
FA3(S[3],Cout,x,A[3],C3);
endmodule :incre_4
module full_add(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;
wire x,y,z;
half_add h1(.a(a),.b(b),.s(x),.c(y));
half_add h2(.a(x),.b(cin),.s(sum),.c(z));
or o1(cout,y,z);
endmodule : full_add
module half_add(a,b,s,c);
input a,b;
output s,c;
xor x1(s,a,b);
and a1(c,a,b);
endmodule :half_add
But, it gives me a syntax error. How can I do that?
Upvotes: 1
Views: 762
Reputation: 62236
You have a few errors.
You can not declare 1
as a module input. You need to delete that from the input
line. It looks like you are achieving what you want with the x
reg
by assigning it to 1.
You need to split up your input
line into 2 lines because you want Cin
to be a single bit signal, but it is 4 bits because it inherits the [3:0]
range. The same is true for the Cout
output
. Here is the module without errors:
module incre_4(S,Cout,A,Cin);
reg x = 1;
input [3:0]A;
input Cin;
output [3:0]S;
output Cout;
wire C1,C2,C3;
full_add FA0(S[0],C1,x,A[0],Cin),
FA1(S[1],C2,x,A[1],C1),
FA2(S[2],C3,x,A[2],C2),
FA3(S[3],Cout,x,A[3],C3);
endmodule :incre_4
Upvotes: 1