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

问题描述 投票:-1回答:1

我想用自己的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
verilog
1个回答
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

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

© www.soinside.com 2019 - 2024. All rights reserved.