關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 業(yè)界動(dòng)態(tài) > Python 生產(chǎn)力價(jià)值:賽靈思 Zynq 產(chǎn)品組合 的前沿優(yōu)勢(shì)分析

Python 生產(chǎn)力價(jià)值:賽靈思 Zynq 產(chǎn)品組合 的前沿優(yōu)勢(shì)分析

作者:Giulio Corradi 博士 時(shí)間:2019-05-27 來(lái)源:電子產(chǎn)品世界 收藏

嵌入式計(jì)算的新范例

本文引用地址:http://2s4d.com/article/201905/400878.htm

近期的 IEEE 調(diào)查報(bào)告稱 2017 年最流行的兩種編程語(yǔ)言分別是 Python 和 C 語(yǔ)言。在嵌入式計(jì)算領(lǐng)域,C 語(yǔ)言一直以來(lái)都是中堅(jiān)力量。傳統(tǒng)上來(lái)說(shuō),我們一直將 Python 語(yǔ)言用于網(wǎng)絡(luò)或臺(tái)式機(jī)計(jì)算,而從未用作嵌入式計(jì)算語(yǔ)言;

但是這種情況正在發(fā)生改變。

Python 及其相關(guān)框架能支持用于數(shù)據(jù)分析、機(jī)器學(xué)習(xí)(ML)和人工智能(AI)應(yīng)用的復(fù)雜算法的開發(fā)。當(dāng)然,這些應(yīng)用屬于嵌入式計(jì)算領(lǐng)域的熱點(diǎn)話題,而且它們正在促使 Python 得到采用,特別是在邊緣工業(yè)物聯(lián)網(wǎng) (IIoT) 領(lǐng)域的普及。

C、C++ 和 Python 緊密相連,因?yàn)?Python 本身也依賴 C 和 C++ 用來(lái)提供最核心的庫(kù)。但是,C 和 C++ 屬于編譯型語(yǔ)言,能夠在裸機(jī)上執(zhí)行。Python 在這點(diǎn)上則與之不同,是一種解釋型語(yǔ)言。這種差異在嵌入式計(jì)算中為自身帶來(lái)了挑戰(zhàn):例如,Python 需要操作系統(tǒng)(一般是 Linux),另外還需要易失性和非易失性存儲(chǔ)器資源。

在工業(yè)物聯(lián)網(wǎng)邊緣嵌入式計(jì)算領(lǐng)域,ML 和 AI 的實(shí)現(xiàn)日趨傾向于發(fā)揮數(shù)字孿生體 (1) 與物理致動(dòng)器的功用。因此,解決方案必須能夠?qū)崟r(shí)以低確定性時(shí)延做出響應(yīng)。此外,工業(yè)物聯(lián)網(wǎng)解決方案也必須能夠支持其他行業(yè)趨勢(shì),例如:

·根據(jù)待解決問(wèn)題在實(shí)時(shí)處理器、應(yīng)用處理器和專用處理單元間進(jìn)行分區(qū)

·為專用處理器卸載引擎創(chuàng)建接口,從而為性能關(guān)鍵內(nèi)核提速

·使用 Linux 等標(biāo)準(zhǔn)操作系統(tǒng)

·提供具備調(diào)度功能和確定性的解決方案

·為原型設(shè)計(jì)和生產(chǎn)提供高生產(chǎn)力框架

·覆蓋標(biāo)準(zhǔn)和傳統(tǒng)網(wǎng)絡(luò)通信接口與協(xié)議,包括 IT、OT 融合網(wǎng)絡(luò)。

·為機(jī)器學(xué)習(xí)和分析提供豐富的庫(kù)

·功能安全性

·網(wǎng)絡(luò)安全

構(gòu)建工業(yè)物聯(lián)網(wǎng)平臺(tái)絕非易事。從物理環(huán)境的邊緣到云(包括 AI 和 ML)的整個(gè)鏈條是復(fù)雜的,并需要多種專業(yè)能力。因此,開發(fā)工業(yè)物聯(lián)網(wǎng)就要求使用更高水平的抽象,而這種抽象水平又要與項(xiàng)目涉及的不同工作職能相關(guān)聯(lián),才能讓開發(fā)在可接受的時(shí)間預(yù)算和成本預(yù)算內(nèi)完成。參見(jiàn)圖 1。

1558922038760296.png

圖 1:同一平臺(tái)的不同抽象水平

在工業(yè)物聯(lián)網(wǎng)中探索機(jī)器學(xué)習(xí)

工業(yè)物聯(lián)網(wǎng)解決方案越來(lái)越多地在邊緣納入嵌入式智能。對(duì)于眾多應(yīng)用而言,這意味著機(jī)器學(xué)習(xí)推斷的實(shí)現(xiàn)。實(shí)現(xiàn)后,ML 算法會(huì)利用其經(jīng)驗(yàn),根據(jù)一套輸入數(shù)據(jù)得出結(jié)論。在 ML 中,經(jīng)驗(yàn)可通過(guò)名為培訓(xùn)的學(xué)習(xí)過(guò)程來(lái)獲得。ML 應(yīng)用的培訓(xùn)可使用下列兩種方法之一執(zhí)行:(1) 人工監(jiān)督或 (2) 實(shí)現(xiàn)判斷功能。兩種方法都需要將由正反例構(gòu)成的大數(shù)據(jù)集應(yīng)用于 ML 網(wǎng)絡(luò)。在 ML 算法得到充分培訓(xùn)后,就能將其部署在工業(yè)物聯(lián)網(wǎng)邊緣,根據(jù)新輸入和未知輸入進(jìn)行推斷。

工業(yè)物聯(lián)網(wǎng)解決方案應(yīng)用從 ML 的使用中獲益匪淺,尤其是對(duì)于那些傳統(tǒng)方法不能提供可接受的性能的應(yīng)用或者需要大量人工干預(yù)的應(yīng)用,例如再校準(zhǔn)、維護(hù)、診斷和故障安全保護(hù)操作。這些應(yīng)用具體包括:

·傳感器與測(cè)量系統(tǒng)

·系統(tǒng)識(shí)別

·機(jī)器學(xué)習(xí)系統(tǒng)控制

·高級(jí)信號(hào)處理

·自主系統(tǒng)的強(qiáng)化學(xué)習(xí)

·圖像處理

因此,開發(fā) ML 解決方案需要具備有足夠通用性的平臺(tái)和生態(tài)系統(tǒng),才能支持完整的開發(fā)模型,而不僅僅支持解決方案的獨(dú)立單元。

賽靈思 Zynq-7000 SoC 包含用來(lái)為現(xiàn)代 SoC 提供不成文標(biāo)準(zhǔn)特性的雙核 Arm? Cortex?-A9 處理器系統(tǒng) (PS) 和可編程邏輯 (PL),同時(shí)它還提供獨(dú)特的高度差異化靈活性,支持將關(guān)鍵任務(wù)卸載到 PL 。Zynq UltraScale+ MPSoC 和 Zynq UltraScale+ RFSoC 使用四核 Arm Cortex-A53 PS、PL 和其他特定部件型號(hào)的處理塊進(jìn)一步擴(kuò)展這一模型。

PS 和 PL 間的緊密耦合能實(shí)現(xiàn)比傳統(tǒng)方法響應(yīng)性更好、可重配置性更強(qiáng)、能效更高的系統(tǒng)?;?CPU 的傳統(tǒng)方法需要使用外部存儲(chǔ)器來(lái)共享鏡像等大型數(shù)據(jù)結(jié)構(gòu)。因?yàn)樾枰庵俨煤屯ㄐ?,這樣做會(huì)降低確定性并增大功耗與時(shí)延,Zynq 產(chǎn)品組合中提供的異構(gòu)片上系統(tǒng)器件允許設(shè)計(jì)人員在器件的 PL 內(nèi)為功能提速。這樣,提供的解決方案不僅擁有確定性響應(yīng)時(shí)間,還能降低時(shí)延,優(yōu)化功耗。參見(jiàn) 圖 2。

1558922002881108.png

圖 2:與典型 SoC 相比 Zynq 產(chǎn)品組合的優(yōu)勢(shì)

使用 PL 能提供比傳統(tǒng) CPU 方法更豐富的接口功能,因?yàn)楹笳咧惶峁┕潭ń涌?。PL I/O 結(jié)構(gòu)的靈活性可支持業(yè)界標(biāo)準(zhǔn)、專有或傳統(tǒng)接口,從而實(shí)現(xiàn)任意連接。

在高級(jí)綜合工具 SDSoC? 和 Vivado? HLS 的幫助下,開發(fā)人員能夠把 C 和 C++ 編譯代碼直接轉(zhuǎn)化為硬件。

結(jié)合可編程邏輯中功能的加速,還能夠?qū)嵗粋€(gè)或更多的 MicroBlaze? 32 位軟核處理器。MicroBlaze 核允許執(zhí)行實(shí)時(shí)關(guān)鍵應(yīng)用。這些功能讓 Zynq 產(chǎn)品組合可用來(lái)滿足支持 Python 的嵌入式平臺(tái)的所有要求。

PYNQ 框架支持 Python 能與 Zynq 產(chǎn)品組合一起使用,可充分發(fā)揮可編程邏輯提供的加速功能。為實(shí)現(xiàn)這一點(diǎn),PYNQ 采用了將 PL 疊加封裝成混合庫(kù)

的方式?;旌蠋?kù)是一種全新形式的庫(kù),包含疊加比特流和與之相關(guān)視硬件而定的 C 代碼和 Python API?;旌蠋?kù)是實(shí)現(xiàn)重復(fù)使用的關(guān)鍵機(jī)制,使用 PIP Install(用于安裝和管理使用 Python 編寫的軟件包的封裝管理系統(tǒng))就能輕松安裝。

因此,PYNQ 框架為數(shù)據(jù)科學(xué)家、嵌入式工程師、硬件工程師和系統(tǒng)工程師等所有開發(fā)人員提供了所需的必要抽象層次。參見(jiàn)圖 3。

1558921971192719.png

圖 3:PYNQ 框架中不斷提高的抽象水平

PYNQ 框架率先結(jié)合下列要素,能簡(jiǎn)化和改進(jìn)基于 Zynq 產(chǎn)品組合的設(shè)計(jì):

·高層次生產(chǎn)力語(yǔ)言 (Python)

·在可編程邏輯內(nèi)實(shí)現(xiàn)加速的混合庫(kù)

·受嵌入式處理器支持的基于 Web 的架構(gòu)

·Jupyter Notebook 框架

與不能使用可編程邏輯的傳統(tǒng) SoC 方法相比,依托這些要素的 PYNQ 框架擁有顯著優(yōu)勢(shì)。

數(shù)據(jù)科學(xué)家能立刻把由賽靈思用熟悉的封裝在 Python 框架里創(chuàng)建的系統(tǒng)投入使用。圖 3展示了可以使用一些標(biāo)準(zhǔn)封裝的堆棧。Panda、Scikit-learn 和 NumPy 位于頂層,其他封裝則提供專門功能,比如用于機(jī)器人的 ROS 和用于仿真的 SimPy。

Python 能夠?qū)胍粋€(gè)或多個(gè)隨時(shí)可用的預(yù)配置硬件模塊,為應(yīng)用加速并消除瓶頸。所有封裝都能在 Jupyter 環(huán)境中進(jìn)行嘗試和使用,并可使用基于 FPGA 疊加的硬件庫(kù)接口連接到可編程邏輯。

PYNQ 框架是圍繞開源社區(qū)設(shè)計(jì)的,開發(fā)人員在該社區(qū)可以創(chuàng)建和共享疊加。使用這種方法,開發(fā)人員在確認(rèn)需要新疊加之前不需要構(gòu)建疊加。也就是說(shuō),在運(yùn)行所需功能的疊加不存在時(shí)才需要構(gòu)建它。每個(gè)新疊加都應(yīng)嚴(yán)格遵循為工業(yè)物聯(lián)網(wǎng)確立的“設(shè)計(jì)模式”。這些設(shè)計(jì)模式包括(但不僅限于)下列模式:

·加速器為計(jì)算提速-與主處理器共享和/或交換數(shù)據(jù)。根據(jù)數(shù)據(jù)大小和性能要求,數(shù)據(jù)交換可以在 PL 存儲(chǔ)器內(nèi)(塊 RAM)、片上存儲(chǔ)器內(nèi) (COM)、L2 高速緩存內(nèi)和 DDR 存儲(chǔ)器內(nèi)進(jìn)行。

·日志記錄器負(fù)責(zé)采集數(shù)據(jù),一般是與主處理器共享的原始數(shù)據(jù)。根據(jù)數(shù)據(jù)大小和性能要求,日志記錄可以在 PL 存儲(chǔ)器內(nèi)(塊 RAM)、片上存儲(chǔ)器內(nèi) (COM)、L2 高速緩存內(nèi)和 DDR 存儲(chǔ)器內(nèi)進(jìn)行。采集過(guò)程可以通過(guò)明確觸發(fā)來(lái)自主處理器的事件或通過(guò)捕獲外部事件來(lái)啟動(dòng)。

·定序器生成邏輯值的自動(dòng)序列;根據(jù)復(fù)雜程度,這其中可包含用于實(shí)現(xiàn)布爾函數(shù)、FSM 和/或

仲裁數(shù)字模式的可編程生成器實(shí)例。

·運(yùn)行器提供可用 C/C++ 語(yǔ)言進(jìn)行編程的基于 MicroBlaze 32 位軟核處理器的實(shí)時(shí)控制功能,用于從主處理器卸載重復(fù)性任務(wù)以確保確定性。

·可以把運(yùn)行器用作安全模塊??膳渲?MicroBlaze 處理器用于鎖步操作。雖然整個(gè) Zynq 產(chǎn)品組合都針對(duì)功能安全性進(jìn)行了精心設(shè)計(jì),但當(dāng)產(chǎn)品從最初的原型設(shè)計(jì)進(jìn)入到可生產(chǎn)階段時(shí),這一功能尤為重要。

傳感器與測(cè)量系統(tǒng)

傳感器是任何工業(yè)系統(tǒng),尤其是工業(yè)物聯(lián)網(wǎng)解決方案的關(guān)鍵組成部分。從簡(jiǎn)單的溫度測(cè)量熱電偶,到結(jié)合多個(gè)異構(gòu)傳感器的用來(lái)測(cè)量特定物理量的復(fù)雜傳感器融合,工業(yè)物聯(lián)網(wǎng)解決方案采用多種不同的傳感器模態(tài)。在工業(yè)物聯(lián)網(wǎng)解決方案中實(shí)現(xiàn) ML,有助于開發(fā)人員讓給定傳感器發(fā)揮出最佳性能,同時(shí)提高下列操作的效率:

·傳感器數(shù)據(jù)采集(例如:振動(dòng)分析)

·傳感器數(shù)據(jù)標(biāo)準(zhǔn)化

·傳感器線性化

·傳感器診斷

·高級(jí)傳感器

·傳感器融合

·校準(zhǔn)與自校準(zhǔn)

傳感器診斷

因?yàn)槔匣颍瑐鞲衅餍阅茉谡麄€(gè)工作壽命期間會(huì)發(fā)生變化。傳感器在惡劣環(huán)境中使用時(shí)尤其如此,此時(shí)老化會(huì)影響可靠性,并帶來(lái)偏離和偏差問(wèn)題。此外,如果將傳感器用于安全應(yīng)用,傳感器診斷功能同樣極為有用;在此情況下,正確的診斷流程也是安全系統(tǒng)的組成部分。

通過(guò)使用 ML,設(shè)計(jì)人員能夠創(chuàng)建傳感器模型,或更為普遍的說(shuō)法,即數(shù)字孿生,在持續(xù)監(jiān)控實(shí)際傳感器輸出的同時(shí)預(yù)測(cè)傳感器輸出。在額定條件下,傳感器信號(hào)遵循某種已知模式,且伴隨系統(tǒng)與測(cè)量噪聲導(dǎo)致的一定程度的不確定性。但是,如果傳感器失效,觀察到的輸出就會(huì)與預(yù)測(cè)輸出相左,并且當(dāng)偏差越過(guò)指定時(shí)序或閾值時(shí),就可以明確聲明傳感器失效。由于分析冗余技術(shù)允許使用工作在額定條件下的傳感器提供的信息為動(dòng)態(tài)系統(tǒng)創(chuàng)建模型,因此“數(shù)字孿生”不會(huì)老化或失效,會(huì)永久存續(xù)。

預(yù)測(cè)性維護(hù)用例:

用于診斷與安全的滾珠軸承故障檢測(cè)

封裝材料行業(yè)已經(jīng)認(rèn)識(shí)到“全面生產(chǎn)維護(hù)”作為提高設(shè)備可靠性的積極方法體系的重要意義。逐漸發(fā)生的軸承失效是行業(yè)故障最主要的原因之一。因此,盡早地檢測(cè)這些故障對(duì)確??煽扛咝У倪\(yùn)營(yíng)而言至關(guān)重要。單個(gè)包裝機(jī)往往就裝有 8 部以上的電動(dòng)機(jī)和眾多主軸,存在可能導(dǎo)致生產(chǎn)線停運(yùn)的多個(gè)故障源。

滾珠軸承能確保軸以最小摩擦自由轉(zhuǎn)動(dòng),同時(shí)讓軸保持在正確位置上。如果旋轉(zhuǎn)系統(tǒng)的滾珠軸承失效,

后果將不堪設(shè)想。造成軸承受損的原因有很多,包括:

·軸承錯(cuò)位

·微動(dòng)磨損,對(duì)軸承接觸面的一種侵蝕性破壞

·變頻驅(qū)動(dòng),產(chǎn)生導(dǎo)致點(diǎn)蝕、槽蝕和弧坑的軸電流

·軸承潤(rùn)滑不當(dāng)

·軸承侵蝕

·軸承疲勞

·高溫和其他因素

在故障發(fā)生之前檢測(cè)此類故障,對(duì)于降低運(yùn)營(yíng)成本和維護(hù)成本而言有極為重要的意義。幸運(yùn)的是,低成本加速計(jì)的問(wèn)世提供高帶寬測(cè)量,能支持功能極為強(qiáng)大的振動(dòng)數(shù)據(jù)采集系統(tǒng)。將這些加速計(jì)與先進(jìn)的電動(dòng)機(jī)控制功能共同部署,便可基于 PYNQ 框架實(shí)現(xiàn)偵測(cè)系統(tǒng),實(shí)時(shí)檢測(cè)可能的失效。

對(duì)于本應(yīng)用而言,PYNQ 架構(gòu)部署在 ARTY-Z7 電路板上。該電路板支持基于 PYNQ 的疊加,但這只僅僅是 PYNQ 框架的可能的用途之一。在本例中,系統(tǒng)設(shè)置包含一個(gè)高性能電動(dòng)機(jī)控制系統(tǒng)和一個(gè)由

 5 個(gè) Kionix(1) 三軸加速計(jì)構(gòu)成的采集系統(tǒng)。

可以使用多種技術(shù)進(jìn)行振動(dòng)監(jiān)測(cè),其中包括振動(dòng)測(cè)量、聲學(xué)測(cè)量、溫度測(cè)量和磨損分析。使用硅微加速計(jì)為感應(yīng)全部三個(gè)軸向的振動(dòng)提供了低成本的方法,從而能夠全面掌握系統(tǒng)中發(fā)生的所有可能的振動(dòng)模式。具體如圖 4所示。

為了確保測(cè)量準(zhǔn)確,加速計(jì)位置應(yīng)貼近電動(dòng)機(jī)、齒輪箱和主滑輪內(nèi)的滾珠軸承。

電動(dòng)機(jī)電流、定子電壓和軸角度位置等系統(tǒng)參數(shù)均在監(jiān)測(cè)范圍內(nèi)。將電動(dòng)機(jī)模型用于估算角度和內(nèi)部電壓。

1558921929517497.png

圖 4:故障檢測(cè)與電動(dòng)機(jī)控制

1.Kionix公司是一家微電子機(jī)械 (MEMS) 系統(tǒng)制造商,產(chǎn)品包括加速度計(jì)、陀螺儀和傳感器融合慣性傳感器技術(shù)。

如圖 5所示,使用下列單元為 PYNQ 環(huán)境創(chuàng)建了新的疊加:

·電動(dòng)機(jī)控制系統(tǒng):實(shí)例化為使用 QDESYS高性能電動(dòng)機(jī)控制 IP 集的 HDL 塊。

·日志記錄器:實(shí)例化為 Vivado HLS 模塊,并連接高性能 AXI 總線 0。

·即時(shí)高速傅立葉轉(zhuǎn)換 (FFT):實(shí)例化為 Vivado HLS 模塊,并連接高性能 AXI 總線 0。

·運(yùn)行器:用于解耦和管理加速度計(jì),采用 MicroBlaze 軟核處理器實(shí)現(xiàn)并以 DDR 存儲(chǔ)器內(nèi)共享段的形式對(duì)外提供。MicroBlaze 處理器:從 ARM 處理器分擔(dān)加速度計(jì)管理工作。I2C

協(xié)議對(duì)這些單元進(jìn)行區(qū)別對(duì)待,分別補(bǔ)償偏置、靈敏度、溫度和比率誤差。

1558921897120825.png

圖 5:捕獲與電動(dòng)機(jī)控制內(nèi)部模塊

為實(shí)現(xiàn)能與 PYNQ 框架配合的新疊加,使用了Python C 外部函數(shù)接口 (CFFI)。在使用 Python 時(shí),該接口支持與幾乎任何 C 代碼進(jìn)行交互。可編程邏輯加速功能置于 PYNQ 框架內(nèi),并且可以訪問(wèn)該框架下基于 C/C++ 的軟件驅(qū)動(dòng)程序。PYNQ 框架也提供在開發(fā)應(yīng)用時(shí)有所幫助的補(bǔ)充功能。PYNQ 的兩大核心功能包括:

(a)mmio:用于實(shí)現(xiàn)存儲(chǔ)器映射 I/O,以及 xlnk:將 DDR 存儲(chǔ)器分配為 NumPy(使用 Python 開展科學(xué)計(jì)算的基本庫(kù))可見(jiàn)的緩存空間。xlnk 負(fù)責(zé)為 PL(用于映射登記的向量)獲取虛擬地址和物理地址。

舉個(gè)簡(jiǎn)單的例子,可以借助觀察通過(guò)電動(dòng)機(jī)的電流,來(lái)建立加速度計(jì)輸出的振動(dòng)信號(hào)與檢測(cè)到的振動(dòng)信號(hào)間的關(guān)聯(lián)關(guān)系,因此開展傳統(tǒng)的振動(dòng)分析或是更先進(jìn)的信號(hào)特征分析就可以建立這一關(guān)聯(lián)。

具體指標(biāo)及整體系統(tǒng)的描述將占盡單獨(dú)一本白皮書的篇幅,故不在本白皮書中詳述。作為展示,圖 6 體現(xiàn)了超過(guò)閾值的滾珠軸承頻率限值信號(hào)由圖 7 中看似正常的電流波形中提取的。

2.png

圖 6:使用電流信號(hào)特征的振動(dòng)分析

1.png

圖 7:三相電動(dòng)機(jī)的波形(滾珠軸承信號(hào)特征被噪聲淹沒(méi))

上述示例證明,只要正確理解了問(wèn)題和 Zynq 產(chǎn)品組合特性,就能開展切實(shí)的高級(jí)診斷,為具備機(jī)器學(xué)習(xí)功能的工業(yè)物聯(lián)網(wǎng)系統(tǒng)敞開通向更智能方法的大門。

結(jié)論

本白皮書僅涵蓋 PYNQ 框架的一些基礎(chǔ)知識(shí),該框架將 Python 與 Zynq 組合結(jié)合為一體。PYNQ 框架提供了新的切實(shí)可能性,有助于打造能夠充分利用工業(yè)物聯(lián)網(wǎng)全部功能,以及機(jī)器學(xué)習(xí)提供的新興功能的系統(tǒng)。

邊緣計(jì)算機(jī)器學(xué)習(xí)的發(fā)展尚處于萌芽階段,而賽靈思致力于交付一流的產(chǎn)品和設(shè)計(jì)框架,以加快和簡(jiǎn)化智能和自適應(yīng)資產(chǎn)的設(shè)計(jì)、部署與維護(hù)。這僅僅是動(dòng)人旅程的開端,本白皮書中提及的許多話題將在后續(xù)的白皮書、應(yīng)用說(shuō)明和示例中詳細(xì)介紹。其中一部分已經(jīng)在PYNQ GitHub 庫(kù)里提供。



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