??? 摘? 要: 介紹了分布式光纖測(cè)溫系統(tǒng)的測(cè)溫原理及數(shù)據(jù)處理的FPGA設(shè)計(jì)方法。在FPGA設(shè)計(jì)方法中,提出一種可以提高數(shù)據(jù)處理精度的處理方法,該方法簡(jiǎn)單、容易編程實(shí)現(xiàn)。?
??? 關(guān)鍵詞: FPGA;分布式光纖測(cè)溫系統(tǒng);多點(diǎn)數(shù)字平均器;反斯托克斯; 斯托克斯?
?
??? 分布式光纖溫度傳感技術(shù)是近年來發(fā)展起來的一種新型傳感技術(shù),它利用一根光導(dǎo)纖維作為溫度信息的傳感和傳導(dǎo)介質(zhì),可以測(cè)量整個(gè)光纖長(zhǎng)度上的溫度變化。分布式光纖溫度傳感器的信號(hào)處理技術(shù),是將探測(cè)器輸出的信號(hào)盡可能地去除干擾和噪聲,從而得到準(zhǔn)確而快速的溫度顯示和溫度數(shù)據(jù),這在解決大型重要結(jié)構(gòu)的實(shí)時(shí)監(jiān)控、準(zhǔn)確測(cè)量等問題以及在組成智能材料結(jié)構(gòu)等方面具有重要價(jià)值和應(yīng)用潛力。?
??? 在高速數(shù)據(jù)采集方面,FPGA有單片機(jī)和DSP無法比擬的優(yōu)勢(shì)。FPGA時(shí)鐘頻率高、內(nèi)部時(shí)延小、全部控制邏輯由硬件完成。速度快,組成形式靈活,可以集成外圍控制、譯碼和接口電路;最主要的是FPGA可以采用IP內(nèi)核技術(shù),通過繼承、共享或購買所需的知識(shí)產(chǎn)權(quán)內(nèi)核提高開發(fā)進(jìn)度。利用EDA工具進(jìn)行設(shè)計(jì)、綜合和驗(yàn)證,加速了設(shè)計(jì)過程,降低了開發(fā)風(fēng)險(xiǎn),縮短了開發(fā)周期,效率高而且更能適應(yīng)市場(chǎng)[1]。?
1 分布式光纖測(cè)溫系統(tǒng)的測(cè)溫原理?
??? 分布式光纖溫度傳感器是利用光纖中自發(fā)拉曼散射的Anti-stokes光強(qiáng)與溫度密切相關(guān)(常溫下溫度系數(shù)為0.8%)的原理[2],通過檢測(cè)激光脈沖在光纖中傳播時(shí)產(chǎn)生的Stokes光信號(hào)和Anti-stokes光信號(hào)的比值來獲得一根長(zhǎng)達(dá)數(shù)千米的光纖上的溫度信息。采用Anti-stokes光/Stokes光原理的分布式光纖傳感器如圖1。
?
?
??? 根據(jù)參考文獻(xiàn)[3],光纖局域處的溫度可由下式得出:?
?????
其中,h是普郎克常量,c是光速,k是波耳茲曼常數(shù),Δγ是光纖分子振動(dòng)頻率,T為待測(cè)點(diǎn)溫度,T0為參考溫度;F(T)代表Anti-Stokes和Stokes光的強(qiáng)度比,F(T0)為Anti-Stokes和Stokes光在參考溫度時(shí)的強(qiáng)度比,F(T)和F(T0)也分別代表T和T0時(shí)Anti-Stokes和Stokes光光電轉(zhuǎn)換后的電壓比。根據(jù)式(1)可以計(jì)算出待測(cè)點(diǎn)的溫度。根據(jù)不同采樣時(shí)刻的值不同可以測(cè)出不同點(diǎn)的溫度。?
2 FPGA的設(shè)計(jì)?
??? 本FPGA設(shè)計(jì)采用的軟件是Xilinx ISE 9.1i,因而設(shè)計(jì)用到的FIFO可直接調(diào)用軟件自帶的ip核完成。因此,此設(shè)計(jì)的主要工作是求T電路、對(duì)數(shù)運(yùn)算電路以及數(shù)字平均去噪電路。?
2.1 FPGA的工作原理?
??? 為保證每次采樣的數(shù)據(jù)不丟失,在FPGA上設(shè)計(jì)兩個(gè)FIFO緩存[4]模塊,分別作為Anti-Stokes光和Stokes光經(jīng)光電轉(zhuǎn)換后的A/D轉(zhuǎn)換器與FPGA的接口。定義三個(gè)8位寄存器register1、register2和registerT0,分別用于存放常數(shù)(N為方便處理而放大的倍數(shù))和參考溫度T0時(shí)Anti-Stokes光和Stokes光光強(qiáng)度比值。從FIFO緩存器讀入的數(shù)據(jù)讀入數(shù)字平均去噪電路,去噪后數(shù)據(jù)經(jīng)一除法電路,可求得Anti-Stokes光和Stokes光的光強(qiáng)在待測(cè)溫度T時(shí)的強(qiáng)度比值,所得結(jié)果與registerT0中的數(shù)據(jù)經(jīng)除法電路求得比值,送入對(duì)數(shù)電路,便可求得值,再送入求T模塊便可得到T。然后送入比較模塊,輸出顯示最高溫,并與設(shè)定溫度值比較,超過則報(bào)警。原理框圖如圖2。?
?
?
2.2 求T電路模塊?
??? 由式(1)得:?
?????
??? 由于數(shù)值很小,所以均放大N倍處理,則:?
?????
也即由一除法電路來完成。為提高計(jì)算精度,這里把式(3)分子再擴(kuò)大M(2的指數(shù)倍)倍,得這樣經(jīng)過一個(gè)二進(jìn)制除法運(yùn)算后,將結(jié)果MT保存在一寄存器(設(shè)為register3)中,然后在將register3中的數(shù)右移lnM位,便得到整數(shù)部分,并存入另一寄存器中(設(shè)為register4);將register4中的數(shù)左移lnM位,并用register3中的數(shù)減去register4中的數(shù),可得小數(shù)部分的二進(jìn)制數(shù),存入寄存器(設(shè)為register5)中。由于FPGA中不能直接處理小數(shù),因此可以將register5中每一位對(duì)應(yīng)的小數(shù)乘以一個(gè)權(quán)值變?yōu)檎麛?shù)處理。?
??? 例如:register5位寬為6位,則每一位對(duì)應(yīng)的關(guān)系如表1。
?
?
??? 編程時(shí)小數(shù)的處理就化為整數(shù)處理,定義一寄存器變量register6存儲(chǔ)當(dāng)前被測(cè)溫度十進(jìn)制數(shù)對(duì)應(yīng)小數(shù)的尾數(shù),則:?
??? Register6=register5[5]*500+register5[4]*250+register5[3]*125+register5[2]*62+register5[1]*31+register5[0]*15?
??? 如:register5=6’b101001,則對(duì)應(yīng)小數(shù)在小數(shù)存儲(chǔ)器中的值為640,小數(shù)顯示為0.640。?
????因而計(jì)算所得到的值可精確到小數(shù)。進(jìn)行FPGA設(shè)計(jì)時(shí),可以把小數(shù)和整數(shù)結(jié)果分別存入兩個(gè)不同的存儲(chǔ)器中,而存儲(chǔ)單元的地址可以共享,從而顯示時(shí)只要一個(gè)地址分別讀出整數(shù)和小數(shù)。?
2.3 對(duì)數(shù)運(yùn)算電路模塊?
??? 常用的對(duì)數(shù)運(yùn)算電路模塊的FPGA設(shè)計(jì)方法有查找表法和基于CORDIC算法的方法。由于基于CORDIC算法[5][6]的方法對(duì)輸入數(shù)據(jù)的范圍有約束條件,因而此處采用查找表的方法計(jì)算對(duì)數(shù)。根據(jù)參考文獻(xiàn)[7],Anti-Stokes光和Stokes光光強(qiáng)度比有如下關(guān)系:?
?????
其中,Ias為Anti-Stokes光光強(qiáng),Is為Stokes光光強(qiáng);λs是Stokes光波長(zhǎng),λas是Anti-Stokes光波長(zhǎng)。已知普朗克常量h=6.63×10-34J·S,波耳茲曼常數(shù)k=1.38×10-23J/K;石英光纖的拉曼偏移波為Δγ=4.4×104m-1。當(dāng)入射波長(zhǎng)為λ0=905nm時(shí),可以算出λs=942nm,λas=870nm[8]。由于隨溫度的升高拉曼光譜對(duì)溫度的靈敏度呈曲線下降[7],因此把測(cè)溫范圍選在-20℃~+100℃,則可以計(jì)算得到Ias/Is的范圍在0.112~0.282內(nèi)。假設(shè)選則的參考溫度T0=300K,則可以估算出的范圍在0.67~1.70內(nèi)。如果比值精確到兩位小數(shù)計(jì)算,即以0.01為步長(zhǎng)尋址,則需要在定制ROM時(shí)存入104個(gè)數(shù)據(jù),這104個(gè)數(shù)據(jù)分別對(duì)應(yīng)0.67~1.70的對(duì)數(shù)值;由于在FPGA中不能直接處理小數(shù),在除法電路中使結(jié)果放大100倍處理,則尋址空間變?yōu)?7~170,步長(zhǎng)為1;同樣對(duì)應(yīng)址67~170的數(shù)據(jù)也需要放大存儲(chǔ)(若保留三位有效數(shù)字則放大1000倍存儲(chǔ))。在ROM核中,其地址是從0開始的,因此在讀ROM時(shí),應(yīng)設(shè)法使地址從0開始;具體做法可以在FPGA中定義一寄存器(regsub)存儲(chǔ)數(shù)據(jù)67,使計(jì)算所得的值在尋址前減去regsub中的數(shù)據(jù),則尋址空間變?yōu)?~103,對(duì)應(yīng)數(shù)據(jù)分別為放大了1 000倍的0.67~1.70的對(duì)數(shù)值,如圖3所示(放大的倍數(shù)將在最后求T時(shí)縮回)。最后計(jì)算的誤差在1℃~2℃。?
2.4 數(shù)字去噪電路模塊?
??? 去噪的方法有很多,如取樣積分法、小波分解法、混沌系統(tǒng)的微弱信號(hào)檢測(cè)、數(shù)字平均法等。一般認(rèn)為,在一個(gè)很短的時(shí)間內(nèi),光纖各測(cè)試點(diǎn)的溫度是不變的。所以為便于FPGA的程序?qū)崿F(xiàn),采用數(shù)字平均法。在數(shù)字平均器設(shè)計(jì)過程中,由于線性累加平均過程的計(jì)算存儲(chǔ)數(shù)據(jù)量較大,占用系統(tǒng)資源多,所以這里采用遞推式平均法[7],原理如式(5): ?
?????
??? 是第n個(gè)測(cè)量激光脈沖在第j個(gè)測(cè)量點(diǎn)的測(cè)量數(shù)據(jù)的平均值, 是第n-1個(gè)測(cè)量脈沖第j個(gè)測(cè)量點(diǎn)的平均值,xnj是第n個(gè)測(cè)量激光脈沖在第j個(gè)測(cè)量點(diǎn)的測(cè)量數(shù)據(jù),n是所發(fā)激光脈沖的個(gè)數(shù)。?
??? 可以看出隨著n值的增大,當(dāng)|時(shí),起不到修正作用,因此需要將(5)式等式右端兩項(xiàng)分開處理,且需要定義兩個(gè)存儲(chǔ)器分別存儲(chǔ)整數(shù)(設(shè)為ave_reg1)和小數(shù)(設(shè)為ave_reg2)。可直接存入整數(shù)部分存儲(chǔ)器ave_reg1,后面一項(xiàng)將放大處理,再除以n值;若放大L倍(L=2m)存入寄存器(設(shè)為register7)中,將register7中的數(shù)與n相除得到數(shù)存入寄存器(設(shè)為register8)中,然后由register8中的數(shù)右移m位得到的數(shù)加到ave_reg1修正整數(shù)部分; register8的低m位的數(shù)值大小用于修正ave_reg2中的數(shù)。設(shè)ave_reg2每個(gè)存儲(chǔ)單元位寬為B(B>m),當(dāng)ave_reg2中存儲(chǔ)單元的第m+1到B-1位有不為零時(shí),則將ave_reg2中存儲(chǔ)單元B-1到m+1位的數(shù)值大小用于修正ave_reg1對(duì)應(yīng)的存儲(chǔ)單元,同時(shí)ave_reg2中存儲(chǔ)單元的B-1到m+1位清零。?
??? FPGA程序設(shè)計(jì)是:假設(shè)每個(gè)脈沖的測(cè)量點(diǎn)數(shù)為N,總共發(fā)出了S個(gè)脈沖。初始時(shí)j=0,n=1;當(dāng)n=1時(shí),數(shù)據(jù)直接存ave_reg1中,每存一個(gè)數(shù)據(jù)j增加1;當(dāng)j=N時(shí),n增加1;n≥2時(shí),ave_reg1中相應(yīng)存儲(chǔ)單元所存的上一次的數(shù)據(jù)與當(dāng)前采樣計(jì)算的數(shù)據(jù)共同計(jì)算出第n次的平均值,并將結(jié)果所得的整數(shù)部分和和小數(shù)部分分別修正上一次ave_reg1和ave_reg2的上一次的數(shù)據(jù)。直到S個(gè)脈沖采樣計(jì)算完成。再將分別存有Anti-Stokes 數(shù)據(jù)和Stokes 數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)送入除法電路,計(jì)算出每個(gè)待測(cè)點(diǎn)的Anti-Stokes光強(qiáng)度和Stokes光強(qiáng)度的比值。數(shù)字平均去噪電路程序設(shè)計(jì)原理框圖如圖3。?
?
?
??? 本設(shè)計(jì)模數(shù)轉(zhuǎn)換時(shí)鐘都由FPGA提供,以保證計(jì)算的同步性;在求T和平均處理時(shí)的小數(shù)處理方法簡(jiǎn)單,容易實(shí)現(xiàn);基于查找表法的對(duì)數(shù)運(yùn)算速度快,適合于實(shí)時(shí)信號(hào)處理。?
??? 遞推式平均法設(shè)計(jì)的數(shù)字平均器占用的系統(tǒng)資源少,如上述S×N個(gè)數(shù)據(jù)只要能存儲(chǔ)2N個(gè)數(shù)據(jù)的容量就可以了,這也節(jié)省了FPGA中自帶的有限存儲(chǔ)單元。不足之處是受存儲(chǔ)位數(shù)的限制,當(dāng)n很大時(shí),修正值將幾乎不起作用。?
參考文獻(xiàn)?
[1] 周勝軍,張志鵬.分布式光纖溫度傳感器準(zhǔn)確測(cè)量實(shí)現(xiàn)[J].測(cè)試技術(shù)學(xué)報(bào),1997,1(4).?
[2] RICHAND M,SENIOR E.Fiber sensots provide kdy for monitoring temperature in compostite materials[M].Laser Focus,1987,23(5):122-127.?
[3] 張步新,陳陽,陳曉竹,等.紅外分布光纖溫度傳感器系統(tǒng)及特性研究[J].光電子·激光,1995,6(8).?
[4] 楊宗凱.數(shù)字專用集成電路的設(shè)計(jì)與驗(yàn)證.北京:電子工業(yè)出版社,2004.?
[5] (美)貝斯著,劉凌譯.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn).北京:清華大學(xué)出版,2002.?
[6] 牟勝梅,楊曉東.eθ的CORDIC迭代初值選取策略及其硬件實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2007.?
[7] 常程.基于后向喇曼散射分布式光纖測(cè)溫系統(tǒng)溫度解調(diào)方法研究[J].航空學(xué)報(bào),2001.?
[8] 曹立軍.分布式光纖溫度測(cè)量及數(shù)據(jù)處理技術(shù)的研究[D].合肥工業(yè)大學(xué),2006.