【问题标题】:Variable size and number of port/array port in module which are parameter dependent in Verilog System verilog模块中端口/阵列端口的可变大小和数量取决于 Verilog 系统 verilog 中的参数
【发布时间】:2017-07-14 09:04:13
【问题描述】:

参考下面的问题

How to write a module with variable number of ports in Verilog

我对此还有另一个问题。

module my_module #(SIZEOF_LENGTH = 3,
                    LENGTH = {8,8,7})(
    input clk,
    input rst_n,
    input [LENGTH[0]-1:0] data_1,
    input [LENGTH[1]-1:0] data_2,
    input [LENGTH[2]-1:0] data_3
);

我基本上想要这样的东西。大小取决于从顶部传递的参数,端口数也是如此。这个可以吗?

【问题讨论】:

    标签: verilog system-verilog


    【解决方案1】:

    不在 Verilog 中,但可以使用 Ruby 或 Perl 等模板语言。

    也可以在 SystemVerilog Array 中使用端口: 请注意,它们必须具有相同的宽度。

    module my_module #(
        SIZEOF_LENGTH = 3,
        LENGTH = 8)(
        input clk,
        input rst_n,
        input [LENGTH-1:0] data [0:SIZEOF_LENGTH-1]
    );
    

    【讨论】:

    • 这个速记符号也可以使用input [LENGTH-1:0] data[SIZEOF_LENGTH]
    • 这就是问题所在,我想要数据部分的可变长度。这应该是可能的,因为它是一个 HDL,但我猜 LRM 不支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多