Operator FrameBufferRandomRead

Operator Library: Memory

此運算子有助於隨機讀取緩衝的資料。畫面資料會透過連結 I 傳輸至運算子中。透過將位址傳輸至連接埠 RColA (讀取欄位址) 與 RRowA (讀取列位址),即可執行資料的隨機讀取。運算子將使用這些位址,依給定的座標讀取畫面資料。產生的輸出畫面將具備位址輸入的影像尺寸。需要一個類型為 RAM 的 VisualApplets 資源。請參閱「配置裝置資源」以取得詳細資訊。關於運算子的延遲資訊,請參閱表 46「Memory Library 中各運算子的個別延遲」。

FrameBufferRandomRead (畫格緩衝區隨機讀取) 運算子會在 Frame Grabber RAM (DRAM) 中緩衝影像串流。需要一個類型為 RAM 的 VisualApplets 資源。

此運算子有兩種狀態:

  1. 寫入狀態:輸入影像會儲存在緩衝區中。此運算子的運作方式類似 FIFO。如果有足夠的記憶體可用,多個影像可以儲存在緩衝區中。

  2. 讀取狀態:在影像完全儲存至記憶體之後,即會使用輸入端 RColA 與 RRowA 處給定的位址讀出記憶體。位址的數量與位址連結影像尺寸決定了影像輸出的寬度與高度。

影像資料輸入與位址輸入彼此非同步。它們可能具有不同的影像尺寸。兩個位址輸入 RColA 與 RRowA 都必須是 O 同步的。

請注意輸入連結的時序。在未進行緩衝的情況下,位址輸入不得由與資料連結輸入 I 相同的運算子提供來源。這是因為在將影像資料寫入運算子的同時,無法接受讀取目前畫面的位址。只有在畫面完全儲存至緩衝區後,才能接受位址。在許多情況下,會使用 CreateBlankImage 運算子來為位址產生影像。

此運算子使用大型非 FPGA 記憶體。如果只需要儲存小型畫面或行,請考慮使用 FrameMemoryRandomRd 或 LineMemoryRandomRd 運算子。

為了測量緩衝區的填滿程度,此運算子提供了 2 個參數:FillLevel 與 Overflow。FillLevel 顯示 RAM 的填滿百分比。當 FillLevel 接近或達到 100% 且下一個要儲存至緩衝區的影像將超出 RAM 容量時,Overflow 參數會設為 1。若發生溢位,輸入畫面將遭到捨棄。使用者必須輪詢溢位參數。由於溢位狀態的持續時間可能非常短,因此它可能會落在運算子的輪詢週期之間。

參數 InfiniteSource 用於指定運算子是直接連接至攝影機,還是與其他記憶體運算子串聯。請參閱「無限來源 / 連接攝影機」以取得詳細資訊。

算子限制

  • 不支援空白畫面。

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

  • 位址連接埠上的 Parallelism 必須設為 2。

  • I.MaxImgWidth * I.MaxImgHeight 不得超過可用的 RAM 大小:2^RamAddressWidth。

頻寬最佳化

通過使用 Frame Grabber RAM (DRAM) 之運算子的理論頻寬 [位元/秒],是根據下列公式計算:

然而,由於 DRAM 效率的關係,實際頻寬總是小於理論頻寬。

當 Bit Width 和 Parallelism 的乘積等於內部 RAM Port Width 時,即達到通過運算子的 maximum bandwidth。

[備註] 平台特定值

RAM Port Width 和 System Clock 是平台特定的。有關您個別平台的詳細資訊,請參閱 Device Resources。

I/O Properties

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

同步與非同步輸入

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

支援的 Link 格式

Link Parameter Input Link I 輸入連結 RColA 輸入連結 RRowA Output Link O
Bit Width [1, 64]1 自動2 自動3 as I
Arithmetic {unsigned, signed} unsigned unsigned as I
Parallelism 1 {1, 2}4 同 RColA as I
Kernel Columns [1, Ram Data Width / Bit Width / Kernel Rows]5 1 1 as I
Kernel Rows [1, Ram Data Width / Bit Width / Kernel Columns]5 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 any6 any 同 RColA 同 RColA
Max. Img Height any6 any 同 RColA 同 RColA

1

輸入 bit width 的範圍為:

  • 對於無符號輸入:[1, 64]

  • 對於有符號輸入:[2, 64]

  • 對於無符號彩色輸入:[3, 63]

  • 對於有符號彩色輸入:[6, 63]。

輸入 bit width 不得超過原生 RAM 資料寬度。如需詳細資訊,請檢查 Device Resources。

2

欄位位址的 bit width 為:

3

列位址的 bit width 為:

4

為了有效率地使用此 operator,必須將位址埠上的 Parallelism 設定為 2。

5

I.BitWidth x I.Kernel Columns x I.Kernel Rows <= RamDataWidth.

6

I.MaxImgWidth * I.MaxImgHeight 不得超過可用的 RAM 大小:2^RamAddressWidth。

參數

RamDataWidth
Type 靜態寫入參數
Default 不適用
Range 整數

此參數提供可用於 RAM 介面的資料位元數。這是輸入和輸出的最大位元數。

RamAddressWidth
Type 靜態寫入參數
Default 不適用
Range 整數

此參數提供可用的位址位元數。這有助於計算允許的最大影像尺寸和最大位址寬度。

FillLevel
Type 動態讀取參數
Default 0
Range [0%, 100%]

此參數提供 RAM 的 Fill。

Overflow
Type 動態讀取參數
Default 0
Range [0, 1]

此參數表示緩衝區溢位。

InfiniteSource
Type static parameter
Default ENABLED
Range {ENABLED, DISABLED}

此參數會啟用對無限來源 operator(例如 Camera operator)的支援。如需詳細資訊,請參閱 'Infinite Sources / Connecting Cameras'。

使用範例

以下範例顯示了 FrameBufferRandomRead operator 的使用方式: