Operator Library: Memory
このオペレーターは、入力画像データをフレームグラバーRAM (DRAM)にバッファリングし、バッファリングされた各画像から複数の動的関心領域 (ROI) を読み出します。読み出すROIの座標は、追加の入力リンクを使用して定義されます。次の画像に、1つの入力フレームと4つのROIに対するオペレーターの動作の概要を示します。
タイプがRAMのVisualAppletsリソースが1つ必要です('デバイスリソースの割り当て'を参照)。タイプがRAMの複数のリソースは、'Shared Memory Concept'を使用して同じ物理RAMを使用します。共有メモリの使用方法に関するドキュメントは、Application Note: Shared Memoryに記載されています。
すべてのROIは、ROI 0、ROI 1、ROI 2、... ROI N-1に至るまで、個別の画像として順次読み出されます。Nは、1つの入力フレームに対して読み出すROIの数、つまり座標入力上の画像サイズです。最大入力フレーム寸法を超えない限り、すべての可能な矩形領域がサポートされます。つまり、単一ピクセル、単一ライン、単一列、矩形領域、またはフレーム全体をROIとして定義できます。
異なるROIが同じサイズである必要はありません。
各ROIを個別に定義できます。
ROI同士が重なり合っていてもかまいません。
ROI画像が空の場合、つまりピクセルが含まれていない場合、オペレーターはその出力に空の画像を提供します。空の画像にはピクセルが含まれません。
負のROI幅(XTopLeft > XBottomRight)またはROI高さ(YTopLeft > YBottomRight)も、出力上で空のROIになります。サポートされるROIの最大数は、XTopLeft入力リンク上の1画像あたりの最大ピクセル数(XTopLeft.MaxImageWidth * XTopLeft.MaxImageHeight)によって決定されます。
ROI座標は、ROI座標を含む画像として、4つの独立した座標入力リンク(XTopLeft、YTopLeft、XBottomRight、YBottomRight)で提供されます。これらの画像内の各ピクセルは、オペレーターによって有効なROI座標セットとして処理されます。したがって、ROI入力画像のサイズによって、出力ROIの数が定義されます。EoL(End of Lines)および可変のライン長を使用できますが、オペレーターのROI入力では有効なピクセルとEoF(End of Frames)のみが評価されるため、これらは無視されます。入力リンクIの各入力画像に対して、新しいROI座標画像セットが必要です。ROIは、左上のコーナーのX,Y座標と右下のコーナーのX,Y座標によって定義されます。
ROIのX座標は、そのParallelismによって定義される入力リンクIのXグランチュラリティを満たすように変換されることに注意してください。つまり、オペレーターFrameBufferMultiRoiDynは、Parallelismのグランチュラリティでしかラインをカットできません。XTopLeftのパラレルコンポーネントの最初のピクセルではないピクセル、またはXBottomRightのパラレルコンポーネントの最後のピクセルではないピクセルを指定した場合、座標は切り上げまたは切り捨てられ、結果のROIにはパラレルコンポーネントのすべてのピクセルが引き続き含まれます。
次のセクションでは、オペレーターの動作を説明する例について説明します。
この例では、入力リンクIでのParallelism = 4です。
したがって、XTopLeftはパラレルコンポーネントの最初のピクセル(0、4、8、12、...)に切り捨てられ、XBottomRightはパラレルコンポーネントの最後のピクセル(3、7、11、15、...)に切り上げられます。
たとえば、ROIのX座標が3および7の場合、ROIの最初の列は列番号3であり、最後の列は入力画像の列番号7です。オペレーターはXTopLeftを0に切り捨て、XBottomRightは7のままになります。したがって、幅は8になります。ROIの高さはParallelismに依存しないため、任意の有効な値にすることができます。
![]() |
数式: |
|---|---|
|
XTopLeft* = floor(XTopLeft / Parallelism) * Parallelism XBottomRight* = ceil((XBottomRight + 1) / Parallelism) * Parallelism - 1 |
![]() |
例: |
|---|---|
|
入力リンクIでのParallelismが4の場合:
|
4つのROI入力はすべて互いに同期しています。つまり、これらのリンク上の画像は同じサイズであり、同時に同期して提供される必要があります。これは、Oタイプモジュールの任意のネットワークを介して同じMタイプモジュールからソースが提供される場合に常に当てはまります。詳細については、'複数入力を備えたMタイプオペレーター'のセクションを参照してください。
ROI座標は、入力リンクIに対して非同期です。CreateBlankImageオペレーターを使用して、ROI座標を生成できます。
オペレーターは、対応する入力フレームが完全にバッファリングされると、つまり入力フレームのEoF(End of Frame)信号を受信し、ROI画像定義入力リンクXTopLeft、YTopLeft、XBottomRight、YBottomRightのそれぞれの最初のピクセルを受信するとすぐに、出力でROI画像を提供します。DRAMに十分なスペースがある場合、ROIの読み出し中に次の入力フレームをDRAMに書き込むことができます。RAMの帯域幅は書き込みと読み出しの間で共有されますが、読み出しは対応する入力フレームが書き込まれた後にのみ開始できます。入力リンク(つまりROI画像EoF(End of Frame)が受信される)上の各ROI画像定義の最後のピクセルによって定義される、入力フレームの最後のROIを読み取った後、現在のフレームは破棄され、次のROI画像が次の入力フレームを指定します。オペレーターのレイテンシに関する情報については、Table 46, 'Individual Latencies of the Operators in Library Memory'を参照してください。
このオペレーターは、DRAMへの画像データのバッファリング用に2つのモードをサポートしており、パラメータMaxFrameSizeModeを介して設定できます:
-
MaxFrameSizeMode = AUTOの場合、DRAMは最大画像ディメンション(I.MaxImgWidth * I.MaxImgHeight)のサイズを持つ画像をバッファリングします。
最大画像ディメンションより小さい画像は、変更されずにバッファリングされます。ただし、ROIの読み出しは、常に可能な限り最大の画像ディメンションを持つバッファリングされたフレーム上で実行されます。この場合、不足しているフレームピクセルはランダムデータでFillされ、以降の処理では未定義として扱われます。
-
MaxFrameSizeMode = CUSTOMの場合、バッファリングされる入力フレームの最大ディメンションは、MaxFrameWidthおよびMaxFrameHeightパラメータによって定義されます。実際の入力フレームの方が大きい場合でも、指定されたパラメータディメンションを超えるデータは破棄されます(オフセットのないROIと同様)。その場合、DRAMはフレームサイズ MaxFrameWidth * MaxFrameHeightのMemoryを予約します。
どちらの場合も、入力リンクのROI座標が入力画像内にあるかどうかのチェックは行われません。座標は最大入力フレームの任意のピクセルに設定できるためです。実際の画像データの外側にある場合、オペレータはランダムなダミー値を読み出しますが、ROIサイズは変更されません。
本オペレータは、すべての入力リンクにおいて、空のフレーム、空のライン、および変動するライン長をサポートします。
InfiniteSourceモードでは、画像が失われたり破損したりする可能性があります。これは、RAMがいっぱいでこれ以上のデータを受け入れることができないか、共有Memoryインターフェースに対して入力帯域幅が高すぎるために発生します。オペレータがオーバーフロー状態に達すると、すべての受信データが破棄されます。これにより、フレームの損失や破損が発生します。破損した画像は、入力帯域幅が高すぎる場合にのみ発生します。これは、フィルレベルが完全なエンティティ単位でカウントされるためです。画像の一部がすでにRAMに書き込まれている一方で、入力帯域幅が高すぎてRAMが書き込みデータを十分に高速に受け入れられないために画像の一部が破棄された場合に、破損した画像が発生します。その結果、破損した画像を読み取ると、未定義の出力データになります。RAMに再び十分な空き容量ができ、共有MemoryインターフェースによってRAMへのデータの書き込みが再び許可されるとすぐに、オペレータはオーバーフローから回復し、入力データの破棄を停止します。Overflowパラメータは、オーバーフローが発生したかどうかを示します。OverflowClearModeパラメータを使用すると、オーバーフローの回復直後にOverflowをリセットするか、手動でリセットするかを定義できます。OverflowおよびOverflowClearModeパラメータは、InfiniteSourceパラメータがENABLEDに設定されている場合にのみ使用できます。
-
入力リンクのParallelismは、2のべき乗である必要があります。
-
本オペレータは入力リンクI上の空のフレームをサポートしますが、そのフレームの出力ROIはランダムなダミー値でFillされます。
-
入力画像がDRAMに書き込まれるフレームよりも小さい場合、ROI座標が入力画像内にあるかどうかのチェックは行われません。この場合、オペレータはMemoryからランダムなダミー値を読み出します。
-
最大リンクPropertyは、オペレータの使用方法によって異なります。詳細については、以下のSupported Link Formatセクションを参照してください。
最適なパフォーマンスを得るには、使用するデータビット数がモジュールパラメータRamDataWidthで提供される数にできる限り一致している必要があります。ビット幅、カーネルサイズ、およびParallelismの積が内部RAMポート幅RamDataWidthと等しいとき、オペレータを通過する最大帯域幅に達します。なお、カーネルの使用によって内部ビット幅が増加する場合がありますが、完全なカーネルは引き続き単一のピクセルとしてアドレス指定されます。

