如何使用/调用其他模块?实现自己的NAND门

时间:2019-04-19 16:20:20

标签: verilog

我想使用自己的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

1 个答案:

答案 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

我使用的详细端口连接是可选的,但这是一个好习惯。