運算子 LineMemory

Library: Memory 運算子

LineMemory 運算子是一個記憶體區塊,用於透過隨機寫入存取來儲存輸入的影像行。 寫入位址由輸入連結的欄位位址 ColA 指定。 因此,對於每個輸入像素值,都必須指定一個欄位位址。

當一行資料已完整寫入記憶體後,便會透過連結 O 讀取並輸出。 輸出影像的寬度由參數定義,且與輸入影像的寬度無關。 記憶體預先初始化為零值。

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

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

該運算子可實作兩種變體。 即單緩衝區實作與雙緩衝區實作。 第一種實作可節省 RAM,但無法讓寫入與讀取及時重疊。 因此,在讀取狀態期間,輸入鏈路 I 會被暫停。 後一種實作則將 RAM 容量加倍,並能在接受輸入鏈路 I 的下一行時, 同時輸出當前影像行。

此運算子有兩種狀態:

  1. 寫入狀態:Link I 的值會儲存於由 ColA 指定的位址處。 此操作僅在 Link WriteI 為 1 時執行。 若連結 WriteI 為零,則跳過當前像素。 可寫入有效位址範圍內的任何位址。 無需寫入每個記憶體單元。

  2. 讀取狀態:記憶體會依序讀出,並產生一行參數化寬度的資料。 透過參數 XOffset 和 XLength,可以定義讀取位址範圍,即 ROI。 讀取記憶體會將讀取位址的內容重設為零。 因此,若讀取的記憶體單元先前未曾被寫入,則會輸出零。

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

此運算子可用於鏡像處理或感測器校正。

操作員使用 FPGA 內建的區塊 RAM 或 UltraRAM 記憶體 (URAM 僅 適用於 imaFlex CXP-12 Quad 及imaFlex CXP-12 Penta 平台)。 因此,不會使用任何VisualApplets 中類型為RAM的幀擷取卡資源。 FPGA 內建的區塊 RAM 容量有限。全解析度的幀可能無法完全容納於 FPGA 內建的區塊 RAM 中。 請考慮使用運算子 FrameBufferRandomRead 。

Operator Restrictions

  • 不支援空影格。

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

I/O Properties

Property Value
Operator Type M
Input Links I,影像資料輸入
WriteI,寫入使能輸入
ColA,I 處像素的寫入欄位位址
Output Link O,資料輸出

Synchronous and Asynchronous Inputs

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

Supported Link Format

Link Parameter Input Link I 輸入連結 WriteI 輸入連結 ColA Output Link O
Bit Width [1, 64]1 1 auto2 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, 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 為:

Parameters

實作類型(imaFlex CXP-12 Quad 及imaFlex CXP-12 Penta 平台)
Type 靜態寫入參數
Default AUTO
Range (AUTO、BRAM、URAM)

參數 ImplementationType 會影響運算子的實作策略,也就是用於實作運算子的記憶體元件。

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

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

BRAM: 運算子使用 FPGA 的 Block RAM。

URAM: 運算子使用 FPGA 的 UltraRAM。

[注意] URAM 的可用性

ImplementationType參數,以及隨之而來的使用 URAM 的選項,僅適用於 imaFlex CXP-12 Quad 及imaFlex CXP-12 Penta 平台。

[注意] 一般建議使用 AUTO

通常,此參數應設定為 AUTO。在特殊情況下,也就是當 設計中某種 FPGA 資源不足時,您可以透過設定 BRAM 或 URAM 值,手動調整 FPGA 資源管理。

實作
Type 靜態參數
Default SingleBuffer
Range {SingleBuffer, DoubleBuffer}

此參數用於選取 LineMemory 的實作(參見上文)。

FrameWidth
Type 靜態參數
Default 1024
Range [0, 65536]

此參數用於設定輸出連結的圖片寬度(以像素為單位)。

XOffset
Type 動態/靜態讀寫參數
Default 0
Range [0, 幀寬 - X長度]

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

XLength
Type 動態/靜態讀寫參數
Default 1024
Range [1, 幀寬 - X 偏移量]

此參數定義 ROI 的寬度。

Examples of Use

以下範例展示了運算子 LineMemory 的用法: