gpt4 book ai didi

verilog - Verilog 中的参数数组

转载 作者:行者123 更新时间:2023-12-03 23:13:50 36 4
gpt4 key购买 nike

是否可以在 Verilog 中创建 parameter 数组?例如,类似于以下内容:

parameter[TOTAL-1 : 0] PARAM_ARRAY = {1, 0, 0, 2}
如果不可能,那么替代解决方案是什么?

最佳答案

给定的示例是将解压缩的值分配给打包参数数组。这在 Verilog 中是不允许的。

Verilog 只支持简单的基于向量的参数。它不支持解压缩的数组。取代 Verilog 的 SystemVerilog 确实支持参数数组。几乎所有现代 Verilog 模拟器都是真正的 SystemVerilog 模拟器(至少对于商业模拟器而言;开源模拟器支持不完整)。要将文件读取为 SystemVerilog,请将 .v 的文件扩展名更改为 .sv。然后你可以将 unpacked 分配给一个二维参数数组:

parameter [7:0] PARAM_ARRAY [TOTAL-1 : 0]   = {8'd1, 8'd0, 8'd0, 8'd2};

类型名称也是允许的。例如,使用 integer 创建一个 32x4 数组:
parameter integer PARAM_ARRAY [TOTAL-1 : 0]   = {1, 0, 0, 2};

这记录在:
  • IEEE Std 1364-2001 § 3.11 参数
  • IEEE Std 1364-2005 § 4.10 参数
  • (SystemVerilog) IEEE Std 1800-2012 § 6.20 常量


  • 作为纯 Verilog 解决方案,您需要创建一个长向量:
    parameter [8*TOTAL-1:0] PARAM_ARRAY = {8'd1, 8'd0, 8'd0, 8'd2};

    然后将切片作为硬编码 PARAM_ARRAY[7:0] 或使用 +: : PARAM_ARRAY[8*index +: 8] 进行访问。请注意, +: 需要 Verilog-2001 或更高版本(即使是大多数开源模拟器也支持)。 Indexing vectors and arrays with +:

    关于verilog - Verilog 中的参数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23507629/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com