オペレーター RamLUT (imaFlex)

Operator Library: Memory

このオペレーターは、通常DRAMであるFrame Grabber RAMをベースにした大規模なルックアップテーブル(LUT)を実装します。 RAMタイプのVisualAppletsリソースが1つ必要です('デバイスリソースの割り当て'を参照)。RAMタイプの複数のリソースは、共有メモリの概念により同じ物理RAMを使用します。共有メモリの使用方法に関するドキュメントは、 アプリケーションノート:共有メモリに記載されています。

オペレーター RamLUT は、出力上のカーネルをサポートします。

このオペレーターの一般的なユースケースは、色空間分類の問題です。

オペレーターは、2つの方法でLUTコンテンツのプログラミングを容易にします。 どちらの方法でも、LUTはシンセシスプロセスの後、ランタイム時にアプレットを使用する時点でプログラムする必要があります。

  1. LUTをプログラミングする1つ目の方法は、アドレス値パラメータ InitAddress および InitData を提供するレジスタインターフェイスです。 まず、パラメータ InitAddress を使用してアドレスを設定します。 次に、データムをパラメータ InitData に書き込みます。 データを書き込むと、オペレーターは実際にLUTに書き込みを行い、前の値を置き換えます。 カーネルを使用する場合、最後のカーネル要素への書き込みによって、オペレーターが実際に LUTに書き込みを行い、前の値を置き換えます。

  2. LUTをプログラミングする2つ目の方法は、コンテンツを含むファイルの使用です。 ファイルアクセスはレジスタアクセスよりも高速ですが、いくつか注意が必要です。ファイルはさまざまな形式にすることができます。 形式はパラメータ InitFileMode で定義する必要があります:

    • text_with_checks

      このモードでは、初期化ファイルはテキストファイルである必要があり、値の文字列は 空白、タブストップ、ラインフィード(LF)、またはキャリッジリターンラインフィード(CRLF)のいずれかで区切られます。 オペレーターはこれらのファイルのエラーをチェックし、ファイルを使用できない場合はエラーを報告します。

      各値はカーネル要素を表し、正しい範囲内の十進数である必要があります。

      次の図は、4x3カーネルのファイルを示しています。

    • text_raw

      このモードは text_with_checks モードに似ていますが、エラーチェックの数が少なくなっています。 このモードでは、各値を別々の行で指定する必要があります。 このモードでのファイルの読み込みは、text_with_checks モードに比べて高速です。 上記の例は、text_raw モードでは次のようになります:

    • binary

      binary モードはバイナリファイルを想定しており、LUT要素の各カーネルエントリに8バイトが使用されます。 カーネルエントリ値を64ビット未満で表現できる場合、未使用のビットは無視されます。 これは、値をLUTに書き込む最速の方法です。 上記の例は、binary モードでは次のようになります:

    3つのモードすべてにおいて、ファイル内のエントリ数がLUT要素の数を超えてはならず、値の数は KernelSizeの倍数である必要があります。 したがって、ファイルには最大で 2^InputBitWidth * KernelSize の値を含める必要があります。

    初期化ファイルに 2^InputBitWidth * KernelSize の値が含まれている場合、LUTメモリはアドレス 0 から 完全に上書きされます。 この場合、パラメータ InitAddress は変更されません。

    初期化ファイルに含まれるエントリが少ない場合は、部分初期化が実行されます。 その後、InitAddress パラメータで指定されたアドレスから初期化が行われます。 パラメータ InitAddress は、最後に書き込まれたLUTエントリの次の位置に自動的にインクリメントされます。 これにより、書き込まれたLUTエントリの数を監視できます。 ファイルに (2^InputBitWidth - InitAddress) * KernelSize を超える値が含まれている場合、 初期化はLUTの最後のエントリの書き込み後に停止し、InitAddress は 0 に設定されます。

    パラメータ InitFilename は、初期値を格納しているファイルを指定します。 最後に、パラメータ LoadInitFile に値 1 を書き込むと、 ファイルの読み取りが開始され、受け入れられた場合はハードウェアに値が書き込まれます。 パラメータ LoadInitFile に 0 を書き込んでも、値の読み込みは発生しません。 これは、アプレットの初期化プロセス中に初期ファイルをハードウェアに読み込みたくない場合に役立ちます。

    シミュレーション中、初期化ファイルの読み込みは実行時と同じ方法で行われます。 部分的な設定の場合やエラーが発生した場合は、シミュレーションログで出力を確認することが役立ちます (アクティブ化する必要がある場合があります 詳細を表示 で シミュレーション ダイアログ)。

