我想用自己的NAND_GATE
模块编写自己的AND_GATE
:
module and_gate(input a, input b, output out);
assign out = a & b;
endmodule
方法1
我想出了什么:
module nand_gate(input a, input b, output out);
assign out = and_gate(a, b);
endmodule
但我认为这是错误的,因为我无法在其他编程语言中调用带有返回值的函数等模块,对吧?
方法2
所以我想到了这样的事情:
module nand_gate(input a, input b, output out);
assign out = and_gate(a, b, ~out);
endmodule
但我不知道这是否正确?
方法3
我的另一个想法是这样的:
module nand_gate(input a, input b, output out);
wire temp;
assign temp = and_gate(a, b, out);
assign out = ~temp;
endmodule
你非常接近:
module nand_gate(input a, input b, output out);
wire temp;
and_gate i0 (
.a (a),
.b (b),
.out (temp)
);
assign out = ~temp;
endmodule
模块没有返回值,这就是您无法将模块分配给信号的原因。
你需要一个实例名称;我随意选择了i0
。
我使用的详细端口连接是可选的,但这是一个很好的做法。