作者:Giulio Corradi 博士
賽靈思? PYNQ 框架能在 Zynq? 產品系列中實現對Python 語言及運行時的全面支持與集成。直接在 Zynq SoC 架構上利用 Python 的生產力優勢,用戶能夠充分發揮可編程邏輯和微處理器的長處,更容易為人工智能、機器學習和信息技術應用構建設計。
摘要
從工程設計、科研、數據科學、機器學習、信息技術到人工智能,Python 開源編程語言已經成為各類應用中的不成文標準。
當在嵌入式應用中使用現代片上系統 (SoC) 時,就能夠運行 Python 執行復雜的分析算法,其性能接近臺式機工作站,但外形尺寸顯著縮小,功耗要求也顯著降低。通過預處理從傳感器讀取的數據,賽靈思? Zynq 產品系列大幅度提高性能和確定性,同時降低時延。
這種被稱為 PYNQ 框架方案,能從應用處理器有效卸載不必要占用處理器帶寬的大量重要但重復的操作。這種卸載功能對于滿足工業物聯網中邊緣應用提高的智能需求有重要意義。
嵌入式計算的新范例
近期的 IEEE 調查報告稱 2017 年最流行的兩種編程語言分別是 Python 和 C 語言。在嵌入式計算領域,C 語言一直以來都是中堅力量。傳統上來說,我們一直將 Python 語言用于網絡或臺式機計算,而從未用作嵌入式計算語言;但是這種情況正在發生改變。
Python 及其相關框架能支持用于數據分析、機器學習(ML)和人工智能(AI)應用的復雜算法的開發。當然,這些應用屬于嵌入式計算領域的熱點話題,而且它們正在促使 Python 得到采用,特別是在邊緣工業物聯網 (IIoT) 領域的普及。
C、C++ 和 Python 緊密相連,因為 Python 本身也依賴 C 和 C++ 用來提供最核心的庫。但是,C 和C++ 屬于編譯型語言,能夠在裸機上執行。Python 在這點上則與之不同,是一種解釋型語言。這種差異在嵌入式計算中為自身帶來了挑戰:例如,Python 需要操作系統(一般是Linux),另外還需要易失性和非易失性存儲器資源。
在工業物聯網邊緣嵌入式計算領域,ML 和 AI 的實現日趨傾向于發揮數字孿生體 (1) 與物理致動器的功用。因此,解決方案必須能夠實時以低確定性時延做出響應。此外,工業物聯網解決方案也必須能夠支持其他行業趨勢,例如:
? 根據待解決問題在實時處理器、應用處理器和專用處理單元間進行分區
? 為專用處理器卸載引擎創建接口,從而為性能關鍵內核提速
? 使用 Linux 等標準操作系統
? 提供具備調度功能和確定性的解決方案
? 為原型設計和生產提供高生產力框架
? 覆蓋標準和傳統網絡通信接口與協議,包括 IT、OT 融合網絡。
? 為機器學習和分析提供豐富的庫
? 功能安全性
? 網絡安全
構建工業物聯網平臺絕非易事。從物理環境的邊緣到云(包括 AI 和 ML)的整個鏈條是復雜的,并需要多種專業能力。因此,開發工業物聯網就要求使用更高水平的抽象,而這種抽象水平又要與項目涉及的不同工作職能相關聯,才能讓開發在可接受的時間預算和成本預算內完成。參見圖 1。
圖 1:同一平臺的不同抽象水平
在工業物聯網中探索機器學習
工業物聯網解決方案越來越多地在邊緣納入嵌入式智能。對于眾多應用而言,這意味著機器學習推斷的實現。實現后,ML 算法會利用其經驗,根據一套輸入數據得出結論。在 ML 中,經驗可通過名為培訓的學習過程來獲得。ML 應用的培訓可使用下列兩種方法之一執行:(1) 人工監督或 (2) 實現判斷功能。兩種方法都需要將由正反例構成的大數據集應用于 ML 網絡。在 ML 算法得到充分培訓后,就能將其部署在工業物聯網邊緣,根據新輸入和未知輸入進行推斷。
工業物聯網解決方案應用從 ML 的使用中獲益匪淺,尤其是對于那些傳統方法不能提供可接受的性能的應用或者需要大量人工干預的應用,例如再校準、維護、診斷和故障安全保護操作。這些應用具體包括:
? 傳感器與測量系統
? 系統識別
? 機器學習系統控制
? 高級信號處理
? 自主系統的強化學習
? 圖像處理
因此,開發 ML 解決方案需要具備有足夠通用性的平臺和生態系統,才能支持完整的開發模型,而不僅僅支持解決方案的獨立單元。
PYNQ 框架
賽靈思 Zynq-7000 SoC 包含用來為現代 SoC 提供不成文標準特性的雙核 Arm? Cortex?-A9 處理器系統 (PS) 和可編程邏輯 (PL),同時它還提供獨特的高度差異化靈活性,支持將關鍵任務卸載到PL 。Zynq UltraScale+ MPSoC 和 Zynq UltraScale+ RFSoC 使用四核 Arm Cortex-A53 PS、PL 和其他特定部件型號的處理塊進一步擴展這一模型。
PS 和 PL 間的緊密耦合能實現比傳統方法響應性更好、可重配置性更強、能效更高的系統。基于 CPU 的傳統方法需要使用外部存儲器來共享鏡像等大型數據結構。因為需要片外仲裁和通信,這樣做會降低確定性并增大功耗與時延,Zynq 產品系列中提供的異構片上系統器件允許設計人員在器件的 PL 內為功能提速。這樣,提供的解決方案不僅擁有確定性響應時間,還能降低時延,優化功耗。參見圖 2。
圖 2:與典型 SoC 相比 Zynq 產品系列的優勢
使用 PL 能提供比傳統 CPU 方法更豐富的接口功能,因為后者只提供固定接口。PL I/O 結構的靈活性可支持業界標準、專有或傳統接口,從而實現任意連接。
在高級綜合工具 SDSoC? 和 Vivado? HLS 的幫助下,開發人員能夠把 C 和 C++ 編譯代碼直接轉化為硬件。
結合可編程邏輯中功能的加速,還能夠實例化一個或更多的 MicroBlaze? 32 位軟核處理器。MicroBlaze 核允許執行實時關鍵應用。這些功能讓 Zynq 產品系列可用來滿足支持 Python的嵌入式平臺的所有要求。
PYNQ 框架支持 Python 能與 Zynq 產品系列一起使用,可充分發揮可編程邏輯提供的加速功能。為實現這一點,PYNQ 采用了將 PL 疊加封裝成混合庫的方式。
混合庫是一種全新形式的庫,包含疊加比特流和與之相關視硬件而定的 C 代碼和 Python API。混合庫是實現重復使用的關鍵機制,使用 PIP Install(用于安裝和管理使用 Python 編寫的軟件包的封裝管理系統)就能輕松安裝。
因此,PYNQ 框架為數據科學家、嵌入式工程師、硬件工程師和系統工程師等所有開發人員提供了所需的必要抽象層次。參見圖 3。
圖 3:PYNQ 框架中不斷提高的抽象水平
PYNQ 框架率先結合下列要素,能簡化和改進基于 Zynq 產品系列的設計:
? 高層次生產力語言 (Python)
? 在可編程邏輯內實現加速的混合庫
? 受嵌入式處理器支持的基于 Web 的架構
? Jupyter Notebook 框架
與不能使用可編程邏輯的傳統 SoC 方法相比,依托這些要素的 PYNQ 框架擁有顯著優勢。
數據科學家能立刻把由賽靈思用熟悉的封裝在 Python 框架里創建的系統投入使用。圖 3 展示了可以使用一些標準封裝的堆棧。Panda、Scikit-learn 和 NumPy 位于頂層,其他封裝則提供專門功能,比如用于機器人的 ROS 和用于仿真的 SimPy。
Python 能夠導入一個或多個隨時可用的預配置硬件模塊,為應用加速并消除瓶頸。所有封裝都能在Jupyter 環境中進行嘗試和使用,并可使用基于 FPGA 疊加的硬件庫接口連接到可編程邏輯。
PYNQ 框架是圍繞開源社區設計的,開發人員在該社區可以創建和共享疊加。使用這種方法,開發人員在確認需要新疊加之前不需要構建疊加。也就是說,在運行所需功能的疊加不存在時才需要構建它。每個新疊加都應嚴格遵循為工業物聯網確立的“設計模式”。這些設計模式包括(但不僅限于)下列模式:
加速器為計算提速-與主處理器共享和/或交換數據。根據數據大小和性能要求,數據交換可以在PL 存儲器內(塊 RAM)、片上存儲器內 (COM)、L2 高速緩存內和 DDR 存儲器內進行。
日志記錄器負責采集數據,一般是與主處理器共享的原始數據。根據數據大小和性能要求,日志記錄可以在 PL 存儲器內(塊 RAM)、片上存儲器內 (COM)、L2 高速緩存內和 DDR 存儲器內進行。采集過程可以通過明確觸發來自主處理器的事件或通過捕獲外部事件來啟動。
定序器生成邏輯值的自動序列;根據復雜程度,這其中可包含用于實現布爾函數、FSM 和/或仲裁數字模式的可編程生成器實例。
運行器提供可用 C/C++ 語言進行編程的基于 MicroBlaze 32 位軟核處理器的實時控制功能,用于從主處理器卸載重復性任務以確保確定性。
可以把運行器用作安全模塊。可配置 MicroBlaze 處理器用于鎖步操作。雖然整個 Zynq 產品系列都針對功能安全性進行了精心設計,但當產品從最初的原型設計進入到可生產階段時,這一功能尤為重要。
傳感器與測量系統
傳感器是任何工業系統,尤其是工業物聯網解決方案的關鍵組成部分。從簡單的溫度測量熱電偶,到結合多個異構傳感器的用來測量特定物理量的復雜傳感器融合,工業物聯網解決方案采用多種不同的傳感器模態。在工業物聯網解決方案中實現 ML,有助于開發人員讓給定傳感器發揮出最佳性能,同時提高下列操作的效率:
? 傳感器數據采集(例如:振動分析)
? 傳感器數據標準化
? 傳感器線性化
? 傳感器診斷
? 高級傳感器
? 傳感器融合
? 校準與自校準
傳感器診斷
因為老化原因,傳感器性能在整個工作壽命期間會發生變化。傳感器在惡劣環境中使用時尤其如此,此時老化會影響可靠性,并帶來偏離和偏差問題。此外,如果將傳感器用于安全應用,傳感器診斷功能同樣極為有用;在此情況下,正確的診斷流程也是安全系統的組成部分。
通過使用 ML,設計人員能夠創建傳感器模型,或更為普遍的說法,即數字孿生,在持續監控實際傳感器輸出的同時預測傳感器輸出。在額定條件下,傳感器信號遵循某種已知模式,且伴隨系統與測量噪聲導致的一定程度的不確定性。但是,如果傳感器失效,觀察到的輸出就會與預測輸出相左,并且當偏差越過指定時序或閾值時,就可以明確聲明傳感器失效。由于分析冗余技術允許使用工作在額定條件下的傳感器提供的信息為動態系統創建模型,因此“數字孿生”不會老化或失效,會永久存續。
預測性維護用例:用于診斷與安全的滾珠軸承故障檢測
封裝材料行業已經認識到“全面生產維護”作為提高設備可靠性的積極方法體系的重要意義。逐漸發生的軸承失效是行業故障最主要的原因之一。因此,盡早地檢測這些故障對確保可靠高效的運營而言至關重要。單個包裝機往往就裝有 8 部以上的電動機和眾多主軸,存在可能導致生產線停運的多個故障源。
滾珠軸承能確保軸以最小摩擦自由轉動,同時讓軸保持在正確位置上。如果旋轉系統的滾珠軸承失效,后果將不堪設想。造成軸承受損的原因有很多,包括:
? 軸承錯位
? 微動磨損,對軸承接觸面的一種侵蝕性破壞
? 變頻驅動,產生導致點蝕、槽蝕和弧坑的軸電流
? 軸承潤滑不當
? 軸承侵蝕
? 軸承疲勞
? 高溫和其他因素
在故障發生之前檢測此類故障,對于降低運營成本和維護成本而言有極為重要的意義。幸運的是,低成本加速計的問世提供高帶寬測量,能支持功能極為強大的振動數據采集系統。將這些加速計與先進的電動機控制功能共同部署,便可基于 PYNQ 框架實現偵測系統,實時檢測可能的失效。
對于本應用而言,PYNQ 架構部署在 ARTY-Z7 電路板上。該電路板支持基于 PYNQ 的疊加,但這只僅僅是 PYNQ 框架的可能的用途之一。在本例中,系統設置包含一個高性能電動機控制系統和一個由 5 個 Kionix(1) 三軸加速計構成的采集系統。
可以使用多種技術進行振動監測,其中包括振動測量、聲學測量、溫度測量和磨損分析。使用硅微加速計為感應全部三個軸向的振動提供了低成本的方法,從而能夠全面掌握系統中發生的所有可能的振動模式。具體如圖 4所示。
為了確保測量準確,加速計位置應貼近電動機、齒輪箱和主滑輪內的滾珠軸承。
電動機電流、定子電壓和軸角度位置等系統參數均在監測范圍內。將電動機模型用于估算角度和內部電壓。
圖 4:故障檢測與電動機控制
如圖 5 所示,使用下列單元為 PYNQ 環境創建了新的疊加:
? 電動機控制系統:實例化為使用 QDESYS(www.qdesys.com)高性能電動機控制 IP 集的HDL 塊。
? 日志記錄器:實例化為 Vivado HLS 模塊,并連接高性能 AXI 總線 0。
? 即時高速傅立葉轉換 (FFT):實例化為 Vivado HLS 模塊,并連接高性能 AXI 總線 0。
? 運行器:用于解耦和管理加速度計,采用 MicroBlaze 軟核處理器實現并以 DDR 存儲器內共享段的形式對外提供。MicroBlaze 處理器:從 ARM 處理器分擔加速度計管理工作。I2C 協議對這些單元進行區別對待,分別補償偏置、靈敏度、溫度和比率誤差。
圖 5:捕獲與電動機控制內部模塊
為實現能與 PYNQ 框架配合的新疊加,使用了Python C 外部函數接口 (CFFI)。在使用 Python 時,該接口支持與幾乎任何 C 代碼進行交互。可編程邏輯加速功能置于 PYNQ 框架內,并且可以訪問該框架下基于 C/C++ 的軟件驅動程序。PYNQ 框架也提供在開發應用時有所幫助的補充功能。PYNQ 的兩大核心功能包括:
(a) mmio:用于實現存儲器映射 I/O,以及 xlnk:將 DDR 存儲器分配為 NumPy(使用 Python開展科學計算的基本庫)可見的緩存空間。xlnk 負責為 PL(用于映射登記的向量)獲取虛擬地址和物理地址。
舉個簡單的例子,可以借助觀察通過電動機的電流,來建立加速度計輸出的振動信號與檢測到的振動信號間的關聯關系,因此開展傳統的振動分析或是更先進的信號特征分析就可以建立這一關聯。
具體指標及整體系統的描述將占盡單獨一本白皮書的篇幅,故不在本白皮書中詳述。作為展示,圖 6體現了超過閾值的滾珠軸承頻率限值信號由圖 7 中看似正常的電流波形中提取的。
圖 6:使用電流信號特征的振動分析
圖 7:三相電動機的波形(滾珠軸承信號特征被噪聲淹沒)
上述示例證明,只要正確理解了問題和 Zynq 產品系列特性,就能開展切實的高級診斷,為具備機器學習功能的工業物聯網系統敞開通向更智能方法的大門。
結論
本白皮書僅涵蓋 PYNQ 框架的一些基礎知識,該框架將 Python 與 Zynq 組合結合為一體。PYNQ 框架提供了新的切實可能性,有助于打造能夠充分利用工業物聯網全部功能,以及機器學習提供的新興功能的系統。
邊緣計算機器學習的發展尚處于萌芽階段,而賽靈思致力于交付一流的產品和設計框架,以加快和簡化智能和自適應資產的設計、部署與維護。這僅僅是動人旅程的開端,本白皮書中提及的許多話題將在后續的白皮書、應用說明和示例中詳細介紹。其中一部分已經在 PYNQ GitHub 庫里提供。
入門
? PYNQ 框架見 http://www.pynq.io 。
? 本白皮書里介紹的Arty Z7 板系由 Digilent 公司提供,見:store.digilentinc.com/arty-z7-apsoc-zynq-7000-development-board-for-makers-and-hobbyists/
? 含 Arty Z7 板、用于電動機控制的電源模塊以及 BLDC 電動機的套件見:https://shop.trenzelectronic.de/en/TEC0053-04-K1-EDDP-Motor-Control-Kit- with-Motor-Power-Supplies
編輯:hfy
-
處理器
+關注
關注
68文章
19166瀏覽量
229149 -
賽靈思
+關注
關注
32文章
1794瀏覽量
131166 -
三相電動機
+關注
關注
2文章
65瀏覽量
12394 -
python
+關注
關注
56文章
4782瀏覽量
84456 -
Zynq
+關注
關注
9文章
608瀏覽量
47128
發布評論請先 登錄
相關推薦
評論