如何在verilog中生成由生成函数组成的IO端口?

问题描述 投票:0回答:1

我正在尝试制作一个简单的DUT,它包含了很多实现FPGA的实例。

如何制作实例化DUT的I / O端口?

你可以看到下面的代码,有TEST DUT,我想在TOP模块中制作84个input_data I / O.

如果我使用下面的方法,top的input_data连接到所有实例的input_data。

但我想制作每个84的I / O端口并连接它们。

但我不知道该怎么做。

你能帮我一下,我该怎么办?

module top(

   input_data0,
   input_data1,
   input_data2,
   //...
   input_data83,

// TODO make I/O ports
);
// to declare reg/wire signals.

  input  signed [49:0] input_data0;
  input  signed [49:0] input_data1;
  input  signed [49:0] input_data2;
   //....
  input  signed [49:0] input_data83;


  // I'd like to connect between input_data0~input_data83 and u_test's 83 input_data 



genvar i;
generate

    for (i=0; i<84; i=i+1) begin : amp
    TEST u_test (
        .in_input       (   input_data  )
    );  
end 



endgenerate

endmodule
verilog
1个回答
1
投票

你不能在Verilog中这样做。在SystemVerilog中,您可以将input_data端口设为数组。

你可以在Verilog中做的最好的事情就是创建一个非常大的向量,并将其中的一部分连接到每个TEST模块

module top( input wire [(84*50)-1:0] input_data,

// TODO make I/O ports
);

genvar i;
for (i=0; i<84; i=i+1) begin : amp
    TEST u_test (
        .in_input       (   input_data[i*50 +:50] )
    );  
end 
endmodule
© www.soinside.com 2019 - 2024. All rights reserved.