運算子 FrameMemoryRandomRd

Library: Memory 運算子

FrameMemoryRandomRd(幀記憶體隨機讀取)運算子會將影像緩存於記憶體中,並支援隨機讀取存取。 幀資料是透過連結 I 傳輸至該運算子的。 可透過將位址傳輸至 RColA(讀取欄位位址)和 RRowA(讀取 行位址)埠,來執行資料的隨機讀取。 該運算子將利用這些位址,依據指定的座標讀取幀資料。 產出的幀將具有與位址輸入相同的影像尺寸。

所需的記憶體大小由輸入幀的影像尺寸(最大影像寬度與最大影像高度)所決定。

有關運算子延遲的資訊,請參閱 表 46「Library Memory 中各運算子的個別延遲」。

該運算子可透過兩種變體來實作。 即單緩衝區實作與雙緩衝區實作。 第一種實作方式可節省 RAM,但無法讓寫入與讀取及時重疊。 因此,在寫入狀態期間,位址輸入鏈路 RColA 和 RRowA 會被停用。 後者則將 RAM 容量加倍,並允許在透過 輸入鏈路 I 接收下一幀的同時,隨機讀取上一幀。

此運算子有兩種狀態:

  1. 寫入狀態: 連結 I 的像素以線性方式儲存於緩衝區中,也就是說,像素的座標即構成緩衝區中的位址。

  2. 讀取狀態:記憶體會根據輸入端 RColA 和 RRowA 所提供的位址進行讀取。 位址數量與位址連結影像的尺寸,共同決定了輸出影像的寬度和高度。 例如,若在位址輸入端輸入的幀僅包含一個像素, 則輸出幀也將僅包含一個像素。輸入幀中的其他像素將被捨棄。

影像資料輸入與位址輸入之間並非同步。 兩者的影像尺寸可能不同。 兩個位址輸入 RColA 和 RRowA 都必須為 O-同步。

請注意輸入連結的時序。 位址輸入絕不能由與資料連結輸入 I 相同的運算子直接讀取,且不得進行緩衝。 這是因為在將影像資料寫入運算子期間,無法接受用於讀取當前幀的位址。 只有當幀已完全儲存至緩衝區後,才能接受位址。 在許多情況下,該運算子 CreateBlankImage 通常用於為這些位址產生影像。

下圖展示了該時序的視覺化呈現。

該運算子使用 FPGA 的內部區塊 RAM 記憶體。 因此,並未使用任何VisualApplets 中類型為RAM的幀擷取器資源。 該 FPGA 內部區塊 RAM 容量有限。全解析度的影像幀可能無法完全存入 FPGA 內部區塊 RAM 中。 請考慮使用運算子 FrameBufferRandomRead 。

Operator Restrictions

  • 不支援空影格。

  • 不支援具有不同行長度的影像。

I/O Properties

Property Value
Operator Type M
Input Links I,影像資料輸入
RColA,I 處像素的讀取欄位址
RRowA,I 處像素的讀取列位址
Output Link O,資料輸入

Synchronous and Asynchronous Inputs

  • 同步群組:RColA 與 RRowA
  • 輸入 I 對於該群組而言是非同步的。

Supported Link Format

Link Parameter Input Link I 輸入鏈結 RColA 輸入鏈結 RRowA Output Link O
Bit Width [1, 64]1 auto2 auto3 as I
Arithmetic {unsigned, signed} 無號數 無號數 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 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 any 如 RColA 如 RColA
Max. Img Height any any 如 RColA 如 RColA

1

無號輸入的 Bit Width 範圍為 [1, 64]。 有號輸入的範圍為 [2, 64]。 無號彩色輸入的範圍為 [3, 63],有號彩色輸入的範圍為 [6, 63]。

2

行位址的 bit width 為:

3

列位址的 bit width 為:

Parameters

實施
Type 靜態參數
Default SingleBuffer
Range {單一緩衝區, 雙緩衝區}

This parameter selects the implementation of the FrameMemoryRandomRd (see above).

Examples of Use

以下範例展示了運算子 FrameMemoryRandomRd 的使用方式: