Library: Memory 運算子
此運算子可協助隨機讀取 緩衝區中的資料。幀資料是透過連結 I 傳輸至此運算子的。 透過將位址傳輸至RColA(讀取 欄位位址)和RRowA(讀取行位址)埠,即可執行資料的隨機讀取。運算子將利用這些位址 根據指定座標讀取幀資料。產出的幀資料將具有 與輸入位址相符的影像尺寸。此操作員需一個類型為 RAM的VisualApplets 資源。更多資訊請參閱「裝置資源的分配」。關於 此操作員的延遲資訊,請參閱表 46「庫記憶體中各操作員的個別延遲」。
FrameBufferRandomRead(幀緩衝區隨機 讀取)運算子會將影像流緩存至 幀擷取器 RAM(DRAM)中中緩衝圖像流。需具備一個 類型為RAM的VisualApplets 資源。
此運算子有兩種狀態:
-
寫入狀態:輸入影像儲存於緩衝區中。該運算子運作方式類似於 FIFO。若記憶體空間充足,則可將多張影像儲存於 緩衝區中。
-
讀取狀態:當影像完全儲存至記憶體後,將 根據輸入端 RColA 和 RRowA 所提供的位址讀取記憶體內容。位址數量 以及位址與影像尺寸的對應關係,共同決定了影像的輸出寬度與 高度。
影像資料輸入與位址輸入 彼此並非同步。兩者的影像尺寸可能不同。兩個位址 輸入 RColA 和 RRowA 都必須為 O-同步。
請注意輸入連結的時序。 位址輸入絕不能由與資料連結輸入 I 相同的運算子處理,且不得 進行緩衝。這是因為在將影像資料寫入運算子期間,無法接受任何 用於讀取當前幀的位址。只有當幀已完全儲存至 緩衝區後,才可接受位址。 在許多情況下,該運算子 CreateBlankImage 會被用來 為這些位址產生影像。
此運算子使用大型非 FPGA 記憶體。若 僅需儲存小型幀或行,請考慮使用下列運算子 FrameMemoryRandomRd 或 LineMemoryRandomRd。
為了測量緩衝區的填滿程度, 該運算子提供 2 個參數:FillLevel和 Overflow。FillLevel 顯示 RAM 的填滿百分比。當 FillLevel 接近或達到 100%,且 接下來要儲存至緩衝區的影像將超過 RAM 容量時,Overflow 參數會被設為 1。 若發生 溢出情況,輸入幀將被捨棄。使用者必須輪詢溢出參數。由於 溢出狀態的持續時間可能非常短暫,因此有可能發生在 操作員的輪詢週期之間。
參數 「InfiniteSource」用於指定該運算子是 直接連接至攝影機,還是與其他記憶體運算子依序串接。如需更多資訊,請參閱「無限來源/連接攝影機」。
Operator Restrictions
-
不支援空影格。
-
不支援具有不同行長度的影像。
-
位址埠的並行度必須設定為 2。
-
I.MaxImgWidth*I.MaxImgHeight不得超過 可用 RAM 大小:2^RamAddressWidth。
流經使用 Frame Grabber RAM (DRAM) 之 operator 的理論頻寬 [bits/second] 是根據下列公式計算:

然而,由於 DRAM 效率的關係,實際頻寬總是小於理論頻寬。
當 Bit Width 與 Parallelism 的乘積等於內部 RAM Port Width 時, 即可達到流經該 operator 的 最大頻寬。
![]() |
平台特定值 |
|---|---|
|
RAM Port Width 與 System Clock 因平台而異。如需關於您個人平台的詳細資訊,請參閱 Device Resources。 |
| Property | Value |
|---|---|
| Operator Type | M |
| Input Links | I,影像資料輸入 RColA,I 處像素的讀取欄位址 RRowA,I 處像素的讀取列位址 |
| Output Link | O,資料輸入 |
同步與非同步輸入
- 同步群組:RColA 與 RRowA
- 輸入 I 對於該群組而言是非同步的。
|
輸入 Bit Width 的範圍為:
輸入位元寬度不得超過原生 RAM 資料寬度。請檢查 裝置資源 以取得更多資訊。 |
|
|
行位址的 bit width 為: ![]() |
|
|
列位址的 bit width 為: ![]() |
|
|
地址埠的並行度必須設定為 2,才能 有效利用該運算子。 |
|
|
I.BitWidth x I.Kernel Columns x I.Kernel Rows <= RamDataWidth. |
|
|
I.MaxImgWidth*I.MaxImgHeight不得超過 可用 RAM 大小:2^RamAddressWidth。 |
| RamDataWidth | |
|---|---|
| Type | 靜態寫入參數 |
| Default | 不適用 |
| Range | 整數 |
|
此參數提供可用於 RAM 介面的資料位元數。這是用於輸入和輸出的最大位元數。 |
|
| RamAddressWidth | |
|---|---|
| Type | 靜態寫入參數 |
| Default | 不適用 |
| Range | 整數 |
|
此參數提供可用的位址位元數。這有助於計算最大允許的影像尺寸 以及最大位址寬度。 |
|
| FillLevel | |
|---|---|
| Type | 動態讀取參數 |
| Default | 0 |
| Range | [0%, 100%] |
|
此參數用於設定 RAM 的填滿程度。 |
|
| Overflow | |
|---|---|
| Type | 動態讀取參數 |
| Default | 0 |
| Range | [0, 1] |
|
此參數表示發生緩衝區溢位。 |
|
| InfiniteSource | |
|---|---|
| Type | 靜態參數 |
| Default | ENABLED |
| Range | {ENABLED, DISABLED} |
|
此參數啟用對無限來源 operator(例如 Camera operator)的支援。如需詳細資訊,請參閱 'Infinite Sources / Connecting Cameras'。 |
|
以下範例展示了 FrameBufferRandomRead 運算子的使用方式:
-
'Color Plane Separation Option 5 - Sequential Output with Advances Processing'
色彩平面分離範例。 RGB 輸入會分割為其組成元件,並透過一個 DMA 通道依序輸出。 分割是透過平行收集相同的組成元件並使用 FrameBufferRandomRead 進行讀取來執行的。
-
範例——使用 FrameBufferRandomRead
-
'Geometric Transformation and Distortion Correction'
範例 - 使用 PixelReplicator 進行幾何轉換與 Distortion Correction
-
範例 - Distortion Correction
-
範例 - Scaling Line Scan 影像
-
範例 - Scaling Line Scan 影像
-
範例 - ExposureFusion

![[注意]](../common/images/admon/note.png)








上一頁

