【问题标题】:Connect all modules in scheme by massive of wires. Verilog用大量电线连接方案中的所有模块。 Verilog
【发布时间】:2017-03-07 11:37:04
【问题描述】:

我的方案中有一些模块,我想用大量电线连接它。它在我心中的样子:

当顶级模块中的变量 some_trigger 发生变化时,此时顶级模块通过模块input_output_wire 发送信号a1-> 模块a1 做一些东西-> 模块a1 发送太模块@ 987654325@ massive_input_output_wire[0] -> 模块 a2 做一些东西 -> a2 通过大量massive_input_output_wire[1] 发送到模块a3 -> a3 做一些东西 -> 发送到@987654332 @ by 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

【问题讨论】:

  • 对不起:我不明白你在问什么。请您添加更多解释吗?
  • 连线不像编程语言中的变量。他们不会将分配与最后一场胜利联系起来。经常导致 Xs 的驱动器并发。您不应该使用 assignforce 语句在 always 块中分配连线(我猜这就是您当前正在做的事情)。
  • @MatthewTaylor 好的,我想在这个逻辑中连接我所有的模块(a1,a2,....an):来自a1massive_input_output_wire[0])的输出线) 必须转到a2 的输入。 a2(massive_input_output_wire[1]) 的输出线必须连接到 a3 的输入端。a[n-1](massive_input_output_wire[n]) 的输出线必须连接到输入端a[n]。问题是如何正确编写代码生成模块 (modules_a) 以及我编写的未生成模块 a1an
  • @Greg 谢谢你,我理解我的错误,但我现在的问题不在此。
  • Module a 应该至少有两个端口:一个输入和一个输出。 a inst_a( .output_wire(massive_input_output_wire[i]), .input_wire(massive_input_output_wire[i-1]) );

标签: module verilog


【解决方案1】:

正如你在解释中所说,每个模块接收一个信号并制作一些东西,然后给下一个模块另一个信号以制作另一种东西。

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

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 

如果我正确理解您的解释,这可能会对您有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多