パラメータ設定

前節では、VisualAppletsプロジェクトのデータフローモデル、レイアウト、およびリンクのルールについて説明しました。本章では、デザイン内のモジュールとリンクのパラメータ設定の概要について説明します。

アプリケーションの挙動と帯域幅は、デザインで使用するオペレータだけでなく、モジュールとリンクのパラメータ設定にも強く依存します。モジュールのPropertyは各モジュールの挙動を定義し、リンクのPropertyはモジュール間のプロトコルを記述します。モジュールとリンクのPropertyは直接的にお互いに依存しており、利用可能性や範囲に相互に影響を与えます。

パラメータ設定の実践的なガイダンスについては、Parameterizationのチュートリアル トピックを参照してください。

Module Properties

モジュールのPropertyは、Module PropertiesダイアログまたはParameter Infoビューで変更できます。Parameter Infoビューには、アクティブなデザイン内のすべてのオペレータのすべてのパラメータが表示されるため、設定済みのすべてのパラメータを効率的に把握できます。Module Propertiesダイアログには、パラメータに関する詳細が表示されます。どちらのビューでもパラメータを編集できますが、メタデータの追加はModule Propertiesダイアログでのみ可能です。

Parameter Info View

Parameter Infoは、VisualAppletsのメインウィンドウの右上にあるInformation Panel内にあります。

Parameter Info View

図70:Parameter Infoビュー


起動時にParameter Infoが開かない場合は、メニューバーからWindow → Dock Windows → Parameter Infoを選択して開くことができます。

Parameter Infoビューには、アクティブなデザインのすべてのパラメータとそのオペレータが表示されます。パラメータの編集もParameter Infoビューで行うことができます。

パラメータ情報

図71:Parameter Info


Parameter Infoビューには検索機能が備わっており、パラメータ、パラメータ値、またはオペレータ名を検索できます。Runtime Parameter Onlyフィルターを使用すると、動的パラメータ(つまり、ランタイム中に編集できるパラメータ)のみを表示できます。

Module Properties Dialog

  1. Module Propertiesダイアログを開くには、モジュールをダブルクリックするか、モジュールを右クリックしてPropertiesを選択します。

Module Propertiesダイアログには、モジュールに必要なすべての設定がリスト表示されます。モジュールごとに利用可能なパラメータのセットは異なることに注意してください(モジュールの作成のためにインスタンス化されたオペレータによって異なります)。

次の図は、Module PropertiesダイアログにおけるImageBufferオペレータのパラメータを示しています。

Module Propertiesダイアログ

図72:Module Propertiesダイアログ


Module Propertiesウィンドウには、モジュールで使用可能なすべてのパラメータがリスト表示されます。この文脈では、各パラメータがモジュールのPropertyを表します。パラメータは次の列のエントリとともに表示されます。

  • Parameter Name:

    パラメータの名前。

    モジュールにパラメータを追加する場合(下記参照)、ここで新しいパラメータの名前を入力できます。

  • Parameter Value

    パラメータの実効値。

    このフィールドを編集して値を変更できます。

  • Parameter Unit

    パラメータの単位。pixel、seconds、linesなどを指定できます。

  • パラメータタイプ

    ここでは、パラメータを静的(static)または動的(dynamic)に設定できます。静的パラメータはアプレットのビルドプロセス後に変更できませんが、動的パラメータはアプレットがフレームグラバーハードウェア上で既に使用されている状態でも変更できます。多くの場合、静的パラメータは動的パラメータよりも少ないFPGAリソースしか必要としません。

  • パラメータフラグ

    パラメータのフラグは、パラメータの状態を示します。

    • 読み取り専用(Read)、または

    • 読み取り・書き込みアクセス(Write)。

  • 値のタイプ

    パラメータ値のタイプ。パラメータ値には4つの異なるタイプがあります。

    • String

      任意の文字列(ファイル名など)。

    • 値

      さまざまなタイプ(符号なし、符号付き、倍精度浮動小数点数)の値と範囲。

    • 列挙

      DisabledやEnabledなどの列挙値のリスト。

    • フィールドパラメータ

      フィールドパラメータは、値の配列、リスト、またはマトリックスで構成されます。主にカーネル係数、ルックアップテーブル、その他のリストに使用されます。値の範囲やリストのサイズは動的に変更できます。表示される Bit Width は実際のパラメータ範囲とは一致しないことに注意してください。さらに、カラムで符号付きの値として宣言されている場合でも、パラメータは常に符号なしになります。