DRAMテクノロジーは、ランダムアクセスに対して非常に低いパフォーマンスを示すことに注意してください。 DRAMへの連続したアクセスがそれぞれページミスを引き起こし、新しい行のアクティブ化を必要とする最悪のシナリオでは、 DRAMのスループットは最大パフォーマンスの90%の損失を被り、約10%の帯域幅使用率になります。

入力リンクは、動的なライン幅だけでなく、空のラインや空のフレームも処理できます。したがって、出力リンクも 同じ画像サイズを処理できます。

帯域幅の最適化

最適なパフォーマンスを得るには、使用するデータビット数が、モジュールパラメータのRamDataWidthで指定されている数にできる限り一致している必要があります。ビット幅とカーネルサイズの積が内部RAMポート幅のRamDataWidthと等しい場合、オペレーターを通過する最大帯域幅に到達します。

Available for Hardware Platform
imaFlex CXP-12 Penta
imaFlex CXP-12 Quad

I/O Property

Property 値
オペレータータイプ M
Input Link I、読み取りアドレス入力
Output Link O、画像データ出力

サポートされているリンクフォーマット

Link Parameter Input Link I Output Link O
Bit Width [1, RAMアドレス幅]1 [1, 64]2
Arithmetic unsigned as I
Parallelism 1 as I
Kernel Columns 1 [1, RAMデータ幅 / Bit Width]
Kernel Rows 1 [1, Ram Data Width / Bit Width / Kernel Columns]
Img Protocol {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} as I
Color Format VAF_GRAY as I
Color Flavor FL_NONE as I
Max. Img Width any as I
Max. Img Height any as I

1

許可される入力ビット幅は、フレーム grabberの物理メモリおよびRAMを共有するオペレーターの数によって異なります。 RamAddressWidthパラメータは、使用できる最大アドレスビットを提供します。 この数は、デザイン内のRAMベースのオペレーターの数に応じて変更される可能性があることに注意してください。

2

許可される出力ビット幅は、フレーム grabberの物理メモリによって異なります。 ビット幅は64ビットに制限されていますが、複数のカーネルコンポーネントを保存できます。 (ビット幅 * カーネルサイズ)の積は、パラメータのRamDataWidthに示されているネイティブRAMデータ幅を超えてはなりません。

パラメーター

RamDataWidth
タイプ static write parameter
Default N/A
範囲 整数

このパラメータは、RAMインターフェイスで使用できるデータビット数を提供します。これは、出力が提供できる最大ビット数です(カーネルが適切に使用されている場合)。

RamAddressWidth
タイプ static write parameter
Default N/A
範囲 整数

このパラメーターは、使用できるアドレスビットの数を提供します。

InitAddress
タイプ 動的書き込みパラメータ
Default 0
範囲 [0, 2^InputBitWidth-1]

このパラメーターは、InitDataパラメーターで定義されたデータのアドレスを定義します。 上記の記述を参照してください。

InitData
タイプ 動的書き込みパラメータ
Default 0
範囲 [0, 2^OutputBitWidth-1]

このパラメーターは、InitAddressパラメーターで定義されたアドレスに書き込まれるデータを定義します。 このパラメーターへの書き込みにより、ハードウェアへの実際の書き込みが開始されます。 上記の記述を参照してください。

InitFileLoadMode
タイプ 動的書き込みパラメータ
Default text_with_checks
範囲 {text_with_checks, text_raw, binary}

このパラメーターは、ルックアップテーブルにロードされるファイルのファイル形式とモードを定義します。 上記の記述を参照してください。

InitFileName
タイプ 動的書き込みパラメータ
Default InitRamLut.txt
範囲

このパラメーターは、初期化ファイルの名前を定義します。

LoadInitFile
タイプ 動的書き込みパラメータ
Default 0
範囲 [0, 1]

InitFileNameパラメーターで指定されたファイルをLUTにロードし始めるには、このパラメーターに値1を書き込みます。 上記の記述を参照してください。