Как использовать / вызывать другие модули? Реализуйте собственные NAND Gate - PullRequest
0 голосов
/ 19 апреля 2019

Я хочу написать свой 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 Ответ

3 голосов
/ 19 апреля 2019

Вы очень близки:

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.

Подробные соединения портов, которые я использовал, являются необязательными, но это хорошая практика.

...