RAMの利用可能な最大帯域幅を超える長時間の書き込みバーストをオペレータが処理できるようにするには、WritePriorityパラメータを有効にします。これは、カメラなどの無限データソース(InfiniteSource = ENABLED)で使用する場合に推奨されます。WritePriorityパラメータが有効な場合、書き込みバーストが原因でRAMの利用可能な帯域幅を超過すると、読み出しが禁止されます。これにより、RAMへの書き込みアクセスを一時的に増やすことができます。カメラが書き込みデータのバーストを送信する場合、そのバーストの後に書き込みデータのギャップ(空白期間)が続くことが想定されます(そうでない場合、利用可能なRAM帯域幅を超過します)。このギャップを利用して、読み出し帯域幅を一時的に引き上げることができます。
| Property | 値 |
|---|---|
| オペレータータイプ | M |
| 入力リンク | I、画像データ入力 XTopLeft、座標データ入力 YTopLeft、座標データ入力 XBottomRight、座標データ入力 YBottomRight、座標データ入力 |
| Output Link | O, data output |
同期および非同期入力
- 4つのROI座標入力であるXTopLeft、YTopLeft、XBottomRight、およびYBottomRightは互いに同期しています。
- ROI座標入力であるXTopLeft、YTopLeft、XBottomRight、およびYBottomRightは、入力リンクIに対して非同期です。
|
入力 Bit Width の範囲は次のとおりです:
入力 Bit Width は、ネイティブ RAM データ幅 RamDataWidth を超えてはなりません。 |
|
|
Bit Width、Parallelism、およびカーネルサイズの積は、ネイティブRAMデータ幅を超えてはなりません。 ![]()
|
|
|
X座標入力のBit Widthは以下のとおりです: ![]() |
|
|
Y座標入力のBit Widthは以下のとおりです: ![]() |
|
|
入力リンク I の最大画像幅および画像高さは、オペレーターの使用方法によって異なります:
|
| RamDataWidth | |
|---|---|
| タイプ | static write parameter |
| Default | N/A |
| 範囲 | 整数 |
|
このパラメータは、RAMで使用できる最大データ幅を提供します。 |
|
| 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 モードでは、アプリケーションに合わせてカスタマイズされ、入力リンクによって定義される制限よりも大幅に小さくできる最大画像寸法のínu設定が可能です。これにより、より多くのフレームをRAMに格納できます。Auto モードでは、I のリンクプロパティ(Max.Img Width および Max.Img Height)によって定義される最大画像が、メモリ内の利用可能なスロット数(2^RamAddressWidth)を超えてはなりません。I のリンクプロパティ Max.Img Width および Max.Img Height が利用可能なメモリ空間よりも大きい最大画像を定義しており、Custom モードである場合、入力リンク上の最大画像がより小さく定義されるまで、MaxFrameSizeMode パラメータを編集することはできません。画像取得の実行中は、このパラメータを書き込むことはできません。 |
|
| MaxFrameWidth | |
|---|---|
| タイプ | 動的書き込みパラメータ |
| Default | 1024 |
| 範囲 | [1, Iにおける最大画像幅] |
|
このパラメータは、現在の画像処理構成の最大画像幅を設定します。この制限を超える入力フレームのラインは、MaxFrameWidth に切り詰められます。この数値を最大画像幅より小さくすることで、メモリ容量を節約し、より多くのフレームを格納できるようになります。このパラメータは、MaxFrameSizeMode が Custom に設定されている場合にのみ編集できます。MaxFrameHeight と MaxFrameWidth の積は、利用可能なメモリバッファスロット 2^RamAddressWidth に入力Parallelismを掛けた値を超えてはなりません。画像取得の実行中は、このパラメータを編集することはできません。 |
|
| MaxFrameHeight | |
|---|---|
| タイプ | 動的書き込みパラメータ |
| Default | 1024 |
| 範囲 | [1, Iにおける最大画像高] |
|
このパラメータは、現在の画像処理構成の最大画像高さを設定します。この高さ制限を超える入力フレームは、MaxFrameHeight に切り詰められます。この数値を最大画像高さより小さくすることで、メモリ容量を節約し、より多くのフレームを格納できるようになります。このパラメータは、MaxFrameSizeMode が Custom に設定されている場合にのみ編集できます。MaxFrameHeight と MaxFrameWidth の積は、利用可能なメモリバッファスロット 2^RamAddressWidth に入力Parallelismを掛けた値を超えてはなりません。画像取得の実行中は、このパラメータを編集できません。 |
|
| FillLevel | |
|---|---|
| タイプ | 動的リードパラメータ |
| Default | 0 |
| 範囲 | [0%, 100%] |
|
このパラメータは、DRAMのFillをパーセンテージで提供します。 |
|
| MaxFrameCount | |
|---|---|
| タイプ | 動的リードパラメータ |
| Default | 2^RamAddressWidth / (MaxFrameHeight * (MaxFrameWidth / I.Parallelism)) |
| 範囲 | [1, 2^RamAddressWidth] |
|
このパラメータは、現在メモリに収まる最大フレーム数を提供します。メモリに収まる最大フレーム数は、パラメータ RamAddressWidth、MaxFrameHeight、I.Parallelism、および MaxFrameWidth によって異なります。 MaxFrameCount = 2^RamAddressWidth / (MaxFrameHeight * (MaxFrameWidth / I.Parallelism)) |
|
| FrameCount | |
|---|---|
| タイプ | 動的リードパラメータ |
| Default | 0 |
| 範囲 | [0, MaxFrameCount] |
|
このパラメータは、メモリ内の現在のフレーム数を提供します。 |
|
| 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 の場合、FrameBufferMultiRoiDyn オペレーターは読み取りと書き込みに同じ優先度を割り当てます。WritePriority を ENABLED に設定すると、FrameBufferMultiRoiDyn オペレーターは読み取りよりも書き込みを優先しますが、これは一時的なメモリデータレートが利用可能な帯域幅よりも高い間のみです。書き込みデータの一時的な優先順位付けにより、読み取りプロセスが一時的に低速化します。したがって、平均帯域幅が FrameBufferMultiRoiDyn オペレーターで使用可能な帯域幅を超えてはなりません。書き込みの優先順位付けは、InfiniteSource パラメータが ENABLED に設定されている状態で使用するすべてのオペレーターにおすすめします。停止可能なソースで書き込みの優先順位付けを使用する場合は、書き込み帯域幅が高止まりしないように注意してください。高止まりした場合、バッファがいっぱいになるまで FrameBufferMultiRoiDyn オペレーターからの読み取りが停止されます。書き込みの優先順位付けは個々のオペレーターに対する設定であるため、デザイン内のメモリオペレーターの数が増えるにつれて、書き込み優先順位付けの影響は小さくなります。 |
|
| Overflow | |
|---|---|
| タイプ | 動的リードパラメータ |
| Default | 0 |
| 範囲 | [0, 3] |
|
このパラメータはバッファオーバーフローを示します。これは2ビットのビットマップであり、各ビットは異なるタイプのオーバーフローを示します。ビット0はFillレベルのオーバーフローを示し、ビット1は書き込み帯域幅のオーバーフローを示します。Overflow の表示時間は、選択した OverflowClearMode によって異なります。 Overflow パラメータは、InfiniteSource パラメータが ENABLED に設定されている場合にのみ有効になります。 |
|
| OverflowClearMode | |
|---|---|
| タイプ | 動的書き込みパラメータ |
| Default | AutoClear |
| 範囲 | {AutoClear, ManualClear, ClearAfterRead, ClearWithProcessReset} |
|
OverflowClearModeは、オペレータがオーバーフローから回復したときに、Overflowパラメータをどのようにクリアするかを決定します。オペレータがすでにオーバーフロー状態から脱している場合にのみ、このパラメータを使用してオーバーフローステータスをリセットできます。 クリアモード:
OverflowClearMode パラメータは、InfiniteSource パラメータが ENABLED に設定されている場合にのみ有効になります。 |
|

![[注]](../common/images/admon/note.png)












前へ

