Operator Library: Memory
LineMemoryRandomRd(ラインメモリ・ランダム・リード)オペレータは、ランダムリードアクセスを備えた小さなメモリブロックです。データのランダムリードは、アドレスをポートRColA(リード・カラム・アドレス)に転送することで実行できます。オペレータはこれらのアドレスを使用して、指定された座標からラインデータを読み取ります。結果として得られる出力フレームの画像幅は、アドレス入力の画像幅になります。
オペレータのレイテンシについては、表 46「Library: Memory内のオペレータの個別レイテンシ」を参照してください。
LineMemoryRandomRdオペレータは、入力された画像ラインを保存し、ランダムリードアクセスを可能にします。ラインデータは、リンクIを介してオペレータに転送されます。
必要なMemoryサイズは、入力フレームの画像幅(Max. Img Width)によって定義されます。
このオペレータには、シングルバッファ実装とダブルバッファ実装の2つのバリアントがあります。最初の実装はRAMを節約しますが、書き込みと読み取りの時間的オーバーラップを許可しません。そのため、書き込み状態の間はアドレス入力リンクRColAおよびRRowAが停止します。後者の実装はRAMを2倍にし、入力リンクIで次のフレームを受け入れながら、最後のフレームをランダムリードすることを可能にします。
オペレータには2つの状態があります:
-
書き込み状態(Write State):リンクIのピクセルはバッファ内に線形に保存されます(つまり、ピクセルの座標がバッファ内のアドレスを形成します)。
-
読み取り状態(Read State):Memoryは、入力RColAで指定されたアドレスを使用して読み出されます。アドレスの数とアドレスリンクの画像幅によって、画像出力幅が定義されます。たとえば、アドレス入力に1ピクセルのみで構成されるラインが入力された場合、出力フレームの幅は1ピクセルのみで構成されます。入力ラインの他のピクセルは破棄されます。
画像データ入力とアドレス入力は互いに同期していません。異なる画像寸法を持つ場合があります。
入力リンクのタイミングに注意してください。アドレス入力は、バッファリングなしでデータリンク入力Iと同じオペレータからソースを取得してはなりません。これは、画像データをオペレータに書き込んでいる間は、現在のフレームを読み取るためのアドレスを受け入れることができないためです。フレームがバッファに完全に保存された場合にのみ、アドレスを受け入れることができます。多くのアプリケーションでは、アドレス用の画像を生成するためにオペレータ が使用されます。
タイミングを次の図に示します。

このオペレータは FPGA内蔵ブロックRAM Memoryを使用します。そのため、タイプ RAM のVisualApplets以外のフレームグラバリソースが使用されます。FPGA内蔵ブロックRAMには制限があります。フル解像度のフレームがFPGA内蔵ブロックRAMに収まらない場合があります。代わりにオペレータ FrameBufferRandomRead の使用を検討してください。
Operator Restrictions
-
空のフレームはサポートされていません。
-
ライン長が変動する画像はサポートされていません。
LineMemoryRandomRd シミュレーション
VisualAppletsシミュレーションを実行するには、画像ベースのシミュレーション(システム設定で を有効にする)と、ライン単位のシミュレーション(システム設定で を有効にする)の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 の受信アドレス画像の高さは同じである必要があります。一次元リンク上のラインシーケンスは二次元画像として処理されるため、このシミュレーションでは画像プロトコルは無視されます。
| Property | 値 |
|---|---|
| オペレータータイプ | M |
| 入力リンク | I、画像データ入力 RColA、I のピクセルの読み取り列アドレス |
| Output Link | O、データ入力 |
同期および非同期入力
- すべての入力は相互に非同期です。
| 実装 | |
|---|---|
| タイプ | static パラメータ |
| Default | SingleBuffer |
| 範囲 | {SingleBuffer, DoubleBuffer} |
|
このパラメータは、FrameMemoryRandomRd(上記参照)の実装を選択します。 |
|
LineMemoryRandomRd オペレータの使用方法は、次の例に示されています。
-
例 - Logic Analyzer: オシロスコープのような信号測定と解析を快適に行う方法。
-
'Functional Example for Specific Operators of Library Memory and Library Signal'
使用例 - オペレーターの使用方法のデモ




前へ

