各FPGAチップまたはFPGAは、プログラム可能な内部配線を持つ無数の定義済みリソースで構成されています。これらの内部接続は、LabVIEW FPGAモジュールで設計したデジタル回路を実装します。FPGA VIを作成することで、FPGA上の論理ブロックの配線を決定する回路図を設計します。このVIをコンパイルすると、コンパイルツールによってFPGA回路に変換されます。

メモ このトピックでは、FPGAの下位レベルでの実装の概念について説明します。LabVIEW FPGAモジュールの使用を開始するのにこれらの概念についての知識は必要ありませんが、理解しているとより効率的にFPGA VIを構築することができます。

以下の図は、FPGA上の論理ブロック、I/Oブロック、およびプログラム可能な経路の関係を示します。

以下のFPGAの仕様は、FPGAアプリケーションを設計する上で重要です。

  • 構成可能な論理ブロックの数
  • 固定ファンクション論理ブロックの数 (乗算器など)
  • メモリリソースのサイズ (組込ブロックRAMなど)

FPGAの基本構成部分の詳細については、ni.comのサポートドキュメントを参照してください。

フリップフロップ、LUT、スライス

FPGAリソースは、論理関数を実行可能なFPGAのリソースです。FPGAリソースは、構成可能な論理ブロックを作成するためにスライスにグループ分けされます。スライスには、決まった数のLUT、フリップフロップ、およびマルチプレクサが搭載されています。LUTは、FPGAに配線された一連の論理ゲートです。LUTは、すべての入力の組み合わせに対して事前定義された出力のリストを記憶し、論理操作の結果をすばやく出力します。フリップフロップは、2つの安定した状態を持つ回路で、1つのビットを表します。muxとも呼ばれるマルチプレクサは、2つ以上の入力から選択して、選択した入力に出力する回路です。

異なるFPGAシリーズでは、スライスとLUTの実装が異なります。たとえば、Virtex-II FPGAの1つのスライスにはLUTとフリップフロップが2つずつ搭載されていますが、Virtex-5 FPGAの1つのスライスにはLUTとフリップフロップが4つずつ搭載されています。さらに、LUTの入力数は通常2~6個で、FPGAシリーズによって異なります。

レジスタ

レジスタは、ビットパターンを格納するフリップフロップのグループです。FPGAのレジスタには、クロック、入力データ、出力データ、および有効信号ポートがあります。各クロックサイクルで入力データはラッチされて内部で格納され、出力データは内部で格納されたデータと一致するように更新されます。FPGA VIは、以下の機能を実行するためにレジスタを使用します。

  • ループの反復間で状態を保持する
  • I/O同期
  • クロック領域間でデータをハンドシェイクする
  • パイプライン処理をする
  • ホストVIと通信する

レジスタは、FPGA VIのタイミングを理解する上で重要な概念です。

ブロックRAM

ブロックRAM (ブロックメモリ) は、データ記憶用にFPGA全体に渡って配置されます。LabVIEWは、一般にメモリ&FIFO関数を合成する際にブロックRAMを使用します。FIFOプロパティおよびメモリプロパティダイアログボックスで、LabVIEWがFIFOとメモリ項目をそれぞれ実装する方法を指定できます。

DSP48EおよびDSP48E1

DSP48Eスライスは、Xilinx Virtex-5などの特定のFPGAデバイスシリーズに含まれるデジタル信号処理の論理要素です。このスライスを使用して、乗算アキュムレータ、乗算加算器、1~nステップカウンタを含む、異なる種類の演算を実行することができます。また、AND、OR、およびXORなどのさまざまな種類の論理演算を実行するために、このスライスを使用することもできます。FPGAファブリックの追加のリソースを使用せず、複素乗算器およびnタップ有限インパルス応答 (FIR) フィルタを含むより複雑な機能を実装するために、複数のDSP48Eスライスをカスケードすることが可能です。

DSP48E1スライスは、特定のXilinx Virtex-6以降のFPGAデバイスシリーズのみで利用可能なデジタル信号処理の要素です。DSP48E1スライスには、乗算器の前のpre-adderやDSP48Eスライスの機能を拡張したその他の機能が含まれています。このpre-adderは、対称FIRフィルタなど特定のアルゴリズムを実装する際に役立ちます。

UltraRAM

UltraRAMまたはURAMは、ほとんどのXilinx UltraScale+ターゲットで使用可能な、柔軟で高密度そして大容量のメモリ構成ブロックです。UltraRAMはブロックメモリの8倍の容量を備えていますが、ブロックメモリよりもデータ幅とアドレス空間の構成に柔軟性がありません。大きなローカルFIFOのストレージ要素としてUltraRAMを使用します。FIFOプロパティダイアログボックスで、LabVIEWがFIFOを実装する方法を指定できます。