オペレーター FrameBufferRandomRead (imaFlex)

Operator Library: Memory

このオペレーターは、バッファリングされたデータのランダムリードを容易にします。フレームデータはリンク I を介してオペレーターに転送されます。データのランダムリードは、アドレスをポート RColA(読み出し列アドレス)および RRowA(読み出し行アドレス)に転送することで実行できます。オペレーターはこれらのアドレスを使用して、指定された座標のフレームデータを読み出します。結果として得られる出力フレームは、アドレス入力の画像寸法を持ちます。RAM型の VisualApplets リソースが 1 つ必要です。詳細については、'Allocation of Device Resources'を確認してください。

FrameBufferRandomReadオペレーターは、画像ストリームをフレームグラバーの RAM(DRAM)にバッファリングします。RAM型の VisualApplets リソースが 1 つ必要です。RAM型の複数のリソースは、共有メモリの概念を使用して同じ物理 RAM を使用します。共有メモリの使用方法に関するドキュメントは、Application Note: Shared Memoryにあります。

オペレータには2つの状態があります:

  • Writeステート:入力画像がバッファに格納されます。このオペレーターは FIFO のように動作します。十分なメモリが利用可能な場合、複数の画像をバッファに格納できます。

  • Readステート:画像がメモリに完全に格納された後、入力 RColAおよび RRowAに指定されたアドレスを使用してメモリが読み出されます。アドレスの数とアドレスリンクの画像寸法によって、出力画像の幅と高さが定義されます。

画像データ入力とアドレス入力は互いに同期していません。異なる画像寸法を持つ場合があります。両方のアドレス入力 RColAおよび RRowAは O 同期である必要があります。

入力リンクのタイミングに注意してください:アドレス入力は、バッファリングなしでデータリンク入力 I と同じオペレーターから供給されてはなりません。これは、画像データをオペレーターに書き込んでいる間は、現在のフレームを読み出すためのアドレスを受け入れることができないためです。フレームがバッファに完全に格納されている場合にのみ、アドレスを受け入れることができます。多くの場合、オペレーター CreateBlankImageを使用して、アドレス用の画像を生成します。

このオペレーターは大規模な非 FPGA メモリを使用します。小さなフレームやラインのみを格納する必要がある場合は、オペレーター FrameMemoryRandomRdまたは LineMemoryRandomRdの使用を検討してください。

このオペレーターは、2 次元画像(Img Protocol = VALT_IMAGE2D)と 1 次元ラインシーケンス(Img Protocol = VALT_LINE1D)の両方を処理できます。2 次元モードでは、フルフレームが処理されます。つまり、読み出しはフルフレームが書き込まれた後にのみ開始できるということです。アドレスポート(RColAおよび RRowA)がフレームの終了を受信すると、そのフレームのメモリが再び利用可能になり、次の読み出しが次のフレームをアドレス指定します。1 次元モードではラインが処理されます。その結果、1 ラインが書き込まれ次第、読み出しを開始できます。アドレスポート RColA上のラインの終了によりラインのメモリが解放され、次の RColA値が次のラインをアドレス指定します。RRowAは 1 次元ラインモードでは使用されないため、任意の定数値(CONST)に設定する必要があります。

すべてのピンで、空のフレーム、空のライン、および可変のライン長が許可されます。

入力フレームの寸法が内部フレームの寸法を超える場合があります。その場合、オペレーターは、MaxFrameWidthおよび MaxFrameHeightによって定義された寸法に合わせて受信フレームを切り詰めます。

ポート I上の入力画像の最大寸法は、RAM 内で利用可能な実際のストレージよりも大きく定義できます。これにより、非常に幅広の画像と非常に高い画像を切り替える柔軟な使用が可能になります。パラメータ MaxFrameWidthおよび MaxFrameHeightは、ストレージ内の画像のサイズを定義します。その結果、これら 2 つのパラメータによって、利用可能なストレージを超える画像を定義してはなりません。

InfiniteSource によるオーバーフロー管理

InfiniteSourceモードでは、画像が失われたり破損したりする可能性があります。これは、RAM が一杯になり、それ以上のデータを受け入れることができないか、あるいは入力帯域幅が共有メモリインターフェイスに対して高すぎる場合に発生します。オペレーターがオーバーフロー状態に達するとすぐに、すべての受信データが破棄されます。これにより、エンティティ(2D モードの場合はフレーム、1D モードの場合はライン)の損失や破損につながります。破損した画像は、入力帯域幅が高すぎる場合にのみ発生します。これは、フィルレベルが完全なエンティティ単位でカウントされるためです。破損した画像は、画像の一部がすでに RAM に書き込まれている一方で、オーバーフローのために画像の一部が破棄された場合に発生します。その結果、破損した画像を読み出すと、未定義の出力データになります。RAM に再び十分なスペースができ、共有メモリインターフェイスによってデータが RAM に再び書き込めるようになるとすぐに、オペレーターはオーバーフローから回復し、入力データの破棄を停止します。Overflowパラメータは、オーバーフローが発生した時期を示します。OverflowClearModeパラメータを使用すると、オーバーフロー回復直後に Overflowをリセットするか、手動でオーバーフローをリセットするかを定義できます。Overflowおよび OverflowClearModeパラメータは、InfiniteSourceパラメータが ENABLEDに設定されている場合にのみ使用できます。

