オペレーター FrameMemory

Operator Library: Memory

FrameMemory オペレーターは、ランダム書き込みアクセスを使用して入力画像を保存するメモリブロックです。 書き込みアドレスは、行アドレス RowA と列アドレス ColA の入力リンクで指定されます。 したがって、各入力ピクセル値に対して、行アドレスと列アドレスを指定する必要があります。

フレームがメモリに書き込まれた後、リンク O を使用して読み出され、出力されます。 出力画像のディメンションはパラメータによって定義され、入力画像のディメンションとは独立しています。 メモリはあらかじめゼロの値で初期化されています。

オペレーターのレイテンシについては、「表 46:Library Memory 内のオペレーターの個別のレイテンシ」を参照してください。

メモリサイズは、パラメータ FrameWidth および FrameHeight によって定義されます。

このオペレーターは、シングルバッファ実装とダブルバッファ実装の2つのバリアントで実装できます。 最初の実装は RAM を節約しますが、書き込みと読み出しの時間的オーバーラップを許可しません。 したがって、読み出し状態の間は入力リンク I が停止します。 後者の実装は RAM を倍増させ、入力リンク I で次のフレームを受け入れながらフレームを出力することを可能にします。

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

  1. 書き込み状態:リンク I の値は、ColA および RowA で指定されたアドレスに保存されます。 これは、リンク WriteI が 1 の場合にのみ実行されます。 リンク WriteI が 0 の場合、現在のピクセルはスキップされます。 有効なアドレス範囲内の任意のアドレスへの書き込みが可能です。 すべてのメモリセルに書き込む必要はありません。

  2. 読み出し状態:メモリは順次読み出され、パラメータ化された幅のラインを生成します。 パラメータ XOffset、XLength、YOffset、および YLength を使用して、読み出しアドレス範囲、つまり ROI を定義することができます。 メモリを読み出すと、読み出しアドレスの内容がゼロにリセットされます。 したがって、以前に書き込まれていないメモリセルが読み出された場合、ゼロが出力されます。

これら2つの状態間の切り替えは、入力リンク I でのフレーム終了によってトリガーされます。 出力リンクでのフレームの幅と高さは、パラメータ XOffset、XLength、YOffset、および YLength によって定義されたサイズに固定され、入力リンクのライン幅およびフレーム高さとは独立していることに注意してください。

このオペレーターは、ミラーリングやセンサー補正に役立ちます。

このオペレーターは、FPGA の内部ブロック RAM メモリを使用します。 したがって、RAM 型の VisualApplets フレームグラバーリソースは使用されません。 FPGA 内部のブロック RAMには制限があります。フル解像度のフレームが FPGA 内部のブロック RAM に収まらない場合があります。 代わりに FrameBufferRandomRead オペレーターの使用を検討してください。

Operator Restrictions

  • 空のフレームはサポートされていません。

    ライン長が変動する画像はサポートされていません。

I/O Property

Property 値
オペレータータイプ M
入力リンク I、画像データ入力
WriteI、書き込みイネーブル入力
ColA、I におけるピクセルの書き込み列アドレス
RowA、I におけるピクセルの書き込み行アドレス
Output Link O、データ入力

同期および非同期入力

  • すべての入力は互いに同期しています。つまり、O 型オペレーターの任意のネットワークを介して、同じ M 型オペレーターから供給される必要があります。

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

Link Parameter Input Link I 入力リンク WriteI 入力リンク ColA 入力リンク RowA Output Link O
Bit Width [1, 64]1 1 auto2 auto3 as I
Arithmetic {unsigned, signed} unsigned unsigned unsigned as I
Parallelism 1 as I as I as I as I
Kernel Columns any 1 1 1 as I
Kernel Rows any 1 1 1 as I
Img Protocol VALT_IMAGE2D as I as I as I as I
Color Format any VAF_GRAY VAF_GRAY VAF_GRAY as I
Color Flavor any FL_NONE FL_NONE FL_NONE as I
Max. Img Width any as I as I as I パラメータ FrameWidth
Max. Img Height any as I as I as I パラメータ FrameHeight

1

符号なし入力の場合、入力ビット幅の範囲は[1, 64]です。 符号付き入力の場合、範囲は[2, 64]です。 符号なしカラー入力の場合、範囲は[3, 63]であり、符号付きカラー入力の場合の範囲は[6, 63]です。

2

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

3

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

パラメーター

ImplementationType
タイプ static write parameter
Default AUTO
範囲 (AUTO、BRAM、LUTRAM、URAM)

パラメータ ImplementationType は、オペレーターの実装戦略、つまりオペレーターの実装にどのメモリ要素が使用されるかに影響を与えます。

You can select one of the following values:

AUTO: 接続されたリンクのパラメータ化に基づいて、最適な実装戦略が自動的に選択されます。

BRAM: オペレーターは FPGA のブロック RAM を使用します。

LUTRAM: オペレーターは FPGA の LUT RAM を使用します。

URAM: オペレーターは FPGA の UltraRAM を使用します。

[注] URAM の可用性

ImplementationType パラメータ、したがって URAM を使用するオプションは、imaFlex CXP-12 Quad および imaFlex CXP-12 Penta プラットフォームでのみ利用可能です。

[注] 通常は AUTO を使用

通常、パラメータは AUTO に設定する必要があります。特別な場合、つまりデザイン内で特定の種類の FPGA リソースが不足している場合は、BRAM、LUTRAM、または URAM の値を使用して FPGA リソース管理に手動で影響を与えることができます(URAM は imaFlex CXP-12 Quad および imaFlex CXP-12 Penta プラットフォームでのみ利用可能です)。

AUTOはBRAMとLUTRAMの間でのみ選択を行います。

実装
タイプ static パラメータ
Default SingleBuffer
範囲 {SingleBuffer, DoubleBuffer}

このパラメータは、FrameMemoryの実装を選択します(上記を参照)。

FrameWidth
タイプ static パラメータ
Default 1024
範囲 [0, 65534]

このパラメータは、出力リンクの画像幅をピクセル単位で選択します。

FrameHeight
タイプ static パラメータ
Default 1024
範囲 [0, 65534]

このパラメータは、出力リンクの画像高さをライン単位で選択します。

XOffset
タイプ dynamic/static read/write parameter
Default 0
範囲 [0, Max.Img Height - YLength]

このパラメータは、ROIの左上隅のY座標を定義します。

XLength
タイプ dynamic/static read/write parameter
Default 1024
範囲 [1, Max.Img Width - XOffset]

このパラメータはROIの幅を定義します。

YOffset
タイプ dynamic/static read/write parameter
Default 0
範囲 [0, Max.Img Height - YLength]

このパラメータは、ROIの左上隅のY座標を定義します。

YLength
タイプ dynamic/static read/write parameter
Default 1024
範囲 [1, Max.Img Height - YOffset]

This parameter defines the height of the ROI.

使用例

FrameMemoryオペレータの使用方法については、以下の例をご覧ください。