以下清單列出了本版VisualApplets 所支援的所有硬體平台 的重要硬體詳細資訊。如需詳細清單,請參閱 各產品的資料表。
| 資源 | imaFlex CXP-12 Quad | imaFlex CXP-12 Penta | imaFlex 2 Dual 100 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 視覺處理器 | Xilinx UltraScale+ XCKU3P-FFVD900-1-E | Xilinx UltraScale+ XCKU3P-FFVB676-1-E | Xilinx UltraScale+ XCKU15P-FFVE1517-1-E | ||||||||||
| LUT | 160679 | 161049 | 447992 | ||||||||||
| 翻來覆去 | 323224 | 323216 | 895984 | ||||||||||
| 區塊式隨機存取記憶體 (18k) | 720 | 720 | 1776 | ||||||||||
| URAM 區塊 (288k) | 48 | 48 | 128 | ||||||||||
| 嵌入式Arithmetic 邏輯單元 (DSP48) | 1368 | 1368 | 1800 | ||||||||||
| RAM 容量 | 3 x 512 MiB DDR4 | 5 x 512 MiB DDR4 | 2 @ 5 × 1024 MiB DDR4 | ||||||||||
| RAM 資料位寬 | 384 位元 | 640 位元 | 640 位元 | ||||||||||
| RAM 總頻寬(共用) | 14.4 GB/![]() |
24.0 GB/s![]() |
2 @ 24.0 GB/s![]() |
||||||||||
| 基準設計時鐘(預設) | 312.5 MHz![]() |
312.5 MHz![]() |
391.5 MHz![]() |
||||||||||
| 基準設計時脈(最大值) | 400.0 MHz | 400.0 MHz | 420.0 MHz | ||||||||||
| 主機介面 | PCIe x 8 Gen 3(直接記憶體存取) | PCIe x 8 Gen 3(直接記憶體存取) | PCIe x 16 Gen 3(直接記憶體存取) | ||||||||||
| 主機介面(PCIe ×8 Gen 3)頻寬(理論值) | 8000 MB/s | 8000 MB/s | 16000 MB/s | ||||||||||
| 主機介面(PCIe ×8 Gen 3)頻寬(典型值/最大值) | 7200 MB/s 的持續資料傳輸頻寬 | 7200 MB/s 的持續資料傳輸頻寬 | 13000 MB/s 的持續資料傳輸頻寬![]() |
||||||||||
|
|||||||||||||
表 68. imaFlex 平台的硬體配置
表 69. 硬體配置 microEnable 5marathon
每個硬體平台上的裝置資源皆有限。以下清單列出了 所有受支援平台可用的資源。運算子會消耗裝置資源,且 大多數資源實例僅能使用一次。此規則有若干例外, 例如 GPI 運算子。在此類情況下,資源消耗情況已詳載於運算子參考文件中。
裝置資源的分配方式有以下兩種:
-
自動地,
-
使用運算子參數,或
-
在「資源」對話方塊中。
更多資訊請參閱「裝置資源的分配」。
| 資源 | imaFlex 2 Dual 100 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
Port[0]CoF 巷![]() |
4 | ||||||||
Port[1]CoF Lane![]() |
4 | ||||||||
Port[0]CoF 接收觸發通道![]() |
4 | ||||||||
埠[1]CoF 接收觸發通道![]() |
4 | ||||||||
Port[0]CoF TX 觸發通道![]() |
4 | ||||||||
Port[1]CoF TX Trigger Lane![]() |
4 | ||||||||
Port[0]CoF 狀態欄![]() |
4 | ||||||||
Port[1]CoF 狀態欄![]() |
4 | ||||||||
埠[0] DF 接收資料通道![]() |
4 | ||||||||
埠[1] DF 接收資料通道![]() |
4 | ||||||||
Port[0] DF RX Meta Lane![]() |
4 | ||||||||
埠[1] DF RX Meta Lane![]() |
4 | ||||||||
埠[0] DF 傳輸資料通道![]() |
4 | ||||||||
埠[1] DF TX 資料通道![]() |
4 | ||||||||
Port[0] DF TX Meta Lane![]() |
4 | ||||||||
埠[1] DF TX Meta Lane![]() |
4 | ||||||||
Port[0] DF 綠色LED 車道![]() |
4 | ||||||||
Port[0] DF 紅色LED 通道![]() |
4 | ||||||||
波特[1] DF 格林LED![]() |
1 | ||||||||
Port[1] DF 紅色LED![]() |
1 | ||||||||
DmaToHostPort![]() |
5 | ||||||||
DmaFromHostPort![]() |
1 | ||||||||
GPI![]() |
16 | ||||||||
GPO![]() |
16 | ||||||||
EventPort![]() |
31 | ||||||||
事件 ID![]() |
64 | ||||||||
使用者LED![]() |
6 | ||||||||
ImageChannel![]() |
1024 | ||||||||
RAM![]() |
2 @ 從 1 × 5 GiB 變更為 8 × 625 MiB | ||||||||
|
|||||||||
表 70. 裝置資源清單imaFlex 2 Dual 100
表 71. imaFlex CXP-12 Quad 裝置資源清單及imaFlex CXP-12 Penta
| 資源 | mE5 marathon VCX-QP | mE5 marathon VCL | mE5 marathon VCLx | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 相機連接埠 | 4 | 2 | 2 | ||||||||||
| CameraControl | - | 2 | 2 | ||||||||||
| DMA | 4 | 4 | 4 | ||||||||||
GPO![]() |
10 OUT | 10 OUT | 10 OUT | ||||||||||
GPI![]() |
12 英吋 | 12 英吋 | 12 英吋 | ||||||||||
| RAM | 4 × 512 MiB | 4 × 512 MiB | 4 × 512 MiB | ||||||||||
LED 港口![]() |
4 | 2 | 2 | ||||||||||
SignalChannel![]() |
4000 | 4000 | 4000 | ||||||||||
EventPort![]() |
14 | 10 | 10 | ||||||||||
事件 ID![]() |
64 | 64 | 64 | ||||||||||
ImageChannel![]() |
1024 | 1024 | 1024 | ||||||||||
|
|||||||||||||
表 72. 裝置資源清單 microEnable 5marathon
imaFlex 2 Dual 100 平台包含兩個獨立的實體 RAM 銀行,每個的 容量為 5 GiB。這些實體銀行會根據小程式中使用的基於 RAM 的VisualApplets 運算子數量, 依需求劃分為互不重疊的記憶體區域。 在VisualApplets 中,這些區域會以虛擬 RAM 區塊的形式呈現。當某個運算子 需要 RAM 時,它會預留一個虛擬 RAM 區塊,該區塊對應於實體 RAM 內一個專用的、 互不重疊的區域。
有關VisualApplets 記憶體運算子的實用指引,請參閱 「記憶體元素教學」主題。
在imaFlex 2 Dual 100 平台上,您可以針對每個實體 RAM 銀行定義最多 8 個不重疊的記憶體 區域,這意味著兩個 RAM 介面合計共有 16 個區域。若僅將一個 RAM 運算子指派給某個實體介面,該運算子即可存取 該介面完整的 5 GiB 容量。 當多個運算子共用同一個 實體介面時,可用記憶體將按比例分配給各運算子。舉例來說, 若將 8 個運算子指派至同一介面,每個運算子將獲得 5 GiB 記憶體的 1/8,即每個運算子約有 0.625 GiB。
在imaFlex 2 Dual 100 上,RAM頻寬會均分給所有 連接到同一物理介面的營運商;它並非專屬於任何單一 營運商。
-
若某個設計在單一介面上使用了全部 8 個 RAM 資源,則每個基於 RAM 的運算子 將獲得約 1/8 的總介面頻寬,並根據 該運算子的效率係數進行調整。
-
若僅使用一個基於 RAM 的運算子,它即可充分利用該介面的 最大頻寬。
-
如果兩家營運商共用同一個介面,每家將獲得總 頻寬的一半,以此類推。
該平台的 2 個實體 RAM 介面在 VisualApplets 中被映射至 16 個虛擬 RAM 埠。第一個 RAM 介面被映射至 RAM 資源索引 0 至 7,而 第二個則被映射至 RAM 資源索引 8 至 15。
未被分配(因此未被使用)的 RAM 埠,其分配到的 記憶體容量始終為 0%。這意味著,可用的總記憶體僅會分配給 那些正在主動使用 RAM 埠的操作者。
-
若僅使用 1 個埠:該埠將獲得 100% 的可用 記憶體。
-
若使用 2 個埠:每個埠將獲得 50% 的可用 記憶體。
-
若使用 3 個埠:資源 ID 最低的埠可獲得 50%, 其餘 2 個埠則各佔 25%。
-
若使用 4 個埠:這 4 個埠將各佔 25%。
-
若使用 5 個埠:前 3 個埠(資源 ID 最小的)各 佔 25%,其餘 2 個埠則各佔 12.5%。
-
若使用 6 個埠:資源 ID 最低的 2 個埠各佔 25%,其餘 4 個埠則各佔 12.5%。
-
若使用 7 個埠:資源 ID 最低的埠將獲得 25%, 其餘 6 個埠則各獲得 12.5%。
-
若使用 8 個埠:每個埠各佔 12.5%。
![]() |
非對稱記憶體分配 |
|---|---|
|
在非對稱大小分割的情況下,同一物理記憶體區塊內 RAM 索引值最低的埠將獲得較大的 分配量。例如,若使用 3 個 RAM 埠 (0、1 和 2),則埠 0 將獲得 50% 的 RAM 容量,而埠 1 和 2 則各獲得 25%。 若埠號為 8、9 和 10,情況亦同,因為它們雖映射至 第二個 RAM 介面,但仍屬於同一個實體 RAM 銀行。 |
RAM 索引無需連續;其絕對順序決定了 資源的分配。 RAM 索引為虛擬識別碼,即使序列中存在空隙,也不會影響 FPGA 資源 的使用。例如,若使用 3 個 RAM 埠 (1、5 和 7):埠 1 會分配到 RAM 容量的 50%,而埠 5 和 7 則各分配 25%。
當所有 資源皆映射至同一物理銀行時,RAM 索引的分配方式並無優劣之分。您可以使用 VisualApplets 提供的自動分配功能,或若特定設計運算子 所需的 RAM 比其他運算子更多時,可手動進行調整。
![]() |
獨立 RAM 介面 |
|---|---|
|
兩個實體 RAM 介面完全獨立運作。例如,若使用兩個 運算子,其中一個被指派至第一個 RAM 介面,而 另一個則被指派至第二個介面,每個運算子皆可充分利用其 所屬介面的最大 RAM 容量。 |
共用記憶體控制器採用輪詢(Round-robin)演算法,將頻寬 均勻分配至實體 RAM 介面內所有已分配的埠。此演算法 基於信用點數仲裁機制。當某個埠進入活躍狀態時,只要它持續提供 新的 RAM 工作,便會保持 活躍狀態,直至達到預設的信用點數時鐘週期數為止。 若某個活躍埠已無工作任務,該埠將被停用,而 激活標記則移轉至下一個有待處理請求的埠。此機制可確保 頻寬絕不會浪費在閒置埠上。
信用值是由韌體在小程式合成期間,根據 所使用的 RAM 運算子數量所設定的。這些值無法在執行期間或透過 Framegrabber SDK 進行變更。使用者無法存取信用設定。
當一個埠處於活躍狀態時,它將佔用 100% 的記憶體控制器頻寬。如果實體記憶體區塊中的所有 8 個埠均勻地處於活躍狀態,隨著時間推移,每個埠將獲得約 1/8 的 總頻寬。在其他情況下,實際平均頻寬則取決於 各埠的負載狀況。
實體 RAM 介面是完全獨立的。將基於 RAM 的 運算子指派給不同的介面,可將頻寬效率最大化。頻寬僅 在連接至同一實體 RAM 介面的運算子之間共享。
imaFlex CXP-12 Quad 和imaFlex CXP-12 Penta 平台僅配備一個 實體 RAM 銀行(其大小因平台而異)。此單一實體銀行會 根據小程式內所使用的 基於 RAM 的VisualApplets 運算子數量,動態格式化為互不重疊的區域。這些區域在 VisualApplets 中以虛擬 RAM 銀行的形式呈現。 當運算子預留 RAM 資源時, 其實際使用的是虛擬 RAM 區塊,該區塊會映射至實體 RAM 內 一個專屬且不重疊的記憶體區域。在 imaFlex 平台上,最多可定義 8 個不重疊的區域。若僅使用 1 個 RAM 運算子,該運算子將獲得 平台完整的 RAM 容量。 每新增一位操作員所分配的大小,將按該操作員 在同一實體介面上連接的數量,按比例減少該操作員 所擁有的記憶體大小。若使用 8 位操作員,每位操作員將分配到平台 記憶體大小的 1/8。
然而,RAM 頻寬是由設計中所有基於 RAM 的運算子共享的。 當設計中使用全部 8 個 RAM 資源時,這 8 個基於 RAM 的運算單元各自可擁有 最高 1/8 GB/s 的專用頻寬,但需扣除該特定 運算單元的效率係數。若設計中僅使用一個基於 RAM 的運算單元,該運算單元將獲得 平台的總頻寬;若使用 2 個運算單元,則兩個運算單元各自 獲得總頻寬的一半,以此類推。
未被分配且因此未被使用的 RAM 埠,其佔用的記憶體大小始終為 0%。
-
已使用 1 個埠:該埠的使用率為 100%。
-
共使用 2 個埠:這兩個已使用的埠各佔 50%。
-
共使用 3 個埠:資源 ID 號碼最低的埠將獲得 50%,其餘 2 個被使用的埠則各佔 25%。
-
共使用 4 個埠:這 4 個埠各佔 25%。
-
共使用 5 個埠:資源 ID 號碼最低的 3 個埠將各佔 25%。 其餘 2 個埠將各佔 12.5%。
-
共使用 6 個埠:資源 ID 號碼最低的 2 個埠將各佔 25%。 其餘 4 個埠將各佔 12.5%。
-
共使用 7 個埠:資源 ID 號碼最低的埠將獲得 25%。其餘 6 個埠則各獲得 12.5%。
-
共使用 8 個埠:每個埠各佔 12.5%。
![]() |
|
|
在 非對稱大小分區的情況下,RAM 索引較低的埠將獲得較大的分配。例如,使用 3 個 RAM 埠:0、1、2。 埠 0 獲得 50% 的 RAM 大小分配;埠 1 和 2 則各獲得 25%。 RAM 索引無需連續,其絕對順序決定 資源的分配。 RAM 索引為虛擬數值,即使順序中存在間隙,也不會影響 FPGA 資源的使用。例如,使用 3 個 RAM 埠: 1、5、7。埠 1 獲得 50% 的 RAM 大小分配,埠 5 和 7 則各 獲得 25%。 在分配運算子的 RAM 索引時, 並無優劣之分。您可以使用自動分配功能VisualApplets ,或在 特殊設計的運算子所需 RAM 空間大於其他 運算子時,手動進行調整。 |
共用記憶體控制器採用輪詢(Round-robin)演算法,並將 頻寬均勻分配至所有已分配的埠。該演算法採用信用點 仲裁機制:當某個埠處於活躍狀態時,只要該埠持續提供新的 RAM 工作, 即可在信用點所對應的時鐘週期內保持活躍狀態。 一旦某個埠被啟用但 已無待處理工作,該埠即會停用,而啟用標記將跳轉至 排隊中的下一個埠,該埠需有待處理的請求工作。如此一來,頻寬便絕不會 因閒置而浪費。信用值完全由韌體在 小程式合成期間依據所使用的 RAM 運算子數量進行編程,且無法 在Framegrabber SDK/ 執行期間進行變更。 使用者無法存取 配額的設定。當一個活躍的埠佔用 RAM 介面時,它將可 存取記憶體控制器 100% 的頻寬。當所有 8 個埠皆被使用且 均勻地處於活躍狀態時,隨時間推移,每個埠的頻寬為 1/8。在所有其他 情況下,各埠的負載將決定每個 埠的實際平均頻寬。
microEnable 5marathon 平台僅組裝有一個 實體 RAM 銀行(其大小因平台而異)。此單一實體銀行被 格式化為 4 個互不重疊的記憶體區域。這 4 個區域在 VisualApplets 中被表示為 4 個虛擬 RAM 銀行。 當操作員預留 RAM 資源時,其實是 在使用一個虛擬 RAM 銀行,該銀行會映射至 實體 RAM 內部一個專屬且不重疊的記憶體區域。
然而,RAM 頻寬是由設計中所有基於 RAM 的運算子共同分享的。 當設計使用全部 4 個 RAM 資源時,這 4 個基於 RAM 的運算子各自可擁有 最高 1.6 GB/s 的專用頻寬,再扣除該特定 運算子的效率係數。 當設計中僅使用一個基於 RAM 的運算器時,該運算器將獲得 6.4 GB/s 的總頻寬。當使用 2 個運算器時,每個運算器將獲得 總頻寬的一半,以此類推。
![]() |
每位操作員的頻寬 |
|---|---|
|
內建 RAM 提供總計 6.4GB/s 的頻寬。單一 基於 RAM 的運算子可用的頻寬,即為總頻寬除以設計中所有 已實例化的基於 RAM 的運算子數量。 |
在使用基於 RAM 的運算子進行設計時,必須將此 RAM 架構納入考量。
由於採用共享頻寬架構,小程式開發人員應充分利用營運商記憶體介面(RAM 資料寬度)的全部 256 位元,以在使用多個基於 RAM 的運算子時,透過記憶體介面達到最大吞吐量, 即使單一 RAM 運算子在其輸入端所需的頻寬較少。
imaFlex 2 Dual 100 提供 2 個光纖 QSFP28 連接器:C0 和 C1。
這兩種連接器均支援CoF (光纖上的 CXP)及資料轉發協定。每個 光纖連接器皆配有專屬的 LED:連接器 C0 配有四顆 LED,而連接器 C1 則配有一顆LED 。
每個連接器皆支援 QSFP28 光模組。QSFP28 介面提供 4 條雙向光纖連接,即 4 個接收 (RX) 及 4 個傳送 (TX) 連接。一條光纖 連接稱為 通道 。每個 QSFP28 埠在接收 (RX) 與傳輸 (TX) 方向均擁有 4 條光纖通道, 標示為 0 至 3。每條通道的運作速率為 25 Gbit/s。因此,單一 QSFP28 連接器可在 傳輸 (TX) 與接收 (RX) 方向提供 100 Gbit/s 的累計頻寬。
imaFlex 2 Dual 100 提供資料轉發功能,可透過多個影像擷取卡 進行雙向資料傳輸。VisualApplets 中的資料轉發功能支援各種 拓撲結構來傳輸資料與元資料,包括菊花鏈及更先進的模型。 資料轉發行為可由使用者透過VisualApplets 運算子完全控制。相機資料、 小程式所產生之資料,以及元資料皆可在 TX 與 RX 兩個方向上獨立傳輸。VisualApplets 亦支援通道多工,允許元資料與一般影像資料 透過兩個獨立的虛擬通道,經由單一光纖通道同時傳送。 元資料會被賦予優先權,以確保及時傳遞。
由於光纖技術支援雙向通訊,一種先進的主從式 應用可讓主裝置控制從屬裝置接收哪些資料,並從中收集 處理結果。在從屬裝置的GPU 或CPU上產生的處理結果,可 透過 DmaFromPC 傳送回去,再透過資料轉發運算子,轉發回 主控端幀擷取器。
在典型的資料轉發菊鏈配置中,選定的攝影機資料會被轉發 至多個影像擷取卡。這些影像擷取卡隨後會透過PCIe ,以極低的延遲將資料傳輸至外部GPU 。
CoF (CXP over Fiber) 使用四條下行連接和一條上行連接。兩個幀擷取卡之間的 資料轉發鏈路經配置為僅傳輸所需的 資料;它們不傳輸原生CoF 流量,而是傳輸VisualApplets 資料及 元資料流。CoF 與資料轉發均受前向錯誤校正 (FEC) 保護。
主幀擷取器連接至攝影機,並將選定的資料部分轉發至 下一個從屬幀擷取器。每個從屬幀擷取器會擷取其 自身處理所需的資料,並將影像流中剩餘的未處理部分轉發至序列中的 下一個從屬幀擷取器。鏈中的最後一個幀擷取器充當終端點,不會 將任何資料進一步轉發。
上述範例是菊花鏈拓撲結構的簡化示意。在更 進階的配置中,兩台相連的幀擷取卡可自由交換資料:它們之間 可建立 1 通道、2 通道、3 通道或 4 通道的連接。接收(RX)與傳輸(TX)方向可能使用 不同數量的通道。
多個光通道可組合成虛擬通道,使多個資料 通道能透過單一 QSFP28 連接器進行傳輸。除了影像資料 傳輸外,VisualApplets 還為每個光通道提供專用的元通道。此 元通道的優先級高於一般影像資料,且傳輸時具有極低的抖動與 延遲,使應用程式能夠實現時間戳記及板對板 同步。 小型側帶資訊亦可透過元通道傳輸, 例如用於配置光纖連接另一端的從屬夥伴。該 夥伴可透過其自身的元通道,將控制與狀態資訊回傳至 主機。每台影像擷取卡亦可將處理後的影像資料,以 最高達 100 Gb/s 的聚合頻寬傳送至其夥伴。
透過單一 QSFP28 介面,可在兩台幀擷取卡之間建立最多四個元通道,且在發射(TX)與接收(RX)方向上可獨立運作。每個元通道的運作速率為 25 Gb/s。 影像資料通道可橫跨 1、2、3 或 4 條光通道,以形成一個虛擬資料傳輸 通道。
QSFP28 資料轉發介面支援以下虛擬資料通道的組合:
-
1 × 4 通道:100 Gbit/s
-
1 × 3 通道 傳輸速率為 75 Gbit/s 以及 1 x 1 通道 傳輸速率為 25 Gbit/s
-
2 × 2 通道 每通道傳輸速率為 50 Gbit/s
-
1 組 2 通道 傳輸速率為 50 Gbit/s,以及 2 組 1 通道 傳輸速率為 25 Gbit/s
-
4 × 1 通道 每通道傳輸速率為 25 Gbit/s
RX 端與 TX 端完全獨立運作。這意味著回傳(RX) 方向可視需要實作或省略。若選擇實作,該方向無須 與正向(TX)方向呈對稱關係。
元通道與資料通道獨立運作。每個元通道僅使用一條 光纖通道,並以 25 Gb/s 的速率運作。元通道專為傳輸少量 資料而設計。由於其具有優先權,元通道的傳輸會暫時中斷 同一光纖通道上的常規資料傳輸。
為了支援資料轉發功能,VisualApplets 提供了以下 運算子:
Basler 提供以VisualApplets 設計形式呈現的資料轉發範例,以及一個 C++
SDK 控制應用程式。在這些範例中,您可以了解如何使用這些運算子進行
資料轉發。這些範例可於VisualApplets 的範例區中取得,網址為 Examples/Acquisition/DataForwarding. 您可以在 「CoaXPress over Fiber 擷取卡的資料轉發 (Data Forwarding for CoaXPress over Fiber Frame Grabber)」 主題在 基礎與範例.
在某些限制條件下,可以建構更複雜的攝影機-幀擷取器模型。 兩個幀擷取器之間的光學傳輸延遲極低: 一個資料字從一個幀擷取器傳輸到另一個幀擷取器,所需時間約為 120 ns。
菊花鏈拓撲是最常見的方案,用於將處理 負載分散至多個 CPU/GPU 叢集:
主幀擷取器連接至攝影機;第二個 QSFP28 埠則連接 至下一台從屬裝置。每台從屬裝置會處理部分傳入的資料,並將 剩餘的資料轉發至下一台裝置。鏈中最後一台幀擷取器作為 終點。除最後一台外,所有幀擷取器均會同時使用兩個 QSFP28 埠。
對於某些應用,可以將兩台 100 Gb/s 攝影機連接至單一 影像擷取卡。這需要攝影機未以最大 頻寬運作,或者能在將資料儲存至 RAM 之前,先透過VisualApplets 進行預處理, 以稍微降低頻寬,使兩路攝影機串流皆能容納於 兩個 RAM 介面之中。 在此配置下,幀擷取卡必須在VisualApplets 中執行額外的 處理,以降低最終的資料傳輸速率,使其符合 約13 GB/s的PCIe 有限吞吐量。
在此情況下,每個幀擷取卡皆連接至其專屬的攝影機。第二個 QSFP28 埠用於幀擷取卡之間的通訊,可實現最高 100 Gbit/s 的雙向資料傳輸,以支援複雜的運算任務與同步作業。







![[注意]](../common/images/admon/note.png)












上一頁