Operator Restrictions

  • 読み出しアドレスの妥当性チェックはありません。RColAが MaxFrameWidth以上である場合、または RRowAが MaxFrameHeight以上である場合(2D モードのみ)、オペレーターはメモリからランダムなダミー値を読み出します。

  • リンクプロパティの制限は、Max. Image Widthについては常に最大 2^24-1、Max. Image Heightについては 2^17-1 です。ただし、MaxFrameSizeModeが Autoに設定されている場合は、追加で次の制限が適用されます:

    • In 2D-mode, if MaxFrameSizeMode is set to Auto, then I.MaxImgWidth * I.MaxImgHeight <= 2^RamAddressWidth.

    • In 1D-mode, if MaxFrameSizeMode is set to Auto, then I.MaxImgWidth <= 2^RamAddressWidth.

  • すべての入力ポートの Parallelism は 1 です。

帯域幅の最適化

最適なパフォーマンスを得るには、使用されるデータビットの数が、モジュールパラメータ RamDataWidthで提供される数にできる限り一致している必要があります。オペレーターを通過する最大帯域幅は、ビット幅とカーネルサイズの積が内部 RAM ポート幅 RamDataWidthと等しいときに達成されます。内部ビット幅はカーネルの使用によって増加する可能性がありますが、完全なカーネルは引き続き単一のピクセルとしてアドレス指定されることに注意してください。

オペレーターが、利用可能な RAM の最大帯域幅を超える書き込みデータの大きなバーストを処理できるようにするには、WritePriorityパラメータを有効にします。これは、カメラ(InfiniteSource = ENABLED)などの無限データソースを使用する場合に推奨されます。WritePriorityパラメータが有効になっている場合、書き込みバーストが原因で RAM の利用可能な帯域幅を超過すると、読み出しが禁止されます。これにより、RAM への書き込みアクセスを一時的に頻繁に行うことができます。カメラが書き込みデータのバーストを配信する場合、そのバーストの後に書き込みデータのギャップが続くことが想定されます(そうでない場合、利用可能な RAM 帯域幅を超過します)。その後、そのギャップを使用して読み出し帯域幅を一時的に引き上げることができます。

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

I/O Property

Property 値
オペレータータイプ M
入力リンク I、画像データ入力
RColA、I におけるピクセルの読み出し列アドレス
RRowA、I におけるピクセルの読み出し行アドレス
Output Link O、画像データ出力

同期および非同期入力

  • 同期グループ:RColAおよび RRowA
  • 入力 I はグループに対して非同期です。

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

Link Parameter Input Link I 入力リンク RColA 入力リンク RRowA Output Link O
Bit Width [1, 64]1 auto2 auto3 as I
Arithmetic {unsigned, signed} unsigned unsigned as I
Parallelism 1 1 1 as I
Kernel Columns [1, Ram Data Width / Bit Width / Kernel Rows]4 1 1 as I
Kernel Rows [1, Ram Data Width / Bit Width / Kernel Columns]5 1 1 as I
Img Protocol VALT_LINE1D / VALT_IMAGE2D as I as I as I
Color Format any VAF_GRAY VAF_GRAY as I
Color Flavor any FL_NONE FL_NONE as I
Max. Img Width 2^24-16 any RColA と同様 RColA と同様
Max. Img Height 2^17-16 any RColA と同様 RColA と同様

1

入力 Bit Width の範囲は次のとおりです:

  • 符号なし入力の場合: [1, 64]

  • 符号付き入力の場合: [2, 64]

  • 符号なしカラー入力の場合: [3, 63]

  • 符号付きカラー入力の場合: [6, 63]。

入力 Bit Width は、ネイティブ RAM データ幅 RamDataWidth を超えてはなりません。

2

列アドレスの Bit Width は次のとおりです:

3

行アドレスの Bit Width は次のとおりです。

4

BitWidth * Columns * Rows <= RamDataWidth

5

BitWidth * Columns * Rows <= RamDataWidth

6

