我想使用自己的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
答案 0 :(得分:3)
您非常亲密:
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
。
我使用的详细端口连接是可选的,但这是一个好习惯。