從空白設計到執行 Applet#
關鍵詞
您可以在辦公桌上沒有擷取卡硬體的情況下,依照此學習路徑進行。您可以在 PC 上的 VisualApplets 中執行設計、參數設定、設計規則檢查與模擬。Build 需要 PC 上具備 FPGA 工具鏈(通常為 Xilinx Vivado);不需要硬體。Flash/load 與 runtime 驗證則需要擷取卡與執行階段軟體,例如 Basler Framegrabber SDK。若要進行完整的整合測試,您同樣需要擷取卡以及相機或其他影像來源。
如需相同工作流程的逐步解說,請參閱使用者手冊中的 Hardware Applet: From Idea to Application。
如需在 microDisplay X 中設計、建置與使用 Applet 的簡短介紹,請參閱使用者手冊中的 Getting Started。
工作流程總覽#
從VisualApplets 設計到可執行的 Applet,整體工作流程如下。
在 PC 版的《VisualApplets 》中:
- 設計 Applet。將 operators 作為 modules 放置在設計面板中,並在它們之間新增 links。設定 module 與 link 屬性。
- 執行 DRC Level 1 與 2,以在建置前檢查形式正確性並估算 FPGA 資源。當您啟動模擬或建置時,DRC Level 1 與 2 也會自動執行。
- 使用測試影像對設計進行模擬。只有當 DRC 第 1 級未報告任何錯誤時,模擬才會開始。
- 建置硬體 Applet 並產生 *.hap 檔案。建置過程會使用電腦上的 FPGA 工具鏈。它不需要連接擷取卡。
關於幀擷取卡與主機:
- 對於 microEnable 5 系列平台,請將 applet 燒錄至主機板。對於 microEnable 6 / imaFlex 主機板,請將 applet 載入至硬體。
- 透過 microDisplay X、Framegrabber SDK 或 pylon 在硬體上使用 applet。
本教學主要適用於 microEnable 5 (mE5) 與 imaFlex 擷取卡(CXP-12 Quad/Penta、microEnable 6 系列)。Operator 程式庫因平台而異。例如,mE5 設計使用 ImageBuffer 進行 DRAM 行緩衝,而 imaFlex 設計使用 LineBuffer.
關鍵詞
Hardware applet 是建置所產生且擷取卡執行的 *.hap 檔案。Design time 是您在電腦上的 VisualApplets 中編輯 *.vad 專案的時間。Runtime 是主機軟體將 Applet 載入擷取卡 FPGA 並擷取影像的時間。VisualApplets 中的模擬並非執行階段。
啟動新專案#
您完全在 VisualApplets 中執行設計階段。從安裝目錄 bin 資料夾中的 VisualApplets.exe、Windows 開始功能表或您建立的桌面捷徑啟動應用程式。
未載入專案時,主視窗會顯示空白的工作區。若要啟動專案,請按一下 File 與 New,或按下 Ctrl + n。在 New Project 對話方塊中,您可設定專案名稱、目標硬體平台(例如 microEnable 5 marathon VCL)以及目標執行階段(例如 Win 64)。
資訊
您可以稍後變更這些專案設定,但平台決定了適用的操作員函式庫與建置選項,因此切換平台可能需要您替換或重新參數化某些模組。
確認後 OK,VisualApplets 會開啟空白的設計視窗。新設計一律包含兩個名為以下的固定模組 AppletProperties 和 BoardStatus. AppletProperties 用於設定設計的一般 Property,例如作者和版本; AppletProperties 也提供存取特定硬體平台的介面 Property 的功能。 BoardStatus 用於在執行階段提供諸如 PCIe 介面狀態和溫度等屬性。 專案資訊 索引標籤會總結目前的專案名稱、硬體目標與平台資訊。
Operators、Modules、Links 與 Pipeline#
您可以在 VisualApplets 中使用設計視窗中 Operator Library 內的 operators 來設計影像處理管線。將 operator 拖曳至圖表中即可進行放置。每一個放置的實例都是一個 module。Module 會提供 input 與 output ports。將某個 module 的 output port 連接到另一個 module 的 input port 即可建立一個 link。圖表中會以箭頭顯示每個 link。透過這種方式,module 與 link 共同描述了建置作業在 FPGA 上實作的影像處理 pipeline。處理順序會依照連接順序而定。
Operator 與 link 兩者都具備諸如尺寸、Bit Width、協定、Parallelism 以及其他設定等 properties。Links 會在連線過程中帶有自身的屬性。您可以編輯哪些 link 欄位取決於 upstream operator。無法編輯的 link 欄位會從 upstream operator 或鏈結中的位置接收其值。此外也會透過規則自動在管線中傳播屬性。例如,您只需在相機輸出 link 上設定某些屬性。這些屬性會向下傳播,直到有 operator 變更它們為止。按兩下 link 或 module 即可開啟並變更其屬性。產品內建說明與 Operator Reference 文件記載了各 operator 的特定行為。

