永続配列と dsp.Delay の RAM へのマッピング
RAM マッピングを有効にする方法
HDL ワークフロー アドバイザーで [MATLAB から HDL へのワークフロー]、[コード生成]、[最適化] タブを選択します。
[永続配列変数を RAM にマッピング] オプションを選択します。
[RAM マッピングのしきい値] を、RAM にマップする永続配列、ユーザー定義 System object™ のプライベート プロパティまたは
dsp.Delay
の最小サイズ (ビット単位) に設定します。
永続配列と System object のプロパティに対する RAM マッピングの要件
次の表では、永続配列とユーザー定義 System object のプライベート プロパティに対する RAM マッピング動作の概要を説明します。
[永続配列変数を RAM にマッピング] の設定 | マッピングの動作 |
---|---|
オン | RAM にマップします。制限事項は、RAM マッピングの制限を参照してください。 |
オフ | 生成された HDL コードのレジスタにマップします。 |
RAM マッピングの制限
RAM マッピングを有効にした場合、次の条件がすべて満たされたときに、永続配列またはユーザー定義 System object のプライベート プロパティがブロック RAM にマップされます。
それぞれの読み取りまたは書き込みアクセス権限が、単一の要素のみを対象としている。たとえば、部分行列のアクセスおよび配列のコピーはできません。
アドレスの計算ロジックが読み取りに依存しない。たとえば、配列から読み取られたデータを使用した読み取りまたは書き込みアドレスの計算はできません。
永続変数またはユーザー定義 System object のプライベート プロパティに循環依存がある場合、0 に初期化される。たとえば、2 つの永続変数 A と B がある場合、A が B に依存し、B が A に依存していれば循環依存があります。
アクセスが条件付きステートメント内の場合、条件付きステートメントは簡単な論理式 (
&&
、||
、~
) または関係演算子のみを使用している。たとえば、次のコードのr1
は RAM にマッピングされません。if (mod(i,2) > 0) a = r1(u); else r1(i) = u; end
関数を呼び出す条件などの複雑な条件は、それらを一時変数へ代入し、その一時変数を条件付きステートメント内で使用するように書き換えます。たとえば、
r1
を RAM にマッピングするには、前述のコードを次のように書き換えます。temp = mod(i,2); if (temp > 0) a = r1(u); else r1(i) = u; end
永続配列またはユーザー定義 System object のプライベート プロパティの値が外部入力に依存している。
たとえば、次のコードでは
bigarray
がu
に依存していないため、RAM にマッピングされません。function z = foo(u) persistent cnt bigarray if isempty(cnt) cnt = fi(0,1,16,10,hdlfimath); bigarray = uint8(zeros(1024,1)); end z = u + cnt; idx = uint8(cnt); temp = bigarray(idx+1); cnt(:) = cnt + fi(1,1,16,0,hdlfimath) + temp; bigarray(idx+1) = idx;
RAMSize
はRAMMappingThreshold
の値以上である。RAMSize
は、NumElements * WordLength * Complexity
の積です。NumElements
は配列内の要素数です。WordLength
は、配列のデータ型を表すビット数です。Complexity
は、基本データ型が複素数である配列の場合 2、それ以外では 1 です。
RAM にマッピングする永続変数へのアクセスが、ループを展開しない限り、
for
ループなどのループ内に存在しない。詳細については、coder.unroll
を参照してください。RAM にマッピングする永続変数へのアクセスが、入れ子にされた
if
ステートメントや入れ子にされたswitch
ステートメントなどの入れ子にされた条件付きステートメント内に存在しない。
上記の条件のいずれかが満たされていない場合、永続配列またはユーザー定義 System object のプライベート プロパティは、HDL コード内のレジスタにマップされます。
dsp.Delay
System Objects に対する RAM マッピングの要件
次の表は、dsp.Delay
System object のマッピングの動作をまとめています。
[永続配列変数を RAM にマッピング] オプション | マッピングの動作 |
---|---|
オン | 次の条件がすべて真であれば、
これらの条件のいずれかが偽である場合は、 |
オフ |
|