通过大量电线连接所有模块。的Verilog

时间:2017-03-07 11:37:05

标签: module verilog

我的方案中有一些模块,我想用大量的电线连接它。我的想法如何:

当顶层模块中的变量some​​_trigger发生变化时,此时顶层模块在模块input_output_wire中发送信号a1 - >模块a1制作一些东西 - >模块a1通过a2发送模块massive_input_output_wire[0] - >模块a2制作一些东西 - > a2通过大量massive_input_output_wire[1]到模块a3的下一个电汇发送 - > a3制作一些内容 - >通过a4发送至massive_input_output_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

1 个答案:

答案 0 :(得分:0)

正如你在解释中所说的那样,每个模块都会接收一个信号并制作一些东西并向下一个模块发出另一个信号来制作另一个东西。

对此,您的模块应包含两个端口
喜欢......

module a (input_wire,output_wire);
input input_wire;
output reg out_wire;
always
begin
Make some stuff
End 
Endmodule

接下来在顶层模块中,您实例化如下

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 

如果我理解你的解释,这可能对你有所帮助

相关问题