リンク Property の制限は、Max. Image Width が最大 2^24-1、Max. Image Height が最大 2^17-1 です。ただし、MaxFrameSizeMode が Auto に設定されている場合は、さらに次の制限が適用されます:

  • In 2D-mode, if MaxFrameSizeMode is set to Auto, then I.MaxImgWidth * I.MaxImgHeight <= 2^RamAddressWidth.

  • In 1D-mode, if MaxFrameSizeMode is set to Auto, then I.MaxImgWidth <= 2^RamAddressWidth.

パラメーター

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

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

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

このパラメータは、使用できるアドレスビット数を提供します。利用可能な RAM スロットの数は 2^RamAddressWidth によって定義されます。現在の RamAddressWidth は、ハードウェアプラットフォームだけでなく、デザイン内のメモリ演算子(つまり、RAM 型のリソースを使用する演算子)の現在の数にも依存します。

MaxFrameSizeMode
タイプ 動的書き込みパラメータ
Default Auto
範囲 {Auto, Custom}

このパラメータは、パラメータ MaxFrameWidth および MaxFrameHeight が入力 I で最大画像寸法に自動的に追従するか(mode=Auto)、またはこれらのパラメータを手動で調整できるか(mode=Custom)を定義します。Custom モードでは、アプリケーションに合わせてカスタマイズされ、入力リンクの制限よりもはるかに小さくできる最大フレーム寸法を設定できます。これにより、より多くのフレームを RAM に保存できます。Auto モードでは、Max.Img Width および Max.Img Height のリンク Property (I の)が、利用可能なメモリの空きスロット数(2^RamAddressWidth)を超える最大画像を定義してはなりません。入力リンク Max.Img Width および Max.Img Height のリンク Property (I の)が利用可能なメモリ空間よりも大きい最大画像を定義していて、Custom モードである場合、入力リンク上の最大画像がより小さく定義されるまで、MaxFrameSizeMode パラメータを編集することはできません。このパラメータは、アクリジションの実行中は書き込むことができません。1D モードでは、MaxFrameHeight および入力 I の Max.Img Height は 1 とみなすことができます。

MaxFrameWidth
タイプ 動的書き込みパラメータ
Default 1024
範囲 [1, Iにおける最大画像幅]

このパラメータは、現在の画像処理構成の最大画像幅を設定します。この制限を超える入力フレームのラインは、MaxFrameWidthに切り詰められます。この数値を最大画像幅より小さく減らすと、メモリ容量が節約され、より多くのフレームを保存できるようになります。このパラメータは、MaxFrameSizeModeがCustomに設定されている場合にのみ編集できます。MaxFrameHeightとMaxFrameWidthの積は、利用可能なメモリ・スロットの数(2^RamAddressWidth)を超えてはなりません。1Dモードでは、MaxFrameHeightは1とみなすことができます。アクティベーションの実行中は、このパラメータを編集できません。

MaxFrameHeight
タイプ 動的書き込みパラメータ
Default 1024
範囲 [1, Iにおける最大画像高]

このパラメータは、現在の画像処理構成の最大画像高を設定します。この高さ制限を超える入力フレームは、MaxFrameHeightに切り詰められます。この数値を最大画像高より小さく減らすと、メモリ容量が節約され、より多くのフレームを保存できるようになります。このパラメータは、MaxFrameSizeModeがCustomに設定され、かつImage ProtocolがVALT_IMAGE2Dに設定されている場合にのみ編集できます。1Dモードでは、MaxFrameHeightは1とみなすことができます。MaxFrameHeightとMaxFrameWidthの積は、利用可能なメモリ・スロットの数(2^RamAddressWidth)を超えてはなりません。アクティベーションの実行中は、このパラメータを編集できません。

FillLevel
タイプ 動的リードパラメータ
Default 0
範囲 [0%, 100%]

このパラメータは、DRAMのFillをパーセンテージで提供します。

MaxFrameCount
タイプ 動的リードパラメータ
Default 2^RamAddressWidth / (MaxFrameHeight * MaxFrameWidth)
範囲 [1, 2^RamAddressWidth]

このパラメータは、現在メモリに収まる最大フレーム数を提供します。メモリに収まる最大フレーム数は、パラメータRamAddressWidth、MaxFrameHeight、およびMaxFrameWidthによって異なります。

MaxFrameCount = 2^RamAddressWidth / (MaxFrameHeight * MaxFrameWidth)

このパラメータは、1Dモードでは無効です。

FrameCount
タイプ 動的リードパラメータ
Default 0
範囲 [0, MaxFrameCount]

このパラメータは、メモリ内の現在のフレーム数を提供します。

このパラメータは、1Dモードでは無効です。

