?

基于FPGA的多組分氣體監測裝置設計*

2018-09-27 08:09于重重蘇維均
傳感器與微系統 2018年10期
關鍵詞:小數分段氣體

楊 飛, 謝 濤, 于重重, 蘇維均

(北京工商大學 計算機與信息工程學院,北京 100048)

0 引 言

隨著現場可編程門陣列(field programmable gate array,FPGA) 的發展,神經網絡硬件化成為新趨勢。氣體傳感器往往存在交叉敏感性,結合發展迅速的人工智能技術及FPGA技術進行數據融合,可有效地彌補傳感器的缺陷。FPGA作為一種可重復配置的硬件平臺,其內部分布式的結構與神經網絡結構十分契合,是神經網絡硬件化設計的良好選擇[1~4]。王瑞等人[5]提出基于FPGA的室內CO濃度檢測系統,但系統僅針對單一氣體,應用場合受限。張航等人[6]提出基于FPGA的電子鼻中Sigmoid函數分區間線性逼近的方法,但未給出網絡設計結構。

本文通過FPGA設計硬件神經網絡控制器,完成對多傳感器陣列數據的融合。對于硬件難以實現神經網絡中激活函數的問題,設計了分段擬合實現Sigmiod函數的方法,具有資源占用少,擬合精度高的優點。該系統充分發揮了神經網絡并行性的特點,提高了檢測的精度與實時性,且具有很高的擴展性。

1 氣體監測的設計架構

多組分氣體檢測系統以FPGA為核心模塊,負責數據采集及多傳感器數據的融合。其中,利用FPGA實現硬件神經網絡對多傳感器數據進行融合是本系統設計的難點及重點解決的問題。系統總體設計如圖1所示。

圖1 系統框圖

為防止數字信號與模擬信號間的干擾,且從易于擴展、提高通用性等角度考慮,該系統采取模塊化設計。分為多傳感器陣列模塊、信號調理模塊、FPGA模塊及嵌入式Linux模塊。首先通過信號放大器和A/D轉換器進行多傳感器陣列信號的放大和A/D轉換,然后通過FPGA內部實現的信號處理單元計算傳感器的濃度值,之后將數字量的濃度值傳送給FPGA上實現的硬件神經網絡,對多傳感器數據進行融合,并通過串口將處理后的數據傳輸給嵌入式Linux系統,進行數據的展示。

2 FPGA系統設計

FPGA芯片選取Altera公司生產的EP4CE15F23C8,其片上資源豐富,FBGA484封裝。邏輯單元(logic elements)達15 408個,擁有56個18×18嵌入式乘法器,能滿足存在大量乘法運算的硬件神經網絡,具備充足的片上M9K存儲器模塊,可配置多種數據位寬,十分便于實現神經網絡中常用的Sigmoid函數。

2.1 基于FPGA多傳感器數據采集

針對氣體傳感器的交叉敏感性。一種解決方法是選擇紅外傳感器,但其測量的氣體種類有限,難以小型化,目前不適合用于混合氣體的測量中,本文通過多傳感器數據融合實現對混合氣體的測量[7]。

2.1.1 傳感器陣列選取

為驗證硬件神經網絡算法在數據融合中的作用,本文選取市面上較為常見且廉價的傳感器,型號分別為MQ—2,MQ—4,MQ—8 3種傳感器,其均對CH4,CO有不同程度的響應。同時考慮環境對傳感器的影響,系統加入了溫濕度傳感器提高系統精度。

2.1.2 實驗氣體配制

氣體配制采用計量院生產的MF氣體校準裝置,其原理為質量流量混合法。內部采用高精度的質量流量控制器,控制稀釋氣體及組分氣體的流量。通過簡單的設置,便可配置出各種濃度的氣體。

2.1.3 A/D轉換電路設計

AD7792是一種高精度、低功耗、低噪聲的16位ADC轉換器,其含有3個差分模擬輸入,還集成了片內低噪聲放大器,因而可直接輸入小信號。當增益設置為64、更新頻率為4.17 Hz時,均方根(RMS)噪聲為40 nV,本設計通過AD7792實現模擬量到數字量的轉換。

2.2 FPGA的硬件神經網絡算法實現

2.2.1 FPGA中小數運算

