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