InfiniteSource
タイプ static write parameter
Default DISABLED
範囲 {ENABLED, DISABLED}

このオペレータは、カメラ・オペレータのすぐ後ろに挿入できます。この場合、InfiniteSourceパラメータをENABLEDに設定する必要があります。これにより、オペレータはアクティブなオーバーフロー管理を実行し、オペレータがオーバーフローから正常に復旧できるようにします。オーバーフローは、オペレータの後ろにあるデータ・シンクが転送を停止または一時停止し、バッファのFillレベルが最大に達したとき、または入力帯域幅が高すぎて書き込みデータを外部RAMに転送できないときに発生します。InfiniteSourceがDISABLEDに設定されている場合、バッファのFillレベルまたは入力帯域幅が高くなりすぎると、先行するオペレータによるデータの転送を停止するインヒビット信号が生成されます。

書き込みの優先順位付けは、InfiniteSourceで使用されるすべてのオペレータに推奨されます。したがって、InfiniteSourceパラメータがENABLEDに設定されている場合は、WritePriorityパラメータをENABLEDに設定することが推奨されます。

詳細については、「Infinite Sources / Connecting Cameras」を参照してください。

WritePriority
タイプ static write parameter
Default DISABLED
範囲 {ENABLED, DISABLED}

' Shared Memory Concept 'コンセプトでは通常、接続されているすべてのメモリ事業者(すなわち、タイプRAMのリソースを使用するすべての事業者)の間で帯域幅が均等に分配されます。WritePriorityパラメータがDISABLEDに設定されている場合、FrameBufferRandomReadオペレータは読み込みと書き込みに同じ優先度を割り当てます。WritePriorityをENABLEDに設定すると、FrameBufferRandomReadオペレータは読み込みよりも書き込みを優先しますが、これは一時的なメモリデータレートが利用可能な帯域幅よりも高い間のみです。書き込みの一時的な優先順位付けにより、読み込み処理が一時的に低速化します。その結果、FrameBufferRandomReadオペレータにおいて、平均帯域幅が利用可能な帯域幅を超過してはなりません。InfiniteSourceパラメータがENABLEDに設定されている状態で使用されるすべてのオペレータに対して、書き込みの優先順位付けが推奨されます。停止可能なソースで書き込みの優先順位付けを使用する場合は、書き込み帯域幅が高くなりすぎないようにしてください。そうしないと、バッファがいっぱいになるまでFrameBufferRandomReadオペレータからの読み込みが停止します。書き込みの優先順位付けは個別オペレータの設定であるため、デザイン内のメモリオペレータが増えるたびに、書き込み優先順位付けの効果は低下します。

Overflow
タイプ 動的リードパラメータ
Default 0
範囲 [0, 3]

このパラメータはバッファオーバーフローを示します。これは2ビットのビットマップであり、各ビットは異なるタイプのオーバーフローを示します。ビット0はFillレベルのオーバーフローを示し、ビット1は書き込み帯域幅のオーバーフローを示します。Overflowパラメータがオーバーフローを表示し続ける期間は、OverflowClearModeによって異なります。

Overflowパラメータは、InfiniteSourceパラメータがENABLEDに設定されている場合にのみ有効です。

OverflowClearMode
タイプ 動的書き込みパラメータ
Default AutoClear
範囲 {AutoClear, ManualClear, ClearAfterRead, ClearWithProcessReset}

OverflowClearModeは、オペレータがオーバーフローから回復したときに、Overflowパラメータをどのようにクリアするかを決定します。オペレータがすでにオーバーフロー状態から脱している場合にのみ、このパラメータを使用してオーバーフローステータスをリセットできます。

クリアモード:

  • AutoClear:オペレータがオーバーフローから回復すると、Overflowパラメータは自動的にリセットされます。

  • ManualClear:オペレータがオーバーフローから回復しても、OverflowClearModeパラメータにManualClearを書き込んで手動でリセットするまで、Overflowパラメータはオーバーフローを表示し続けます。このモードでは、プロセスのリセット(Acquisition Stopなど)を行ってもOverflowパラメータはクリアされません。つまり、Acquisition Stopの後もオーバーフローが表示され続けます。

  • ClearAfterRead:オペレータがオーバーフローから回復しても、Overflowパラメータが読み取られるか、プロセスのリセットが発生する(Acquisition Stopが行われるなど)まで、Overflowパラメータはオーバーフローを表示し続けます。

  • ClearWithProcessReset:オペレータがオーバーフローから回復しても、リセットが発生する(Acquisition Stopが行われるなど)まで、Overflowパラメータはオーバーフローを表示し続けます。

OverflowClearModeパラメータは、InfiniteSourceパラメータがENABLEDに設定されている場合にのみ有効です。