(1.浙江正泰中自控制工程有限公司,浙江 杭州 310027; 2.南昌大學 信息工程學院,江西 南昌 330031;3.南昌大學 機電工程學院,江西 南昌 330031)

氨氣敏電極法測氨氮不需要將水樣進行復雜的處理,并且不受色度、濁度及懸浮物的影響,測量還具有線性范圍寬、操作簡單等優點。氨氣敏電極法測氨氮首先將水樣 pH值升高,讓水中的大多數的氨氮轉換為氨氣的形式存在,當氨氣穿過電極的滲透膜進入氨氣敏電極時,就可根據產生的電壓與氨氣濃度的關系得出水中的氨氮含量。
這種方法利用電化學原理將被測參數轉換為電壓值,通過建立標準擬合曲線來間接測量所需要的參數,符合嵌入式系統在污水處理方面的應用發展趨勢[2-4]。
本設計將根據Altera公司Nios II軟核概念,在FPGA上建立基于SOPC技術的Nios II雙核系統,兩個CPU分別作為電極電壓信號的數據采集處理器與氨氮含量的數據計算、顯示處理器。對電壓信號的采集主要是利用具有A/D轉換功能的芯片來控制,然后將采集到的數據存入到共享存儲器;對氨氮含量的計算、顯示主要是利用最小二乘法計算標準曲線擬合參數,并利用擬合方程,由采集到的數據就能計算出氨氮濃度,并可通過LCD對結果進行顯示。通過Nios II里的硬件互斥核(Mutex Core)組件去控制兩處理器與共享存儲器的交互,避免彼此之間產生干涉,從而給兩處理器間的信息交互創造了操作安全、行為可靠的環境。如此就達到了在一片FPGA內完成迅速、精準且不產生二次污染的氨氣敏電極法測氨氮的目的。
系統模塊的設計可從采集模塊與計算和顯示模塊這兩方面進行構建。其中,對于數據采集模塊,氨氣敏電極測量時所產生的電壓模擬信號由A/D轉換芯片實施放大濾波操作后,轉變成數字信號直接輸入到FPGA中。對于數據計算、顯示模塊,需先確定標準氨氮曲線,通過最小二乘法對標準曲線進行擬合,再將數據帶入到擬合方程中,就可得到待測液中氨氮的含量, 最后利用液晶顯示屏實現數值的顯示。 系統總體框圖如圖1所示。

圖1 系統總體框圖
如圖1所示,Nios II系統的兩個模塊利用共享單元對數據進行交互,而對共享單元訪問的協調將通過Qsys工具組件里的硬件互斥核組件去控制。方案設計中,FPGA選擇 Altera公司的Cyclone IV系列中的EP4CE115芯片,其內部擁有114480個邏輯單元、266個乘法器、4個PLL,且片上存儲器資源高達3.9 MB。

(1)
(2)
水樣經過處理后在 pH大于11時開始按式(2)進行反應,水中氨氮以氨氣形式存在, 氨氣進入氨氣敏電極后按式(1)進行反應,由于電極內部氫離子發生變化而產生電極電壓,該電壓值大小與水中氨氮含量存在一定關系,從而可以計算出氨氮的值[5-6]。
在氨氮含量的測量中,電極產生的電信號通常較小,故需使用高精度的A/D轉換器,對信號進行放大濾波并數字化處理。實際設計中選擇美國的ANALOG DEVICE公司所制造的具有較高精度的24位串行A/D轉換器 AD7710。其運用的是Sigma-Delta轉換技術來使轉換器在滿足24位精度的條件下仍然不丟失碼。對于輸入到調節器的前端的信號,增益大小可以通過程序編譯的方式進行設定。調節器的輸出需經由芯片自帶的數字濾波功能進行信號處理。 AD7710與FPGA的硬件電路連接圖如圖2所示。

圖2 AD7710硬件電路連接圖
電極產生的模擬信號由AIN1輸入到AD7710,經過AD7710處理后得到的數字信號通過SDATA口傳入FPGA中。圖2中,TFS是幀同步傳輸端,RFS是幀同步接收端,DRDY是邏輯輸出端。而SDATA在RFS端接入低電平信號時才打開,對數據進行寫操作時則要求TFS端接入低電平信號,DRDY處于下降沿就意味著輸出端有新的數據可供傳輸,待輸出端的數據傳輸完畢后,該端口就變成高電平。
因為數據顯示模塊中所需顯示的部分比較簡單,故選擇LCD1602與HD44780進行模塊設計,FPGA與系統數據顯示模塊的連接示意圖如圖3所示。

圖3 FPGA與LCD顯示模塊連接示意圖
HD44780可由Qsys工具里的 Character LCD IP核進行控制,通過切換LCD_RW、LCD_RS、LCD_EN等端口處電平的高低,就能完成對氨氮值的數據顯示。
系統的硬件部分的構建需通過Quartus II開發軟件里的 Qsys系統集成工具,在開發套件給出的外設中,根據實際系統要求使用合適的CPU、存儲器與相應的外設。運用Quartus II可自動生成對應器件的配置文件,將這些文件下載進 FPGA,就可為軟件部分的設計提供無縫銜接的硬件架構。Qsys作為SOPC Builder的下一代產品,是Altera公司在Quartus II 11.0版中新發布的系統集成工具。與SOPC Builder工具相比,它在性能和工作效率方面有了很大提高,而且在設計的重用性方面也有所增強,加快了開發的進程。
在系統配置的過程中,需先對在系統中作為工作時鐘的 Avalon總線時鐘進行選擇,配置本系統的時鐘為100 MHz。系統的時鐘頻率還可用于外圍設備生成時鐘分頻器或波特率發生器等,加入鎖相環(PLL),就能夠得到其他器件所需的時鐘,另外也可對時鐘相位進行適當的調整。選用兩個Nios II軟核處理器,分別當作采集模塊的CPU與計算、顯示模塊的CPU。 兩模塊CPU的共享存儲器通過選擇片上RAM進行構建,同時通過Mutex core控制CPU與共享存儲器數據的存取。因為開發套件里未給出能與AD7710相合的IP核,因此需通過Verilog HDL語言去編譯、描述用戶自定義的IP核。通過配置Character LCD對HD44780進行配置。系統的定時功能的設置需通過定時器組件(Timer)實現。在FPGA上,下載程序與測試功能操作都由串口JTAG/UART組件實現。另外,還應增添SDRAM控制器與三態橋,作為接入SDRAM與片外Flash、SRAM的端口。 同時給其他外設增添合適的I/O口。
實現上述設置操作后,接著就可對系統的外部設備配置相對應的地址信息以及中斷、重置信號,單擊“Generate”就能生成Qsys系統,于頂層Verilog文件內對頂層系統實施例化處理, 同時進行編程與測試,就可實現系統的硬件配置。 Qsys系統配置示意圖如圖4所示。

圖4 Qsys系統配置示意圖
系統的軟件部分的設計與開發主要包括數據采集模塊與數據計算、顯示模塊兩個部分,另外還包括利用硬件互斥核來控制雙處理器與共享外設交互的軟件程序的設計。各模塊的軟件部分設計均在新版本的Nios II嵌入式處理器系統軟件開發工具Nios II SBT上完成。
對數據采集模塊部分的程序編譯是為了實現將氨氣敏電極傳感器采集到的模擬電信號,在完成A/D轉換操作后,再將轉換得到的數字信號進行存儲的目的。 通過使用自定義的IP核去實現對AD7710的操控。而需設計的關于軟件方面的內容為系統對所需的數據實施測量與儲存的程序。在系統內,片上存儲器被當成采集處理器與計算、顯示處理器的共享存儲單元,是兩處理器相互進行數據交互的通道。不過在兩處理器一同對片上共享 RAM進行數據存取時,系統就會有崩潰的可能,需利用 Mutex core去控制數據的存取,故應對利用 Mutex core控制兩處理器對共享RAM進行訪問的軟件程序進行編寫[7-9]。 軟件流程圖如圖5所示。

圖5 數據采集模塊軟件流程圖
通過Mutex core來控制兩處理器與共享存儲器進行數據的交互,需先聲明代表硬件Mutex設備結構體alt_mutex_dev,接著用altera_avalon_mutex_trylock( )函數嘗試對 Mutex進行加鎖,操作完成后就開始進行與存儲器間的數據交互,交互結束后再用altera_avalon_mutex_unlock( )函數對Mutex進行解鎖[10-11]。部分程序如下。
#include
……
alt_mutex_dev*mutex=altera_avalon_mutex_open(“/dev/mutex”);//獲取一個指向Mutex設備結構體的指針
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);}
在對數據計算、顯示模塊的構建之前,應當先確立需通過標準試劑滴定來建立的標準氨氮擬合曲線,再利用擬合曲線將測得的數據帶入計算,最后把計算得到的氨氮值顯示在液晶顯示屏上。
在裝有氨氣敏電極傳感器的容器中加入氨氮標準液,把標準液 pH調至11以上,使用氨氣敏電極進行測量,記錄電壓值和對應的氨氮值并輸入系統。 使用最小二乘法擬合方程:
y=ax+b
(3)
式中,y為氨氮含量;x為電壓值;a與b分別為擬合參數,由下列方程組求出:
(4)
利用最小二乘法對曲線進行的擬合與帶入計算方面的內容應在Nios II IDE(集成開發環境)內來完成, Altera公司已于 Qsys內給出了 Character LCD作為 Nios II與液晶屏的 Avalon接口, 并在 Nios II IDE內給出了完整的開發平臺。
軟件設計的流程圖如圖6所示。

圖6 數據計算、顯示模塊軟件流程圖
對系統可靠性進行的相關測試,可選擇在實驗室中利用DE2-115開發板展開相關性能測試。在DE2-115中,包含了一片Cyclone IV系列的EP4CE115芯片,且集成了HD44780和LCD1602,為系統測試提供了充分條件。 DE2-115開發板如圖7所示。
將程序下載到開發板之后,利用江西省新余市仙女湖入湖河流平水期的水樣進行試驗[12],采用納氏比色法測得的氨氮值和系統測得的氨氮值數據對比結果如表1所示。

圖7 DE2-115開發板

入湖河流標準氨氮/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
經過計算分析可知,此方案還存在一定程度的測量誤差,但總體上能呈現出較好的測量效果,基本上能實現設計所預期測量標準。
本文通過FPGA實現了利用氨氣敏電極法對水體氨氮進行測量的雙處理器系統設計。選擇當前較流行的FPGA可編程邏輯器件作為處理器,可以使系統運行速度較快的同時保證可靠性,同時擁有良好的擴展性。 電化學法測氨氮過程簡單且無二次污染,適應水質監測儀器發展潮流,符合嵌入式系統在污水處理中的發展要求。在FPGA上建立的Nios II雙核系統,僅用一片芯片完成了數據采集、存儲、計算和顯示的工作,充分利用了 FPGA片上資源,降低了開發成本與功耗,縮減了設計周期與風險,提升了系統性能。