基于FPGA的QCM濕度測(cè)量系統(tǒng)程序設(shè)計(jì)與仿真
摘要:為了實(shí)時(shí)檢測(cè)常溫下的濕度,以便負(fù)責(zé)人根據(jù)需要調(diào)整環(huán)境狀態(tài)。采用測(cè)頻計(jì)數(shù)法結(jié)合頻差法設(shè)計(jì)了以FPGA芯片(EP2C8Q208C8N)為基礎(chǔ)的可用于濕度測(cè)量的石英晶體諧振頻率漂移檢測(cè)電路。重點(diǎn)介紹在FPGA平臺(tái)上通過測(cè)量石英晶體的諧振頻率來間接測(cè)量濕度的方法,討論了FPGA平臺(tái)上的每個(gè)模塊的設(shè)計(jì)過程,給出了部分模塊和整體電路的仿真圖,解釋了仿真結(jié)果。FPGA參與外圍硬件電路的輔助設(shè)計(jì),會(huì)使設(shè)計(jì)更加簡(jiǎn)單,周期更短。
本文引用地址:http://butianyuan.cn/article/201610/309096.htm濕度若能夠?qū)崟r(shí)進(jìn)行測(cè)量,對(duì)于生產(chǎn)、生活方面是很至關(guān)重要的,尤其是在那些倉儲(chǔ)、種植、養(yǎng)殖、家庭、醫(yī)療、科研等關(guān)注濕度變化的地方。如果異常濕度不能及時(shí)被測(cè)量到,就會(huì)使生產(chǎn)降低、身體感到不適?,F(xiàn)代濕度測(cè)量從機(jī)械式發(fā)展為精確度更高的電子式濕度傳感器。石英壓電諧振式濕度傳感器就是利用了諧振元件的固有頻率與被測(cè)量之間存在關(guān)系而進(jìn)行測(cè)量的一種電子裝置。通過在線可編程芯片F(xiàn)PGA來對(duì)傳感器數(shù)據(jù)進(jìn)行采集、測(cè)量和處理,能極大地整合和簡(jiǎn)化系統(tǒng)設(shè)計(jì)。文中將主要描述石英晶體(QCM)濕度測(cè)量系統(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)石英晶體諧振(以下簡(jiǎn)稱標(biāo)準(zhǔn)晶振)頻率Fo與有濕敏膜傳感石英晶體諧振(以下簡(jiǎn)稱傳感晶振)頻率的頻率差,S為晶片上濕敏膜的面積。石英晶體的質(zhì)量若發(fā)生變化,其諧振頻率也會(huì)隨之發(fā)生變化。只要通過測(cè)量出石英諧振頻率的變化量,再利用頻率差-質(zhì)量差-相對(duì)濕度三者之間存在的關(guān)系,由頻率轉(zhuǎn)換得到相對(duì)濕度。
系統(tǒng)由濕度傳感器、QCM振蕩電路、FPGA平臺(tái)、顯示電路等模塊組成,如圖1所示。FPGA平臺(tái)將集成測(cè)量、控制、驅(qū)動(dòng)等功能模塊,先通過參比對(duì)照測(cè)出兩個(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芯片采用的是美國(guó)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ì)濕度測(cè)量系統(tǒng)設(shè)計(jì)中關(guān)鍵的一部分,集成了控制、測(cè)量與鎖存、差值計(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ì)濕度的測(cè)量將采用實(shí)時(shí)測(cè)量的方案。
3 模塊設(shè)計(jì)與仿真
3.1 控制模塊
控制模塊主要完成對(duì)FPGA工作進(jìn)程的控制。它包括系統(tǒng)啟動(dòng)/暫停、使能控制、系統(tǒng)復(fù)位等功能,其工作流程如圖3所示。其中N值大小可以因需求不同作數(shù)值調(diào)整。
3.2 測(cè)量與鎖存模塊
測(cè)量模塊是FPGA設(shè)計(jì)中最關(guān)鍵的模塊之一。為得到頻率差,采用雙通道分別進(jìn)行標(biāo)準(zhǔn)晶振和傳感晶振的頻率測(cè)量。數(shù)據(jù)信號(hào)在一個(gè)閘門內(nèi)的計(jì)數(shù)值很大,所以不考慮因閘門信號(hào)與數(shù)據(jù)信號(hào)不同步造成的±1字的誤差。測(cè)量模塊中的頻率測(cè)量采用直接計(jì)數(shù)法完成。在使能高電平期間,頻率信號(hào)觸發(fā)沿每到來一次時(shí),計(jì)數(shù)器加1計(jì)數(shù);在使能低電平期間計(jì)數(shù)器數(shù)據(jù)鎖存,保存至下一次的測(cè)量完成。最小測(cè)量精度為1 Hz,采用8421BCD碼計(jì)數(shù)(便于觀察和后續(xù)電路設(shè)計(jì))。
對(duì)測(cè)量和鎖存模塊進(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保存至下一次測(cè)量結(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)行仿真測(cè)試,如圖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 總體電路測(cè)試與仿真
為便于仿真觀察,程序上對(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)閭鞲惺⒕w質(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的頻率測(cè)量值,result_Q1為通道1的頻率測(cè)量值。在仿真中取頻率的最大變化為50,每1%的相對(duì)濕度,有2的變化。由圖可看出,當(dāng)系統(tǒng)在接到清零信號(hào)后,立即對(duì)計(jì)數(shù)寄存器進(jìn)行了數(shù)據(jù)復(fù)位。當(dāng)測(cè)量周期結(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作為濕度測(cè)量系統(tǒng)的主要部件,充分發(fā)揮其高度集成的內(nèi)部資源和彌補(bǔ)了硬件上設(shè)計(jì)的漏洞和誤差。文中對(duì)相對(duì)濕度測(cè)量系統(tǒng)中的FPGA部分的程序進(jìn)行了設(shè)計(jì)說明和仿真,給出總體電路的仿真結(jié)果。證明了設(shè)計(jì)方案的可行性,體現(xiàn)了軟件結(jié)合設(shè)計(jì)所帶來的簡(jiǎn)便性和實(shí)用性。
如果將該FPGA測(cè)量平臺(tái)與其他外圍硬件電路組合,即可完成濕度測(cè)量系統(tǒng)的設(shè)計(jì),同時(shí)也可用于特殊氣體的檢測(cè)。
評(píng)論