基于FPGA的QCM濕度測量系統(tǒng)程序設(shè)計(jì)與仿真
摘要:為了實(shí)時(shí)檢測常溫下的濕度,以便負(fù)責(zé)人根據(jù)需要調(diào)整環(huán)境狀態(tài)。采用測頻計(jì)數(shù)法結(jié)合頻差法設(shè)計(jì)了以FPGA芯片(EP2C8Q208C8N)為基礎(chǔ)的可用于濕度測量的石英晶體諧振頻率漂移檢測電路。重點(diǎn)介紹在FPGA平臺(tái)上通過測量石英晶體的諧振頻率來間接測量濕度的方法,討論了FPGA平臺(tái)上的每個(gè)模塊的設(shè)計(jì)過程,給出了部分模塊和整體電路的仿真圖,解釋了仿真結(jié)果。FPGA參與外圍硬件電路的輔助設(shè)計(jì),會(huì)使設(shè)計(jì)更加簡單,周期更短。
濕度若能夠?qū)崟r(shí)進(jìn)行測量,對(duì)于生產(chǎn)、生活方面是很至關(guān)重要的,尤其是在那些倉儲(chǔ)、種植、養(yǎng)殖、家庭、醫(yī)療、科研等關(guān)注濕度變化的地方。如果異常濕度不能及時(shí)被測量到,就會(huì)使生產(chǎn)降低、身體感到不適?,F(xiàn)代濕度測量從機(jī)械式發(fā)展為精確度更高的電子式濕度傳感器。石英壓電諧振式濕度傳感器就是利用了諧振元件的固有頻率與被測量之間存在關(guān)系而進(jìn)行測量的一種電子裝置。通過在線可編程芯片F(xiàn)PGA來對(duì)傳感器數(shù)據(jù)進(jìn)行采集、測量和處理,能極大地整合和簡化系統(tǒng)設(shè)計(jì)。文中將主要描述石英晶體(QCM)濕度測量系統(tǒng)中FPGA部分的程序設(shè)計(jì),分別給出單個(gè)模塊的設(shè)計(jì)思路和(或)工作流程圖,對(duì)部分模塊給出仿真結(jié)果,最后對(duì)總體程序進(jìn)行了仿真,給出整體結(jié)果。
1 基本原理
在壓電石英晶體的晶片表面涂覆濕度敏感材料,制成一個(gè)附著有吸濕膜的石英晶體諧振器。若該石英晶體放置于濕度環(huán)境中,由于吸濕膜通過氫鍵或者分子間作用力吸附了環(huán)境中的水汽分子,使得石英晶體的質(zhì)量發(fā)生變化。根據(jù)Sauerbrey公式,如式(1)所示,為晶片上吸附水汽分子后石英晶體質(zhì)量變化量,F(xiàn)o為基頻,△f為相同基頻下的無濕敏膜標(biāo)準(zhǔn)石英晶體諧振(以下簡稱標(biāo)準(zhǔn)晶振)頻率Fo與有濕敏膜傳感石英晶體諧振(以下簡稱傳感晶振)頻率的頻率差,S為晶片上濕敏膜的面積。石英晶體的質(zhì)量若發(fā)生變化,其諧振頻率也會(huì)隨之發(fā)生變化。只要通過測量出石英諧振頻率的變化量,再利用頻率差-質(zhì)量差-相對(duì)濕度三者之間存在的關(guān)系,由頻率轉(zhuǎn)換得到相對(duì)濕度。
系統(tǒng)由濕度傳感器、QCM振蕩電路、FPGA平臺(tái)、顯示電路等模塊組成,如圖1所示。FPGA平臺(tái)將集成測量、控制、驅(qū)動(dòng)等功能模塊,先通過參比對(duì)照測出兩個(gè)通道的頻率值,再計(jì)算兩通道頻率值的差,根據(jù)轉(zhuǎn)換表轉(zhuǎn)換出相對(duì)濕度值,送出顯示。采用基頻10 MHz,AT切型的石英晶體作為濕度傳感器。
2 總體方案構(gòu)造
2.1 FPGA芯片
FPGA,通過軟件輔助編程的方式實(shí)現(xiàn)電路功能的一種半定制ASIC芯片。FPGA是在線可編程器件中的一種,基于查找表LUT的電路原理。N輸入的查找表,將輸入的真值表存儲(chǔ)在SRAM中,系統(tǒng)通過“查表”的方式,輸出預(yù)存結(jié)果。FPGA在電路設(shè)計(jì)和使用的過程中高度體現(xiàn)了以專用性、高效性,以人為本的設(shè)計(jì)思想。FPGA芯片采用的是美國Altera公司設(shè)計(jì)生產(chǎn)的Cyclone II系列中的EP2C8Q208C8N。它含有516個(gè)可編程邏輯塊CLBs,8256個(gè)邏輯單元LEs,165888個(gè)存儲(chǔ)位,138個(gè)可使用的I/O端口,端口最大電壓為3.3 V,核心電壓為1.2 V,工作適宜溫度為0~85℃。
2.2 FPGA總體電路構(gòu)建
FPGA程序設(shè)計(jì)是整個(gè)相對(duì)濕度測量系統(tǒng)設(shè)計(jì)中關(guān)鍵的一部分,集成了控制、測量與鎖存、差值計(jì)算、物理量轉(zhuǎn)換,顯示驅(qū)動(dòng)等模塊。通過軟件編程輔助設(shè)計(jì)的電路,既可降低硬件電路設(shè)計(jì)的成本,同時(shí)也發(fā)揮軟件設(shè)計(jì)帶來的優(yōu)點(diǎn)。另外用FPGA做設(shè)計(jì)還可隨時(shí)就應(yīng)用過程中出現(xiàn)的問題調(diào)整程序,使系統(tǒng)作更大優(yōu)化。整個(gè)FPGA運(yùn)行的流程圖如圖2所示。整個(gè)FPGA電路模塊的設(shè)計(jì)和仿真都將在Quartus II 9.0軟件環(huán)境下完成。在FPGA中相對(duì)濕度的測量將采用實(shí)時(shí)測量的方案。
3 模塊設(shè)計(jì)與仿真
3.1 控制模塊
控制模塊主要完成對(duì)FPGA工作進(jìn)程的控制。它包括系統(tǒng)啟動(dòng)/暫停、使能控制、系統(tǒng)復(fù)位等功能,其工作流程如圖3所示。其中N值大小可以因需求不同作數(shù)值調(diào)整。
3.2 測量與鎖存模塊
測量模塊是FPGA設(shè)計(jì)中最關(guān)鍵的模塊之一。為得到頻率差,采用雙通道分別進(jìn)行標(biāo)準(zhǔn)晶振和傳感晶振的頻率測量。數(shù)據(jù)信號(hào)在一個(gè)閘門內(nèi)的計(jì)數(shù)值很大,所以不考慮因閘門信號(hào)與數(shù)據(jù)信號(hào)不同步造成的±1字的誤差。測量模塊中的頻率測量采用直接計(jì)數(shù)法完成。在使能高電平期間,頻率信號(hào)觸發(fā)沿每到來一次時(shí),計(jì)數(shù)器加1計(jì)數(shù);在使能低電平期間計(jì)數(shù)器數(shù)據(jù)鎖存,保存至下一次的測量完成。最小測量精度為1 Hz,采用8421BCD碼計(jì)數(shù)(便于觀察和后續(xù)電路設(shè)計(jì))。
對(duì)測量和鎖存模塊進(jìn)行仿真分析,如圖4所示。從圖中可以看出系統(tǒng)在異步復(fù)位信號(hào)sys_clr高電平下復(fù)位,否則在使能信號(hào)sys_ena高電平有效時(shí),系統(tǒng)計(jì)數(shù),直到使能無效,result_Q最后一個(gè)計(jì)數(shù)值送入鎖存器result_latch保存至下一次測量結(jié)束。在整個(gè)系統(tǒng)中復(fù)位信號(hào)周期性出現(xiàn)在保持時(shí)間末刻,以使計(jì)數(shù)寄存器下一次從0開始計(jì)數(shù)。
3.3 頻率差值計(jì)算模塊
獲得兩個(gè)通道的頻率值后,根據(jù)頻差計(jì)算公式(2),將兩者送入減法器中。
△F=Fo-Fs (2)
減法器采用BCD碼減法,按以下規(guī)則順序執(zhí)行:
1)比較大小,如果被減數(shù)大于或等于減數(shù),差為正,符號(hào)記為0;如果減數(shù)小于被減數(shù),將被減數(shù)與減數(shù)的位置對(duì)調(diào),差為負(fù),符號(hào)記為1;
2)按照二進(jìn)制法逐位減法運(yùn)算;
3)從最低位開始包括被減數(shù)、減數(shù)、差的每4位組成一組,高位不夠4位用零補(bǔ)齊;
4)如果每一組的被減數(shù)大于減數(shù),則若差大于9,則差減去6,其他不變;
5)如果每一組的被減數(shù)小于等于減數(shù),則若差大于5(最小1組大于6),則差減去6,其他不變;
6)修正后的結(jié)果即為頻率差。
隨機(jī)設(shè)計(jì)了幾組數(shù)據(jù)進(jìn)行仿真測試,如圖5所示,經(jīng)比對(duì),結(jié)果正確。其中a8至a1為被減數(shù)a的高位至低位,即為標(biāo)準(zhǔn)晶振的頻率值;b8至b1為減數(shù)b的高位至低位,即為傳感晶振的頻率值;差為asb8至asb1,符號(hào)為sign。
3.4 物理量轉(zhuǎn)換模塊
在20%至85%這段相對(duì)濕度區(qū)間,頻率差與相對(duì)濕度值之間的曲線接近線性。設(shè)計(jì)中頻率差與相對(duì)濕度值之間的轉(zhuǎn)換以查找表的形式來實(shí)現(xiàn),一個(gè)濕度范圍對(duì)應(yīng)一組頻率差。通常情況下,由于材料、制作工藝的不同,頻率差的變化也會(huì)有所不同。為了仿真,假定相對(duì)濕度變化1%時(shí),頻率差變化2個(gè)值。
3.5 顯示驅(qū)動(dòng)模塊
后端顯示用LCD1602液晶屏構(gòu)成。由于1602中命令和數(shù)據(jù)共享總線,首先需要對(duì)其初始化,目的就在于對(duì)總線狀態(tài)、顯示樣式的設(shè)置。初始化過程為清屏→顯示狀態(tài)設(shè)置→工作方式設(shè)置→CG RAM設(shè)置→DD RAM設(shè)置。一旦初始化結(jié)束后,就可以將結(jié)果等內(nèi)容在液晶屏上動(dòng)態(tài)顯示。
4 總體電路測試與仿真
為便于仿真觀察,程序上對(duì)時(shí)鐘和信號(hào)周期進(jìn)行了修改,但設(shè)計(jì)思路不變,不影響整個(gè)的工作流程。打開Quartus II的仿真器,插入輸入輸出信號(hào),依照實(shí)際情況給出輸入信號(hào)波形,仿真結(jié)果如圖6所示。其中clk20M為20 MHz的時(shí)鐘信號(hào),經(jīng)20分頻,得到一個(gè)周期為的閘門信號(hào)(實(shí)際中為2s)。因?yàn)閭鞲?strong>石英晶體質(zhì)量因受濕度的影響而增加,其諧振頻率隨之下降,故傳感晶振頻率總小于標(biāo)準(zhǔn)晶振。cnt_clk0、cnt_ clk1分別為兩個(gè)通道的頻率信號(hào),其周期設(shè)置在0 s~3.4μs為8 ns和10 ns,在3.4~6.4 μs至為19 ns和30 ns,在6.4~7.3μs至為35 ns和50 ns;系統(tǒng)一開始清零;result_Q為通道0的頻率測量值,result_Q1為通道1的頻率測量值。在仿真中取頻率的最大變化為50,每1%的相對(duì)濕度,有2的變化。由圖可看出,當(dāng)系統(tǒng)在接到清零信號(hào)后,立即對(duì)計(jì)數(shù)寄存器進(jìn)行了數(shù)據(jù)復(fù)位。當(dāng)測量周期結(jié)束后,分別得到以下數(shù)值:在0 s~3.4μs這一段,通道0計(jì)數(shù)值為125,通道1為100,差值為25,濕度為50%;在3.4~6.4μs至,通道0為53,通道1為33,差值為20,濕度為40%。
5 結(jié)論
設(shè)計(jì)運(yùn)用了功能強(qiáng)大的FPGA作為濕度測量系統(tǒng)的主要部件,充分發(fā)揮其高度集成的內(nèi)部資源和彌補(bǔ)了硬件上設(shè)計(jì)的漏洞和誤差。文中對(duì)相對(duì)濕度測量系統(tǒng)中的FPGA部分的程序進(jìn)行了設(shè)計(jì)說明和仿真,給出總體電路的仿真結(jié)果。證明了設(shè)計(jì)方案的可行性,體現(xiàn)了軟件結(jié)合設(shè)計(jì)所帶來的簡便性和實(shí)用性。
如果將該FPGA測量平臺(tái)與其他外圍硬件電路組合,即可完成濕度測量系統(tǒng)的設(shè)計(jì),同時(shí)也可用于特殊氣體的檢測。