Module 通过大量电线连接方案中的所有模块。Verilog

Module 通过大量电线连接方案中的所有模块。Verilog,module,verilog,Module,Verilog,我的方案中有一些模块,我想用大量的电线将其连接起来。在我看来: 当顶层模块中某个变量触发变化时,此时顶层模块通过模块a1->模块a1制作一些东西->模块a1通过大量输入输出线发送信号a2->modulea2制作一些东西->a2通过massiblemassible\u input\u output\u wire[1]发送到modulea3a3制作一些东西->通过massible\u input\u output\u wire[2]发送到等 module a( input_output_wire;

我的方案中有一些模块,我想用大量的电线将其连接起来。在我看来:

当顶层模块中某个变量触发变化时,此时顶层模块通过
模块
a1
->模块
a1
制作一些东西->模块
a1
通过
大量输入输出线发送信号
a2
->module
a2
制作一些东西->
a2
通过massible
massible\u input\u output\u wire[1]
发送到module
a3
a3
制作一些东西->通过
massible\u input\u output\u wire[2]
发送到

module a(
input_output_wire;
);
input input_output_wire;
output input_output_wire;
always @(posedge input_output_wire)
begin
     if(input_output_wire) begin
         ....
             make some stuff
         ....
     end
end
end module


`include "a.v"
module top_level(
clk,
rst,
some_trigger
);
input clk, rst, some_trigger;
parameter NUM_OF_MODULES_A = 5;

wire massive_input_output_wire[0:NUM_OF_MODULES_A];

a a1(.input_output_wire(massive_input_output_wire[0]));
a an(.input_output_wire(massive_input_output_wire[NUM_OF_MODULES_A-1]));
genvar i;
genarate
        for(i=1;i<NUM_OF_MODULES_A-2; i = i + 1)
        begin : modules_a
            a modules_a(
            .(input_output_wire(massive_input_output_wire[i]))
            );
        end
endgenerate


always @(posedge some_trigger)
begin
     if(some_trigger) 
         massive_input_output_wire[0] = 1;
end
endmodule
模块a(
输入输出线;
);
输入输出线;
输出输入输出线;
始终@(posedge输入输出线)
开始
如果(输入输出线)开始
....
做点东西
....
结束
结束
端模块
`包括“a.v”
模块顶层(
中华电力有限公司,
rst,
一些触发
);
输入时钟、rst、某些触发;
_模块的参数NUM__A=5;
连线大量的输入输出连线[0:NUM_OF_MODULES_A];
a1(.input_output_线(大量输入_output_线[0]);
a an(.input_output_wire(大量输入输出线[NUM_OF_MODULES_a-1]);
genvar i;
热化

对于(i=1;i,正如您在解释中所说,每个模块接收一个信号并制作一些东西,然后向下一个模块发送另一个信号以制作另一些东西

为此,您的模块应包含两个端口

下一步,在顶部模块中实例化如下

Module top(input_wire,output_wire,another );

Input input_wire ;
Output output_wire [0:3]

Make some stuff
 a a1(input_wire [0],output_wire [0]);
 a a2 (output_wire [0],output_wire [1]);
 a a3 (output_wire [1],output_wire [2]);
 Intantiations

 Endmodule 

如果我正确理解了你的解释,这可能会对你有所帮助。抱歉:我不明白你在问什么。请你再补充解释一下好吗?连线不像编程语言中的变量。它们不会将分配与最后一个链接起来。驱动器会同时运行,这通常会导致Xs。你不应该使用
assign
强制
语句在always块中分配一条线(我猜这就是您当前正在做的)。@MatthewTaylor好的,我想在这个逻辑中连接我的所有模块(
a1
a2
,…
an
):从
a1
输出线(
大量输入输出线[0]
)必须转到a2的输入。
massive\u input\u Output\u wire[1]
)的a2输出线必须转到a3的输入。
a[n-1]
massive\u input\u Output\u wire[n]
)的输出线必须转到input
a[n]
。问题是如何正确编写生成模块的代码(
modules\u a
)对于我编写的模块,没有生成
a1
an
@Greg谢谢,我理解我的错误,但我现在的问题不在于此。模块
a
应该至少有两个端口:输入和输出。
inst\u a(.output\u wire(massive\u input\u output\u wire[I]),input\u wire(massive\u input\u input\u output\u wire[I-1]);
Module top(input_wire,output_wire,another );

Input input_wire ;
Output output_wire [0:3]

Make some stuff
 a a1(input_wire [0],output_wire [0]);
 a a2 (output_wire [0],output_wire [1]);
 a a3 (output_wire [1],output_wire [2]);
 Intantiations

 Endmodule