如何在Verilog-2005中初始化二维参数数组?

时间:2016-10-13 00:44:19

标签: parameters verilog fpga

我知道之前已经问过这个问题,但是,我能找到的每个答案都是指SystemVerilog及其语法。

我有以下代码:

parameter NUM_TILES = 2;

parameter [15:0]    TILE_SIZE       [NUM_TILES - 1'b1:0];
parameter [15:0]    TILE_PRV_SIZE   [NUM_TILES - 1'b1:0];
parameter [15:0]    TILE_LOOP       [NUM_TILES - 1'b1:0];

我尝试过以下操作,但Verilog-2005不支持数组文字。

parameter [15:0]    TILE_SIZE       [NUM_TILES - 1'b1:0]; = '{16'd4, 16'd4};

defparam语句似乎有些用处,但我需要实例化我的testbench模块并在实例化之外使用它。我相信我的另一个选择是使用模块实例参数值赋值,例如

module top_tb UUT #(.TILE_SIZE[i](16'd4),...,...)();

但我试图远离那个。是否有一些鲜为人知的技巧我可以使用,还是我必须采用上述两种方法中的一种?

1 个答案:

答案 0 :(得分:0)

您可以做的是将数组打包到一个矢量中并选择一个切片。

parameter [(NUM_TILES*16)-1:0]    TILE_SIZE = {16'd4, 16'd4};

然后您可以使用

选择参数
TILE_SIZE[i*16+:16]