Operator LineMemoryRandomRd

Operator Library: Memory

LineMemoryRandomRd(ラインメモリ・ランダム・リード)オペレータは、ランダムリードアクセスを備えた小さなメモリブロックです。データのランダムリードは、アドレスをポートRColA(リード・カラム・アドレス)に転送することで実行できます。オペレータはこれらのアドレスを使用して、指定された座標からラインデータを読み取ります。結果として得られる出力フレームの画像幅は、アドレス入力の画像幅になります。

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

LineMemoryRandomRdオペレータは、入力された画像ラインを保存し、ランダムリードアクセスを可能にします。ラインデータは、リンクIを介してオペレータに転送されます。

必要なMemoryサイズは、入力フレームの画像幅(Max. Img Width)によって定義されます。

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

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

  1. 書き込み状態(Write State):リンクIのピクセルはバッファ内に線形に保存されます(つまり、ピクセルの座標がバッファ内のアドレスを形成します)。

  2. 読み取り状態(Read State):Memoryは、入力RColAで指定されたアドレスを使用して読み出されます。アドレスの数とアドレスリンクの画像幅によって、画像出力幅が定義されます。たとえば、アドレス入力に1ピクセルのみで構成されるラインが入力された場合、出力フレームの幅は1ピクセルのみで構成されます。入力ラインの他のピクセルは破棄されます。

画像データ入力とアドレス入力は互いに同期していません。異なる画像寸法を持つ場合があります。

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

タイミングを次の図に示します。

このオペレータは FPGA内蔵ブロックRAM Memoryを使用します。そのため、タイプ RAM のVisualApplets以外のフレームグラバリソースが使用されます。FPGA内蔵ブロックRAMには制限があります。フル解像度のフレームがFPGA内蔵ブロックRAMに収まらない場合があります。代わりにオペレータ FrameBufferRandomRead の使用を検討してください。

Operator Restrictions

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

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

LineMemoryRandomRd シミュレーション

VisualAppletsシミュレーションを実行するには、画像ベースのシミュレーション(システム設定で Simulate data flow synchronization を有効にする)と、ライン単位のシミュレーション(システム設定で Simulate 1D line by line を有効にする)の2つの方法があります。シミュレーション全般の詳細については、'Simulation'を参照してください。

  • ライン単位シミュレーション(Line-by-Line Simulation)

    ラインごとのシミュレーションでは、ラインは個別に処理されます。出力ラインの数は、両方の入力リンク I および RColA の入力ラインの数、および入力 I の画像プロトコルによって異なります。

    • I.Img Protocol = VALT_IMAGE2D:

      入力 I のデータ画像全体を処理するために十分なラインがアドレス入力 RColA 上に存在する場合にのみ、入力画像が処理されます。アドレス入力 RColA の画像プロトコルはこのシミュレーションでは無視されます。十分なアドレスラインが存在しない場合、シミュレーションでの不完全なフレームを防ぐため、対応する入力画像は処理されず、出力画像は生成されません。このシミュレーションの動作は、ハードウェアにおける実際の LineMemoryRandomRd の動作とは異なります。 上の画像に示されているように、ハードウェア内のオペレータは受信したデータをラインごとに処理します。その結果、ハードウェア内の受信ラインは、入力画像全体を処理するのに十分なアドレスラインが利用可能かどうかにかかわらず、可能な限り迅速に処理されます。

    • I.Img Protocol = VALT_LINE1D:

      入力 I の受信データラインは、対応する入力 RColA のアドレスラインが利用可能になり次第すぐに処理されます。アドレス入力 RColA の画像プロトコルはこのシミュレーションでは無視されます。

  • 画像ベースのシミュレーション

    入力 I の受信データ画像の高さと、入力 RColA の受信アドレス画像の高さは同じである必要があります。一次元リンク上のラインシーケンスは二次元画像として処理されるため、このシミュレーションでは画像プロトコルは無視されます。

I/O Property

Property 値
オペレータータイプ M
入力リンク I、画像データ入力
RColA、I のピクセルの読み取り列アドレス
Output Link O、データ入力

同期および非同期入力

  • すべての入力は相互に非同期です。

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

Link Parameter Input Link I 入力リンク RColA Output Link O
Bit Width [1, 64]1 auto2 as I
Arithmetic {unsigned, signed} unsigned as I
Parallelism 1 as I as I
Kernel Columns any 1 as I
Kernel Rows any 1 as I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} {VALT_IMAGE2D, VALT_LINE1D} as I
Color Format any VAF_GRAY as I
Color Flavor any FL_NONE as I
Max. Img Width any any RColA と同様
Max. Img Height any as I as I

1

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

2

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

パラメーター

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

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

使用例

LineMemoryRandomRd オペレータの使用方法は、次の例に示されています。