技術乾貨 | 傳感器的智能之路和實現之道(下)

以前人們討論談人工智慧時主要關注云計算 — 數據上傳到雲端,利用其強大計算能力得到結果。然而,雲計算的前提是所有的數據都要傳到雲端,對帶寬要求極高,可能到6G時代才能真正實現。

現在我們將人工智慧轉移到邊緣端進行邊緣計算。通常情況下,邊緣計算是將算法放置到MCU中,傳感器只輸出數據,MCU運行獨立算法。然後,現在我們將算法下沉放到傳感器中,有兩種不同的方案:

1)基於MLC,採用rPU處理器進行重配置,能將部分算法(如決策樹算法)運行於傳感器中,再由傳感器輸出事件結果給MCU。這樣就不需要MCU去處理運行全部算法。

2)基於我們今天的主角ISPU,Intelligent Sensor Processing Unit,智能傳感器處理單元。



ISPU不是傳感器,只是嵌入在傳感器IMU裡面的功能模塊。ISPU本質上是一種微型C語言可編程處理器,可在傳感器內執行信號處理和AI算法,與常見開發工具兼容,相當於傳感器中嵌入了一個DSP,可以運行類似MCU的算法。因此,它擁有更強大的功能,可以運行標準的C指令,支持信號處理和AI推理、機器學習和深度學習,甚至二進制神經網絡,同時以µA級的功耗提供廣泛的編程靈活性,讓傳感器的智能程度更進一步!

目前帶ISPU的6軸慣性測量單元(IMU)有兩種。面向複雜動作手勢識別、事件檢測和運動追蹤等消費應用的LSM6DSO16IS,以及面向機器人、空調和資產追蹤,預測性維護等邊緣工業應用的ISM330IS。除了基本的IMU功能(如可配置陀螺儀量程,加速度量程,ODR數據,SPI/I2C接口),內部還集成了ISPU用於人工智慧算法和處理超低功耗可編程核心,運行頻率最高可達到10兆赫茲,配備32KB用於程序的RAM和8KB用於數據的RAM,總40KB內存,支持浮點運算及32位整數運算。

ST的ISPU方案基於DSP架構。這種DSP面積很小,只有8K門;封裝也很小,僅為3*2.5*0.83;支持浮點運算,同時也支持神經網絡。基於32位的哈佛架構,最高主頻可達10MHz,最大輸出數據達到6.6KHz。

ISPU的優勢很明顯,首先在功耗方面,如果將傳感器融合算法運行到ISPU中,5MHz功耗僅為200µA。但是,如果運行在Cortex-M0上,即使主頻為4MHz,功耗也需要1300µA。可見,ISPU傳感器融合的功耗是比M0低5倍。此外,由於ISPU是DSP直接集成在傳感器中,可以直接獲取類似加速度儀等傳感器的處理數據,無需總線參與,從而降低系統的負載和功效。在104Hz頻率下讀取數據時,ISPU僅僅耗費1µA,而Cortex-M0在4MHz時就已經需要94.4個µA。



當ODR增大,ISPU運行速率加快時,功耗差距越大。例如,當883Hz去提取加速度數據時,ISPU功耗僅為7.5µA,而Context-M0為747µA,兩者的差距已達百倍。當然,對於其他算法,如傾角檢測,排氣檢測,傳感器融合,手腕傾斜(比如手錶穿帶的翻腕亮屏功能),ISPU的功耗也很低。

其次是ISPU的AI優勢 — ISPU提供更多選擇和更大自由的自學習方案:一方面,它可以支持機器學習,如決策樹,Scikit-learn;另一方面,它也支持深度學習算法,如常見的QKeras、TensorFlow、ONNX等,同時,我們採用ISPU的編譯器,將基於機器學習和深度學習算法模型進行編譯,生成ISPU可運行的UCF配置文件,通過MCU將該配置文件寫入ISPU,即可運行算法。這可以廣泛應用於個人電子產品(如穿戴設備,頭戴設備等)以及工業領域的事件監測等。


 ISPU的運行原理:

在LSM6DSO16IS/ISM330IS的IMU內部框架中,傳感器hub可以通過I2C連接外部磁力計和氣壓計等設備。ISPU可以通過內部的IMU傳感鏈直接讀取外部的傳感器(地磁或氣壓計)和內部的加速度、陀螺儀和溫度數據。ISPU支持運行最多30個算法,但由於ISPU是單核,它以串型的方式運行,每一個算法都可以產生一個中斷信號,通知主控發生的中斷事件。

ISPU可以通過I2C與SPI與主控連接,同時通過多種寄存器跟主控交互。例如,如果主控需要配置參數,可以通過總線將參數寫到ISPU的配置寄存器對ISPU進行配置,而標誌寄存器可以通過總線實現主控和ISPU的數據交互。此外,ISPU輸出數據寄存器可以在中斷髮生後將數據送出,告知MCU當前發生了什麼事件。




 ISPU開發流程:

首先是基於ISPU代碼進行編碼,使用工具鏈將其編譯成ISPU二進制文件。然後,將該ISPU二進制文件與傳感器配置文件(configureTXT)傳感器配置文件一起使用工具生成ISPU.h或者.UCF配置文件。將這些文件複製到MCU的應用程序代碼中,加載ISPU程序並讀取算法結果,使用ARM工具鏈進行編譯,生成應用.bin文件,最後將應用.bin文件燒錄到MCU中運行。



 ISPU軟體的開發工具有3種:

1)基於命令行工具CLI
命令行主要在Windows下使用,通過CMD輸入命令來實現編譯工作。
採用這種方法,開發之前需要先安裝ISPU編譯工具鏈,並在Windows里安裝make工具。然後可以基於我們提供ISPU模版開發Norm算法,修改傳感器配置,通過json輸出文件進行編譯,再通過GUI連接板子並連上電腦,使能ISPU。


2)基於Eclipse的IDE
如STM32CubeIDE,可以編輯代碼及編譯ISPU程序。開發時需要先下載安裝Eclipse插件,然後導入工程進行編譯。


3)GUI
採用AlgoBuilder,無需編寫代碼,只需要在軟體中拖拽不同模塊進行連接,即可自動生成代碼。用戶需要先在ST官網上下載AlgoBuidler、STM32CubeIDE、STM32CubeProgrammer和Unico-GUI軟體並安裝,通過設置後即可實現零代碼設計,基於模塊固件編譯和燒寫以及調用Unicleo-GUI。

 

在我們的視頻課程里還包括了如何將ISPU代碼集成到MCU的更詳盡的解說,各位可自行前往觀看講解。

技術乾貨 | 傳感器的智能之路和實現之道(上)
本文改寫於《ST MEMS傳感器的SFLP和ISPU助力低功耗應用》視頻課程,感興趣的讀者可以前往觀看課程視頻。


技術乾貨 | 傳感器的智能之路和實現之道(下)

★博文內容參考自 網站,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

false: https://mp.weixin.qq.com/s/-uMIwOHFoW5JYDkvUhPdFw

評論