賈明俊,陸安江,趙 麒,白忠臣,盧學(xué)敏,袁錢圖
(1貴州大學(xué)大數(shù)據(jù)與信息工程學(xué)院,貴州貴陽 550025;2貴州民族大學(xué)機(jī)械電子工程學(xué)院,貴州貴陽 550025)
因為不同物質(zhì)對于紅外光譜的吸收與反射情況不同,近紅外光譜分析便成了分析物質(zhì)的重要方法。FTIR光譜儀就是其中重要使用工具之一[1-3],此類光譜儀廣泛用于化工、軍事、農(nóng)牧業(yè)、林業(yè)、環(huán)保、制藥工藝等領(lǐng)域。由于傳統(tǒng)的光譜儀體積龐大、延時高、便攜性差等缺點[4-8],無法滿足實時在線測試的需求。本文研究了一種實時在線的FTIR光譜儀[9-10],國內(nèi)很多光譜儀都是CCD光譜采集系統(tǒng),本文利用FPGA高速、高效、靈活性強(qiáng)的優(yōu)勢設(shè)計了一種硬件描述語言的采集系統(tǒng)[11-15]。通過使用AD7903將采集的光PD信號轉(zhuǎn)換為數(shù)字量,利用DAC8568將存入ROM的預(yù)制電壓數(shù)字量轉(zhuǎn)換為模擬量從而驅(qū)動MEMS微鏡,最終實現(xiàn)的快速FTIR光譜儀最高分辨率達(dá)到了0.06 cm-1,具有16位的采樣精度與1 MSPS的轉(zhuǎn)換速度。經(jīng)驗證,基本滿足了現(xiàn)場在線測試需求。
如圖1所示,本次設(shè)計的干涉儀基于邁克爾遜干涉儀原理,采用分波陣面法產(chǎn)生干涉信號,圖中虛線表示動鏡移動時的位置,整個系統(tǒng)由動鏡、定鏡、窄帶光源、分束器以及探測器構(gòu)成。動鏡與定鏡相互垂直且到分束器初始距離相同,且分束器與動鏡和定鏡分別構(gòu)成45°夾角。整個工作過程由光源發(fā)出入射光,入射光經(jīng)過分束器,一半的入射光反射到定鏡上再經(jīng)過定鏡全反射回分束器經(jīng)透射到達(dá)光電探測器,于此同時,另一半的入射光經(jīng)過透射到達(dá)MEMS動鏡,由于動鏡的移動而產(chǎn)生光程差,這樣就會導(dǎo)致經(jīng)過動鏡全反射的光再經(jīng)過分束器反射后匯聚在探測器時產(chǎn)生干涉,探測器將干涉信號采集下來。動鏡的移動距離決定著干涉儀的性能。理想情況下,動鏡的移動距離是勻速變化的,但是MEMS電熱式微鏡在不同電壓情況下其彎曲度不是理想的線性,因此會導(dǎo)致附加譜線。因此本次設(shè)計的光譜儀通過增加同步采集參考光,經(jīng)過CPU利用Bault方法最終提高采樣精度。
圖1 干涉儀框圖
如圖2所示,整個系統(tǒng)由2部分組成,分別是上位機(jī)跨平臺的C++圖形用戶界面應(yīng)用程序,該框架(QT Creator)通過編程形成,主要功能是對下位機(jī)輸送操作指令、對于發(fā)回的光譜數(shù)字?jǐn)?shù)據(jù)進(jìn)行分析并繪制光譜圖。下位機(jī)部分有3個細(xì)分模塊,第一部分是光電生成部分,系統(tǒng)有2路光源,分別是參考光源和樣本光源,它們通過邁克爾遜干涉原理的干涉儀產(chǎn)生等光程差的相干干涉;由此產(chǎn)生的不同光強(qiáng)同步轉(zhuǎn)換為數(shù)字量。第二部分由硬件底層采集電路組成,主要完成I/V轉(zhuǎn)換、放大、濾波得到穩(wěn)定的數(shù)據(jù)信號。第三部分是FPGA控制處理部分,用于實現(xiàn)對ADC、DAC、RS232的時序控制,設(shè)計出符合器件技術(shù)手冊要求的verilog時序代碼,最后要將每個模塊整合在一個top文件下,所有時序都按要求的方式運行。最終通過引腳綁定至EMIO引出。最后整個系統(tǒng)密切配合完成光譜繪制。
圖2 光譜儀系統(tǒng)
光譜儀分辨率可以表示一個儀器的分辨能力,對于波長為a1和a2的2個單色光,定義Δa=a1-a2為分辨率。在最大光程差l處,a1,a2分別有n和n+1個余弦波,定義動鏡最遠(yuǎn)位移為l,則有:
2l=n/a1=(n+1)/a2
(1)
Δa=a1-a2
(2)
(3)
不難得出,動鏡的移動距離決定著光譜儀的分辨率,設(shè)置多分辨率的光譜儀,就需要不同最大光程差移動距離,本系統(tǒng)的光程差有0.033、0.015、0.024 cm,所以驅(qū)動MEMS微鏡就需要給出不同的電壓。分別對應(yīng)8、4、6 V,這是由MEMS微鏡移動與電壓關(guān)系決定的,而且由于驅(qū)動速度不同直接影響著光譜儀動鏡加速度,所以驅(qū)動頻率應(yīng)在建議頻率之下。為此設(shè)置了1-2-5 Hz的頻率以驗證最好效果。為了滿足多通道、高精度、低延時的要求。選用了DAC8568器件,DAC8568具有8個通道、16位精度。滿足了本采集系統(tǒng)驅(qū)動設(shè)計需求。設(shè)計MEMS四通道等距移動即可。DAC控制時序相對復(fù)雜。對于參考電壓外接口,如果不使用就需要接電容后再接地濾波。DAC8568的使用需要一些指令的輸入,首先是將器件復(fù)位,設(shè)計選用所有通道復(fù)位到0。接著把lDAC加載引腳設(shè)置為無效。因為使用同步加載模式不需要加載控制。接下來就是poweron步驟了,這里有2點須注意,一個就是選擇Flexible Mode,因為Static Mode會不斷關(guān)閉內(nèi)部參考,還有一個就是使用穩(wěn)定的內(nèi)部參考,故此選擇090A操作語句。在這種語句控制下,器件一直使用內(nèi)部參考電壓并且無需反復(fù)重啟。最后一個語句是所有寄存器寫0,輸入所有指令后DAC8568與普通DAC工作方式相同,控制命令如圖3定位流程。再通過技術(shù)手冊得知主要問題在于同步腳SYNC何時拉高拉低和32個sclk給入。Clr直接拉高即可。
圖3 指令圖
ADC采集數(shù)據(jù)的頻率需要根據(jù)所采信號的最大頻率設(shè)定,根據(jù)奈奎斯特采樣定理,采樣頻率應(yīng)該為被采頻率的2倍以上,而我們一般習(xí)慣使用過采樣。所以需要計算被采信號的最高頻率fmax。根據(jù)本次設(shè)計的光譜探測范圍為900~2 600 nm,則相應(yīng)的波數(shù)υ為:1/2 600~1/900 nm-1。根據(jù)最大移動距離L值為0.033 cm,完成一次掃描的時間(T)在最快驅(qū)動頻率5 Hz情況下為0.2 s。設(shè)速度為v,根據(jù)式(4):
(4)
得到最大信號頻率為3.6 kHz,據(jù)此綜合考慮選擇了DAC8568型號的ADC器件。該器件具有16位的高精度雙通道模擬輸入、吞吐速率為1 MSPS、支持軌到軌的轉(zhuǎn)換。查看技術(shù)手冊,選用了符合要求的四線同步采樣模式(CS模式),根據(jù)設(shè)計要求,主機(jī)通過一個片選CONVERT和同一個時鐘SCLK同時控制2個從機(jī)工作實現(xiàn)同步采集。通常所有的ADC時序設(shè)計都是圍繞技術(shù)手冊進(jìn)行的,第一步看sclk,查看得知sclk最小周期為11.5~16 ns,但是一般選用典型時鐘速率,故而選用50 MHz時鐘作為串行時鐘。接著看CNV,設(shè)計主要關(guān)注何時拉低拉高,同時要明確這是一個先轉(zhuǎn)換后采集的過程,另外要關(guān)注保持建立時間。最后,AD7903也和大部分器件一樣,下降沿數(shù)據(jù)逐漸輸入,所以上升沿串行取出。最終利用vivado編寫的主體代碼如圖4所示。
圖4 代碼圖
設(shè)計選用了CP2101串口并設(shè)置460800的最大波特率傳輸機(jī)制。數(shù)據(jù)采集和數(shù)據(jù)控制字寬度不一樣,所以對于UART做了不同的處理,對于下位機(jī)接收UART采用普通的UART機(jī)制,10 bit數(shù)據(jù),包括1個起始、1個結(jié)束和8 bit數(shù)據(jù)。UART_rx時刻保持等待狀態(tài),等著上位機(jī)指令。只要上位機(jī)有指令發(fā)出,則立刻分析。對于采集的數(shù)據(jù),下位機(jī)UART_tx采用了16位發(fā)送方式并且例化了2個發(fā)送tx,這樣做有助于提高傳輸速率,ADC的數(shù)據(jù)是16位的,所以設(shè)計16位發(fā)送更有利于理解。這樣做也發(fā)揮了FPGA靈活多變的特點。在數(shù)據(jù)緩沖時,利用了比較常用的FIFO,F(xiàn)IFO深度很大,達(dá)到10 000 bit,之所以這樣做是因為串口相對于采集的吞吐率過大,所以1 s內(nèi)數(shù)據(jù)也需要大的緩存空間,在FIFO設(shè)計中最重要的是關(guān)注讀寫使能的設(shè)置,F(xiàn)IFO的寫使能選用A/D采集的dataready,保障了寫入數(shù)據(jù)的可靠,讀使能選用tx_busy,保證了發(fā)送的有序。FIFO的空empty也作為tx的數(shù)據(jù)有效標(biāo)識,保證了tx不傳輸空數(shù)據(jù)和無效數(shù)據(jù)。
對于整個系統(tǒng)的設(shè)計,遵循著自頂向下的設(shè)計方式,即首先給出設(shè)計方案整體架構(gòu),然后依據(jù)需求將系統(tǒng)各部分模塊化,每個接口放在頂層,每個模塊單獨設(shè)計好,設(shè)計出滿足需要的模塊小單元。正是基于這樣的原因,必須在仿真時先對模塊測試是否符合需求,然后再對整體仿真,對每個用例都要測試。保證系統(tǒng)的可靠性。
對于ADC測試代碼,需要給出的激勵有時鐘ad_sclk和輸入的數(shù)字?jǐn)?shù)據(jù)ad_sdo1(2)以及啟動信號ad_start。經(jīng)過查看仿真圖5可以看出,在時鐘與信號有效時,A/D數(shù)據(jù)轉(zhuǎn)換并沒有立即開始,直到ad_start啟動后,數(shù)據(jù)采集才開始,片選ad_cnv拉高、采集過程循環(huán)進(jìn)行,ad_data也輸出了寄存的數(shù)值,得出結(jié)論滿足時序要求。
圖5 ADC仿真時序
DAC時序首先必須有時鐘clk、復(fù)位rst以及啟動da_start指令。查看仿真圖6可以看到,在rst無效、clk有效時,DAC并沒有立即輸出信碼Din,這是因為da_start沒有啟動,時序仿真在啟動start有效后立即進(jìn)入工作狀態(tài)。在啟動信號有效時,持續(xù)進(jìn)行信碼輸出。
圖6 DAC仿真時序
對于UART串口沒有單獨測試。把它作為系統(tǒng)代碼測試的一部分進(jìn)行了綜合仿真。在系統(tǒng)仿真圖7中,仿真了上位機(jī)發(fā)送代碼senddata為8h10指令,即ADC、DAC同時工作,可以從圖7看到rxd拉低發(fā)生了接收,最后可以看到寄存器rx_data成功接收了8h10??梢娭噶钫_接收。緊接著系統(tǒng)在得到rx_data的信息碼后,ADC和DAC的start都拉高啟動。ADC和DAC隨后都進(jìn)入工作模式。在數(shù)據(jù)有效后采集數(shù)據(jù)通過2個UART發(fā)送到發(fā)送線txd1和txd2。最終得出時序仿真符合要求。
圖7 采集系統(tǒng)仿真時序
本次設(shè)計主要測試有DAC驅(qū)動測試、ADC采集測試。主要用到儀器有GDS-2204A(200 MHz)、小型MEMS干涉儀、1 310 nm的近紅外作為參考光源、CPU主機(jī)。整體布局圖如圖8所示,示波器主要為了觀察ADC采集輸入信號與DAC的輸出信號,首先測試FPGA輸出電壓數(shù)據(jù)與頻率是否符合要求,圖9是1 Hz與6.6 V的測試結(jié)果,可以看出三角波十分標(biāo)準(zhǔn)。驗證了驅(qū)動沒有問題,下一步就可以進(jìn)行采集設(shè)置了,首先利用信號發(fā)生器產(chǎn)生一個三角波,然后利用MATLAB將串口發(fā)回數(shù)據(jù)繪制出來,結(jié)果如圖10所示,雖然有少許毛刺,但是經(jīng)計算是輸入的20 kHz三角波,最后在ADC和DAC都符合要求時,進(jìn)行系統(tǒng)連接,最終采集的光譜信號如圖11所示,可以看出水和空氣的光譜具有明顯的特征差別。最終得出,光譜儀采集部分結(jié)果基本符合設(shè)計要求,后期進(jìn)一步的光譜數(shù)據(jù)處理交由CPU部分處理。
圖8 布局圖
圖9 驅(qū)動電壓
圖10 采集三角波
圖11 水和空氣采集的相對強(qiáng)度圖
設(shè)計的基于FPGA的光譜采集系統(tǒng),經(jīng)仿真論證設(shè)計滿足要求,并且改變了多數(shù)利用ARM設(shè)計驅(qū)動底層器件的現(xiàn)狀,為廣大科研人員提供了一個更為可靠的路線。與此同時,采用FPGA設(shè)計整個下位機(jī)系統(tǒng),不僅縮短了開發(fā)周期,而且節(jié)約了成本。利用FPGA開發(fā)的系統(tǒng)不僅更加高速高效靈活,而且便攜升級換代也可以發(fā)揮技術(shù)沉淀的優(yōu)勢。但是整套系統(tǒng)還可以進(jìn)一步提高,集成度也可進(jìn)一步優(yōu)化。在下一步設(shè)計中,從ARM與FPGA結(jié)合的角度出發(fā),開發(fā)更加小型化的設(shè)備。