如何在 verilog 中的 if 语句中实例化模块?

How can i instantiate a module inside an if statement in verilog?

if (btn[0] == 1)
    begin
        operaciones op(A,B,numop,C);
        display disp(C,led);
    end

我需要在这个 if 中实例化它,我该怎么做?

在你为此使用 generate 语句(它允许在 if 语句中进行模块实例化)之前,你需要考虑你在说什么。从您在代码片段中尝试执行的操作来看,当按下按钮 0 时,您想要执行一些操作并在 LED 上显示结果。但是,当它们非常不同时,您将模块视为函数调用。

模块实例化是模块硬件存在于其父模块中的声明。所以,当我遇到这样的事情时:

module top;

  module_name instances_name( ... );

endmodule

我声明 module_namemodule_name 的所有硬件)存在于 top(可能有更多硬件)中。将模块视为 IC,将父模块视为面包板,实例化该模块就像将该 IC 放在面包板上,端口连接是您连接到该 IC 每个引脚的电线。所有需要做任何设计的IC都存在于电路中的某个地方;它们不会根据用户输入的内容出现和消失。

现在回想一下你想说的话:你说的是,当按下按钮 0 时,将这个 IC 放在面包板上。如果没有按下,请将其拿走。由于 IC 不会出现在电路板上,也不会从电路板上消失,因此这没有意义。因此,如果您在面包板上构建设计,则需要像对待 IC 一样对待模块实例化;您可以声明有执行此操作的硬件(放下并连接 IC),当按下按钮 0 时,将该硬件的输出路由到 LED(使用另一个 IC 或小电路进行路由;想想多路复用器).

补充一下@Unn 所说的内容,您真正需要做的是实例化您的模块,然后在您的 if 语句中打开(或关闭)模块的启用信号。