劉輝志, 張記龍,2, 李 曉, 王志斌
(1.中北大學儀器科學與動態(tài)測試教育部重點實驗室,太原 030051;2.山西省光電信息與儀器工程技術研究中心,太原 030051)
隨著光譜技術的快速發(fā)展,光譜探測在戰(zhàn)場偵察、大氣污染物檢測、毒氣探測等研究領域中有著越來越重要的應用,其中普遍采用傅里葉變換光譜技術獲取待測光譜信息[1-2]。傅里葉變換光譜技術是通過把干涉條紋的圖像信息轉換成離散的數(shù)字量,然后再進行傅里葉變換從而得到相應的光譜信息。因此,光電轉換是傅里葉變換光譜技術的重要環(huán)節(jié),數(shù)字信號處理方法是得到光譜信息的必需手段。光譜信號的數(shù)字化和后期數(shù)字信號處理在整個光譜探測系統(tǒng)中占有重要地位。光譜信號采集的好壞直接影響到最終的光譜分辨率,光譜的探測時間主要由數(shù)字信號處理系統(tǒng)決定[3]。目前實現(xiàn)傅里葉變換主要有軟件和硬件兩種方法,由于用軟件進行傅里葉變換受到指令周期本身的限制,延時長、速度慢,不能滿足戰(zhàn)場偵察、大氣污染物檢測、毒氣探測等光譜獲取的實時性需要,因此為提高光譜信息獲取速度,研究FPGA硬件實時數(shù)據(jù)處理方法具有重要意義[4-5]。
實時光譜探測系統(tǒng)主要分光路和電路兩部分組成,在實時探測中,為獲取待測光譜信息,建立了M-Z光學干涉裝置,原理框圖如圖1所示。圖中利用M-Z干涉具對入射光源信號進行分束后干涉,由聚焦透鏡將干涉具出射的平行光束聚焦在線陣CCD探測器感光單元上,形成明暗相間的干涉條紋[6]。每個感光單元上的亮度被采樣和量化,變換為隨時間變化的周期性電壓信號,經電平轉換后,將這些時間序列電信號輸入FPGA進行FFT處理,輸出的實部虛部數(shù)據(jù)進行平方根求模運算,得到光譜信息。系統(tǒng)把最后的光譜信息通過串口傳輸?shù)絇C機,從而實時顯示探測結果。
圖1 實時光譜探測系統(tǒng)原理框圖Fig.1 Principle of a real-time spectrum detection system
入射光源經M-Z干涉具分束鏡分束后,形成兩束光,假設兩束光的空間傳遞系數(shù)相同,設光強都為I0。這兩束光頻率相同、相位差一定、振動方向相同,因此滿足干涉條件,在線陣CCD相機上可以得到光源的干涉條紋。兩束光的振幅表示如下:
其中:Δ為光程差;2πvΔ為相位差;v為入射光源頻率;ω為入射角與橫切軸的夾角。干涉光的振幅可表示為
則干涉后的光強為
由于只有交流部分含有有效的光譜信息,干涉圖背景成分,即直流部分不包含任何信息,可忽略不計。由于存在非理想因素故加入校正因子,若每條光束的光譜分布為I0(v),則光束經過M-Z干涉具后輸出的干涉強度為
令E(v)=2J(v)I0(v),則上式變?yōu)?/p>
由于干涉信號為各頻率成分干涉信號的疊加,因此在連續(xù)光入射時,干涉結果呈現(xiàn)積分效應:
式中:Iv(Δ)為干涉強度隨光程差變化的函數(shù);E(v)為光譜強度隨波數(shù)變換的分布函數(shù)。
從上式可見干涉圖與光譜圖之間有著傅里葉變換的關系,因此通過計算Iv(Δ)的傅里葉變換可從干涉圖中得到目標的光譜分布E(v):
這就是傅里葉變換光譜原理。采集得到的干涉條紋數(shù)據(jù)經過整理,將線陣探測器像元序號的橫坐標看成時間,進行快速傅里葉變換處理就可得到入射光的頻譜分布[7]。
根據(jù)傅里葉變換光譜理論,在進行傅里葉變換之前,由于直流部分為干涉圖背景成分,不包含任何信息,應首先去除干涉圖直流成分。對于等間隔離散干涉圖可以采用下式,求出直流分量I:
式中:N為數(shù)據(jù)采樣點數(shù);Δx為采樣間隔。
然后利用下式去除干涉條紋的直流分量,獲得相對于橫坐標軸變化的干涉圖:
通常情況下,快速傅里葉變換對計算的數(shù)據(jù)要求為2n個,當采集獲得的干涉條紋數(shù)據(jù)不能滿足這一條件,可以對干涉條紋進行截取或添加零至2n個。數(shù)據(jù)添加零不影響光譜探測精度[8]。
經過以上數(shù)據(jù)處理后,獲得了有限光程差范圍區(qū)間上的干涉條紋,意味著強制干涉條紋函數(shù)在此范圍之外驟降為零,導致干涉條紋在區(qū)間邊緣出現(xiàn)尖銳的不連續(xù)性。計算還原后的譜線有“旁瓣”產生。旁瓣的產生會嚴重影響臨近譜線,尤其是較弱譜線的準確測量,需要利用切趾法來緩和邊緣不連續(xù)性,即一漸變權重函數(shù)(切趾函數(shù))與干涉條紋函數(shù)相乘,起到一種空間頻率濾波的作用,保證了強線附近的較弱光譜線測量[9]。
根據(jù)CCD探測器的像元數(shù)個數(shù)和精度,本文確定FPGA進行FFT數(shù)據(jù)處理的點數(shù)為1 024點,從實時處理和節(jié)省FPGA芯片邏輯資源壓縮成本考慮,系統(tǒng)采用流水線基2-FFT算法處理。綜上特點,系統(tǒng)選用的FPGA板卡為Xilinx公司Virtex2-Pro。該板卡主芯片XC2VP30,支持CameraLink接口標準,可以與CCD探測器接口直接對接,其資源情況如下:有30 816邏輯單元,136個18位的乘法器,2 448 kb的Block RAM和兩個PowerPC。
系統(tǒng)采用Xilinx公司軟件開發(fā)平臺ISE10.1,利用IP核設計了1024點流水線基2-FFT算法模塊,比利用硬件描述語言編寫的處理模塊更加方便,邏輯綜合生成模塊如圖2所示。
圖2 FPGA設計生成的FFT模塊Fig.2 FFT module designed by FPGA
利用VerilogHDL語言編寫Testbench測試程序,在Modelsim6.3f仿真軟件對模塊進行功能仿真。芯片時鐘頻率為100 MHz時,系統(tǒng)復位后,當rfd為高電平時數(shù)據(jù)開始進入存儲系統(tǒng);在約5.2 μs時,busy為高電平,開始從存儲系統(tǒng)中讀取數(shù)據(jù)送入蝶形單元,進行運算;在約21.6 μs時,dv變?yōu)楦唠娖?,蝶形運算完畢,同時輸出第一點FFT數(shù)據(jù),直到done變?yōu)楦唠娖綍r,1 024點FFT數(shù)據(jù)全部輸完,系統(tǒng)共耗時約32 μs,波形仿真結果如圖3所示。
圖3 Modelsim6.3f仿真1 024點基2-FFT時序波形Fig.3 Time sequence simulation wave of 1 024-point radix 2-FFT by Mdoelsim6.3f
系統(tǒng)消耗FPGA芯片XC2VP30硬件資源如表1所示。
表1 實現(xiàn)1 024點基2-FFT消耗XC2VP30硬件資源Table 1 XC2VP30 resource consumption in implementation of 1 024-point radix 2-FFT
為驗證數(shù)據(jù)處理系統(tǒng)1 024點基2-FFT模塊實際計算結果是否正確,在實驗室里進行了驗證實驗。實驗中采用波長635 nm激光器照射干涉具,在CCD探測器上形成干涉條紋,把經過處理后的干涉條紋數(shù)據(jù)經過Matlab7.4進行二維圖形分析如圖4所示。理論計算該干涉條紋的1 024點基2-FFT頻譜分布信息如圖5所示。從圖中可以看出,理論峰值點坐標分別為(117,50.75),(909,50.75),其橫坐標代表干涉條紋個數(shù),縱坐標代表能量,兩峰值點是對稱關系。
圖4 CCD采集635 nm波長干涉條紋Fig.4 The interference fringe of 635 nm wavelength collected by CCD
圖5 Matlab理論計算635 nm的頻譜分布圖Figu.5 Spectrum distribution of 635 nm wave calculated by Matlab theoretically
根據(jù)1.3節(jié)中干涉條紋數(shù)切趾理論,F(xiàn)PGA實際計算干涉條紋的頻譜結果,將前面幾點和最后幾點數(shù)據(jù)以零處理,通過Modelsim6.3f仿真后的數(shù)據(jù)導入Matlab7.4進行圖形分析,得到其頻譜分布信息如圖6所示。
圖6 FPGA實際計算635 nm的頻譜分布圖Fig.6 Spectrum distribution of 635 nm wave calculated by FPGA
從圖6中可以看出FPGA實際計算干涉條紋的FFT 峰 值 點 坐 標 分 別 為 (117,0.049 57),(909,0.049 57),與Matlab理論計算的橫坐標完全一致。理論幅值即能量是FPGA實際計算的1 024倍,這是由1 024點FFT算法系數(shù)造成的結果,具體計算時乘上系數(shù)即可。
圖6中得到的是干涉條紋快速傅里葉變換后的空間頻譜分布信息,它反映了產生干涉條紋光源的頻率分布,如果光譜探測中要實時獲取光源的波長分布信息,則還需要對干涉條紋的空間頻譜分布信息進行轉換,即譜線標定[10]。理論上,需要對干涉具所有波段的光都進行標定,但實際中,只能在某一光譜范圍內,用盡可能多的不同波長的單色光進行有限個波長的標定,得到實際譜線與理論譜線的偏差,然后進行修正并重新標定。由于光路系統(tǒng)的干涉具固定不變,因此,在某一段范圍內不同波長激光單位長度內的波數(shù)λ-1與該激光通過干涉具后單位長度內產生的干涉條紋的個數(shù)x的比值是常數(shù)c,即c=。如果在選取某一波長λ1作為基準后,根據(jù)干涉條紋數(shù)目就可以確定任意光源的波長由3.1節(jié)內容可知,635 nm激光形成的干涉條紋經過FPGA計算FFT后得出干涉條紋個數(shù)是117,易求得c值為134.59。
為驗證譜線標定的準確性,重新選用了波長850 nm激光器做實驗,分別求得結果如下:CCD原始采集850 nm波長的干涉圖如圖7所示。
采用同樣的處理方法,Matlab理論計算波長850 nm,干涉條紋1 024點FFT后頻譜信息分布圖見圖8,其峰值點的坐標分別為(86,76.27),(940,76.27)。FPGA實際計算波長850 nm干涉條紋1 024點FFT后的頻譜分布信息如圖9所示,其峰值點的坐標分別為(86,0.073 37),(940,0.073 37)。
圖7 CCD采集850 nm波長干涉條紋Fig.7 The interference fringe of 850 nm wave collected by CCD
圖8 Matlab理論計算850 nm的頻譜分布圖Fig.8 Spectrum distribution of 850 nm wave calculated by Matlab
圖9 FPGA實際計算850 nm的頻譜分布圖Fig.9 Spectrum distribution of 850 nm wave calculated by FPGA
由于系統(tǒng)干涉具不變,根據(jù)3.2節(jié)譜線標定原理,理論上兩個不同波長分別與對應的干涉條紋個數(shù)的比值應該是相等的。經驗證,當波長635 nm時,F(xiàn)PGA實際計算FFT后頻譜分布信息圖中干涉條紋數(shù)為117,計算得出c值為134.59;根據(jù)兩組c值相等理論,可以求得當波長850 nm時,F(xiàn)PGA實現(xiàn)FFT后頻譜分布信息圖中干涉條紋數(shù)應該是87.41。但是,從上面驗證實驗中可以知道FPGA實際計算FFT后頻譜分布中干涉條紋個數(shù)為86,與理論值87.41偏差1.41,相對誤差1.6%。其中造成誤差原因有干涉具加工精度、CCD探測器誤差、以及人為測量誤差等,后續(xù)可通過重復性測量和多次實驗的方法減少誤差。
本文運用干涉條紋與光譜圖存在傅里葉變換關系,利用高速FPGA芯片設計實時光譜探測系統(tǒng)數(shù)據(jù)處理模塊,從實現(xiàn)結果看是行之有效的。當芯片工作頻率在100 MHz時,完成線陣CCD探測器采集的1 024點基2-FFT數(shù)據(jù)處理約需32 μs,滿足實時光譜探測的要求。并且系統(tǒng)具有體積小、運算速度快、穩(wěn)定可靠等優(yōu)點。實時光譜探測中數(shù)據(jù)處理系統(tǒng)的成功研制,將為戰(zhàn)場偵察、大氣污染物檢測、毒氣探測等實時應用領域提供良好的設計思路,對軍民兩用都有重要的現(xiàn)實意義。
[1]黃中華,王俊德.傅里葉變換紅外光譜在大氣遙感監(jiān)測中的應用[J].光譜學與光譜分析,2002,22(2):235-238.
[2]張記龍,聶宏斌,王志斌,等.化學戰(zhàn)劑紅外光譜遙測技術現(xiàn)狀及發(fā)展趨勢[J].中北大學學報:自然科學版,2008,29(3):265-271.
[3]張敬波.基于DSP的傅里葉光譜儀測量控制系統(tǒng)[D].長春:吉林大學,2004.
[4]王一程,汪海兵,趙長德,等.基于FPGA的光電跟蹤控制系統(tǒng)設計[J].電光與控制,2009,16(3):54-57.
[5]王遠模,趙宏鐘,張軍,等.用FPGA實現(xiàn)浮點FFT處理器的研究[J].國防科技大學學報,2004,26(6):61-64.
[6]張記龍,王志斌,李曉,等.光譜識別與相干識別激光告警接收機評述[J].測試技術學報,2006,20(2):95-99.
[7]袁浩浩,張記龍,張聯(lián)盟.激光光譜探測的FPGA實現(xiàn)[J].微計算機信息,2009,25(1):214-215.
[8]李志剛.紫外真空紫外傅里葉變換光譜技術的研究[D].長春:中科院長春光學精密機械與物理研究所,2000.
[9]殷世民,相里斌,周錦松.基于FPGA的干涉式成像光譜儀實時數(shù)據(jù)處理系統(tǒng)研究[J].紅外與毫米波,2007,26(4):274-278.
[10]薛尚峰.基于靜態(tài)傅里葉變換干涉具的被動激光光譜探測技術研究[D].太原:中北大學,2008.