メモリ項目は、FPGAアプリケーションを使用して単一のクロック領域にデータを保存する主な方法です。

LabVIEW FPGAモジュールには、2つのタイプのメモリ項目があります。

  • VI定義メモリ項目: VI定義メモリ項目をメモリ名制御器と使用して、再入可能サブVIを作成してリソースの競合を回避します。VI定義メモリ項目を再入可能なFPGA VIで構成すると、VIのインスタンスごとに独立したメモリ項目のコピーが作成されます。
  • ターゲット指定メモリ項目: メモリ項目を表示しプロジェクトエクスプローラウィンドウから構成可能にしたい場合は、ターゲット指定メモリ項目を使用します。ターゲット指定メモリ項目は、プロジェクトで対応する項目に名前でスタティックにバウンドされるため、プロジェクト項目への更新はブロックダイアグラムにあるメモリのすべてのインスタンスに影響します。ターゲット指定メモリ項目は、プロジェクトエクスプローラウィンドウの同じターゲットの下のすべてのFPGA VIで使用可能です。ターゲット指定メモリ項目を使用してFPGA VIを別のユーザに送信したい場合は、プロジェクト全体を送信する必要があります。プロジェクトを含めないと、FPGA VIが実行不可になります。
メモ 同じメモリ項目に複数の読み取りまたは書き込みを含める場合、メモリ項目は共有リソースとなります。データの破損およびジッタを防ぐには、単一のメモリ項目に対して同時に複数の読み取りまたは書き込み要求を行うことは避けてください。

以下のブロックダイアグラムは、ターゲット指定メモリ項目に構成されたメモリメソッドノードを使用してメモリ項目の読み取りと書き込みを実行する方法を示しています。このVIはメモリからデータを読み取り、データを増分し、同じメモリの場所を新しいデータで上書きします。

メモ このブロックダイアグラムは、シングルサイクルタイミングループの外でのみ有効です。シングルサイクルタイミングループ内でこのブロックダイアグラムを使用する場合、メモリ項目の読み取りレイテンシサイクルが2に設定されているため、少なくとも2つのフィードバックノードまたは2つの初期化されていないシフトレジスタを読み取り (メモリメソッド) ノードのデータ出力に配線する必要があります。読み取り (メモリメソッド) ノードの上に表示されているアイコンのx2は、メモリ項目のレイテンシ数を示します。

メモリ実装オプションについて

メモリプロパティダイアログボックスを使用して、LabVIEWでのメモリ項目の実装方法を指定します。以下の図に示されているように、実装プルダウンメニューを展開して利用可能なメモリオプションを表示します。

メモ このダイアログボックスのその他のオプションの構成については、メモリプロパティダイアログボックスのトピックを参照してください。

ブロックメモリ

ブロックランダムアクセスメモリ、ブロックRAM、またはBRAMとしても知られているブロックメモリは、データストレージ用の内部FPGAリソースです。他のタイプのメモリ項目に比べ、ブロックメモリを使用するメモリ項目は高いクロックレートでコンパイルします。ブロックメモリを読み取り/書き込みアクセスまたはデュアルポート読み取りアクセス用に構成できます。ブロックメモリを使用して実装されたメモリ項目を使用して、あるクロック領域にデータを書き込み、別のクロック領域からデータを読み取ることもできます。この実装では、各メモリ項目で1つの書き込みノードと1つの読み取りノードのみを使用できます。ブロックメモリはFPGAリソースを消費しません。異なるタイプのメモリの利点を活用したい場合を除き、まずブロックメモリを使用してください。

注意 複数のクロック領域にブロックメモリを使用して実装されたメモリ項目を使用する場合は、同じアドレスで同時に読み取りと書き込みを実行することが可能です。ただし、それを実行すると、不正確なデータを読み取る可能性があります。

読み取りレイテンシサイクルの数を増やせば、より多くの内部パイプラインが必要になり、コンパイル設計の最大周波数も増える可能性があります。メモリプロパティダイアログボックスの一般ページのブロックメモリを使用して、実装するメモリ項目の読み取りレイテンシサイクルの数を指定することができます。以下の表を参考に、お使いの設計に必要な読み取りレイテンシサイクルの数を判断してください。

読み取りレイテンシサイクル 使用推奨数 最大周波数の影響
0 ルックアップテーブルを使用してメモリを実装する場合にのみ使用可能です。 変更なし
1 有効なデータが早急に必要で、かつルックアップテーブルを使用するFPGAリソースが欠如している場合に、この設定を使用します。 変更なし
2 (デフォルト) 大部分の設計の最大周波数の推奨設定。 増える
3 大量のデータを格納する必要がある場合にこの設定を使用してください。 増える
ヒント Xilinxコンパイルレポートで、2つ以上のブロックメモリプリミティブが設計に使用されていることがわかった場合に、この設定を使用します。

ルックアップテーブル (LUT)

ルックアップテーブルは、分散RAMとしても知られ、FPGAに配線された論理ゲートから構成されています。FPGAリソースまたはメモリとして機能するため、LUTはFPGAリソースを消費します。ルックアップテーブルは以下の場合に使用します。

  • シングルサイクルタイミングループ内からこのメモリにアクセスする必要があり、同じサイクル内でノードのインボークとメモリ項目からのデータの読み取りを実行する必要がある場合
  • 残りのブロックメモリが制限されている場合

ダイナミックRAM (DRAM)

DRAMとは、一部のFPGAターゲットで使用可能な外部メモリの形式です。DRAMは大量の格納スペースを提供します。ただし、DRAMはFPGAに対して外部であるため、アプリケーションはシングルクロックサイクルでDRAMからデータを受信することはできません。また、DRAMでは逐次アクセスが必要なため、一度に1つのコマンドのみがメモリにアクセスできます。逐次アクセスは決定的なタイミングを回避し、DRAMへのアクセスを待つコマンドの数によって実行時間が長くなる可能性があります。

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

DRAMが利用可能な場合は、FPGA上に格納する場所がない大量のデータを格納するために使用してください。ターゲットでDRAMが利用可能でない場合は、実装プルダウンメニューの下のメモリプロパティダイアログボックスのオプションとしてDRAMがリストされません。