跳至內容

從空白設計到執行 Applet#

本主題將引導您逐步了解從空白的「VisualApplets 」設計到可執行的硬體小程式的端到端工作流程。閱讀完畢後,您將了解在使用硬體時,設計、模擬、設計規則檢查、建置以及在幀擷取卡上的部署是如何相互配合的。您還將了解何時應在設計階段設定參數,以及何時應在執行階段設定參數。

關鍵詞

您無需在桌上配備幀擷取卡硬體,即可遵循此學習路徑。 您可在電腦上的VisualApplets 執行設計、參數設定、設計規則檢查及模擬。建置過程需要電腦上的 FPGA 工具鏈(通常為Xilinx Vivado);此步驟無需使用開發板。燒錄/載入及執行時驗證則需要影像擷取卡與執行時軟體,例如Basler 的Framegrabber SDK 。若要進行完整的整合測試,您還需要影像擷取卡以及攝影機或其他影像來源。

如需此工作流程的逐步操作指南,請參閱《使用者手冊》中的「硬體程式小工具:從構想到應用程式」。

若要了解在microDisplay X 中設計、建立及使用小程式的簡要介紹,請參閱《使用者手冊》中的「入門指南」。

工作流程概覽#

從VisualApplets 設計到可執行的 Applet,整體工作流程如下。

在 PC 版的《VisualApplets 》中:

  1. 設計此小程式。將運算子作為模組放置於設計面板中,並在它們之間建立連結。設定模組與連結的屬性。
  2. 在建置之前,請執行DRC第 1 級和第 2 級檢查,以驗證形式正確性並估算 FPGA 資源需求。當您啟動模擬或建置時,DRC 第 1 級和第 2 級也會自動執行。
  3. 使用測試影像對設計進行模擬。只有當 DRC 第 1 級未報告任何錯誤時,模擬才會開始。
  4. 編譯硬體小程式並產生*.hap檔案。編譯過程使用 PC 上的 FPGA 工具鏈,無需連接幀擷取卡。

關於幀擷取卡與主機:

  1. 對於 microEnable 5 系列平台,請將小程式燒錄至電路板。對於 microEnable 6 / imaFlex 電路板,請將小程式載入至硬體中。
  2. 請在硬體上使用此小程式,並搭配microDisplay X 、Framegrabber SDK 或 pylon。

本教學主要針對 microEnable 5 (mE5) 以及 imaFlex 幀擷取卡(CXP-12 Quad/Penta、microEnable 6 系列)。各平台的操作員函式庫有所不同。例如,mE5 設計採用 ImageBuffer 用於 DRAM 線路緩衝,而 imaFlex 設計則採用 LineBuffer.

關鍵詞

硬體小程式是指建置過程所產生的*.hap檔案,且由幀擷取卡執行。設計階段是指您在 PC 上的VisualApplets 中編輯*.vad專案的時段。執行階段是指主機軟體將小程式載入至幀擷取卡的 FPGA 並擷取影像的時段。在VisualApplets 中進行的模擬並不屬於執行階段。

建立新專案#

您應完全在VisualApplets 中進行設計階段的工作。您可以透過安裝目錄中bin資料夾內的VisualApplets.exe檔案、Windows 的「開始」選單,或是您已建立的桌面捷徑來啟動此應用程式。

當未載入任何專案時,主視窗會顯示一個空的工作區。要開始一個專案,請按一下「檔案」>「新增」,或按下Ctrl+n。在「新建專案」對話方塊中,您可以設定專案名稱、目標硬體平台(例如 microEnable 5marathon VCL)以及目標執行環境(例如 Win 64)。

資訊

您稍後可以變更這些專案設定,但平台會決定適用哪些運算子函式庫和建置選項,因此若要切換平台,您可能需要替換某些模組或重新設定其參數。

