我刚刚开始学习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
Run Code Online (Sandbox Code Playgroud)
我知道这是一个愚蠢的例子,我可以很容易地避免使用for循环,但我想稍后使用参数.
谢谢,对不起,如果它太基本了.
Verilog模块不能在initial或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
Run Code Online (Sandbox Code Playgroud)
这需要使用verilog2001或更高版本.