2016-10-13 196 views
0

我知道這個問題之前已經被問過了,但是,我能找到的每個答案都指向SystemVerilog及其語法。如何初始化Verilog-2005中的二維參數數組?

我有以下代碼:

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聲明似乎將是一些使用的,但我需要實例我臺模塊,並從外面實例使用它。我相信我的另一種選擇是使用模塊實例參數值分配,例如

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

但我試圖遠離那個。是否有一些我可以使用的較少知道的技巧,或者我將不得不訴諸上述兩種方法之一?

回答

0

你可以做的是將你的數組打包到一個單獨的向量中並選擇它的一部分。

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

那麼您可以選擇與

TILE_SIZE[i*16+:16] 
+0

參數這工作得很好。我使用預處理器宏來定義查找表來解決我的問題,但這更簡單。謝謝! –