運算子 FrameMemory

Library: Memory 運算子

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

將一幀影像寫入記憶體後,便會透過連結 O 讀取並輸出。 輸出影像的尺寸由參數定義,且與輸入影像的尺寸無關。 記憶體預先初始化為全零。

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

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

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

此運算子有兩種狀態:

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

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

這兩種狀態之間的切換是由輸入鏈路 I 上的幀結束信號觸發的。 請注意,輸出鏈路上的幀寬度和高度固定為由參數 XOffset、XLength、 YOffset 以及 YLength 所定義的大小,且與輸入鏈路的線寬和幀高度無關。

此運算子可用於鏡射或感測器校正。

此 operator 使用 FPGA 內部的區塊 RAM 記憶體。 因此,不會使用類型為 RAM 的 VisualApplets 取像卡資源。 FPGA 內部區塊 RAM 是有限的。完整解析度的訊框可能無法容納於 FPGA 內部區塊 RAM 中。 請考慮改用 operator FrameBufferRandomRead。

Operator Restrictions

  • 不支援空影格。

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

I/O Properties

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

Synchronous and Asynchronous Inputs

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

Supported Link Format

Link Parameter Input Link I 輸入連結 WriteI 輸入連結 ColA 輸入連結 RowA Output Link O
Bit Width [1, 64]1 1 auto2 auto3 as I
Arithmetic {unsigned, signed} 無號數 無號數 無號數 as I
Parallelism 1 as I as I as I as I
Kernel Columns any 1 1 1 as I
Kernel Rows any 1 1 1 as I
Img Protocol VALT_IMAGE2D as I as I as I as I
Color Format any VAF_GRAY VAF_GRAY VAF_GRAY as I
Color Flavor any FL_NONE FL_NONE FL_NONE as I
Max. Img Width any as I as I as I 參數 FrameWidth
Max. Img Height any as I as I as I 參數 FrameHeight

1

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

2

行位址的 bit width 為:

3

列位址的 bit width 為:

Parameters

ImplementationType
Type 靜態寫入參數
Default AUTO
Range (AUTO, BRAM, LUTRAM, URAM)

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

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

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

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

LUTRAM: 運算子使用 FPGA 的 LUT RAM。

URAM: 運算子使用 FPGA 的 UltraRAM。

[注意] URAM 的可用性

ImplementationType 參數以及使用 URAM 的選項僅在 imaFlex CXP-12 Quad 和 imaFlex CXP-12 Penta 平台上可用。

[注意] 一般建議使用 AUTO

通常此參數應設為 AUTO。在特殊情況下(例如設計中的某種 FPGA 資源短缺),您可以透過 BRAM、LUTRAM 或 URAM 值手動影響 FPGA 資源管理(URAM 僅適用於 imaFlex CXP-12 Quad 與 imaFlex CXP-12 Penta 平台)。

AUTO 僅在 BRAM 與 LUTRAM 之間進行選擇。

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

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

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

This parameter selects the image width of the output link in pixels.

FrameHeight
Type 靜態參數
Default 1024
Range [0, 65534]

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

XOffset
Type 動態/靜態讀寫參數
Default 0
Range [0, Max.Img Height - YLength]

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

XLength
Type 動態/靜態讀寫參數
Default 1024
Range [1, 最大影像寬度 - XOffset]

此參數定義 ROI 的寬度。

YOffset
Type 動態/靜態讀寫參數
Default 0
Range [0, Max.Img Height - YLength]

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

YLength
Type 動態/靜態讀寫參數
Default 1024
Range [1, Max.Img Height - YOffset]

此參數定義 ROI 的高度。

Examples of Use

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