我们可以拥有一系列自定义模块吗?

10 verilog

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

例如:我们可以input [15:0] a;- 这会创建一个总线.我们可以为自定义模块做同样的事情,即DFF [15:0] d;DFF是自定义模块吗?在这里,我打算创建16个DFF模块实例.

mar*_*k4o 24

在Verilog-1995(IEEE 1364-1995)中添加了Verilog实例阵列.它们可以与门,用户定义的基元和模块一起使用.在Verilog-2001中添加了更强大但更复杂的生成.

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

DFF d[15:0] (clk, DFF_i, DFF_o);
Run Code Online (Sandbox Code Playgroud)

对于每个端口连接,如果大小与形式参数的大小匹配,则它将连接到每个实例.否则,每个实例都连接到表达式的部分选择(或位选择).


dan*_*poe 9

直接执行此操作是不可能的(更新:现在在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
Run Code Online (Sandbox Code Playgroud)

否则在合成期间可能有一些可能使用正确的自定义模块,但我不是那里的专家.

干杯,丹尼尔