Basler 建議您定期儲存設計、在能提升可讀性時重新命名 module,並使用 HierarchicalBox 元素來組織較大型的設計。您可以從安裝目錄中 Examples 下方的範例設計著手。如需相關指導,請參閱使用者手冊中的 Processing Examples。
在設計階段設定參數#
Link properties 描述了影像資料如何在連線中傳輸。它們涵蓋了最大影像大小、影像協定、Bit Width 以及 Parallelism 等設定。較大的最大尺寸與較高的 Parallelism 通常會耗用更多 FPGA 資源,因此 Basler 建議您僅將這些值設定為應用程式實際所需的大小。您只能在 VisualApplets 中編輯 link properties,無法在執行階段進行編輯。如需有關 link properties 的詳細說明,請參閱 Parameterization 教學主題。
Module 參數分為 static 或 dynamic。您只能在設計階段的 VisualApplets 中變更 static 參數。您可以在 VisualApplets 中將 dynamic 參數設為預設值,並在 applet 於擷取卡上執行時,隨後從主機軟體進行變更。
設計規則檢查 (DRC)#
建立設計並設定參數後,Basler 建議您執行 Design Rules Check Level 1 與 Design Rules Check Level 2。請選取 Analysis → Design Rules Check Level 1 或 Design Rules Check Level 2,或者使用建置工具列上的對應圖示。
- 啟動 Level 2 時會自動先執行 Level 1。
- 在 simulation 與 build 之前也會自動執行 Level 1。詳細資訊請參閱使用者手冊中的 Design Rules Check。
DRC Level 1 會在 DRC log 中回報正式的設計問題,並突顯設計窗格中受影響的位置。常見的問題包含 link 上的 Bit Width 不匹配,以及 ROI 或影像大小不一致。您必須先清除 Level 1 errors,然後才能建置硬體 applet。
DRC Level 2 會執行進一步的檢查並 estimates FPGA resource 的使用量。請將此估算值視為參考方針,而非精確預測:對於某些 operator 而言,建置期間後續的邏輯最佳化可能會改變最終的資源使用量,因此在某些情況下,即使估算值超過 100% 仍有可能成功完成建置。如果任何資源的使用量遠高於 100%,請簡化設計、降低 Parallelism 或影像尺寸,或是選擇其他 operator,然後再次執行檢查。
下圖顯示在沒有錯誤的 Design Rules Check Level 1 與 Level 2 之後的典型 DRC log:包含正式狀態,以及 LUT、正反器 (Flip-Flops)、區塊 RAM (Block RAM) 與 Arithmetic 資源的估算使用量。

若要查看哪個 module 使用了多少資源,請開啟 Analysis → View FPGA Resources。FPGA Resource Estimation 對話方塊會同時顯示 entire design 與 each module 的估算明細。您可以將此表格匯出為 CSV。若只想查看所選 module 的 FPGA 資源,請開啟該 module 的捷徑功能選單並選取 FPGA Resources。另請參閱使用者手冊中的 FPGA Resource Estimation。
如果 DRC log 回報了問題,請結合 DRC 訊息與突顯的 module 或 link 來修正錯誤。如需更多詳細資訊,請參閱使用者手冊中的 Design Rules Check。
Link 顏色#
在設計窗格中,red link 突顯標記會標出影像路徑上的 formal design errors。在 Link Properties 或 Module Properties 對話方塊中,以紅色標記的 link 也可以提供包含特定錯誤類型詳細資料的工具提示訊息。

紫色 突顯標記 違反同步規則 例如 O 型網路規則等分支之間的規則。您必須先修正紅色錯誤與紫色同步違規,然後才能將 applet 部署至硬體。對於包含訊號的處理(即使用以下項目的 link Image Protocol = VALT_SIGNAL的連結),則允許使用紫色連結。
這些顏色並非整個設計的紅綠燈狀態。Green link 在您套用屬性變更後顯示,表示 VisualApplets 已傳播並驗證了更新後的 link properties。綠色本身並不代表設計已準備好進行建置。請參閱 Propagation of Link Properties 教學主題。

如需有關 link 規則的更多詳細資料,請參閱使用者手冊中的 Rules of Links 以及 Operator Types and Synchronization 教學主題。
模擬與 DRC#
如果 DRC Level 1 回報了 error,您將無法啟動模擬。Warnings(包含同步警告)不會阻擋模擬。Red 狀態表示發生錯誤並會停止模擬。Purple 狀態則標記同步問題。在該情況下您仍然可以進行模擬,但在您依賴硬體上的 applet 之前,應該先將其修正。
即使 DRC Level 1 與 Level 2 在沒有錯誤的情況下完成,simulation 仍然可能會失敗。例如,當載入的影像寬度不是 link parallelism 的整數倍,或者影像超過了設定在 link 上的最大影像尺寸時,模擬就會失敗。若要解決這些問題,請將模擬影像大小與這些條件約束進行對齊,或調整 link properties。
下圖顯示 error in DRC Level 1:

下圖顯示 DRC 2 級的錯誤:

Simulation#
在設計過程中,模擬會將測試影像送入管線中,讓您無需硬體即可檢視中介結果。新增模擬來源以注入影像,並新增模擬探針以檢視特定連結上的資料。%VASINSTALLDIR%/testimages 下隨附了 VisualApplets 測試影像。您也可以將自己的影像載入模擬來源中。TIFF 是偏好的格式,但 VisualApplets 也支援載入許多其他常見格式的影像。

