2016-10-13 212 views
0

私はこの質問が以前に尋ねられたことを知っていますが、私が見つけることができるすべての答えは、SystemVerilogとその構文を指しています。Verilog-2005で2次元パラメータ配列を初期化するにはどうすればよいですか?

私は次のコードを持っている:

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),...,...)(); 

しかし、私はそれを避けようとしています。上記の2つの方法のいずれかに頼らなければならないでしょうか?

答えて

0

あなたのできることは、配列を1つのベクトルにパックし、そのスライスを選択することです。

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

次に、あなたがこれはかなりうまく機能

TILE_SIZE[i*16+:16] 
+0

でパラメータを選択することができます。問題を解決するためにプリプロセッサマクロを使用してルックアップテーブルを定義していましたが、これはずっと簡単です。ありがとう! –

関連する問題