コンテンツにスキップ

パラメータ設定#

このトピックでは、VisualAppletsのデザインで設定できるパラメータの種類、VisualAppletsがどのようにlink propertiesとmodule parametersを区別しているか、link propertiesがパイプライン内をどのように伝播するか、そしてそれらの間の競合をどのように解決するかについて説明します。このトピックを読むことで、リンクに設定するプロパティとモジュールに設定するパラメータの違い、静的モジュールパラメータと動的モジュールパラメータの違い、およびデザインルールに違反せずに特定のカメラフォーマットにデザインを適応させる方法を理解できます。

主要用語

リンクは、2つのモジュール間の接続です。Link propertiesは、ピクセルあたりのビット数や最大画像サイズなど、その接続におけるデータフォーマットを記述します。これらはデザイン時にVisualAppletsでのみ設定します。Module parametersは、閾値やカメラフォーマットなど、モジュールにおける設定です。入力した値が反映されない場合、link propertiesがモジュールで受け入れられる範囲を制限していることがよくあります。

静的パラメータは、PC上の VisualApplets で(デザイン時に)のみ変更できます。動的パラメータは、ホストソフトウェアがフレームグラバー上のアプレットと通信するランタイム時にも変更できます。VisualApplets で動的パラメータに設定した値は、ランタイム時のデフォルトになります。VisualApplets でのシミュレーションはランタイムではありません。

VisualAppletsでは、2種類の設定を使用します:

リンクプロパティはリンク上で設定され、最大画像幅と最大画像高さ、Bit Width、Parallelism、画像プロトコル、Color Format、カーネルサイズなどを定義します。リンクプロパティは、リンクに接続されているオペレータを制限します。モジュールパラメータがリンクプロパティと競合する場合、VisualApplets は値を直接調整するか、エラーを報告します。リンクプロパティは常に静的であり、デザインフェーズ中の VisualApplets でのみ変更できます。リンクプロパティはパイプライン内を伝播し、オペレータによって変更されるまで、下流のすべてのオペレータに影響を与えます。

モジュールパラメータは、動作モード、画像の位置、関心領域(ROI)のサイズなどのオペレータの動作を定義します。これらは静的または動的にすることができます。静的パラメータはデザイン時にのみ変更します。動的パラメータは、ホストソフトウェアからランタイム時に変更することもできます。通常、静的パラメータは動的パラメータよりも少ない FPGA リソースを使用します。動的パラメータは、アプレットの実行中にカメラフォーマットや処理設定を切り替える必要がある場合に便利です。モジュールパラメータは、リンクプロパティによって制限されることがよくあります。値を設定できず、VisualApplets が自動修正する場合は、接続されているリンクのリンクプロパティを確認してください。また、多くのオペレータは出力側でもリンクプロパティを定義するため、デザインの一方での変更がもう一方に伝播する可能性があります。

Link Properties and Module Parameters of the CxpCamera オペレーター:

Link Properties と Module Properties

リンクの背後にある形式的なルールについては、ユーザーズマニュアルのRules of Linksを参照してください。VisualApplets GUI での編集ワークフローについては、ユーザーズマニュアルのParameterizationを参照してください。

モジュール間の各リンクは、そのリンクプロパティによって定義されます。すべてのリンクには同じ一連のプロパティがあります。リンクプロパティは常に静的であり、デザインフェーズ中の VisualApplets でのみ変更できます。リンクプロパティを開くには、リンクをダブルクリックするか、リンクを右クリックしてPropertiesを選択します。

