その形式で2次元配列を作成しようとしています:
reg arr[5:0][0:5];
値を割り当てようとすると、
assign arr[1] = 22;
次のようなエラーが表示されます。
「スカラー reg 配列 'arr' への参照は有効な正味左辺値ではありません」および「連続代入の左辺が無効です」。
したがって、私の意図は、配列のインデックスに数値を割り当てることです。この割り当てはどのように機能しますか? どんな助け、提案も大歓迎です。
まず、登録できませんassign
。regタイプではなく、ワイヤassigns
タイプを駆動します。reg 型を駆動するには、always ブロックのようなロジック ブロック内にステートメントが必要です。
第二に、あなたが書いたことに基づいて、2次元配列ではなく、マルチビット要素の配列を探していると思います。
reg arr[5:0][0:5];
単一ビットの 2D 配列を定義します。ビットより大きい値を保持できるマルチビット値の配列が必要な場合は、次のように宣言します。
reg [M:0] arr[0:N]
- これは、各要素が M+1 ビット数である (N+1) 要素の配列を表します。このように宣言すると、always ブロックを使用すると仮定して、22 のような値を格納できるはずです。
assign
型に対して連続代入 (別名ステートメント) を使用することはできませんreg
。これは、配列であることとは関係ありません。
の宣言をarr
型に変更すると、wire
投稿したエラー メッセージを回避できます。または、initial
oralways
ブロックで手続き型割り当てを使用して割り当てることもできます。
ただし、割り当てで配列の両方の次元を提供する必要があります。1 ビット値の 2 次元配列を宣言しています。
したがって、次のように指定する必要があります。
arr[0][0] = 1;