Library: Memory 運算子
此運算子可協助對 緩衝資料進行隨機讀取。幀資料是透過連結 I 傳輸至此運算子。 可透過將位址傳輸至埠 RColA(讀取欄位位址)和 RRowA(讀取行位址),來執行資料的 隨機讀取。 此運算子會利用 這些位址,依據指定的座標讀取幀資料。產生的輸出幀 其影像尺寸即為位址輸入所對應的尺寸。此處需一個類型為 RAM的VisualApplets 資源。如需更多資訊,請參閱「裝置資源的分配」。
該 FrameBufferRandomRead運算子會將影像串流 緩衝至幀擷取器 RAM(DRAM)中。需有一個類型為 RAM的VisualApplets 資源。多個類型為 RAM 的資源會依照共享記憶體的概念,共用同一塊實體 RAM。 有關如何使用共享記憶體的說明,請參閱《應用說明:共享記憶體》。
該運算子有兩種狀態:
-
寫入狀態:輸入影像儲存於緩衝區中。該 運算子運作方式類似 FIFO。若可用記憶體充足,則可 將多張影像儲存於緩衝區中。
-
讀取狀態:當影像已完全儲存至 記憶體後,系統會根據輸入端 RColA 和 RRowA 所提供的位址,從記憶體中讀取影像。 位址數量與位址對應的影像尺寸,共同決定了輸出 影像的寬度與高度。
影像資料輸入與位址輸入之間 並非同步。兩者的影像尺寸可能不同。兩個位址 輸入RColA和RRowA都必須 為 O-同步。
請注意輸入連結的時序:位址 輸入絕不能由與資料鏈結輸入 I 相同的運算子提供,且 不得進行緩衝。這是因為在將影像資料寫入運算子期間,無法接受任何 用於讀取當前幀的位址。只有當幀已完全儲存至 緩衝區後,才能接受位址。 在許多情況下,該運算子 CreateBlankImage 會被用來 為這些位址產生影像。
該運算子使用大型非 FPGA 記憶體。若 僅需儲存小型幀或行,請考慮使用以下運算子 FrameMemoryRandRd 或 LineMemoryRandomRd。
該運算子既可處理二維 影像(Img Protocol = VALT_IMAGE2D),亦可處理 一維線序列(Img Protocol = VALT_LINE1D)。在二維模式下,系統會處理完整的幀, 這意味著只有在寫入完整幀後,才能開始讀取。一旦 位址埠(RColA和 RRowA)接收到幀結束訊號,該幀的記憶體便 再次可用,而下一次讀取將指向下一幀。一維模式 則以行為單位進行處理。 因此,只要寫入一行,即可開始讀取。 當位址埠RColA接收到一行結束時, 該行的記憶體便會釋放,而下一個RColA值將指向 下一行。在單維線模式下, RRowA不會被使用,應設定為任何恆定值(CONST)。
所有引腳均允許出現空框、空行以及 行長不一的情況。
輸入幀的尺寸可能會超過 內部幀的尺寸。此時,該運算子會將輸入幀裁切為 由MaxFrameWidth和 MaxFrameHeight 所定義的尺寸。
輸入至 埠I的影像最大尺寸,可設定得比 RAM 中實際可用的儲存空間更大。這使得系統能靈活地在極寬 與極高的影像之間切換。參數MaxFrameWidth和 MaxFrameHeight用於定義儲存中的影像大小。 因此,這兩個參數所定義的影像尺寸, 不得超過可用的儲存空間。
在 InfiniteSource模式下,影像可能會遺失或出現 損壞。這種情況的發生,可能是因為 RAM 已滿而無法接收任何 進一步的資料;或是輸入頻寬對共享記憶體介面而言過高。一旦 操作者達到溢出狀態,所有傳入的資料都會被捨棄。 這將導致實體遺失或損毀(即 2D 模式下的幀或 1D 模式下的行)。影像損毀僅會在輸入頻寬過高時發生,因為 填滿程度是以完整實體為單位計算的。 當 影像的一部分已寫入 RAM,但另一部分因 溢出而被丟棄時,便會產生損壞的影像。因此,讀取損壞的影像將導致輸出資料未定義。 一旦 RAM 中再次有足夠空間,且共用記憶體介面 允許資料重新寫入 RAM 時,操作器便會從溢出狀態中恢復 並停止捨棄輸入資料。溢出 參數用以指示溢出發生之時點。透過 溢出清除模式 (OverflowClearMode) 參數,您可以定義 「溢出」參數是否應在溢出 恢復後立即重置,或是需手動重置溢出。 「溢出」與 「溢出清除模式」參數僅能在 「無限來源」參數設定為 「啟用」時使用。
-
讀取位址並未進行有效性檢查。若 RColA大於或等於 MaxFrameWidth,或若 RRowA大於或等於 MaxFrameHeight(僅限 2D 模式),則 該運算子會從記憶體中讀取隨機的虛擬值。
-
連結屬性的限制值始終為: 「最大圖片寬度」為 2^24-1, 「最大圖片高度」為 2^17-1。然而,若 MaxFrameSizeMode設定為 「自動」時,則會額外適用以下 限制:
-
In 2D-mode, if MaxFrameSizeMode is set to Auto, then I.MaxImgWidth * I.MaxImgHeight <= 2^RamAddressWidth.
-
In 1D-mode, if MaxFrameSizeMode is set to Auto, then I.MaxImgWidth <= 2^RamAddressWidth.
-
-
所有輸入埠的並行度為 1。
為獲得最佳效能,所使用的 資料位元數應盡可能與模組 參數RamDataWidth 中指定的數值相符。 當位元寬度與核心大小的乘積 等於內部 RAM 埠寬度RamDataWidth 時, 即達到透過該運算子傳輸的 最大頻寬。請注意, 雖然可透過使用核心來增加內部位元寬度,但一個完整 的核心仍會被視為單一像素進行位址指定。
為了讓操作員能夠處理長 且超過 RAM 可用最大頻寬的寫入資料突發,請啟用 WritePriority參數。建議在 資料來源為無限時(例如攝影機,InfiniteSource =ENABLED)的情況下啟用此參數。若 WritePriority參數已啟用,當 RAM 的可用頻寬因寫入突發流量而超出時,讀取操作將 被禁止。 此機制可讓 RAM 暫時承受更頻繁的寫入存取。若攝影機 傳送一波寫入資料,預期該波資料之後會出現 寫入資料的空檔(否則將超過 RAM 的可用頻寬),此時 即可利用該空檔暫時提升讀取頻寬。
| 可用於硬體平台 |
|---|
| imaFlex CXP-12 Penta |
| imaFlex CXP-12 Quad |
| Property | Value |
|---|---|
| Operator Type | M |
| Input Links | I,影像資料輸入 RColA,讀取位置 I 的像素之欄位位址 RRowA,讀取位置 I 的像素之行位址 |
| Output Link | O,影像資料輸出 |
同步與非同步 輸入
- 同步群組:RColA與RRowA
- 輸入I與該群組是異步的。
|
輸入 Bit Width 的範圍為:
輸入位元寬度不得超過原生 RAM 資料寬度 RamDataWidth。 |
|
|
欄位位址的位寬為: ![]() |
|
|
行位址的位寬為: ![]() |
|
|
BitWidth * Columns * Rows <= RamDataWidth |
|
|
BitWidth * Columns * Rows <= RamDataWidth |
|
|
連結屬性的限制值始終為: 「最大影像寬度」為 2^24-1, 「最大影像高度」為 2^17-1。然而,若 MaxFrameSizeMode設定為 「自動」時,則另須遵守 以下限制:
|
| RamDataWidth | |
|---|---|
| Type | 靜態寫入參數 |
| Default | 不適用 |
| Range | 整數 |
|
此參數指定可使用的資料位元數。 |
|
| RamAddressWidth | |
|---|---|
| Type | 靜態寫入參數 |
| Default | 不適用 |
| Range | 整數 |
|
此參數指定可用的位址位元數。 可用的 RAM 插槽數量由 2^RamAddressWidth 所決定。當前的 RamAddressWidth取決於硬體 平台,以及設計中當前的記憶體運算子數量(即 使用 RAM 類型資源的運算子)。 |
|
| MaxFrameSizeMode | |
|---|---|
| Type | dynamic write parameter |
| Default | Auto |
| Range | {自動、自訂} |
|
此參數用以定義參數 MaxFrameWidth與 MaxFrameHeight應自動 遵循輸入I的最大影像尺寸 (模式=自動),抑或這些參數 可進行調整(模式=自訂)。 自訂模式允許設定最大 畫面尺寸,此尺寸會根據應用程式需求進行客製化,且可能遠小於 輸入連結所設定的限制。如此一來,即可在 RAM 中儲存更多畫面。在「自動」模式下,連結屬性 (Max.Img Width和 Max.Img Height) 所定義的最大影像尺寸,不得大於 記憶體中可用插槽的數量 (2^RamAddressWidth)。 若鏈結 屬性「最大影像寬度」與 「最大影像高度」 所定義的最大影像尺寸大於 可用記憶體空間,且您處於 「自訂」模式下, 「MaxFrameSizeMode」參數將無法 再進行編輯,直到輸入連結上的最大影像尺寸被設定為較小值為止。 當資料擷取正在執行時,此參數無法寫入。在 1D 模式下, MaxFrameHeight以及 輸入端 I的Max.Img Height可視為 1。 |
|
| MaxFrameWidth | |
|---|---|
| Type | dynamic write parameter |
| Default | 1024 |
| Range | [1,I 處的最大影像寬度] |
|
此參數用於設定當前影像處理 設定中的最大影像寬度。超過此限制的輸入幀行將被裁切至 MaxFrameWidth。將此數值降低至 最大影像寬度以下,可節省記憶體空間並容許儲存更多幀。 此 參數僅在 MaxFrameSizeMode設定為 Custom 時方可編輯。 MaxFrameHeight與 MaxFrameWidth 的乘積不得大於 可用記憶體槽的數量: 2^RamAddressWidth。在 1D 模式下, MaxFrameHeight可視為 1。 當擷取作業正在執行時,此參數無法進行編輯。 |
|
| MaxFrameHeight | |
|---|---|
| Type | dynamic write parameter |
| Default | 1024 |
| Range | [1,I 處的最大影像高度] |
|
此參數用於設定當前影像處理 設定中的最大影像高度。超過此高度限制的輸入幀將被裁切至 MaxFrameHeight。將此數值 降低至最大影像高度以下,可節省記憶體空間並容許儲存更多幀。 此參數僅能在 MaxFrameSizeMode設定為 「自訂」且「影像 協定」設定為 VALT_IMAGE2D 時,才可編輯此參數。在 1D 模式下, MaxFrameHeight可視為 1。 MaxFrameHeight與 MaxFrameWidth的乘積不得大於 可用記憶體槽的數量: 2^RamAddressWidth。當擷取作業正在執行時, 此參數無法 進行編輯。 |
|
| FillLevel | |
|---|---|
| Type | 動態讀取參數 |
| Default | 0 |
| Range | [0%, 100%] |
|
此參數以百分比表示 DRAM 的填滿程度。 |
|
| MaxFrameCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | 2^RamAddressWidth/ (MaxFrameHeight* MaxFrameWidth) |
| Range | [1,2^RamAddressWidth] |
|
此參數指定目前可容納於 記憶體中的最大幀數。可容納於記憶體中的最大幀數取決於 參數RamAddressWidth、 MaxFrameHeight以及 MaxFrameWidth。 MaxFrameCount =2^RamAddressWidth/ (MaxFrameHeight* MaxFrameWidth) 此參數在 1D 模式下處於停用狀態。 |
|
| 幀數 | |
|---|---|
| Type | 動態讀取參數 |
| Default | 0 |
| Range | [0,最大幀數] |
|
此參數提供記憶體中當前的幀數。 此參數在 1D 模式下處於停用狀態。 |
|
| InfiniteSource | |
|---|---|
| Type | 靜態寫入參數 |
| Default | DISABLED |
| Range | {ENABLED, DISABLED} |
|
該操作員可直接置於攝影師之後。在此 情況下,必須將InfiniteSource參數 設定為ENABLED。該操作員隨後將執行 主動溢出管理,並確保操作員能從 溢出情況中正確恢復。 溢出可能發生於:當操作器後方的資料接收端 停止或暫停傳輸,且緩衝區填滿程度達到最大值時; 或是當輸入頻寬過高,導致寫入資料無法傳輸 至外部 RAM 時。 當InfiniteSource 設定為DISABLED 時,若緩衝區填充 水準或輸入頻寬過高,系統將產生抑制訊號, 以阻止後續運算子傳輸資料。 建議任何與 InfiniteSource 搭配使用的運算子,皆應啟用寫入優先級。因此,當 InfiniteSource參數設定為 ENABLED 時,建議將 WritePriority參數設定為 ENABLED 時,建議將 WritePriority 參數設定為 ENABLED。 如需詳細資訊,請參閱 'Infinite Sources / Connecting Cameras'。 |
|
| 寫入優先級 | |
|---|---|
| Type | 靜態寫入參數 |
| Default | DISABLED |
| Range | {ENABLED, DISABLED} |
|
「共享記憶體概念」通常會將 頻寬平均分配給所有連接的記憶體運算子(即所有 使用RAM 類型資源的運算子)。若 WritePriority參數設定為 DISABLED,則 FrameBufferRandomRead運算子會將 讀取與寫入賦予相同的優先級。透過將 WritePriority設定為 ENABLED, FrameBufferRandomRead運算子會優先處理 寫入操作的優先級高於讀取操作,但此情況僅限於臨時記憶體的資料傳輸速率高於 可用頻寬時。寫入資料的暫時優先處理會導致 讀取過程暫時變慢。因此,平均 頻寬不得超過 FrameBufferRandomRead運算子的可用頻寬。 建議 對於任何將 InfiniteSource參數設定為 ENABLED 的運算子,皆應啟用寫入 優先級。當與可停止的來源搭配使用寫入優先級 時,請確保寫入頻寬不會持續 維持在高水平,否則從 FrameBufferRandomRead運算子的讀取作業將會停止 ,直至緩衝區填滿為止。由於寫入優先級是針對 單一運算子的設定,因此隨著設計中 新增的記憶體運算子數量增加,寫入優先級的效果會隨之減弱。 |
|
| Overflow | |
|---|---|
| Type | 動態讀取參數 |
| Default | 0 |
| Range | [0, 3] |
|
此參數表示緩衝區溢出。它是一個 2 位元的位圖,其中 每個位元代表不同類型的溢出。 位元 0 表示填充水準 溢出,而位元 1 表示寫入頻寬溢出。 「溢出」參數顯示溢出狀態的時間長短, 取決於「溢出清除模式」。 「溢出」參數僅在 「無限來源」參數設定為 「啟用」時才生效 |
|
| OverflowClearMode | |
|---|---|
| Type | dynamic write parameter |
| Default | 自動清除 |
| Range | {自動清除、手動清除、讀取後清除、隨程序重置清除} |
|
OverflowClearMode決定當 運算子從溢出狀態恢復後, 如何清除Overflow參數。只有當運算子已不再處於溢出狀態時, 才能使用此參數重置溢出狀態。 清除模式:
OverflowClearMode參數僅在 InfiniteSource參數 設定為ENABLED時才生效 |
|









上一頁