[注] モジュール間の違い

特定モジュールで使用できるパラメータの数と種類は、モジュールによって異なります(基盤となるオペレータによって異なります)。ただし、各モジュールには Name と呼ばれるパラメータが少なくとも1つ存在します。

Parameterの編集

[Warning] 取り消しオプションなし

変更をキャンセルすることはできません。すべての変更が即座に適用されます。

パラメータを編集するには:

  1. パラメータ値をクリックし、新しい値を入力します。

    一部の値タイプには、特別な編集オプションがあります:

    String: 文字列パラメータは、新しい文字列を直接入力して編集できます。文字列パラメータの中には、ファイル名パラメータのものもあります。この場合、ファイル選択ダイアログが開きます。

    Values: 値を編集するには、パラメータ値の横にあるスピンボックスを使用して値を増減させます。パラメータのステップサイズによって、最小の増減量が定義されます。

    Fields: フィールドパラメータの場合、編集用の新しいウィンドウが開き、パラメータのすべてのフィールド要素が表示されます。次の図は、FIRoperatorNxM オペレータのフィールドを示しています:

    フィールドパラメータ編集ウィンドウ

    図 73:フィールドパラメータ編集ウィンドウ


    モジュールのフィールドパラメータ値を編集するには、主に3つの方法があります:

    1. 各フィールド要素を個別に編集できます。

    2. また、ファイルからリストを使用してフィールド パラメータの値を Fill することもできます。

      • Fileボタンをクリックしてファイルをインポートできます。

      • Exportボタンをクリックして、現在のフィールド パラメータの設定をファイルにエクスポートすることもできます。

      [注] インポート ファイルのファイル形式
      • インポート ファイルには、ASCII 値のリストが含まれている必要があります。

      • 各値は別々の行に記述する必要があります。

      • 行は、キャリッジ リターン (CR) とライン フィード (LF) で区切る必要があります。

      • ファイルはテキストのみの形式([NameOfFile].txt)である必要があります。

      ファイルに含まれる値がフィールド内の値よりも多い場合は、ファイルの最初の値が(フィールドを Fill するのに必要な数だけ)使用されます。ファイル内のそれ以降の値は無効になります。

      ファイルに含まれる値がフィールド内の値よりも少ない場合は、ファイル内のすべての値が正確に 1 回ずつ使用されます。フィールドの最後の位置(ファイルに値が存在しない位置)は変更されません。

    3. フィールドの要素を編集する 3 つ目の方法は、Parameter functionダイアログを使用することです。

      • Functionをクリックして、関数ダイアログを開きます(次の図を参照)。

        このダイアログを使用すると、1 次関数を使用して要素を編集できます。1 次関数は、a = 傾き、b = オフセット、x = フィールド要素のインデックスという要素で構成されます。ダイアログでは、a と b を編集できます。

      • a および b の値を入力します。

        フィールドの最初の要素のインデックスは 0 です。マトリックス要素の場合、要素には行ごとに連続した番号が付けられます。

      フィールド パラメータを編集するための関数ダイアログ

      図 74: フィールド パラメータを編集するための関数ダイアログ


[重要] 無効化されたパラメータ

一部のパラメータが無効になっており、編集できない場合があります。パラメータが無効か有効かは、他のパラメータの設定、入力フォーマット、または出力フォーマットによって異なります。詳細については、それぞれのオペレータ リファレンスを確認してください。次のスクリーンショットは、2 つの無効なパラメータを示しています。この場合、入力リンクに画像プロトコル VALT_LINE1D が指定されているため、y パラメータが無効になっています(つまり、画像が 1 次元(ピクセルのラインのみ)であり、したがって y 座標が存在しないことを意味します)。

無効化されたパラメータ

図 75: 無効なパラメータ


パラメータを編集した後は、それを適用する必要があります。

  1. Module propertiesウィンドウのApplyをクリックして、設定を適用します。

    新しいパラメータの値が許可されたパラメータ値の範囲内にない場合、その値は破棄されます。

[注] ウィンドウを閉じる前にApplyをクリックしてください

パラメータを閉じる前に Apply をクリックすることをお勧めします。これにより、入力した値が受け入れられない場合に警告が表示されます。

  1. Closeをクリックして、Module propertiesウィンドウを閉じます。

トランスレータおよびリファレンスオペレータの自動補完とシンタックスハイライト

Parametersライブラリのほとんどのオペレータには、特定のマラメータに対する自動補完およびシンタックスハイライト機能が備わっています。次のオペレータの次のパラメータで自動補完を利用できます。

オペレーター パラメーター Activation
EnumParamTranslator

WriteAction、 ReadAction

「${」を入力する

DisplayHierarchy

TABキー

FloatParamTranslator

WriteAction、 ReadAction

「${」を入力する

DisplayHierarchy

TABキー

IntParamTranslator

WriteAction、 ReadAction

「${」を入力する

DisplayHierarchy

TABキー

LinkParamTranslator

WriteAction

「${」を入力する

EnumParamReference

Reference

TABキー

DisplayHierarchy

TABキー

FloatFieldParamReference

Reference

TABキー

DisplayHierarchy

TABキー

FloatParamReference

Reference

TABキー

DisplayHierarchy

TABキー

IntFieldParamReference

Reference

TABキー

DisplayHierarchy

TABキー

IntParamReference

Reference

TABキー

DisplayHierarchy

TABキー

ResourceReference

Reference

TABキー

DisplayHierarchy

TABキー

StringParamReference

Reference

TABキー

DisplayHierarchy

TABキー

IntParamSelector

Reference

TABキー

DisplayHierarchy

TABキー

FloatParamSelector

Reference

TABキー

DisplayHierarchy

TABキー

EnumVariable

DisplayHierarchy

TABキー

FloatVariable

DisplayHierarchy

TABキー

IntVariable

DisplayHierarchy

TABキー

表 5. 自動補完とシンタックスハイライトの可用性


リファレンスオペレータで自動補完を使用するには、Parameter ValueフィールドのReferenceまたはDisplaHierarchyパラメータをクリックし、TABキーを押します。すると、VisualAppletsのドロップダウンリストボックスに有効な値の選択肢が表示されます。

リファレンスパラメータの自動補完

図 76. リファレンスパラメータの自動補完


3つのドットをクリックすると の隣にある Parameter Value フィールド、 Enter data for <operator>/<parameter> ダイアログが開きます。このダイアログでは、シンタックスハイライト付きのデータが表示され、自動補完機能をさらに活用できます。

Autocompletion in "Enter data for <operator>/<parameter> Dialog

Figure 77. Autocompletion in "Enter data for <operator>/<parameter> Dialog


Syntax Highlighting in "Enter data for <operator>/<parameter> Dialog

Figure 78. Syntax Highlighting in "Enter data for <operator>/<parameter> Dialog


シンタックスハイライトはModule Propertiesでも機能します:

Module Propertiesダイアログでのシンタックスハイライト

図 79. Module Propertiesダイアログでのシンタックスハイライト


To use the autocompletion functionality in the WriteAction and ReadAction parameters of translate operators, type “${” into the Parameter Value field:

トランスレータオペレータの自動補完

図 80. トランスレータオペレータのオートコンプリート


構文ハイライトは、トランスレータオペレータの WriteAction および ReadAction パラメータに対しても機能します。

トランスレータオペレータの DisplayHierarchy パラメータに対してオートコンプリートを使用するには、Parameter Value パラメータの DisplaHierarchy フィールドをクリックし、TAB キーを押します。

不正なParameter Valueのステータス

リンクプロパティまたは他のプロパティの設定によって、パラメータの許可される値の範囲が変更される場合があります。これが発生した場合、古いパラメータ値が無効な状態になることがあります。この場合、現在の設定がデザインルールチェックを通過しないことを示すために、パラメータが赤色でマークされます。パラメータ値が有効な範囲に入るまで修正する必要があります。

無効な状態のパラメータ

図 81. 無効な状態のパラメータ


前の図は、無効な状態にあるパラメータの例を示しています。この場合、XLength + XOffset が入力リンクのパラメータ化された最大画像幅よりも大きいため、パラメータ値許容範囲内に収まっていません。

メタデータ

各モジュールには、メタデータパラメータを追加できます。メタデータパラメータは文字列パラメータです。メタデータパラメータを追加するには、モジュールプロパティウィンドウの Add Metadata ボタンをクリックします。新しいパラメータがパラメータリストに追加されます。名前と値をクリックすると、両方を編集できます。メタデータパラメータは読み取り/書き込みパラメータです。メタデータパラメータを削除するには、パラメータを選択して Delete Metadata をクリックするだけです。

メタデータパラメータは、バージョニングやコメント付けによく使用されます。

メタデータパラメータ

図 82. メタデータパラメータ


Link Properties

モジュール間の各リンクは、そのリンクプロパティによって定義されます。リンクプロパティには、リンクをダブルクリックするか、右クリックして Properties を選択することでアクセスできます。

各リンクには、次のリンクプロパティがあります。

  • Bit Width

    1画素あたりのリンクの Bit Width を定義します。したがって、カラーリンクを使用する場合、Bit Width はすべてのカラープレーンを表します。image protocol VALT_SIGNAL の場合、Bit Width は常に 1 ビットです。 Bit Width と Arithmetic の処理に関する実践的なガイダンスについては、 Bit Arithmetic のチュートトピックを参照してください。

  • Arithmetic

    リンクの Arithmetic。符号付き(signed)または符号なし(unsigned)を指定できます。符号付きに設定した場合、2の補数表現による符号付き Arithmetic が使用されます。符号ビットは、プロパティ bit width で指定されたビットに含まれます。image protocol VALT_SIGNAL の場合、Arithmetic は常に unsigned に設定されます。

  • Parallelism

    1つのデザインクロックサイクル内で2つのモジュール間で並列転送されるピクセルの数を指定します。image protocol VALT_SIGNAL の場合、Parallelism は常に 1 に設定されます。Parallelism の詳細については、'Bandwidth of an Applet' を参照してください。

  • Kernel Columns

    カーネル列の数を定義します。image protocol VALT_SIGNAL の場合、カーネル列の数は常に 1 に設定されます。

  • Kernel Rows

    カーネル行の数を定義します。image protocol VALT_SIGNAL の場合、カーネル行の数は常に 1 に設定されます。 デザインでのカーネルの操作に関する実践的なガイダンスについては、 Working with Kernels のチュートリアルトピックを参照してください。

  • イメージプロトコル

    イメージプロトコルは、リンクで使用するデータ転送プロトコルを定義します。次のプロトコルを使用できます。

    • VALT_IMAGE2D: 二次元画像(エリアスキャンカメラなど)。

    • VALT_LINE1D: 一次元画像、つまり画像ハイトが制限されない画像(ラインスキャンカメラなど)。

    • VALT_PIXEL0D: 画像寸法の情報を持たない、シンプルなピクセルのストリーム。

    • VALT_SIGNAL: すべてのクロックサイクルで有効な 1 ビット信号。トリガーシステムなどの信号処理に使用されます。

    イメージプロトコルの詳細については、'Image Protocols, Image Dimensions and Data Structure' を参照してください。

  • Color Format

    Color Formatは、VAF_GRAY、VAF_COLOR、VAF_NONEのいずれかに設定できます。image protocolがVALT_SIGNALの場合、Color Formatは常にFL_GRAYに設定されます。

  • Color Flavor

    Color Formatのフレーバーを定義します。image protocolがVALT_SIGNALの場合、Color Flavorは常にFL_GRAYに設定されます。

  • Max. Image Width

    リンクの最大画像幅を定義します。リンク上で転送される画像はこの値を超えてはなりませんが、この値より小さくても構いません。Max. Image Widthは、Image ProtocolがVALT_PIXEL0DおよびVALT_SIGNALのリンクには影響しません。これらの画像プロトコルでは、Max. Image Widthは無視されます。詳細については、'Data Flow 'および'Image Protocols, Image Dimensions and Data Structure'を参照してください。

  • Max. Image Height

    リンクの最大画像高さを定義します。リンク上で転送される画像はこの値を超えてはなりませんが、この値より小さくても構いません。Max. Image Heightは、Image ProtocolがVALT_LINE1D、VALT_PIXEL0D、VALT_SIGNALのリンクには影響しません。これらの画像プロトコルでは、Max. Image Heightは無視されます。詳細については、'Data Flow 'および'Image Protocols, Image Dimensions and Data Structure'を参照してください。

[ヒント] GUI上の視覚化

対応するリンクプロパティを視覚化するために、VisualAppletsではプログラムウィンドウのツールバーに2つのGUIボタンが用意されています。

リンク情報の表示 ダイアグラム内のすべてのリンクのBit WidthとParallelismを表示します。

リンクスループットの表示 ダイアグラム内のすべてのリンクの最大ピクセルスループット(メガピクセル/秒)を表示します。

Properties Ranges and Disabled Properties

各モジュールは、出力におけるリンクプロパティの範囲を独自に定義します。変更できないプロパティもあれば、指定された範囲内でのみ変更できるプロパティ、任意に変更できるプロパティもあります。許可される出力リンクフォーマットの詳細な説明は、Operator Reference内の各オペレータのリファレンスに記載されています。

Parameterの編集

パラメータを編集するには、リンクプロパティウィンドウの「Value」列にあるパラメータをクリックするだけです。

リンクプロパティダイアログは3つの列で構成されています。

  • 値

    ここは編集用の列です。値をクリックして、この列でリンクプロパティの値を編集します。編集した値が許容されるパラメータ範囲またはステップサイズ内にない場合、編集した値は破棄されるか、挿入できません。フィールドのフォーカスを外すか、Enterキーを押して新しい値を確定します。

  • Source Port

    Value列に新しい値が入力されて確定された後、ソースオペレータは新しい値が受け入れられるかどうかを確認します。新しい値が受け入れられない場合、リンクプロパティの競合を示すために、パラメータとリンクが赤色になります。したがって、Source Port列のリンクプロパティが赤色になっている場合、ソースオペレータはその設定を許可していません。 この列の値は変更できません!

  • Destination Port

    Apply、Close、Window Close (X)をクリックするか、Escキーを押すと、リンクの新しい設定が適用されます。新しい設定がデスティネーションオペレータの入力ポートで受け入れられない場合、リンクおよびDestination Port列のパラメータが赤色になり、競合を示します。この列の値は変更できません!

リンクプロパティを変更すると、別のリンクプロパティやモジュールパラメータの値が変更される場合があります。変更の取り消しはできません。変更は即座に適用されます。

いくつかの例を見てみましょう。次の図は、ソースポートでの競合を示しています。この場合のソースオペレータ(CastParallelオペレータ)は、Bit Widthの関係で、出力での3のParallelismを受け入れません。出力のParallelismを4、2、または1に変更すると、競合が解消されます。

無効なSource Portのリンクプロパティ

図83: 無効なSource Portのリンクプロパティ


スクリーンショット図84「無効なDestination Portのリンクプロパティ」は、デスティネーションポートでの競合を示しています。この場合のデスティネーションオペレータ(DmaToPCオペレータ)は、このParallelismとBit Widthを持つRGB画像を受け入れません。Parallelismを4または5に減らすと、競合が解消されます。

無効な宛先ポートのLink Properties

図84: 無効なDestination Portのリンクプロパティ


Propagation and Dependencies of Operator Parameters and Link Properties

Link Propertiesはオペレーターによって定義されます。一部のLink Propertiesはオペレーターの出力リンクで直接変更できる一方、固定されているものやオペレーターのパラメータによって定義されるものもあります。さらに、ほとんどのオペレーターは入力側のLink Propertiesに加えて独自のLink Propertiesを定義します。これにより、複数のモジュールをまたぐLink Propertyの変更チェーンが発生する可能性があります。したがって、あるLink Propertyが変更された場合、後続のモジュールのパラメータやLink Propertiesも変更される可能性があります。

この伝播チェーンにより、以下の3つの結果が生じる可能性があります。

  • 変更がすべての後続モジュールおよびリンクで受け入れられました。VisualAppletsでは、変更されたすべてのリンクが緑色で表示され、ユーザーに変更されたLink Propertiesを通知します。

  • 一部のモジュールのリンクでリンクの変更が受け入れられませんでした。この場合、リンクのエラーを確認してください。許可されているリンクフォーマットについては、送信元または宛先オペレーターのマニュアルを参照してください。

  • 変更によりモジュールパラメータとの競合が発生しました。この場合、該当するモジュールパラメータとともにモジュールが赤色で表示されます。競合を解決するには、オペレーターリファレンスでリンクとパラメータの依存関係を確認してください。