當您從分析 → 開始模擬或從工具列控制項啟動模擬時,VisualApplets 會自動執行 DRC 1 級。模擬視窗會列出啟動的來源與探針,並在下方窗格中顯示 DRC 1 級的結果。您不需要 DRC 2 級即可進行模擬,但 Basler 建議您在建置小程式之前執行 DRC 2 級,以取得 FPGA 資源估算。如需所有後續模擬選項、模式和視窗的詳細資訊,請參閱使用者手冊中的模擬。
您可以在單一模擬工作階段中執行多個模擬循環:在模擬視窗中,設定處理循環並按一下開始。如果模擬來源僅包含一個影像,VisualApplets 會為每個循環重複使用該影像。如果來源包含多個影像,則每個新循環會依序使用下一個影像。在最後一個影像之後,序列會從第一個影像重新開始。
對於影像資料路徑上的像素值,模擬通常會與受測資料的硬體相符。在模擬探針中,您可以透過縮放來詳細檢視像素。影像直方圖等工具可協助您解讀像素資料。
模擬並不會顯示所有的硬體影響。死結、緩衝區過小、共用 DRAM 頻寬限制以及某些溢位情況通常只會在使用擷取卡時出現。成功的模擬無法取代硬體上的執行階段測試。
建置硬體 Applet#
當您建置設計時,VisualApplets 會將設計轉譯為 FPGA 位元串流,並將其與執行階段軟體介面的內容打包成名為硬體小程式的檔案。建置作業需要在建置電腦上安裝並設定支援的 AMD/Xilinx 工具鏈。請根據您的平台和 VisualApplets 版本使用 Vivado。如需了解哪些工具鏈版本與哪些擷取卡平台相符的概觀,請參閱安裝 VisualApplets。如需建置硬體小程式的詳細說明,請參閱使用者手冊中的建置。
建置時間取決於 FPGA 邏輯使用率、硬體目標平台以及設計複雜度。簡單的範例可能只需幾分鐘即可完成,而大型設計則可能需要數小時。當建置成功時,輸出的 *.hap 檔案通常會使用與設計檔案相同的基本名稱。例如,Sobel_Filter.vad 會產生 Sobel_Filter.hap。
燒錄、執行階段載入與主機軟體#
對於 microEnable 5 系列應畫板,您必須使用 microDiagnostics 刷新新小程式,以便應畫板上的韌體磁碟分割包含您的 *.hap 檔案。對於 microEnable 6 應畫板,您是將小程式載入至硬體。如需如何使用 Framegrabber SDK 的 microDiagnostics 工具將小程式刷新或載入至擷取卡的說明,請參閱在 microDiagnostics 中管理小程式。
若要處理建置好的硬體小程式,請在 microDisplay X 中開啟該小程式。microDisplay X 中的參數樹狀結構會反映設計中的模組名稱,因此請在 VisualApplets 中選擇清楚的模組名稱。動態參數會顯示在該處。您可以在擷取期間變更某些參數,但其他參數必須在擷取開始前設定。DMA 維度就是一個典型的例子。您可以在擷取期間變更其他參數,例如閾值。
如需 microDisplay X 功能與擷取行為的詳細資訊,請參閱 Framegrabber SDK 文件中的 microDisplay X。
或者,您可以使用 Framegrabber API 將擷取與參數控制整合到您自己的應用程式中。VisualApplets 可以透過建置和產生 SDK 範例來產生 C++ 專案範例。這些專案包含初始化、記憶體配置、Fg_setParameterWithType / Fg_getParameterWithType 呼叫、擷取開始與停止,以及清除作業。如需如何產生 SDK 範例的詳細資訊,請參閱使用者手冊中的 Framegrabber SDK。
請將產生的程式碼視為起點。您可以在 Framegrabber SDK 文件中尋找 API 參考資料,例如 basler_fg.h 與 Framegrabber API 簡介。
設計階段與執行階段#
在設計階段,您可以編輯圖形化管線、設定靜態與動態參數、定義連結屬性、執行 DRC 1 級與 2 級,以及進行模擬。每當您啟動模擬時,VisualApplets 都會自動執行 DRC 1 級。您也可以產生 *.hap 檔案作為建置輸出。
在 runtime,主機軟體會載入該 applet、設定 dynamic 參數並啟動擷取。VisualApplets 設計中定義的模組名稱與階層也會用於參數樹狀結構與 API 中。一致的命名與說明有助於整合商並簡化現場調校。

相關主題#
- VisualApplets 基本概念教學主題 — 設計、建置與硬體小程式
- 參數化教學主題 — 設計階段的連結屬性與模組參數
- 管線概念教學主題 — 模組、連結與管線結構
- 運算子類型與同步教學主題 — 運算子類型與連結顏色
- 使用者手冊中的 Design Rules Check — DRC 層級 1 與層級 2
- 使用者手冊中的模擬 — 模擬來源、探針與模式
- 使用者手冊中的建置 — 產生硬體小程式
- 安裝 VisualApplets — Xilinx 工具鏈版本