我们可以为自定义模块提供一组实例吗?
例如:我们可以input [15:0] a;
- 这会创建一个总线。我们可以对自定义模块做同样的事情吗,即DFF [15:0] d;
DFF 是自定义模块吗?这里我打算创建 16 个 DFF 模块的实例。
我们可以为自定义模块提供一组实例吗?
例如:我们可以input [15:0] a;
- 这会创建一个总线。我们可以对自定义模块做同样的事情吗,即DFF [15:0] d;
DFF 是自定义模块吗?这里我打算创建 16 个 DFF 模块的实例。
在 Verilog-1995 (IEEE 1364-1995) 中添加了 Verilog 实例数组。它们可以与门、用户定义的原语和模块一起使用。在 Verilog-2001 中添加了更强大但也更复杂的生成。
这是模块实例的示例数组:
DFF d[15:0] (clk, DFF_i, DFF_o);
对于每个端口连接,如果大小与形式参数的大小匹配,则它连接到每个实例。否则,每个实例都连接到表达式的部分选择(或位选择)。
不可能直接执行此操作(更新:现在在 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
否则在综合过程中可能有一些可能使用正确的自定义模块,但我不是那里的专家。
干杯,丹尼尔