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

发布于 2024-08-04 01:08:25 字数 146 浏览 4 评论 0原文

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

例如:我们可以输入 [15:0] a; - 这会创建一条总线。我们可以对自定义模块做同样的事情,即DFF [15:0] d;,其中DFF是自定义模块? 这里我打算创建 16 个 DFF 模块实例。

Can we have an array of instances for a custom module?

For example: we can have input [15:0] a; - this creates a bus. Can we do same thing for custom modules, i.e. DFF [15:0] d;, where DFF is a custom module?
Here I intend to create 16 instances of the DFF module.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

和影子一齐双人舞 2024-08-11 01:08:25

Verilog 实例数组已添加到 Verilog-1995 (IEEE 1364-1995) 中。它们可以与门、用户定义的原语和模块一起使用。 Verilog-2001 中添加了更强大但也更复杂的生成器。

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

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

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

Verilog arrays of instances were added in Verilog-1995 (IEEE 1364-1995). They can be used with gates, user-defined primitives, and modules. Generates, which are more powerful but also more complex, were added in Verilog-2001.

Here is an example array of module instances:

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

For each port connection, if the size matches that of the formal parameter then it is connected to every instance. Otherwise each instance is connected to a part-select (or bit-select) of the expression.

娜些时光,永不杰束 2024-08-11 01:08:25

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

否则在综合过程中可能有一些可能性使用正确的自定义模块,但我不是那里的专家。

干杯,
丹尼尔

it is not possible to do this directly (update: now after mark4o's answer I know that there is a way), but what you can do is using the generate statement to create multiple instances of your custom module and hook them up to your signals. Should look something like this:

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

Otherwise there are probably some possibility during synthesis to use the correct custom modules, but I'm not an expert there.

Cheers,
Daniel

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文