在您與 好, 執行VisualApplets 會開啟一個空白的设计視窗。新的設計總是包含兩個名為 AppletProperties 進行明確的生命週期管理即呼叫 BoardStatus. AppletProperties 用於設定設計的一般屬性,例如作者和版本; AppletProperties 此外,還提供存取特定硬體平台介面屬性的功能。 BoardStatus 在執行階段用於提供諸如PCIe 介面的狀態和溫度等屬性。該 Project Info 此分頁彙整了當前專案名稱、硬體目標及平台資訊。

您可在VisualApplets 中,從設計視窗的「運算子庫」中選用各項運算子,來設計影像處理流程。將運算子拖曳至圖表中即可放置。 每個放置的實例皆為一個模組。模組會公開輸入與輸出 連接埠。將一個模組的輸出連接埠連接至另一個模組的輸入連接埠,即可建立連結。流程圖中,每個連結皆以箭頭表示。模組與連結共同構成建置時在 FPGA 上實作的影像處理管線。處理順序遵循連接順序。

運算子與連結皆具備諸如維度、位元寬度、協定、並行度及其他設定等屬性。連結會將其自身的屬性沿著連線傳遞。您可以編輯哪些連結欄位,取決於上游運算子。 不可編輯的連結欄位,其值會來自上游運算子,或取決於該連結在鏈中的位置。此外,規則也會自動將屬性沿著管線傳遞。例如,您僅在攝影機輸出連結上設定某些屬性,這些屬性會向下游傳遞,直到有運算子將其變更為止。雙擊連結或模組即可開啟並變更其屬性。產品內建說明及《運算子參考》文件中皆載明了各項運算子的特定行為。

Link 與 Operator 屬性

Basler 建議您定期儲存設計、在有助於提高可讀性時重新命名模組,並使用HierarchicalBox元素來組織較大的設計。您可以從安裝目錄中「範例」資料夾下的範例設計開始著手。相關指引請參閱《使用者手冊》中的「Processing 範例」章節。

在設計階段設定參數#

連結屬性描述了影像資料如何沿著連線傳輸。這些屬性涵蓋最大影像尺寸、影像通訊協定、位元寬度及並行度等設定。較高的最大尺寸和較高的並行度通常會消耗更多 FPGA 資源,因此 Basler 建議您僅將這些數值設定為應用程式所需的最高值。您只能在「VisualApplets 」中編輯連結屬性,而無法在執行階段進行編輯。有關連結屬性的詳細說明,請參閱「參數化教學」主題。

運算子屬性可分為靜態與 動態兩類。靜態參數僅能在設計階段透過VisualApplets 進行變更。您可於VisualApplets 中將動態參數設定為預設值,並可在小程式於幀擷取卡上執行時,透過主機軟體進行後續變更。

設計規則檢查 (DRC)#

完成設計並設定參數後,Basler 建議您執行「設計規則檢查第 1 級」及「設計規則檢查第 2 級」。請選擇「分析」→「設計規則檢查第 1 級」或「設計規則檢查第 2 級」,或點選建置工具列上的對應圖示。

  • 開始執行第 2 級時,系統會自動先執行第 1 級。
  • 第 1 級也會在模擬和 建構之前自動執行。詳情請參閱《使用者手冊》中的「設計規則檢查」章節。

DRC 第 1 級會在DRC 日誌中報告正式的設計問題,並在設計窗格中標示受影響的位置。常見的問題包括連結上的位元寬度不匹配,以及 ROI 或影像大小不一致。在編譯硬體小程式之前,必須先清除第 1 級錯誤。

DRC 第 2 級會進行進一步檢查,並估算 FPGA 資源使用量。請將此估算值視為參考指引,而非精確預測:對於某些運算子而言,建置過程中的後續邏輯優化可能會改變最終的資源使用量,因此即使估算值超過 100%,在某些情況下仍可能成功建置。若任何資源的使用量遠高於 100%,請簡化設計、降低並行度或縮減影像尺寸,或選擇其他運算子,然後重新執行檢查。

下圖顯示了經過第 1 級和第 2 級設計規則檢查(DRC)且無錯誤後的典型DRC 日誌:包含形式狀態,以及 LUT、觸發器、區塊 RAM 和算術資源的預估使用量。

成功通過第 1 級與第 2 級設計規則檢查

若要查看各模組使用了多少資源,請開啟「分析」→「檢視 FPGA 資源」。此時會顯示「FPGA 資源估算」對話方塊,其中包含整個設計以及各模組的預估資源分配明細。您可以將此表格匯出為 CSV 檔案。若要僅查看所選模組的 FPGA 資源,請開啟該模組的快顯選單,並選擇「FPGA 資源」。另請參閱《使用者手冊》中的「FPGA 資源估算」章節。

若 DRC 日誌顯示有問題,請參照 DRC 訊息,並結合標示出的模組或連結來修正錯誤。更多詳細資訊,請參閱《使用者手冊》中的「設計規則檢查」章節。

在設計窗格中,紅色連結標示會標出影像路徑上的形式設計錯誤。在「連結屬性」或「模組屬性」對話方塊中,標有紅色的連結也會顯示工具提示訊息,說明特定錯誤類型的詳細資訊。

VisualApplets: 紅色連結

紫色 標記 違反同步規則 分支之間,例如 O 型網路規則。在將小程式部署至硬體之前,必須先修正紅色錯誤及紫色同步違規。若涉及訊號處理(即使用 Image Protocol = VALT_SIGNAL),允許使用紫色連結。

這些顏色並非代表整個設計的「交通燈」狀態。當您套用屬性變更後顯示的綠色連結,表示「VisualApplets 」已將更新的連結屬性傳播並驗證完成。綠色本身並不代表設計已準備好進行建置。請參閱「連結屬性傳播」教學主題。

VisualApplets: 紫色連結

有關連結規則的更多詳細資訊,請參閱《使用者手冊》中的「連結規則」以及「運算子類型與同步化教學」章節。

模擬與 DRC 的比較#

若 DRC 第 1 級報告有錯誤,則無法啟動模擬。警告(包括同步警告)不會阻礙模擬進行。紅色狀態表示發生錯誤並會停止模擬。紫色狀態則標示同步問題。在此情況下,您仍可進行模擬,但在硬體上使用該小程式之前,應先修正這些問題。

即使 DRC 1 級和 2 級檢查均未出現錯誤,模擬仍可能失敗。例如,當載入的影像寬度不是鏈路並行度的整數倍,或影像尺寸超出鏈路上設定的最大影像尺寸時,模擬便會失敗。要解決這些問題,請將模擬影像大小調整至符合這些限制,或調整鏈路屬性。

下圖顯示了DRC 第 1 級中的錯誤:

設計規則檢查第 1 級出現錯誤

下圖顯示了DRC 第 2 級中的錯誤:

設計規則檢查第 2 級出現錯誤

Simulation#

在設計過程中,模擬功能會將測試影像傳送至處理流程,讓您無需硬體即可檢視中間結果。您可以新增模擬來源來導入影像,並新增模擬探針以檢視特定鏈路的資料。VisualApplets 將測試影像預設儲存於%VASINSTALLDIR%/testimages 目錄下。您也可以將自有的影像載入至模擬來源中。TIFF為首選格式,但VisualApplets 亦支援載入許多其他常見格式的影像。

在VisualApplets

當您從「分析」→「開始模擬」或工具列控制項啟動模擬時,VisualApplets 會自動執行DRC 第一級檢查。模擬視窗會列出有效的源與探針,並在下方窗格中顯示 DRC 第一級檢查的結果。雖然進行模擬時不需要DRC 第二級檢查,但 Basler 建議您在編譯 Applet 之前先執行 DRC 第二級檢查,以便取得 FPGA 資源估算值。 有關所有其他模擬選項、模式及視窗的詳細資訊,請參閱《使用者手冊》中的「模擬」章節。

