如何将(1)作为 Verilog 中的输入
How to take (1) as an input in Verilog
我正在为 4 位二进制增量器编写 Verilog 代码,我需要将 (1) 作为电路中的输入。
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
但是,它给我一个语法错误。我该怎么做?
你有一些错误。
您不能将 1
声明为模块输入。您需要从 input
行中删除它。看起来你通过将 x
reg
分配给 1.
来实现你想要的
您需要将 input
行拆分为 2 行,因为您希望 Cin
成为一位信号,但它是 4 位,因为它继承了 [3:0]
范围. Cout
output
也是如此。这是没有错误的模块:
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
我正在为 4 位二进制增量器编写 Verilog 代码,我需要将 (1) 作为电路中的输入。
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
但是,它给我一个语法错误。我该怎么做?
你有一些错误。
您不能将 1
声明为模块输入。您需要从 input
行中删除它。看起来你通过将 x
reg
分配给 1.
您需要将 input
行拆分为 2 行,因为您希望 Cin
成为一位信号,但它是 4 位,因为它继承了 [3:0]
范围. Cout
output
也是如此。这是没有错误的模块:
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