画像データが接続上でどのように転送されるかは、次のリンクPropertyによって定義されます:

  • BitWidth:リンク上の1ピクセルあたりのビット数。カラーリンクの場合、Bit Widthにはすべてのカラーコンポーネントがまとめて含まれます。カメラオペレーターは多くの場合、初期のBit Widthを設定します。リンク ImageProtocol = VALT_SIGNALのリンクでは、Bit Widthは常に1ビットです。

    • 一部のオペレーターでは、出力の設定が可能です。 BitWidth リンク上で直接設定できます。例: CastBitWidth, CONST、または ModuloCount。その他は出力を導出します BitWidth 入力リンクの Property またはモジュールパラメータから自動的に取得されます。例えば、 ShiftLeft パラメータの値を追加します Shift 入力 Bit Width に追加し、 MULT 入力 Bit Width の合計を使用します。次のようなオペレーターは、 Coordinate_X および Coordinate_Y 出力の計算を行います BitWidth から MaxImageWidth および MaxImageHeightへ。出力が自動調整されるオペレーターの場合、 BitWidthでは、 オペレーターリファレンス 示しています auto で サポートされているリンクフォーマット テーブルであり、通常はリンク上の値を編集できません。オペレータが出力を変更すると BitWidth、VisualApplets は、別のオペレーターによって再び変更されるまで、新しい値を下流のリンクに伝播させます。
  • Arithmetic: リンクに使用する Arithmetic を定義します。Arithmetic には次を指定できます: Signed または Unsigned.

    • に設定した場合、 Signed、2の補数演算が使用されます。符号ビットは、設定された Bit Width に含まれます。
    • 画像プロトコル用 VALT_SIGNAL、Arithmeticは常に Unsigned、設定された Bit Width に関係なく。
  • Parallelism: 1つの Base Design Clock サイクル内で2つのモジュール間で並列転送されるピクセルの数。詳細については、 Parallelism チュートトリアルのトピック。

  • KernelColumns および KernelRows: フィルターオペレーターが必要とする、クロックサイクルあたりの隣接ピクセルの数。画像プロトコル用 VALT_SIGNALでは、両方の値が常に 1 になります。詳細については、 カーネルの操作 チュートトリアルのトピック。

  • ImageProtocol: リンク上のデータストリームの構造を定義します。以下の画像プロトコルを使用できます:

    • VALT_IMAGE2D: エリアスキャンカメラからの画像など、行末およびフレーム終了マーカーを持つ二次元画像。
    • VALT_LINE1D: ラインスキャンカメラからのデータなど、一次元ラインデータ。
    • VALT_PIXEL0D: 画像の次元情報を持たない連続したピクセルストリーム。
    • VALT_SIGNAL: トリガーロジックなど、すべてのクロックサイクルで有効な1ビット信号。

    画像プロトコルはデザイン内で変更できます。例えば、 SplitImage は、1D 画像ストリームを指定された高さの 2D 画像に分割できます。詳細については、 画像プロトコル、画像サイズ、データ構造 ユーザーズマニュアルを参照してください。

  • ColorFormat および ColorFlavor: これらの Property は、グレーや RGB など、ピクセルデータがどのように表現されるかを記述します。一部のオペレーターは特定の Color Format のみをサポートしています。プラットフォームによっては、CoaXPress カメラオペレーターはグレーフォーマットのみを受け入れます。カラー出力を生成するには、次のようなオペレーターを使用します: MergeComponents次のようなオペレーター: MergeComponents, ParallelUpおよび CastBitWidth は、カラー関連のリンク Propertyを変更できます。

  • MaxImageWidth および MaxImageHeight:リンクが伝送できる最大画像寸法。リンク上の画像はこれらの値を超えることはできませんが、より小さくすることは可能です。これらの Propertyは、次のようなラインまたは全画像をバッファリングするオペレーターに関連します: ImageFifo, LineBuffer、または ColMax。処理パス内の最大の画像以上の大きさに設定してください。値が小さすぎると、Design Rules Check (DRC) エラーの原因になります。値が大きいほど、より多くの FPGA リソースが消費されます。カメラオペレーターまたは次のようなオペレーター: SetDimension は、多くの場合、これらの Propertyを設定します。 MaxImageHeight は次の場合には効果がありません: ImageProtocol が次のように設定されている場合、自動的に無効になります: VALT_LINE1D, VALT_PIXEL0D、または VALT_SIGNAL.

情報

選択する最大画像寸法と Parallelism が高くなるほど、デザインが消費する FPGA リソースが多くなります。Basler では、アプリケーションに必要な最低限の値に設定することを推奨しています。

各オペレータは、許可する出力リンクプロパティと固定される値を定義します。上流のオペレータが編集を許可していないため、リンク上のいくつかのプロ-パティが無効になっている場合があります。Operator Referenceには、各オペレータで許可されているリンクフォーマットが記載されています。

リンク Propertyはオペレーターによって定義されます。オペレーターの出力リンク上で直接いくつかの Propertyを変更できます。その他は固定されているか、モジュールパラメータまたは入力リンク Propertyから派生します。リンク Propertyを変更すると、VisualApplets は後続のモジュールとリンクを通じて変更を伝播させます。

値を変更した後、プロパティダイアログのApplyをクリックします。変更が受け入れられると、デザインペイン内の影響を受けるリンクが緑色に変わります。緑色は、VisualApplets が更新されたリンクプロパティを伝播および検証したことを示します。デザイン全体に対する「すべて有効」を示す信号機のようなマークではありません。

VisualApplets デザインにおける緑色のリンク

リンクの Property は、オペレーターによって変更されるまでモジュール間を伝播します。下流のリンクで Property の編集が許可されていない場合は、上流のオペレーターまたはその Property を変更できる中間のオペレーターで設定を行います。例えば、 ImageBuffer オペレーターはリンクの Bit Widthを変更しません。カメラの出力リンクで Bit Widthを設定するか、Bit Widthを変更する次のようなオペレーターを挿入する必要があります: ConvertPixelFormat または ShiftLeft 。

リンクプロパティの変更は、モジュールパラメータと競合することもあります。その場合、VisualAppletsは該当するモジュールとパラメータを赤で表示します:

グリーンリンクとレッドモジュールを使用したデザイン

[Run]をクリックします デザインルールチェック レベル1 、DRCログを読み取ってエラーの場所を特定します。一般的な原因として、次を超える関心領域があげられます MaxImageWidth または MaxImageHeight、またはリンク Bit Widthで許可されている範囲外のパラメータ値:

リンクプロパティに起因するデザインエラー

モジュールパラメータ#

モジュールパラメータはオペレーターごとに異なります。これらはオペレーターによるデータ処理の方法を制御します。モジュールパラメータには、静的なものと動的なものがあります。静的パラメータは、デザイン時にVisualApplets内でのみ設定します。動的パラメータは、ホストソフトウェアからmicroDisplay X、Framegrabber SDK、またはpylonを介して実行時に変更することもできます。Module PropertiesダイアログのParameter Type列には、パラメータが静的か動的かが表示されます:

Module Properties:Parameter Type

パラメータを編集した後、Module PropertiesダイアログのApplyをクリックします。許容範囲外の値の場合、VisualAppletsはその新しい値を破棄します。一部のパラメータが無効になっており、編集できない場合があります。パラメータが有効かどうかは、他のパラメータの設定、または入力・出力リンクのフォーマットによって決まります。特定のおペレータのmodule parametersの詳細については、使用するオペレータのOperator Referenceを確認してください。

サンプルデザインでのリンクおよびモジュールパラメータの設定に関するチュートリアルについては、ユーザーマニュアルのハードウェアアプレット:アイデアからアプリケーションまでを参照してください。

寸法パラメータ#

次のような多くのオペレーター: LineBuffer, FrameBufferMultiRoiおよび SelectROIは、パラメータを通じて関心領域 (ROI) を定義します XLength, YLength, XOffsetおよび YOffset. 関心領域は、接続されているリンク上の最大画像寸法内に収まる必要があります。もし XLength + XOffset が超過した場合 MaxImageWidth、または YLength + YOffset が超過した場合 MaxImageHeight、DRCはエラーを報告し、パラメータが赤色でマークされます。

次のスクリーンショットでは、 SelectROI オペレータが次のパラメータを介してROIを定義しています。 XLength および YLength パラメータ:

SelectROI Operatorを使用したROIの選択

Infinite Sources と InfiniteSource パラメータ#

カメラモジュールなどのオペレーターは、フロー制御によって停止することはできません。これらは無限ソースとして動作し、無限ソースを受け入れるMタイプオペレーター、または無限ソースプロパティを下流に伝播するOタイプおよびPタイプオペレーターにのみ接続する必要があります。

バッファオペレータは、無限ストリームを制御可能で停止可能なストリームに変換します。バッファが停止不可能なソースからデータを受信する場合は、以下を設定してください。 InfiniteSource パラメータを ENABLED。入力がすでに停止可能なストリームである場合は、以下を設定してください。 InfiniteSource を DISABLED.

次の機能を使用したDesign Rules Check: InfiniteSource 次のように設定: DISABLED 無限ソースの後ろ:

InfiniteSourceをDISABLEDに設定したLineBuffer Operator

次の機能を使用したDesign Rules Check: InfiniteSource 次のように設定: ENABLED 無限ソースの後ろ:

InfiniteSourceをENABLEDに設定したLineBuffer Operator

無限ソースの詳細については、停止可能および停止不可能なデータストリームのチュートリアルトピックを参照してください。

Overflow オペレータ#

イメージ Overflow ライブラリ内の 同期化 ライブラリは、下流の処理がブロックされている間に停止不可能なソースが画像データを送り続けようとするオーバーフロー状況を処理します。ライブラリ自体はデータをバッファリングしません。バッファオペレーターと併用することをBaslerでは推奨しています。このオペレーターは arithmetic overflow ( ビット演算 チュートリアルトピック)や Overflow ステータスパラメーターを区別しました バッファオペレーターに関する(参照: Memory要素 (バッファがいっぱい。チュートリアルのトピックを参照)。

配置する場合 Overflow 無限ソースと、次のようなメモリオペレータの間に LineBuffer, 設定する InfiniteSource メモリ上のオペレータ DISABLEDが無効になります。 Overflow オペレータは、停止不可能なストリームからのオーバーフローをすでに処理します。有効化 InfiniteSource このトポロジのメモリ上のモジュールは不正であり、DRCエラーを引き起こします。

無限ソースでのOverflow Operatorの使用

DRCによるデザインの検証#

画像サイズ、Bit Width、または関心領域に影響を与えるリンクプロパティまたはモジュールパラメータを変更した後は、Analysis → Design Rules Check Level 1を実行してください。レベル1は、DRCログで形式エラーを報告し、影響を受けるモジュールとリンクをハイライトします。

Design Rules Check Level 2 は、拡張チェックを実行し、FPGAリソースを見積もります。ビルドする前に、レベル1のエラーをすべて修正してください。レベル2では、無限ソースの接続もチェックされます InfiniteSource 設定。

DRCログをハイライトされたモジュールおよびリンクとあわせて確認してください。完全なワークフローについては、チュートリアルトピックの空のデザインから実行可能なアプレットまでを参照してください。

デザインルールチェックの成功

モジュールパラメータとリンクプロパティは、独立した設定ではありません。これらは直接相互依存しており、互いの許容値範囲を制限し合います。入力および出力接続のリンクプロパティは、オペレーターが処理する必要があるデータフォーマットを定義します。モジュールパラメータは、そのフォーマット内でオペレーターがデータを処理する方法を定義します。リンクプロパティを変更すると、VisualAppletsはその変更を後続のモジュールとリンクに伝播させます。更新されたリンクプロパティにモジュールパラメータが適合しなくなった場合、VisualAppletsはそのモジュールまたはパラメータを赤色でマークします。逆の場合も同様です。モジュールパラメータが出力リンクプロパティを定義または変更できるため、変更前には有効だった値が、リンクの変更後に無効になることがあります。したがって、パラメータが有効か、無効か、または特定の範囲に制限されているかは、リンクプロパティ、他のモジュールパラメータ、あるいはその両方によって決まります。オペレーターごとに、これらの依存関係がOperator Referenceに記載されています。リンク変更の伝播動作と3つの可能な結果については、ユーザーマニュアルのオペレーターパラメータとリンクプロパティの伝播と依存関係を参照してください。

パラメータ値が反映されない場合や、リンク変更後にモジュールが赤色に変わった場合は、次の順序で競合を解決します:モジュールパラメータより先にリンクプロパティを確認します。リンクプロパティは、モジュールパラメータの許容値範囲を定義します。モジュールパラメータはその範囲内に収まる必要があります。多くのオペレーターは出力リンクプロパティの定義や変更も行うため、デザインの一方の側での変更が他方に影響を与える可能性があります。DRCログを読み取り、エラーメッセージをクリックして影響を受けるモジュールまたはリンクをハイライトし、許容されるリンクフォーマットとパラメータの依存関係についてOperator Referenceを参照してください。リンク上またはModule Propertiesダイアログでの赤色のハイライトは、シミュレーションやビルドの前に修正しなければならない形式エラーを示しています。

典型的な競合は、次のパラメータを設定しようとしたときに発生します。 Value オペレーターの CONST (例:500など)ですが、VisualAppletsによって入力値が自動的に修正されます。出力リンクの Bit Width は8ビットであるため、0から255までの値のみが許可されます。競合を解決するには、出力リンクのリンク Bit Width を大きくしてから、モジュールパラメータを再度設定します。

CONST: Bit Width Link Property と Value Module Parameter の依存関係

同様の依存関係は他のオペレーターでも発生します。 SelectBitFieldでは、 BitOffset パラメータの有効範囲は、入力および出力のリンク Bit Widthによって異なります。グレースケール画像の場合、 BitOffset は0から入力 BitWidth マイナス出力 BitWidth:

SelectBitField:Input および Output Link Bit Width と BitOffset モジュールパラメータの依存関係

対象 ModuloCount オペレーターの範囲内にする必要があります。 Divisor パラメータは出力リンク Bit Width によって1から2^nまでの値に制限されます(nは出力 Bit Width:

ModuloCount: 出力リンクの Bit Width と Divisor Module Parameter の依存関係

)。 XLength および YLength などの関心領域(ROI)パラメータは、 MaxImageWidth および MaxImageHeight 接続されたリンク上の内に収まる必要があります。競合には、Parallelism、Color Format、および画像プロトコルも含まれる場合があります。たとえば、 XLength は常にParallelismの倍数である必要があり、これは以下で示されます。 Module Properties ダイアログとして Step Size:

次元パラメータの依存関係

主要用語

パラメータを操作する際は、Baslerの次のプラクティスをお勧めします。

  • 閾値など、実行時の柔軟性が必要な場合は動的パラメータを使用します。ここでいう実行時とは、VisualAppletsでのシミュレーションではなく、ホストソフトウェアがフレームグラバー上のアプレットと通信することを指します。
  • リンクのPropertyまたはモジュールパラメータを変更した後は毎回、下流リンク上で伝播されたリンクのPropertyを確認してください。
  • 下流のソフトウェアに向けてビット幅の調整を計画します(例:DMAの前に12ビットのカメラデータを1ピクセルあたり16ビットに拡張するなど)。
  • 値を設定できない場合は、モジュールパラメータを変更する前に、接続されているリンクのリンクのPropertyを確認してください。
  • リンクとモジュール間の競合を早期に検出するために、定期的にDRCを実行してください。