采用FPGA的SOPC技術(shù)研究了傳感器非線(xiàn)性軟件校正的實(shí)現
2.3神經(jīng)網(wǎng)絡(luò )校正算法
利用BP神經(jīng)網(wǎng)絡(luò )實(shí)現非線(xiàn)性誤差軟件校正的文獻較多,但主要是基于PC機的仿真實(shí)驗。單片微處理器由于存儲容量和數據總線(xiàn)寬度的限制,網(wǎng)絡(luò )結構類(lèi)型和計算精度只能控制在一定范圍之內。SOPC在大規模集成電路的基礎上,底層電路采用硬件描述語(yǔ)言實(shí)現,而軟件算法則在SOPC IDE調試環(huán)境下采用高級語(yǔ)言,如C語(yǔ)言實(shí)現。在本文中,SOPC系統板采用NIOS-Ⅱ軟核微處理器,32 bit總線(xiàn),工作頻率為50 MHz,BP神經(jīng)網(wǎng)絡(luò )采用動(dòng)量法,在A(yíng)LTERA公司提供的SOPC IDE調試環(huán)境下完成。算法處理結構如圖2所示。

3 算法測試
本文采用三層前向網(wǎng)絡(luò ),輸入層神經(jīng)元2個(gè),分別代表溫度傳感器ADS90和氣體傳感器TGS813輸入信號,DS18B20的測量值作為AD590的期望值,輸出層神經(jīng)元1個(gè),代表AD590的校正值。
本文共采集了70個(gè)樣本對數據作為神經(jīng)網(wǎng)絡(luò )的輸入。神經(jīng)網(wǎng)絡(luò )的訓練采樣動(dòng)量自適應算法,剔除部分不符合要求的樣本,58個(gè)樣本作為訓練樣本,8個(gè)樣本作為測試樣本。BP神經(jīng)網(wǎng)絡(luò )采用C語(yǔ)言編程實(shí)現,由于微處理器與PC機相比,在工作頻率和總線(xiàn)結構方面還存在很大差距,因此,在計算算法的誤差輸出時(shí),本文采用的是各個(gè)訓練樣本的絕對誤差的累加和,而不是均方根誤差,這樣,可以避免大量的乘法和開(kāi)方運算,否則,算法很難收斂。 作為BP神經(jīng)網(wǎng)絡(luò )動(dòng)量法的重要參數,如果學(xué)習率參數選擇的范圍比較窄,那么,網(wǎng)絡(luò )性能的隨機性特點(diǎn)就會(huì )非常明顯,不利于網(wǎng)絡(luò )的推廣應用。圖3是選擇不同的學(xué)習率時(shí)網(wǎng)絡(luò )輸出誤差的變化情況。測試條件是動(dòng)量系數為0.9,增益為1,隱含層節點(diǎn)6個(gè),算法停止迭代的判斷條件是輸出絕對誤差累加和小于0.01。
圖4是58對訓練樣本完成網(wǎng)絡(luò )訓練后的測試結果。由于BP神經(jīng)網(wǎng)絡(luò )的性能受隱含層節點(diǎn)個(gè)數影響比較大,圖中數據是在不同隱含層節點(diǎn)個(gè)數的條件下得到的,并與MATLAB軟件仿真得到的結果作了比較。網(wǎng)絡(luò )訓練的條件:學(xué)習率為0.1,動(dòng)量系數為0.9,增益為1,SOPC停止迭代的判斷條件是輸出絕對誤差累加和小于0.01,MATLAB停止迭代的判斷條件是均方根誤差小于0.0001,圖中,n代表隱含層節點(diǎn)個(gè)數。


由于采用的是12 bit的A/D轉換芯片,采集數據送入FPGA系統板后,經(jīng)過(guò)歸一化處理,數據類(lèi)型發(fā)生變化。與MATLAB仿真軟件輸出結果保持一致,基于FPGA的神經(jīng)網(wǎng)絡(luò )輸出取小數點(diǎn)后4位有效數字。由圖4可以得出:雖然在個(gè)別測試點(diǎn)上基于MATLAB軟件仿真結果優(yōu)于SOPC的輸出結果,但在隱含層節點(diǎn)對算法性能的影響程度上,基于SOPC技術(shù)的輸出受到的影響比較小,穩定性好,這與SOPC技術(shù)采用32位字長(cháng)有很大關(guān)系。
4 結論
基于FPGA的SOPC技術(shù)不同于IC芯片設計,它是把已有的模塊資源組合成一個(gè)系統,系統的功能直接由載體FPGA芯片實(shí)現;它又不同于傳統的基于單片微處理器的系統設計,因為SOPC系統的微處理器性能和外圍接口控制電路都是由用戶(hù)編程設定的,因此,采用SOPC技術(shù)可以節省成本,提高資源利用率,縮短開(kāi)發(fā)周期和便于系統升級等特點(diǎn)。本文采用基于FPGA的SOPC技術(shù)研究了傳感器非線(xiàn)性軟件校正的問(wèn)題。算法的測試結果證實(shí)了方法的可行性。
評論