2016-04-18 84 views
1

まず、この質問のタイトルを表現するのには多くの困難がありました。だから私が直面している問題を理解し、それを言葉で伝えるより良い方法があり、前に質問が答えられたなら、私は謝罪し、どうすれば解決できるか教えてください。とにかく、ここで私はわかりやすくするために切り捨てられてきた、関連するコードスニペットです:VerilogでのRAMビットの連結

parameter RAM_DEPTH = 256; 
reg ram [0:RAM_DEPTH-1]; //256 deep memory, 1-bit size per location 

parameter NUM_INST = 64; 
parameter N = 4; 
genvar x; 
generate for (x = 0; x < NUM_INST; x = x + 1) begin: xs 
    //instantiate a module here 
    //connect N bits to input port 
    //which N bits depends module number x 
    mod inst (
     .in(ram[x*N : x*N + N - 1]) //the error is here 
    ); 
end endgenerate 

エラーは次のとおりです。

error: Array cannot be indexed by a range. 

私はramreg ram [0:RAM_DEPTH-1]代わりのreg [0:RAM_DEPTH-1] ramとして宣言されているためであると理解しています。しかし、Nパラメータに基づいてRAMビットの連結を自動化する方法があります。すなわち、.in({ram[x*N],ram[x*N+1],ram[x*N+2],ram[x*N+3]})を書く代わりに、Nに基づいてビットを連結する自動範囲選択ロジックがあります。例えば、N = 256非常に長い連結演算子を書く必要があり、モジュールのパラメトリックも小さくなります。

この場合、reg [0:RAM_DEPTH-1] ram宣言を使用するだけで、代わりに1つのレジスタ配列のビット更新をサポートするためにモジュールを書き直す必要がありますか?

ありがとうございました。

+0

http://stackoverflow.com/questions/18067571/indexing-vectors-and-arrays-withに記載されている方法を試したことがありますか?私はそれがこのようなもののためにうまくいくことを覚えているようだ... – wilcroft

+0

Verilog 2001で可能になるはずです。どのような標準バージョンを使用していますか? –

+0

@wilcroft あなたのリンクのソリューションは概念的に同じです。変数宣言を見ると、それは単一のNビットレジスタですが、N個の1ビットレジスタ(分散メモリブロックなど)を宣言しています。とにかく '+:'演算子を試しましたが、私はまだ同じエラーが発生しています。 @EugeneSh。 – sidmontu

答えて

0

私が見つけた最も簡単な解決策は、提案したとおりにreg ram [0:RAM_DEPTH-1]reg [0:RAM_DEPTH-1] ramにすることでした。代替的には、以下のようになります。

parameter RAM_DEPTH = 256; 
parameter NUM_INST = 64; 
parameter N = 4; 

reg [RAM_DEPTH-1:0] ram; //256 deep memory, 1-bit size per location 
reg [N-1:0] ramwires [NUM_INST-1:0]; 

genvar x; 
integer y, z; 
generate for (x = 0; x < NUM_INST; x = x + 1) begin: xs 
    mod inst (
     .in(ramwires[x]) 
    ); 
end endgenerate 

[email protected](*) 
    for (y = 0; y<NUM_INST; y = y + 1) begin 
     for (z=0; z<N; z = z + 1) begin 
      ramwires[y][z] = ram[y*N+z]; 
     end 
    end 

これはまだパラメータ化でありながら、容易に、モジュールに渡され、2Dアレイに1次元アレイに変換します。

関連する問題