Verilog 我们可以有一组自定义模块吗?

Verilog 我们可以有一组自定义模块吗?,verilog,Verilog,我们可以为自定义模块提供一个实例数组吗 例如:我们可以有输入[15:0]a-这将创建一条总线。我们可以为定制模块做同样的事情吗,即DFF[15:0]d,其中DFF是自定义模块? 这里我打算创建16个DFF模块实例。不可能直接这样做(更新:现在在mark4o的回答之后,我知道有一种方法),但是您可以使用generate语句创建自定义模块的多个实例,并将它们连接到您的信号。应该是这样的: wire DFF_i[15:0]; wire DFF_o[15:0]; generate genvar i

我们可以为自定义模块提供一个实例数组吗

例如:我们可以有
输入[15:0]a-这将创建一条总线。我们可以为定制模块做同样的事情吗,即
DFF[15:0]d,其中DFF是自定义模块?

这里我打算创建16个DFF模块实例。

不可能直接这样做(更新:现在在mark4o的回答之后,我知道有一种方法),但是您可以使用
generate
语句创建自定义模块的多个实例,并将它们连接到您的信号。应该是这样的:

wire DFF_i[15:0];
wire DFF_o[15:0];

generate
  genvar i;
  for (i=0; i<15; i=i+1) begin : dff
    custom i_custom(
       .clk(clk)
      ,.input(DFF_i[i])
      ,.output(DFF_o[i])
      );
  end
endgenerate
导线DFF_i[15:0];
导线DFF_o[15:0];
生成
genvar i;

对于(i=0;iVerilog-1995(IEEE 1364-1995)中添加了实例的Verilog数组。它们可以与门、用户定义原语和模块一起使用。Verilog-2001中添加了更强大但也更复杂的Generate

以下是模块实例的示例数组:

DFF d[15:0] (clk, DFF_i, DFF_o);

对于每个端口连接,如果大小与形式参数的大小匹配,则将连接到每个实例。否则,每个实例将连接到零件选择(或位选择)这些模块是并行实例化的还是一个接一个实例化的?@eldos:如果端口连接的大小与形式参数的大小匹配,则它与每个实例并行连接。使用向量可以串行连接实例。@mark4o此类实例化是否如预期正常工作?
DFF d[15:0](clk,DFF[15:0],DFF[16:1]);
@eldos:当然,除了需要为模块和向量使用不同的名称之外