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

时间:2015-05-20 16:07:44

标签: verilog

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

我需要在此内部实例化它,我该怎么做?

2 个答案:

答案 0 :(得分:5)

在你使用generate语句之前(允许在if语句中进行模块实例化)之前,你需要考虑你在说什么。从您在代码片段中尝试执行的操作开始,当按下按钮0时,您希望执行某些操作并在LED上显示结果。但是,当它们处于非常不同的状态时,您正在处理类似函数调用的模块。

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

module top;

  module_name instances_name( ... );

endmodule

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

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

答案 1 :(得分:0)

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