(1.浙江正泰中自控制工程有限公司,浙江 杭州 310027; 2.南昌大學(xué) 信息工程學(xué)院,江西 南昌 330031;3.南昌大學(xué) 機電工程學(xué)院,江西 南昌 330031)
氨氣敏電極法測氨氮不需要將水樣進行復(fù)雜的處理,并且不受色度、濁度及懸浮物的影響,測量還具有線性范圍寬、操作簡單等優(yōu)點。氨氣敏電極法測氨氮首先將水樣 pH值升高,讓水中的大多數(shù)的氨氮轉(zhuǎn)換為氨氣的形式存在,當(dāng)氨氣穿過電極的滲透膜進入氨氣敏電極時,就可根據(jù)產(chǎn)生的電壓與氨氣濃度的關(guān)系得出水中的氨氮含量。
這種方法利用電化學(xué)原理將被測參數(shù)轉(zhuǎn)換為電壓值,通過建立標準擬合曲線來間接測量所需要的參數(shù),符合嵌入式系統(tǒng)在污水處理方面的應(yīng)用發(fā)展趨勢[2-4]。
本設(shè)計將根據(jù)Altera公司Nios II軟核概念,在FPGA上建立基于SOPC技術(shù)的Nios II雙核系統(tǒng),兩個CPU分別作為電極電壓信號的數(shù)據(jù)采集處理器與氨氮含量的數(shù)據(jù)計算、顯示處理器。對電壓信號的采集主要是利用具有A/D轉(zhuǎn)換功能的芯片來控制,然后將采集到的數(shù)據(jù)存入到共享存儲器;對氨氮含量的計算、顯示主要是利用最小二乘法計算標準曲線擬合參數(shù),并利用擬合方程,由采集到的數(shù)據(jù)就能計算出氨氮濃度,并可通過LCD對結(jié)果進行顯示。通過Nios II里的硬件互斥核(Mutex Core)組件去控制兩處理器與共享存儲器的交互,避免彼此之間產(chǎn)生干涉,從而給兩處理器間的信息交互創(chuàng)造了操作安全、行為可靠的環(huán)境。如此就達到了在一片F(xiàn)PGA內(nèi)完成迅速、精準且不產(chǎn)生二次污染的氨氣敏電極法測氨氮的目的。
系統(tǒng)模塊的設(shè)計可從采集模塊與計算和顯示模塊這兩方面進行構(gòu)建。其中,對于數(shù)據(jù)采集模塊,氨氣敏電極測量時所產(chǎn)生的電壓模擬信號由A/D轉(zhuǎn)換芯片實施放大濾波操作后,轉(zhuǎn)變成數(shù)字信號直接輸入到FPGA中。對于數(shù)據(jù)計算、顯示模塊,需先確定標準氨氮曲線,通過最小二乘法對標準曲線進行擬合,再將數(shù)據(jù)帶入到擬合方程中,就可得到待測液中氨氮的含量, 最后利用液晶顯示屏實現(xiàn)數(shù)值的顯示。 系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
如圖1所示,Nios II系統(tǒng)的兩個模塊利用共享單元對數(shù)據(jù)進行交互,而對共享單元訪問的協(xié)調(diào)將通過Qsys工具組件里的硬件互斥核組件去控制。方案設(shè)計中,F(xiàn)PGA選擇 Altera公司的Cyclone IV系列中的EP4CE115芯片,其內(nèi)部擁有114480個邏輯單元、266個乘法器、4個PLL,且片上存儲器資源高達3.9 MB。
(1)
(2)
水樣經(jīng)過處理后在 pH大于11時開始按式(2)進行反應(yīng),水中氨氮以氨氣形式存在, 氨氣進入氨氣敏電極后按式(1)進行反應(yīng),由于電極內(nèi)部氫離子發(fā)生變化而產(chǎn)生電極電壓,該電壓值大小與水中氨氮含量存在一定關(guān)系,從而可以計算出氨氮的值[5-6]。
在氨氮含量的測量中,電極產(chǎn)生的電信號通常較小,故需使用高精度的A/D轉(zhuǎn)換器,對信號進行放大濾波并數(shù)字化處理。實際設(shè)計中選擇美國的ANALOG DEVICE公司所制造的具有較高精度的24位串行A/D轉(zhuǎn)換器 AD7710。其運用的是Sigma-Delta轉(zhuǎn)換技術(shù)來使轉(zhuǎn)換器在滿足24位精度的條件下仍然不丟失碼。對于輸入到調(diào)節(jié)器的前端的信號,增益大小可以通過程序編譯的方式進行設(shè)定。調(diào)節(jié)器的輸出需經(jīng)由芯片自帶的數(shù)字濾波功能進行信號處理。 AD7710與FPGA的硬件電路連接圖如圖2所示。
圖2 AD7710硬件電路連接圖
電極產(chǎn)生的模擬信號由AIN1輸入到AD7710,經(jīng)過AD7710處理后得到的數(shù)字信號通過SDATA口傳入FPGA中。圖2中,TFS是幀同步傳輸端,RFS是幀同步接收端,DRDY是邏輯輸出端。而SDATA在RFS端接入低電平信號時才打開,對數(shù)據(jù)進行寫操作時則要求TFS端接入低電平信號,DRDY處于下降沿就意味著輸出端有新的數(shù)據(jù)可供傳輸,待輸出端的數(shù)據(jù)傳輸完畢后,該端口就變成高電平。
因為數(shù)據(jù)顯示模塊中所需顯示的部分比較簡單,故選擇LCD1602與HD44780進行模塊設(shè)計,F(xiàn)PGA與系統(tǒng)數(shù)據(jù)顯示模塊的連接示意圖如圖3所示。
圖3 FPGA與LCD顯示模塊連接示意圖
HD44780可由Qsys工具里的 Character LCD IP核進行控制,通過切換LCD_RW、LCD_RS、LCD_EN等端口處電平的高低,就能完成對氨氮值的數(shù)據(jù)顯示。
系統(tǒng)的硬件部分的構(gòu)建需通過Quartus II開發(fā)軟件里的 Qsys系統(tǒng)集成工具,在開發(fā)套件給出的外設(shè)中,根據(jù)實際系統(tǒng)要求使用合適的CPU、存儲器與相應(yīng)的外設(shè)。運用Quartus II可自動生成對應(yīng)器件的配置文件,將這些文件下載進 FPGA,就可為軟件部分的設(shè)計提供無縫銜接的硬件架構(gòu)。Qsys作為SOPC Builder的下一代產(chǎn)品,是Altera公司在Quartus II 11.0版中新發(fā)布的系統(tǒng)集成工具。與SOPC Builder工具相比,它在性能和工作效率方面有了很大提高,而且在設(shè)計的重用性方面也有所增強,加快了開發(fā)的進程。
在系統(tǒng)配置的過程中,需先對在系統(tǒng)中作為工作時鐘的 Avalon總線時鐘進行選擇,配置本系統(tǒng)的時鐘為100 MHz。系統(tǒng)的時鐘頻率還可用于外圍設(shè)備生成時鐘分頻器或波特率發(fā)生器等,加入鎖相環(huán)(PLL),就能夠得到其他器件所需的時鐘,另外也可對時鐘相位進行適當(dāng)?shù)恼{(diào)整。選用兩個Nios II軟核處理器,分別當(dāng)作采集模塊的CPU與計算、顯示模塊的CPU。 兩模塊CPU的共享存儲器通過選擇片上RAM進行構(gòu)建,同時通過Mutex core控制CPU與共享存儲器數(shù)據(jù)的存取。因為開發(fā)套件里未給出能與AD7710相合的IP核,因此需通過Verilog HDL語言去編譯、描述用戶自定義的IP核。通過配置Character LCD對HD44780進行配置。系統(tǒng)的定時功能的設(shè)置需通過定時器組件(Timer)實現(xiàn)。在FPGA上,下載程序與測試功能操作都由串口JTAG/UART組件實現(xiàn)。另外,還應(yīng)增添SDRAM控制器與三態(tài)橋,作為接入SDRAM與片外Flash、SRAM的端口。 同時給其他外設(shè)增添合適的I/O口。
實現(xiàn)上述設(shè)置操作后,接著就可對系統(tǒng)的外部設(shè)備配置相對應(yīng)的地址信息以及中斷、重置信號,單擊“Generate”就能生成Qsys系統(tǒng),于頂層Verilog文件內(nèi)對頂層系統(tǒng)實施例化處理, 同時進行編程與測試,就可實現(xiàn)系統(tǒng)的硬件配置。 Qsys系統(tǒng)配置示意圖如圖4所示。
圖4 Qsys系統(tǒng)配置示意圖
系統(tǒng)的軟件部分的設(shè)計與開發(fā)主要包括數(shù)據(jù)采集模塊與數(shù)據(jù)計算、顯示模塊兩個部分,另外還包括利用硬件互斥核來控制雙處理器與共享外設(shè)交互的軟件程序的設(shè)計。各模塊的軟件部分設(shè)計均在新版本的Nios II嵌入式處理器系統(tǒng)軟件開發(fā)工具Nios II SBT上完成。
對數(shù)據(jù)采集模塊部分的程序編譯是為了實現(xiàn)將氨氣敏電極傳感器采集到的模擬電信號,在完成A/D轉(zhuǎn)換操作后,再將轉(zhuǎn)換得到的數(shù)字信號進行存儲的目的。 通過使用自定義的IP核去實現(xiàn)對AD7710的操控。而需設(shè)計的關(guān)于軟件方面的內(nèi)容為系統(tǒng)對所需的數(shù)據(jù)實施測量與儲存的程序。在系統(tǒng)內(nèi),片上存儲器被當(dāng)成采集處理器與計算、顯示處理器的共享存儲單元,是兩處理器相互進行數(shù)據(jù)交互的通道。不過在兩處理器一同對片上共享 RAM進行數(shù)據(jù)存取時,系統(tǒng)就會有崩潰的可能,需利用 Mutex core去控制數(shù)據(jù)的存取,故應(yīng)對利用 Mutex core控制兩處理器對共享RAM進行訪問的軟件程序進行編寫[7-9]。 軟件流程圖如圖5所示。
圖5 數(shù)據(jù)采集模塊軟件流程圖
通過Mutex core來控制兩處理器與共享存儲器進行數(shù)據(jù)的交互,需先聲明代表硬件Mutex設(shè)備結(jié)構(gòu)體alt_mutex_dev,接著用altera_avalon_mutex_trylock( )函數(shù)嘗試對 Mutex進行加鎖,操作完成后就開始進行與存儲器間的數(shù)據(jù)交互,交互結(jié)束后再用altera_avalon_mutex_unlock( )函數(shù)對Mutex進行解鎖[10-11]。部分程序如下。
#include
……
alt_mutex_dev*mutex=altera_avalon_mutex_open(“/dev/mutex”);//獲取一個指向Mutex設(shè)備結(jié)構(gòu)體的指針
INT8U flag;
flag=altera_avalon_mutex_trylock(mutex,1);
//試圖對Mutex加鎖
if(!flag)
{……//對共享資源訪問altera_avalon_mutex_unlock(mutex);//對Mutex解鎖}
else {delay(5000);flag=altera_avalon_mutex_trylock(mutex,1);}
在對數(shù)據(jù)計算、顯示模塊的構(gòu)建之前,應(yīng)當(dāng)先確立需通過標準試劑滴定來建立的標準氨氮擬合曲線,再利用擬合曲線將測得的數(shù)據(jù)帶入計算,最后把計算得到的氨氮值顯示在液晶顯示屏上。
在裝有氨氣敏電極傳感器的容器中加入氨氮標準液,把標準液 pH調(diào)至11以上,使用氨氣敏電極進行測量,記錄電壓值和對應(yīng)的氨氮值并輸入系統(tǒng)。 使用最小二乘法擬合方程:
y=ax+b
(3)
式中,y為氨氮含量;x為電壓值;a與b分別為擬合參數(shù),由下列方程組求出:
(4)
利用最小二乘法對曲線進行的擬合與帶入計算方面的內(nèi)容應(yīng)在Nios II IDE(集成開發(fā)環(huán)境)內(nèi)來完成, Altera公司已于 Qsys內(nèi)給出了 Character LCD作為 Nios II與液晶屏的 Avalon接口, 并在 Nios II IDE內(nèi)給出了完整的開發(fā)平臺。
軟件設(shè)計的流程圖如圖6所示。
圖6 數(shù)據(jù)計算、顯示模塊軟件流程圖
對系統(tǒng)可靠性進行的相關(guān)測試,可選擇在實驗室中利用DE2-115開發(fā)板展開相關(guān)性能測試。在DE2-115中,包含了一片Cyclone IV系列的EP4CE115芯片,且集成了HD44780和LCD1602,為系統(tǒng)測試提供了充分條件。 DE2-115開發(fā)板如圖7所示。
將程序下載到開發(fā)板之后,利用江西省新余市仙女湖入湖河流平水期的水樣進行試驗[12],采用納氏比色法測得的氨氮值和系統(tǒng)測得的氨氮值數(shù)據(jù)對比結(jié)果如表1所示。
圖7 DE2-115開發(fā)板
入湖河流標準氨氮/mg·L-1試驗氨氮/mg·L-1相對誤差/%楊橋河0.320.31-3.22袁河上游0.310.323.12松山河0.440.41-7.31苑坑河0.490.525.77九龍山河0.320.345.88
經(jīng)過計算分析可知,此方案還存在一定程度的測量誤差,但總體上能呈現(xiàn)出較好的測量效果,基本上能實現(xiàn)設(shè)計所預(yù)期測量標準。
本文通過FPGA實現(xiàn)了利用氨氣敏電極法對水體氨氮進行測量的雙處理器系統(tǒng)設(shè)計。選擇當(dāng)前較流行的FPGA可編程邏輯器件作為處理器,可以使系統(tǒng)運行速度較快的同時保證可靠性,同時擁有良好的擴展性。 電化學(xué)法測氨氮過程簡單且無二次污染,適應(yīng)水質(zhì)監(jiān)測儀器發(fā)展潮流,符合嵌入式系統(tǒng)在污水處理中的發(fā)展要求。在FPGA上建立的Nios II雙核系統(tǒng),僅用一片芯片完成了數(shù)據(jù)采集、存儲、計算和顯示的工作,充分利用了 FPGA片上資源,降低了開發(fā)成本與功耗,縮減了設(shè)計周期與風(fēng)險,提升了系統(tǒng)性能。