您可以在單一模擬工作階段中執行多個模擬週期:在「模擬」視窗中,設定「處理週期」並按一下「開始」。若模擬來源僅包含一張影像,VisualApplets 會將該影像重複用於每個週期;若來源包含多張影像,每個新週期將依序使用下一張影像。處理完最後一張影像後,序列將從第一張重新開始。

對於影像資料路徑上的像素值,模擬結果通常與被測資料的硬體表現相符。在「模擬探針」中,您可以透過放大功能詳細檢視像素。諸如影像直方圖等工具,可協助您解讀像素資料。

模擬無法呈現所有硬體效應。死鎖、緩衝區容量不足、共用 DRAM 頻寬限制,以及某些溢出情況,往往僅會出現在幀擷取器上。成功的模擬無法取代在硬體上進行的執行時測試。

建立硬體小程式#

當您進行設計建置時,VisualApplets 會將該設計轉換為 FPGA 位元流,並與執行時軟體介面的內容一併封裝成一個名為「硬體小程式」的檔案。建置過程需要建置電腦上已安裝並配置好受支援的 AMD/Xilinx 工具鏈。請根據您的平台及VisualApplets 版本選用 Vivado。關於哪些工具鏈版本適用於哪些幀擷取卡平台,請參閱《VisualApplets 安裝指南》。有關建置硬體小程式的詳細說明,請參閱《使用者手冊》中的「建置」章節。

建置所需時間取決於 FPGA 邏輯的使用量、硬體目標平台以及設計的複雜程度。簡單的範例可能只需幾分鐘即可完成,而大型設計則可能需要數小時。當建置成功時,產出的*.hap檔案通常與設計檔案使用相同的基礎名稱。例如,Sobel_Filter.vad會產生Sobel_Filter.hap。

燒錄、執行時載入與主機軟體#

對於 microEnable 5 系列開發板,您必須使用microDiagnostics ,以便板上的韌體分區包含您的*.hap檔案。至於 microEnable 6 系列板卡,則需將程式載入至硬體中。有關如何使用 microDiagnosticsFramegrabber SDK 中的工具將小程式燒錄或載入至幀擷取卡的說明,請參閱 microDiagnostics 中的《小程式管理》。

若要使用內建的硬體小程式,請在 microDisplay X中開啟該小程式。microDisplay X 中的參數樹反映了設計中的模組名稱,因此請在VisualApplets 中選擇明確的模組名稱。動態參數會顯示於此處。您可以在資料擷取過程中變更某些參數,但其他參數則必須在擷取開始前設定。DMA 尺寸便是典型的例子。您也可以在擷取過程中變更其他參數,例如閾值。

有關microDisplay X 的功能與擷取行為,請參閱 microDisplay XFramegrabber SDK 文件中的相關說明。

或者,您可以透過 Framegrabber API。VisualApplets 可透過「建置」及「產生 SDK 範例」功能,產生 C++ 範例專案。這些專案包含初始化、記憶體分配、Fg_setParameterWithType/Fg_getParameterWithType呼叫、資料擷取的啟動與停止,以及清理程序。請參閱 Framegrabber SDK 《使用者手冊》中的說明,了解如何產生 SDK 範例。

請將生成的程式碼視為起點。請查閱Framegrabber SDK 文件中的 API 參考資料,例如basler_fg.h以及 Framegrabber API 簡介。

設計時與執行時#

在設計階段,您可以編輯圖形化管線、設定靜態與動態參數、定義連結屬性、執行DRC第 1 級與第 2 級檢查,以及進行模擬。每次啟動模擬時,VisualApplets 都會自動執行 DRC 第 1 級檢查。您還會將建置輸出產生為*.hap檔案。

在執行階段,主機軟體會載入該小程式、設定動態參數,並啟動資料擷取。在「VisualApplets 」設計中定義的操作員名稱與層級結構,也會應用於參數樹和 API 中。一致的命名規範與文件說明有助於系統整合商,並簡化現場調校作業。

VisualApplets 工作流程