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