いくつかのFPGAターゲットには、FPGA VIから直接アクセスが可能なオンボードダイナミックランダムアクセスメモリ (DRAM) が含まれます。LabVIEWは、2つのタイプのDRAMインタフェースをサポートします。

  • FPGAメモリ項目―ブロックメモリやLUTと同じ方法でDRAMを使用するには、プロジェクトのメモリ項目インタフェースを使用します。プロジェクトエクスプローラウィンドウでFPGAターゲットの下にDRAMメモリ項目が表示されます。
  • ソケット付きCLIP―オンボードDRAMと直接通信するには、プロジェクトのCLIPインタフェースを使用します。ソケット付きCLIPは、選択されたDRAMバンク項目に対応するすべてのメモリインタフェースを表示します。

DRAMを使用する大半のFPGAアプリケーションは、FPGAメモリ項目インタフェースが提供する有用性とVHDLの最適化を活用することができます。それでも、I/O信号を使用して未処理アドレスにアクセスするために、ソケット付きCLIPインタフェースを使用することができます。FPGAメモリ項目とソケット付きCLIPの両方から同じDRAMバンクにアクセスすることはできません。VI定義メモリ項目を使用してDRAMを構成することはできません。

DRAMが利用可能かどうかを確認する

以下の手順にしたがって、DRAMがターゲットで利用可能であるかどうかを確認します。

  1. プロジェクトエクスプローラウィンドウを表示します。
  2. FPGAターゲットを右クリックしてプロパティを選択します。
  3. ターゲットでDRAMが利用可能な場合は、ダイアログボックスの左側でカテゴリリスト内にDRAMプロパティが表示されます。
メモ ターゲットでDRAMが利用可能でない場合は、実装プルダウンメニューの下のメモリプロパティダイアログボックスのオプションとしてDRAMがリストされません。

物理DRAMを複数のメモリ項目にパーティションする

FPGAメモリ項目インタフェースを使用すれば、ターゲットで使用可能な物理DRAMバンクを複数のメモリ項目にパーティションすることができます。DRAMバンクでメモリのパーティションを作成し、構成するには、メモリプロパティダイアログボックスを使用します。たとえば、ターゲットに2つの物理DRAMバンクがある場合、以下に示すように、1つのバンクを3つの異なるメモリに、もう1つのバンクを5つのメモリにパーティションすることが可能です。LabVIEWは、各メモリを相互に独立したメモリとして扱います。

メモリのパーティションを作成した後、FPGAターゲットプロパティダイアログボックスのDRAMプロパティページを使用して、同じDRAMバンク内のパーティション間のアービトレーションを構成する必要があります。

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

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

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

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

DRAMにアクセスする際、確定的でないレイテンシが発生します。このレイテンシを補正するには、データを要求およびデータを取得メソッドを使用してDRAMからデータを読み取ります。データを要求メソッドを使用してデータ用に複数の要求をキューに入れ、データを取得メソッドを使用して要求されたデータを取得することができます。DRAMは、ユーザがハンドシェイク信号を使用して要求されたデータの受信の準備ができたことを示すと、要求されたデータを返します。

DRAMの性能を最大限に活かすには、各クロックサイクルで一度にDRAMへ複数のデータの送信 (または要求) を行います。