詳解如何利用FPGA設(shè)計靜態(tài)實時光譜采集與處理系統(tǒng)
摘 要: 為了實時獲取靜態(tài)邁克爾遜干涉儀得到的光譜信息,設(shè)計了基于FPGA的實時光譜采集分析系統(tǒng)。在Xilinx FPGA芯片上實現(xiàn)了干涉條紋到光譜數(shù)據(jù)的實時處理。在算法處理過程中,實現(xiàn)了干涉條紋濾波去噪、快速傅里葉變換、相位標定、光譜數(shù)據(jù)傳輸?shù)饶K化功能。實驗結(jié)果顯示,系統(tǒng)可以高速采集并實時處理光譜數(shù)據(jù)。
關(guān)鍵詞:光譜探測;靜態(tài)邁克爾遜干涉儀;FPGA;Verilog HDL
靜態(tài)邁克爾遜干涉儀是在傳統(tǒng)邁克爾遜干涉儀的基礎(chǔ)上改進的一種空間調(diào)制型光譜獲取裝置,將傳統(tǒng)動鏡采用一個傾斜很小角度的靜鏡代替,從而產(chǎn)生聯(lián)系變化的光程差,最終獲得待測光源的光譜信息。由于其沒有機械移動或掃描結(jié)構(gòu),所以結(jié)構(gòu)簡單緊湊,同時具有良好的穩(wěn)定性、抗震動和抗干擾能力,這為其應(yīng)用在更廣泛的生產(chǎn)生活領(lǐng)域提供了有利條件[1-2]。與此相似的靜態(tài)型光譜儀還有靜態(tài)傅里葉變換光譜儀[3]、沃拉斯頓分光光譜儀[4]、靜態(tài)Sagnac三角光譜儀[5]、光柵光譜儀[6]等。無論哪種靜態(tài)光譜儀都需要一個能夠?qū)崟r采集干涉條紋并且實時處理分析,得到光譜數(shù)據(jù)的處理系統(tǒng),否則將喪失靜態(tài)光譜儀的一大優(yōu)勢——實時性。如果想實現(xiàn)實時處理的功能,要求在采集數(shù)據(jù)及處理分析算法都相應(yīng)提高,這也是本文的主要研究內(nèi)容。
FPGA(Field Programmable Gate Array)為現(xiàn)場可編程門陣列器件[7],是在GAL、PAL、CPLD等可編程芯片的基礎(chǔ)上更集成化的產(chǎn)物。由于其本身就是硬件,所以具有數(shù)據(jù)處理快、靈活性高、集成度好等優(yōu)點[8]。它克服了定制電路的缺點,又解決了原有可編程器件的門電路數(shù)有限的問題,從而被廣泛地應(yīng)用在數(shù)字信號處理領(lǐng)域。 目前,對于靜態(tài)干涉條紋的采集及處理,主要有三種處理手段: (1)干涉條紋灰度數(shù)據(jù)由數(shù)據(jù)采集卡采集并傳遞給PC機[9],采用MATLAB、LabVIEW等分析軟件實現(xiàn)對干涉條紋的光譜分析; (2)采用定制的專用FFT芯片[10],再從CCD等光電器件輸出后直接進入FFT芯片完成數(shù)據(jù)處理;(3)采用可編程數(shù)字器件,如DSP、FPGA等,通過編程實現(xiàn)采集干涉條紋及FFT等算法的數(shù)據(jù)處理[11]。三種方法各有特點,方法(1)使用簡單、在PC機上實現(xiàn)的功能全,但不能脫機工作、系統(tǒng)復(fù)雜,便攜性差;方法(2)結(jié)構(gòu)緊湊、效率高、實時性好,但靈活性差、可移植性差,并且對于大點數(shù)的FFT不適合采用此法;方法(3)從靈活度、結(jié)構(gòu)性能、可移植性等方面看都相當適中,是目前應(yīng)用開發(fā)較多的一種形式。針對本系統(tǒng)研究內(nèi)容要求較高的實時性,選用硬件編程器件FPGA作為數(shù)字信號處理芯片,可以實現(xiàn)更高速、更靈活的系統(tǒng)性能。
1 靜態(tài)邁克爾遜干涉儀的原理及結(jié)構(gòu)
靜態(tài)邁克爾遜干涉儀的結(jié)構(gòu)原理如圖1所示。靜態(tài)邁克爾遜干涉系統(tǒng)是在傳統(tǒng)邁克爾遜干涉系統(tǒng)的基礎(chǔ)上,將原有動鏡變?yōu)閮A斜一定角度的固定反射鏡,如圖中反射鏡1所示。當光線1入射系統(tǒng)后,由分束鏡分為兩束光,一部分由反射鏡1反射回柱面鏡,這束光由于反射鏡1存在一定的夾角而非原路返回,其會與光線2經(jīng)反射鏡2反射的光線發(fā)生相干,形成干涉條紋。其他光線也以此類推,與其他光線發(fā)生干涉,最終在整個柱面鏡上形成靜態(tài)干涉條紋,再由柱面鏡匯聚到CCD上,采集得到干涉條紋的灰度數(shù)據(jù)。CCD采集的數(shù)據(jù)傳入FPGA中,在硬件FPGA芯片中完成干涉條紋的濾波、去噪,再通過FFT算法將干涉條紋中的頻譜信息提取出來,最終顯示出其結(jié)果。
在實際情況中,干涉條紋通過引入修正因子,可將光源強度表示為:
2 FPGA處理系統(tǒng)
2.1 總體設(shè)計
對于傅里葉變換的光譜獲取需要進行實時處理,即當?shù)玫焦庠锤缮鏃l紋的信號后,處理系統(tǒng)需要在處理當前數(shù)據(jù)時同時接收下一幀的干涉條紋數(shù)據(jù),這就需要系統(tǒng)具備高速的數(shù)據(jù)處理能力??删幊踢壿嬈骷﨔PGA具有高速并行處理能力,可完成系統(tǒng)實時采集及處理的要求。干涉條紋的灰度數(shù)據(jù)由CCD探測器采集傳入FPGA芯片中,在芯片中完成濾波去噪、快速傅里葉變換、相位校正及標定等算法。系統(tǒng)采用AViiVA M1型線陣CCD探測器,包括1 024個像元,8/10 bit數(shù)字輸出,可探測波長范圍為400~1 100 nm。設(shè)計了實時光譜采集及片上處理的系統(tǒng),其原理圖如圖2所示。
模塊一為干涉條紋的采集部分,由驅(qū)動控制對AViiVA M1型線陣CCD探測器進行時鐘脈沖的提供和控制。當系統(tǒng)開始運行時,其提供起始控制信號(st)、時鐘信號(clk)、觸發(fā)信號(trgi及trgd)等。模擬輸出信號可通過示波器觀察采集得到的靜態(tài)干涉條紋,數(shù)字化后傳給FPGA。模塊二為光譜分析處理模塊,為了使處理速度達到較高水平,設(shè)計了串并轉(zhuǎn)換方式,將數(shù)據(jù)導入雙端口RAM緩存中,當FPGA芯片控制數(shù)據(jù)并行讀取時,數(shù)據(jù)輸入FFT模塊并處理,實現(xiàn)數(shù)據(jù)的快速傅里葉變換。變換后的頻譜信息經(jīng)過預(yù)先編寫的相位校正和光譜標定程序而獲得準確的光譜分布。
2.2 切趾處理
由于傅里葉變換過程是針對無限大數(shù)據(jù)的,但實際輸入的數(shù)據(jù)量是有限的,所以干涉圖樣的采樣就相當于與一個矩形函數(shù)相乘,也就是頻域中光譜和矩形函數(shù)的SINC卷積。但由于這樣做會導致光譜的失真變形,所以通常采用加窗的處理方式,窗函數(shù)選取的好可以使光譜盡量少地泄露。
在MATLAB仿真軟件中,通過對一組660 nm激光干涉條紋數(shù)據(jù)進行加窗處理,分別采用漢明窗、三角窗、加布萊克曼窗與不加窗的情況進行對比,得到如圖3所示的頻譜相應(yīng)。
切趾函數(shù)的選擇需要注意主瓣寬度盡量窄,旁瓣幅值盡量低。由圖可以看出,加三角窗中心處產(chǎn)生隔斷,而加布萊克曼窗時峰峰值受到抑制,相比之下,加漢明窗比較理想,所以本系統(tǒng)中采用漢明窗。窗體程序是先由MATLAB計算漢明窗的值并用二進制補碼表示,然后在FPGA的某一個ROM存儲器中存放初始化的窗函數(shù)值,最后通過乘法器完成切趾功能。
2.3 FFT算法模塊