Operator LineMemory

Operator Library: Memory

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

メモリへの 1 ラインの書き込みが完了すると、リンク O を使用して読み出され、出力されます。 出力イメージの幅はパラメータによって定義され、入力イメージの幅とは独立しています。 メモリはあらかじめゼロの値で初期化されます。

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

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

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

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

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

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

これら 2 つの状態間のトグルは、入力リンク I での行末(end-of-line)によってトリガーされます。 出力リンクでのライン幅は、パラメータ XOffset および XLength で定義されたサイズに固定され、入力リンクのライン幅とは独立していることに注意してください。

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

このオペレーターは、FPGA 内部ブロック RAM または UltraRAM memory(URAM は imaFlex CXP-12 Quad および imaFlex CXP-12 Penta プラットフォームでのみ利用可能です)を使用します。 したがって、タイプ RAM の VisualApplets フレームグラバーリソースは使用されません。 FPGA 内部ブロック RAM には制限があります。フル解像度のフレームが FPGA 内部ブロック RAM に収まらない場合があります。 代わりにオペレーター FrameBufferRandomRead の使用を検討してください。

Operator Restrictions

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

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

I/O Property

Property 値
オペレータータイプ M
入力リンク I、イメージデータ入力
WriteI、書き込みイネーブル入力
ColA、I でのピクセルの書き込み列アドレス
Output Link O, data output

同期および非同期入力

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

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

Link Parameter Input Link I 入力リンク WriteI 入力リンク ColA Output Link O
Bit Width [1, 64]1 1 auto2 as I
Arithmetic {unsigned, signed} unsigned unsigned as I
Parallelism 1 as I as I as I
Kernel Columns any 1 1 as I
Kernel Rows any 1 1 as I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} 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 any as I as I パラメータ FrameWidth
Max. Img Height any as I as I as I

1

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

2

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

パラメーター

ImplementationType(imaFlex CXP-12 Quad および imaFlex CXP-12 Penta プラットフォーム)
タイプ static write parameter
Default AUTO
範囲 (AUTO、BRAM、URAM)

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

以下の値から選択できます:

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

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

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

[注] URAM の可用性

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

[注] 通常は AUTO を使用

通常、このパラメータは AUTO に設定する必要があります。特別な場合、つまりデザイン内である種の FPGA リソースが不足している場合は、BRAM または URAM の値を使用して FPGA リソース管理を手動で調整できます。

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

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

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

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

XOffset
タイプ dynamic/static read/write parameter
Default 0
範囲 [0, FrameWidth - XLength]

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

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

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

使用例

オペレーター LineMemory の使用法を以下の例に示します: