Verilog 在always块内实例化模块

Verilog 在always块内实例化模块,verilog,Verilog,我刚刚开始学习verilog,所以这可能是一个非常基本的问题,但我无法真正理解或找到其他方法来表达我在verilog中的意图 我将举一个较小的例子。我基本上是在尝试将一个模块的输出连接到另一个模块的输入。请帮我打49号线,并给我一个替代品 25 module ands ( 26 input1, 27 input2, 28 outputs 29 ); 30 input [2:0] input1; 31 input i

我刚刚开始学习verilog,所以这可能是一个非常基本的问题,但我无法真正理解或找到其他方法来表达我在verilog中的意图

我将举一个较小的例子。我基本上是在尝试将一个模块的输出连接到另一个模块的输入。请帮我打49号线,并给我一个替代品

   25 module ands (
   26     input1,
   27     input2,
   28     outputs
   29 );
   30     input [2:0] input1;
   31     input input2;
   32     output [2:0] outputs;
   33 
   34     integer itr;
   35 
   36     and a (outputs[0],input1[0],input2);
   37     initial
   38     begin
   39         for (itr = 1 ; itr <= 2; itr = itr+1)
   40             and a(outputs[itr],input1[itr],outputs[itr-1]);
   41     end
   42 
   43 endmodule
25模块(
26输入1,
27输入2,
28项产出
29 );
30输入[2:0]输入1;
31输入2;
32个输出[2:0]个输出;
33
34整数itr;
35
36和a(输出[0],输入1[0],输入2);
37首字母
38开始

39为(itr=1;itr您需要使用genvar itr和generate…endgenerate块,而不是初始块。这应该完全符合您的要求。

Verilog模块不打算在初始块或always块内实例化。如果您想用循环实例化多个模块,那么
generate
块就是您想要的您要使用。使用您的示例:

module ands (
    input1,
    input2,
    outputs
);
    input [2:0] input1;
    input input2;
    output [2:0] outputs;

    integer itr;

    and a (outputs[0],input1[0],input2);

    genvar itr;
    generate
        for (itr = 1 ; itr <= 2; itr = itr+1)
            and a(outputs[itr],input1[itr],outputs[itr-1]);
    endgenerate

endmodule
模块(
输入1,
输入2,
输出
);
输入[2:0]输入1;
输入2;
输出[2:0]输出;
整数itr;
和a(输出[0],输入1[0],输入2);
genvar-itr;
生成

对于(itr=1;itr)是一个关于的相关问题。
整数itr;
是否应该删除?