本文采用定點小數運算法,耗費資源少,處理速度快。

以邏輯異或問題為例,實驗得出定點小數法實現在速度上比浮點小數運算高出12倍,且面積上是浮點實現的1/13。于是采用了16位定點小數(1,3,12)進行運算,十進制小數X(D)轉換成十進制定點小數X(d)的方法為

X(d)=X(D)×212,X(D)=X(d)/212

(1)

2.2.2 FPGA中Sigmoid函數的分段擬合

f′(x)=f(x)(1-f(x))

(2)

觀察函數曲線可知,Sigmoid導函數f′(x)連續可導,且數值變化較小,可以保證系統較快收斂;原函數關于點(0,0.5)對稱,因此,僅需設計x>0 部分的原函數電路,根據對稱性即可求出負半軸的導函數值,導函數設計同理[8]。

由于Sigmoid函數的導函數可以由其原函數間接求取,所以本文中著重介紹Sigmoid函數的FPGA實現方法。FPGA實現Sigmoid 函數的最大難點在于指數函數的實現,可以利用 CORDIC算法不斷地進行迭代,但需要不斷迭代且精確度不高[9~11],本文采取分段擬合的方式,即對于不同區間的自變量采用不同的函數表達式,從而實現分段擬合 Sigmoid 函數。

通過MATLAB內置的polyfit函數來進行Sigmoid函數的分段擬合,并滿足擬合精度在0.001數量級下,本文將Sigmoid函數正半軸分成6段,擬合函數及對應區間如表1所示。由對稱性特點,對于x>0部分由表1中的分段公式即可求解,對于x<0部分,先對x取反代入x>0的公式得到y,再由1-y即可得到結果。

表1 Sigmoid分段擬合公式

16位定點小數運算中有12位為小數位,在進行乘法計算時需要移位來保證小數點的位置不變,故表1中Sigmoid 函數分段擬合公式在 FPGA中對應擬合公式如表2所示。

表2 FPGA擬合公式

2.2.3 BP神經網絡的FPGA實現及仿真

將氣體傳感器陣列采集到的陣列數據經過歸一化后,采用MATLAB自帶的BP函數庫進行訓練,得到網絡的參數,結合FPGA上已設計的激活函數模塊,即可將神經網絡部署到FPGA上,為了盡可能提高FPGA運行的頻率,同時要保證時序的穩定,采用流水線的設計思路設計硬件電路,加速神經網絡的運算,降低氣體檢測時間并保證了檢測精度。采用Modelsim對流水線設計進行仿真如圖2所示。

圖2 流水線設計仿真

3 仿真實驗及誤差分析

3.1 擬合函數誤差分析

擬合函數的精度高低直接決定了神經網絡的好壞。對于分段擬合函數的準確性利用 MATLAB 進行仿真,其結果如圖3所示。

圖3 函數擬合曲線

可以看出,擬合效果良好。在[0,10]中隨機選取若干自變量,分別通過Sigmoid函數和分段擬合函數公式計算函數值,并繪制擬合誤差曲線,如圖4所示,擬合誤差的絕對值均不超過0.000 5,進一步證明本設計的分段擬合Sigomid函數的精度良好。

圖4 函數擬合誤差曲線

3.2 網絡訓練分析

通過配氣裝置及所設計多組分氣體檢測裝置測出多組數據,由于傳感器采集的數據量大,對數據進行濾波,預處理后的部分數據如表3所示。通過神經網絡進行數據融合,可以更好地消除傳感器的交叉影響,獲得可靠的檢測精度。 相對誤差分析如表4。

4 結束語

所設計的硬件神經網絡滿足精度要求,且占用資源少,能較好地彌補傳感器交叉敏感的問題,由于FPGA內部為分布式的并行結構,從而提高了網絡的運行效率。所設計多組分氣體檢測裝置具有精度高、實時性好的特點,且具有良好的擴展性。

表3 傳感器數據

表4 相對誤差

猜你喜歡
小數分段氣體
小數加減“四不忘”
二維定常Chaplygin氣體繞直楔流動
一類連續和不連續分段線性系統的周期解研究
我國古代的小數
小數的認識
小數的認識
非等熵Chaplygin氣體測度值解存在性
吃氣體,長大個
分段計算時間
3米2分段大力士“大”在哪兒?
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合