Operator LineMemoryRandomRd

Operator Library: Memory

LineMemoryRandomRd(線內存隨機讀取)運算子是一個具備隨機讀取存取功能的微型內存塊。資料的隨機讀取可透過將位址傳輸至連接埠 RColA(讀取列位址)來執行。運算子將使用這些位址透過給定座標讀取線資料。產生的輸出影格將具有位址輸入的圖像寬度。

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

LineMemoryRandomRd 運算子用於儲存傳入的圖像行並支援隨機讀取存取。線資料會透過連結 I 傳輸至運算子中。

所需的內存大小由輸入影格的圖像寬度(Max. Img Width)來定義。

該運算子可實作為兩種變體,即單緩衝區實作與雙緩衝區實作。第一種實作可節省 RAM,但不允許寫入與讀取的時間重疊。因此,位址輸入連結 RColA 與 RRowA 在寫入狀態期間會停止。後一種實作將 RAM 加倍,並允許在接收輸入連結 I 上的下一影格的同時,對上一影格進行隨機讀取。

此運算子有兩種狀態:

  1. 寫入狀態:連結 I 的像素以線性方式儲存於緩衝區中,亦即像素的座標構成緩衝區中的位址。

  2. 讀取狀態:使用在輸入 RColA 處給定的位址讀出內存。位址數量與位址連結圖像寬度定義了圖像輸出寬度。例如,如果在位址輸入端輸入僅包含一個像素的行,則輸出影格寬度將僅包含一個像素。輸入行的其他像素將被丟棄。

圖像資料輸入與位址輸入彼此不同步。它們可能具有不同的圖像尺寸。

請注意輸入連結的時序。在未經緩衝的情況下,位址輸入不得由與資料連結輸入 I 相同的運算子提供來源。這是因為在將圖像資料寫入運算子的過程中,無法接受用於讀取目前影格的位址。唯有當影格完全儲存至緩衝區後,才能接受位址。在許多應用中,運算子 用於為位址產生圖像。

時序顯示於下圖中。

該運算子使用 FPGA 內部塊 RAM 內存。因此會使用類型為 RAM 的非 VisualApplets 擷取卡資源。FPGA 內部塊 RAM 是有限的。全解析度影格可能無法容納於 FPGA 內部塊 RAM 中。請考慮改用運算子 FrameBufferRandomRead。

算子限制

  • 不支援空白畫面。

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

LineMemoryRandomRd 模擬

執行 VisualApplets 模擬有兩種方式:基於圖像的模擬(在系統設定中:啟用 模擬資料流同步),以及逐行模擬(在系統設定中:啟用 逐行模擬 1D)。有關模擬的整體更多資訊,請參見 「模擬」。

  • 逐行模擬

    在逐行模擬中,行會被個別處理。輸出行的數量取決於兩個輸入連結 I 和 RColA 上的輸入行數量,以及輸入 I 的圖像協定。

    • I.Img Protocol = VALT_IMAGE2D:

      唯有當位址輸入 RColA 上有足夠的行來處理輸入 I 上的整個資料圖像時,才會處理輸入圖像。在此模擬中,會忽略位址輸入 RColA 上的圖像協定。如果沒有足夠的位址行可用,則不會處理對應的輸入圖像,且不會產生輸出圖像,以避免模擬中出現不完整的影格。此模擬行為與硬體中的實際 LineMemoryRandomRd 行為不同。如上圖所示,硬體中的運算子會逐行處理傳入的資料。因此,硬體中的任何傳入行都會儘快處理,而不管是否有足夠的位址行來處理整個輸入圖像。

    • I.Img Protocol = VALT_LINE1D:

      輸入 I 上的任何傳入資料行,只要對應的位址行在輸入 RColA 上可用,就會立即被處理。在此模擬中,會忽略位址輸入 RColA 上的圖像協定。

  • 基於圖像的模擬

    輸入 I 上的傳入資料圖像高度與輸入 RColA 上的傳入位址圖像高度必須相同。在此模擬中會忽略圖像協定,因為一維連結上的行序列會被當作二維圖像來處理。

I/O Properties

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

同步與非同步輸入

  • 所有輸入彼此皆為非同步。

支援的 Link 格式

Link Parameter Input Link I 輸入連結 RColA Output Link O
Bit Width [1, 64]1 自動2 as I
Arithmetic {unsigned, signed} unsigned as I
Parallelism 1 as I as I
Kernel Columns any 1 as I
Kernel Rows any 1 as I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} {VALT_IMAGE2D, VALT_LINE1D} as I
Color Format any VAF_GRAY as I
Color Flavor any FL_NONE as I
Max. Img Width any any 同 RColA
Max. Img Height any as I as I

1

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

2

列位址的 bit width 為:

參數

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

此參數用於選擇 FrameMemoryRandomRd 的實作方式(請參閱上述內容)。

使用範例

下列範例展示了 LineMemoryRandomRd 運算子的使用方式: