LabVIEW FPGAメモリ項目を使用して、FPGAターゲット上のDRAMにアクセスし、構成する方法について紹介します。

いくつかのFPGAターゲットには、FPGA VIから直接アクセスが可能なオンボードダイナミックランダムアクセスメモリ (DRAM) が含まれます。LabVIEWはFPGAメモリ項目を介したDRAMアクセスをサポートしており、ブロックメモリやLUTと同様の使いやすさとVHDLの最適化を実現します。

DRAMにアクセスする

プロジェクト内のFPGAメモリ項目インタフェースを使用してDRAMにアクセスします。DRAMメモリ項目は、FPGAターゲット配下のプロジェクトエクスプローラに表示されます。

VI定義メモリ項目を使用してDRAMを構成することはできません。

DRAMを複数のメモリ項目に分割する

メモリプロパティダイアログを使用して、物理DRAMバンクを複数のメモリ項目に分割できます。たとえば、ターゲットに2つの物理DRAMバンクがある場合、1つのバンクを3つのメモリに、もう1つのバンクを5つのメモリに分割できます。LabVIEWでは、各メモリは独立して扱われます。

メモ DRAMを分割する前に、FPGAターゲットがDRAMをサポートしていることを確認してください。詳細な手順については、「FPGAターゲットでDRAMの可用性を確認する」を参照してください。
図 3. DRAMバンクを複数のメモリ項目に分割する例

DRAMバンク0を3つのパーティションに、DRAMバンク1を5つのパーティションに分割した構成を示す図。

パーティションを作成した後、FPGAターゲットプロパティダイアログのDRAMプロパティページを使用して、同一DRAMバンク内のパーティション間のアービトレーションを構成します。

DRAMバンクへのアクセスをアービトレートする

DRAMを複数のメモリ項目にパーティションする場合、LabVIEWが各パーティションに付与する時間を構成することができます。デフォルトで、LabVIEWはすべてのパーティションに対して均等な時間を付与します。このDRAMアービタは、共有された同じリソースに対する異なるリクエスタ間のアービトレーションと異なります。

FPGAターゲットプロパティ » DRAMプロパティで各パーティションを許可する時間を指定します。LabVIEWは、ラウンドロビンスケジューリングを使用して各パーティションに時間を付与します。

レイテンシとDRAMを理解する

DRAMにアクセスする際、確定的でないレイテンシが発生します。このレイテンシを補正するには、以下の手順に従ってください。
  • 「データを要求」メソッドおよび「データを取得」メソッドを使用して、DRAMからデータを読み取ります。
  • 「データを要求」を使用して複数のデータ要求をキューに登録し、「データを取得」を使用して要求されたデータを取得します。
  • ハンドシェイク信号を使用して準備完了を示すと、DRAMは要求されたデータを返します。

パフォーマンスを最適化するには、各クロックサイクルごとなど、バースト形式でデータ要求を送信するか、データを書き込みます。