運算子 LineMemory

Operator Library: Memory

LineMemory operator 是一個記憶體區塊,它使用隨機寫入存取來儲存輸入的影像行。 寫入位址由輸入 link 列位址 ColA 指定。 因此,對於每個輸入像素值,必須指定一個列位址。

在將行完整寫入記憶體之後,會使用 link O 進行讀取與輸出。 輸出影像寬度由參數定義,且與輸入影像寬度無關。 記憶體預先以零值初始化。

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

記憶體大小由參數 FrameWidth 定義。

此 operator 可以實作為兩種變體。 具體而言,即單緩衝區實作與雙緩衝區實作。 第一種實作可節省 RAM,但不允許寫入與讀取的時間重疊。 因此,輸入 link I 在讀取狀態期間會停止。 後者實作則將 RAM 加倍,並允許在輸入 link I 接收下一行的同時輸出影像行。

此運算子有兩種狀態:

  1. 寫入狀態:Link I 的值會儲存在 ColA 指定的位址中。 只有在 link WriteI 為 1 時才會執行此操作。 如果 link WriteI 為 0,則會略過目前像素。 可以寫入有效位址範圍內的任何位址。 不需要寫入每個記憶體儲存格。

  2. 讀取狀態:記憶體會依序讀出,並產生具有已參數化寬度的行。 透過使用參數 XOffset 和 XLength,可以定義讀取位址範圍,也就是 ROI。 讀取記憶體會將讀取位址的內容重設為零。 因此,如果讀取了先前未寫入的記憶體儲存格,將會輸出零。

這兩種狀態之間的切換是由輸入 link I 處的行結尾觸發。 請注意,輸出 link 處的行寬固定為參數 XOffset 和 XLength 所定義的大小, 且與輸入 link 的行寬無關。

此 operator 對於鏡射或感測器校正非常有用。

此 operator 使用 FPGA 內部的 block RAM 或 UltraRAM memory(URAM 僅適用於 imaFlex CXP-12 Quad 與 imaFlex CXP-12 Penta 平台)。 因此,不會使用任何 RAM 類型的 VisualApplets frame grabber 資源。 FPGA 內部的 block RAM 是有限的。完整解析度的畫面可能無法容納於 FPGA 內部的 block RAM 中。 請考慮改用 operator FrameBufferRandomRead。

算子限制

  • 不支援空白畫面。

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

I/O Properties

Property Value
Operator Type M
輸入連結 I,影像資料輸入
WriteI,寫入啟用輸入
ColA,I 處像素的寫入列位址
Output Link O, data output

同步與非同步輸入

  • 所有輸入彼此同步,亦即它們必須透過任意的 O 型 operator 網路,由同一個 M 型 operator 提供來源。

支援的 Link 格式

Link Parameter Input Link I 輸入 link WriteI 輸入 link ColA Output Link O
Bit Width [1, 64]1 1 自動2 as I
Arithmetic {unsigned, signed} unsigned unsigned 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, VALT_LINE1D} 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 as I as I 參數 FrameWidth
Max. Img Height any as I as I as I

1

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

2

欄位位址的 bit width 為:

參數

ImplementationType(imaFlex CXP-12 Quad 與 imaFlex CXP-12 Penta 平台)
Type 靜態寫入參數
Default AUTO
Range (AUTO, BRAM, URAM)

參數 ImplementationType 會影響運算子的實作策略, 即用於實作運算子的記憶體元素。

您可以選擇以下其中一個值:

AUTO: 根據所連接連結的參數化, 自動選擇最佳的實作策略。

BRAM: Operator 使用 FPGA 的 Block RAM。

URAM: 運算子使用 FPGA 的 UltraRAM。

[備註] URAM 的可用性

ImplementationType 參數以及使用 URAM 的選項僅適用於 imaFlex CXP-12 Quad 與 imaFlex CXP-12 Penta 平台。

[備註] 一般情況下請使用 AUTO

通常,此參數應設定為 AUTO。在特殊情況下,亦即當 設計中的某種 FPGA 資源短缺時,您可以手動使用 BRAM 或 URAM 值來影響 FPGA 資源管理。

實作
Type static parameter
Default SingleBuffer
Range {SingleBuffer, DoubleBuffer}

此參數會選擇 LineMemory 的實作方式(見上文)。

FrameWidth
Type static parameter
Default 1024
Range [0, 65536]

此參數以像素為單位選擇輸出 link 的影像寬度。

XOffset
Type dynamic/static read/write parameter
Default 0
Range [0, FrameWidth - XLength]

此參數定義 ROI 左上角的 x 座標。

XLength
Type dynamic/static read/write parameter
Default 1024
Range [1, FrameWidth - XOffset]

此參數定義 ROI 的寬度。

使用範例

operator LineMemory 的使用方式顯示於以下範例: