はじめに

Embedded VisualAppletsを使用すると、グラフィカルなFPGA開発環境であるVisualAppletsを使用して、ハードウェアプラットフォーム上のFPGAで実行されるマシンビジョンアプリケーションをプログラミングできます。

VisualAppletsでFPGA全体をプログラミングするのではなく、IPコア(Intellectual Property Core)のみをプログラミングします。このIPコアは、周囲のFPGAデザインに組み込まれます(embedded)。

FPGA上での画像処理アプリケーションのグラフィカルプログラミング

図 186. FPGA上での画像処理アプリケーションのグラフィカルプログラミング


VisualAppletsはグラフィカルな環境であるため、画像処理パイプラインのロジックでIPコアを満たすためにHDLの知識は必要ありません。また、VisualAppletsは実装フロー全体も処理します。VisualAppletsを使用すると、ソフトウェアエンジニアや画像処理のエキスパートがハードウェア上のIPコアをプログラミングできるようになります。

VisualAppletsを使用してハードウェア上のFPGA用アプリケーションをプログラミングする前に、IPコアをFPGAデザインに統合し、ハードウェアプラットフォームのすべてのハードウェア固有の詳細をVisualAppletsに提供するeVA(embedded VisualApplets)プラグインを生成する必要があります。

統合ワークフロー

VisualApplets(VA)IPコアを統合するのは1回だけです。VA IPコア:VisualAppletsを介して画像処理機能でプログラミングできる、FPGA内のIPコア。統合後は、何度でも、また必要な数のマシンビジョンアプリケーションを使用して、VA IPコアを再プログラミングできます。

ハードウェアおよびソフトウェア統合の主要なステップは、ツールであるeVA Designer(VisualApplets Embedderパッケージの一部として提供されます)によって自動的に実行されます。これにより、ワークフローが迅速化され、正しい設計(correct by construction)による実装が実現します。

わずか数ステップでVisualAppletsをハードウェアデザインに統合できます。

  • VisualAppletsをインストールします。

  • eVA Designerを使用して、VHDLでIPコアのブラックボックスを生成します。直感的なGUIにより、将来のVA IPコアの詳細の指定がサポートされます。

    • ハードウェアに関するいくつかのデータ(ハードウェア名、FPGAタイプ、ベンダー名など)を入力します。

    • VA IPコアに持たせたいポート(画像入力ポート、画像出力ポート、レジスタインターフェイス、メモリインターフェイス、GPI、GPO)を指定します。

    • 入力に基づいて、eVA Designerに空のVA IPコア(VHDLブラックボックス)を自動的に生成させます。

  • 生成されたIP coreのブラックボックスをFPGAデザイン(VHDL)に統合します。

  • ブラックボックスが統合されたFPGAデザインのネットリストを生成します。

  • 制約ファイルを作成します。

  • ネットリストと制約ファイルをeVA Designerに渡し、VisualApplets用のハードウェアプラットフォーム固有のeVA Plugin Installerを生成させます。

  • eVA Plugin Installerを実行します。インストール後、ハードウェアプラットフォーム固有のeVA PluginがVisualAppletsで利用可能になり、FPGA上のVA IPコアのデザインを開発できるようになります。

これらのステップを進めた後、グラフィカル開発環境のVisualAppletsを使用して、FPGA上のVA IPコアをプログラミングできます。これらのステップの詳細な手順については、「IPコアプロパティの定義(Defining the IP Core Properties)」を参照してください。

新しいハードウェアプラットフォームに対する1回限りの実装プロセス:

新しいハードウェアプラットフォームに対する1回限りの統合プロセス

図 187. 新しいハードウェアプラットフォームに対する1回限りの統合プロセス


ビットストリーム生成のためのビルディングブロックとしてのFPGAデザインとIPコアのコンテンツ

図 188. ビットストリーム生成のためのビルディングブロックとしてのFPGAデザインとIPコアのコンテンツ


VisualApplets の概要

VA IPコアをFPGA設計に組み込むことで、ソフトウェアエンジニアや画像処理の専門家が、ハードウェア上でVA IPコアをプログラミングできるようになります。

VisualApplets FPGAベースの画像処理用の画像処理プログラム(アプレット)を設計するために使用されます。 VisualApplets 簡単です。グラフィカル開発環境で行います。ハードウェア記述言語の知識は一切必要ありません。 VisualApplets画像処理ソリューションは、HDLを使用せずにフローチャートの形で開発されます。

デザインはこんな感じですVisualApplets :

VisualApplets 画像処理設計のプログラムウィンドウ

図189。 VisualApplets 画像処理設計のプログラムウィンドウ


上の図のような設計は、後ほど(ビットストリームに合成された後)、ハードウェア上のVA IPコアに組み込まれます。

VisualApplets 200種類以上の演算子を提供します。各演算子は、画像処理チェーンで使用できる特定の機能を提供します。

一部のオペレータは、周囲のFPGA環境に直接接続する必要があります。それらは以下のとおりです。

  1. カメラ/センサーから画像を受信するオペレーター

  2. 処理パイプラインの最後に処理済み画像を出力するオペレータ(例:処理済み画像をDMAに出力するオペレータ)

  3. RAMリソースを使用するバッファリング演算子

  4. 信号の入出力を可能にするオペレータ(GPIO)

インターフェースを必要とする演算子を使用した、シンプルな画像取得アプレットの例

図190.インターフェースを必要とする演算子を用いたシンプルな画像取得アプレットの例


これらのオペレータと周囲のFPGA設計との間のデータ通信のために、VA IPコアは適切なインターフェースを提供する必要がある。

IPコアインターフェースのコンセプト

VA IPコアのインターフェースポートは、非常に柔軟に設定できます。VA IPコアのI/Oは、IPコアと(周囲の)FPGA設計との間の、柔軟で使いやすい多数のインターフェースで構成されています。外部ハードウェアリソース(センサーインターフェース、メモリコントローラなど)は、下図に示すように、FPGA設計内のグルーロジックによって接続されます。

VA IPコアインターフェースの概念

図191. VA IPコアインターフェースの概念


先入れ先出しバッファ(FIFO)を使用するインターフェースは緑色で表示されます。

インターフェースには以下の種類があります。

  • クロック: IPコアは、位相同期された2つの設計クロックで動作し、2番目のクロックの周波数は1番目のクロックの2倍です。

  • ImgIn:画像データの入力ストリーミング用インターフェース。画像データは、シンプルなFIFOインターフェースを介してIPコアに入力され、行末フラグとフレーム末フラグによってフレーム境界が示されます。ImgInポートの数、およびこれらのポートを介して通信されるデータのレイアウトは設定可能です。

  • ImgOut:画像データの出力ストリーミング用インターフェース。画像データは、シンプルなFIFOインターフェースを介してIPコアから出力されます。このインターフェースでは、行末フラグとフレーム末フラグによってフレーム境界が示されます。ImgOutポートの数、およびこれらのポートを介して通信されるデータのレイアウトは設定可能です。

  • MemWr/Rd:外部メモリ接続用インターフェースIPコアは、抽象化されたメモリインターフェースを介して外部メモリに接続できます。このインターフェースでは、単一のインターフェース機構を介してあらゆる種類のメモリを接続できます。外部グルーロジックは、IPコアのメモリインターフェースプロトコルを、使用するメモリコントローラに合わせて調整する必要があります。使用可能なメモリインターフェースポートの数は設定可能です。各ポートについて、インターフェースプロパティ(アドレスとデータ幅など)を個別に定義できます。

  • GPI、GPO:汎用信号入出力 GPI/GPOを介して、信号はIPコアに出入りできます。これらの信号は、トリガーやプロセス制御に使用できます。GPIO信号の数は設定可能です。

  • スレーブIF: デザインパラメータへアクセスするためのレジスタスレーブインターフェース スレーブインターフェースは、デザインクロックに同期したアドレス、データ、および制御信号によって制御されるシンプルなレジスタインターフェースです。IPコア内に実装された画像処理パイプラインのResetやEnableの制御も、スレーブインターフェースを介して行われます。

パフォーマンスクラス

VisualApplets Embedderは12のパフォーマンスクラスをサポートしています。個々のパフォーマンスクラスは、最大のセンサー帯域幅、画像処理アプリケーションで使用可能な最大FPGAリソース、およびメモリインターフェースを定義するオプションによって定義されます。

パフォーマンスクラスを選択します。価格設定やライセンス手続きについては、「ライセンスモデル」のセクションを参照してください。特定のターゲットハードウェアが必要です。

XMLファイル(=ハードウェア記述ファイル)にデータを入力するには、「Defining the IP Core Properties」セクションで説明されているように、GUIツールのeVA Designerを使用する必要があります。各パフォーマンスクラスに対して1つのXMLテンプレートが用意されています。XMLテンプレートを使用して入力します

  • ハードウェアプラットフォームのハードウェア固有情報、

  • VA IPコアで必要なインターフェースの説明、

  • VA IPコア内からインターフェースに接続するハードウェア固有のVisualAppletsオペレーター。

[注] 利用可能なテンプレート

VisualAppletsのインストールには、2つのプラットフォーム記述例(XML)と、独自のハードウェアの詳細を最初から入力できる1つのテンプレートが付属しています。これらのXMLファイルはテスト目的のものです。これらを使用して、制限付きのeVAプラグインを生成できます。これらのプラグインで作成されたアプレットは実行時間が制限されます。XMLのプラットフォーム記述例とテンプレートは、ランタイムインストールの以下のフォルダにあります。

  • VisualApplets_<version_number>\Examples\EmbeddedVisualApplets\DemoTemplate

  • VisualApplets_<version_number>\Examples\EmbeddedVisualApplets\SVDK

  • VisualApplets_<version_number>\Examples\EmbeddedVisualApplets\ZC702

各パフォーマンスクラス用のベンダー固有の独自のXMLテンプレートは、Baslerから直接提供されます。

要件

VA IPコアをFPGAデザインに統合し、ハードウェアプラットフォームのすべてのハードウェア固有の詳細をVisualAppletsに提供するeVAプラグインを生成するには、以下のコンポーネントが必要です。

ハードウェアおよびオペレーティングシステム:

  • Microsoft Windows 7、Windows 8、またはWindows 10(64bit)オペレーティングシステムを実行するPC

  • PC Memory:最小 4 GByte、推奨:8 GByte 以上

  • 最小空きハードディスク容量: 500 MByte

  • FPGAが実装されたターゲットハードウェアプラットフォーム。VisualApplets 3.2のリリース時点では、シリーズ6以降のXilinx Inc.のFPGAがサポートされています(Zynq7000、Series 7 FPGA、Ultrascale、Ultrascale+、Zynq Ultrascale+を含みます)。

ソフトウェア:

  • VisualApplets 3.0(またはそれ以降)

  • VisualApplets 3ライセンス

  • VisualApplets 3 Embedderライセンス

  • ハードウェア記述を作成するためのXMLテンプレート(Basler提供)

画像処理アプリケーションを合成するためのサードパーティ製ソフトウェア:

  • SDK のサンプルをコンパイルするには、C++ コンパイラが必要です。

  • デザインから実際のビットストリームを生成するには、FPGAメーカーが提供するツールスイートが必要です。ツールフローは完全にVisualAppletsによって制御されます。インストールするだけで使用できます。実装したFPGAの種類に応じて(VisualApplets 3.0のリリース時点で)以下が必要になります

    1. Xilinx Vivado(無償のWebPACKエディションまたはDesign Suite)、または

    2. Xilinx ISE(無償のWebPACKエディションまたはDesign Suite)。

    詳細については、ハードウェアに実装されているFPGAのタイプのドキュメントを参照してください。