王選擇,王 剛,楊練根,曾志祥,肖康達(dá)
(1.湖北工業(yè)大學(xué)機械工程學(xué)院,湖北武漢430068;2.湖北省現(xiàn)代制造質(zhì)量工程重點實驗室,湖北武漢430068)
在便攜式測試系統(tǒng)信號采樣中,高速、多路、集成的數(shù)據(jù)采集系統(tǒng)具有重要的實用價值。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)在專業(yè)測試系統(tǒng)中的應(yīng)用,一般需要繁瑣的改造,難以滿足高速與高集成度的要求,降低了測試系統(tǒng)的使用可靠性[1-2]。
在精密絕對距離測量方法中,基于電流調(diào)制的頻率掃描干涉測量系統(tǒng)[3-4],需要在半導(dǎo)體激光器電流調(diào)制的過程中,同步采樣至少兩路干涉信號[5]。一路作為參考干涉信號,一路作為測量干涉信號,軟件算法以兩路采樣信號為依據(jù),通過信號處理,計算測量絕對距離。
這就要求專門的采樣系統(tǒng),能夠按照系統(tǒng)要求,在滿足軟件觸發(fā)開始的條件下,與電流調(diào)制過程協(xié)同進(jìn)行,以較高的采樣頻率完成信號的A/D轉(zhuǎn)換與存儲。并在轉(zhuǎn)換完畢后自動停止轉(zhuǎn)換,并通知處理器取走數(shù)據(jù),等待下一次轉(zhuǎn)換啟動命令的到來。這樣的采樣系統(tǒng)具有靈活的控制邏輯,達(dá)到與電流調(diào)制電路、緩存、A/D芯片、處理器的邏輯配合。
由于FPGA具有時鐘頻率高,內(nèi)部延時小,編程配置靈活等一系列優(yōu)點。在FPGA芯片內(nèi)可以進(jìn)行采集控制、緩沖、處理、傳輸控制、通信[6]。為此,本文針對頻率掃描的測量系統(tǒng),給出了一種基于FPGA的準(zhǔn)同步、多路實時存儲的數(shù)據(jù)采集方案。
圖1為設(shè)計采用的測量系統(tǒng)結(jié)構(gòu),該系統(tǒng)由2個邁克爾遜干涉系統(tǒng)組成,一個是測量干涉系統(tǒng),一個是參考干涉系統(tǒng)。
準(zhǔn)直的半導(dǎo)體激光器發(fā)出的激光通過分光鏡BS1分成2束,一束進(jìn)入比對干涉系統(tǒng),形成干涉信號由光電探測器1接收;另一束進(jìn)入測量干涉系統(tǒng),形成干涉信號由光電探測器2接收。其中測量干涉系統(tǒng)的兩臂長度差LM為測量距離,參考干涉系統(tǒng)的兩臂長度差LR是已經(jīng)標(biāo)定的距離。
在半導(dǎo)體激光器上注入斜坡調(diào)制電流,實現(xiàn)激光波長線性調(diào)制。激光器輸出波長調(diào)制的激光,經(jīng)過偏振分光鏡分為兩束,進(jìn)入臂長不相等的邁克爾遜干涉系統(tǒng)中,在調(diào)制電流量一定的條件下,干涉的光強相位變化量與光程差成正比。由于參考距離LR為已知,通過計算兩干涉系統(tǒng)中干涉的光強相位變化量的比值便可得到被測距離,從而實現(xiàn)絕對距離測量[7]。
圖1 絕對距離測量系統(tǒng)光路結(jié)構(gòu)
電流正負(fù)調(diào)制電路由3部分組成,積分電路、激光器工作點調(diào)整電路和電壓轉(zhuǎn)電流電路,如圖2所示。
積分電路的輸入信號為FPGA提供的方波信號,通過編程,使FPGA的一個I/O口產(chǎn)生所需要的方波信號。方波信號高、低電平變化時,通過三極管Q1和Q2分別實現(xiàn)電容C1的充電和放電過程,用兩個三極管分別控制是為了讓充電和放電過程相互獨立,互不影響。其中R6和R4的阻值相等,R7的阻值選擇較大,是為了保證充、放電時間在一定范圍內(nèi)保持一致。
圖2 電流正負(fù)調(diào)制電路
圖中R8、R9、R10、C2組成激光器工作點調(diào)整電路,通過電容和調(diào)整電阻的阻值,可以濾掉直流信號和改變斜坡信號的大小。調(diào)整工作點是為了控制輸入到激光器上的電流變化范圍,保證這個變化范圍滿足波長隨電流近似線性變化的要求。
經(jīng)過激光器工作點調(diào)整電路,運放U3輸入信號的電壓在1 V左右,不在其工作范圍,因此選擇型號為TLC2272cp的滿幅運放使其滿足工作范圍要求。運放U3和三極管Q4使經(jīng)過調(diào)整后的電壓轉(zhuǎn)換成驅(qū)動激光器的調(diào)制電流。
為實現(xiàn)激光干涉光強信號轉(zhuǎn)換成電流信號輸出,進(jìn)而將光電管的輸出電流轉(zhuǎn)換成電壓并做相應(yīng)噪聲處理,設(shè)計了圖3所示的光電轉(zhuǎn)換電路。VCC為+3.3 V電源,D1為光電二極管,用于接收干涉光強信號,Q1為9013型三極管,用于放大光電二極管輸出的電流,電阻R2用于將放大的電流轉(zhuǎn)換為電壓輸出,電阻R1和電容C1用于過濾高頻信號得到有效的輸出電壓。
圖3 光電轉(zhuǎn)換電路
本數(shù)據(jù)采集系統(tǒng)由光電探測器1和2、光電轉(zhuǎn)換電路、A/D模數(shù)轉(zhuǎn)換模塊、FPGA內(nèi)部16位FIFO存取模塊、串行通訊以及FPGA器件等構(gòu)成。其中A/D芯片型號為AD7812,是一種高速、低功耗、8通道同步采樣轉(zhuǎn)換,采用2.7~5.5 V單電源供電的10位高速串行接口A/D轉(zhuǎn)換芯片,采樣頻率為350 kHz,轉(zhuǎn)換時間為2.9 μs,適合于集成式的高速采集系統(tǒng)要求。FPGA器件為EP4CE15F17C8,它控制數(shù)據(jù)轉(zhuǎn)換、存儲、讀取等各個過程。
如圖4所示,在系統(tǒng)中,由光電探測器1和2接收激光干涉信號,通過光電流轉(zhuǎn)電壓的方式完成光電轉(zhuǎn)換,并通過選取適當(dāng)元件參數(shù),使轉(zhuǎn)換電平處于0~3.3 V,以滿足AD7812對輸入信號幅值(0~3.3 V)的要求。FPGA主要控制A/D的初始化、啟動、轉(zhuǎn)換數(shù)據(jù)傳輸、存儲的過程,且采樣頻率由FPGA內(nèi)部時鐘來設(shè)置。數(shù)據(jù)轉(zhuǎn)換完成的同時FPGA發(fā)送寫允許(wrreq)、寫時鐘信號(wrclk),觸發(fā)FIFO讀取數(shù)據(jù)。FIFO存儲一定數(shù)量的A/D轉(zhuǎn)換結(jié)果,存儲完成后向FPGA發(fā)送滿標(biāo)志位(wrfull),通知FPGA停止A/D轉(zhuǎn)換。然后將FIFO的數(shù)據(jù)通過串口通訊傳輸給上位機,進(jìn)行實時顯示。
圖4 高速數(shù)據(jù)采集系統(tǒng)框圖
利用Verilog語言設(shè)計FPGA控制模塊,主要包括A/D轉(zhuǎn)換控制模塊、存儲模塊、同步控制模塊,分別實現(xiàn)了FPGA對A/D轉(zhuǎn)換的時序控制、FIFO實時數(shù)據(jù)存儲、電流調(diào)制和軟硬同步觸發(fā)。
3.2.1 A/D轉(zhuǎn)換硬件連接方式
FPGA與AD7812硬件接口如圖5所示。在本系統(tǒng)中,AD7812的VDD采用3.3 V電源供電,滿足數(shù)據(jù)總線直接與FPGA(FPGA引腳的邏輯電平為3.3 V)連接要求。參考電壓VREF引腳與VDD引腳直接相連。為避免AD7812外界噪音的干擾,將AGND、DGND引腳接地,CREF引腳接上一個10 nF的電容。AD7812的啟動轉(zhuǎn)換引腳convst,串行時鐘引腳sclk,串行數(shù)據(jù)輸入和輸出引腳din、dout,同步發(fā)送和接收幀引腳tfs、rfs分別與FPGA通用I/O相連。
圖5 AD7812與FPGA的電路連接圖
3.2.2 A/D 轉(zhuǎn)換控制模塊
A/D轉(zhuǎn)換過程的狀態(tài)轉(zhuǎn)移圖如圖6所示。
圖6 狀態(tài)轉(zhuǎn)移圖
通過上述有限狀態(tài)[8]的轉(zhuǎn)移來完成A/D轉(zhuǎn)換的全過程。IDLE狀態(tài)接收到有效信號strat,其中start為A/D的啟動信號,由主程序產(chǎn)生;STRATN和CONVST狀態(tài)控制了convst的電平變化低到高(其中低電平至少保持20ns);DELAY狀態(tài)用來對convst電平變化延時2.3 μs,即92個 clk后啟動轉(zhuǎn)換,其中 clk來自FPGA內(nèi)部晶振40 MHz;SCLK和RFS_TFS狀態(tài)控制sclk電平變化低到高(其中低電平保持50 ns),分別置tfs和rfs的電平低到高、高到低;剩下狀態(tài)用來控制sclk的下降沿,通過din引腳逐位寫入操作A/D芯片的控制字符,并通過不同的字符來啟動芯片內(nèi)部電源和選擇模擬信號的輸入端口,sclk上升沿通過dout引腳逐位讀出數(shù)據(jù),數(shù)據(jù)轉(zhuǎn)換完的同時產(chǎn)生FIFO寫允許信號(wrreq)和寫時鐘信號(wrclk)。其中,AD7812轉(zhuǎn)換的數(shù)據(jù)為16位,高10位有效,需要16個sclk,周期為100 ns,啟動轉(zhuǎn)換時間為 2.3 μs,整個 A/D 轉(zhuǎn)換過程需要 3.9 μs完成,采樣頻率為251 kHz。
3.2.3 存儲模塊
如果利用AVALON總線邊轉(zhuǎn)換邊讀取,將消耗了Nios大量時間,也不能保證嚴(yán)格周期性的采樣時間;單純利用FPGA內(nèi)部寄存器方式,則沒有足夠的存儲空間;因此,為了滿足A/D數(shù)據(jù)轉(zhuǎn)換與存儲器之間高速有效數(shù)據(jù)存儲,通過異步FIFO[9-10]連接轉(zhuǎn)換數(shù)據(jù)輸出端口與數(shù)據(jù)讀取端口。其中,F(xiàn)IFO數(shù)據(jù)輸入端口與A/D轉(zhuǎn)換數(shù)據(jù)輸出端口相連,F(xiàn)IFO數(shù)據(jù)輸出端口與Nios數(shù)據(jù)讀取端口相連。
本文設(shè)計的異步FIFO位寬為16,深度(即FIFO可以存儲16位數(shù)據(jù)的個數(shù))為8 192。且FIFO緩存器配合A/D轉(zhuǎn)換與指令讀取進(jìn)行寫入與讀出數(shù)據(jù)的過程如下:
寫入時,在指令啟動轉(zhuǎn)換,等待外部觸發(fā)出現(xiàn)后,開始連續(xù)的A/D轉(zhuǎn)換過程。A/D轉(zhuǎn)換每進(jìn)行一次,向FIFO寫進(jìn)一個相應(yīng)的轉(zhuǎn)換數(shù)據(jù),同時FIFO內(nèi)部地址指針加1,直到滿足緩沖區(qū)長度的數(shù)據(jù)采集要求。
讀出時,在識別FIFO滿空標(biāo)志的條件下,逐個讀取FIFO緩沖區(qū)的數(shù)據(jù),每讀一個數(shù)據(jù),相應(yīng)的控制線產(chǎn)生有效的讀指針加1,完成FIFO的順序讀取。
3.2.4 同步控制模塊
在Quartus_Ⅱ中設(shè)計實現(xiàn)同步數(shù)據(jù)采集接口控制模塊原理圖如圖7所示。
在圖7中,readdata、readact分別與AVALON總線相同命名的信號線相連;reset_n與AVALON總線中reset相連;start是啟動A/D轉(zhuǎn)換的信號線,為Nios主程序產(chǎn)生;clk是通過FPGA內(nèi)部晶振40 MHz所得;wrreq_1和wrclk_1是由A/D轉(zhuǎn)換模塊產(chǎn)生,wrreq_1、start與wrfull共同控制FIFO的寫請求信號wrreq,當(dāng)start有效和wrfull為不滿時,且wrreq_1為有效時,F(xiàn)IFO緩存器的寫請求有效,否則為無效;wrclk_1、start和clk來控制FIFO的寫時鐘信號wrclk,其中wrclk_1是隨著A/D轉(zhuǎn)換的停止而停止,而start和clk是來讓wrclk延續(xù),為了讓wrfull在讀取一個數(shù)時變?yōu)闊o效;data是 A/D轉(zhuǎn)換后的有效數(shù)據(jù);readact、addr[0]、addr[1]、rdempty 共同控制 FIFO 的讀請求,q 輸出地址是0、wrfull的地址是1、rdempty的地址是2,這些地址位是Nios II中的自定義地址,地址偏移量是0到2,讓偏移地址1(wrfull)和地址2(rdempty)為無效,為了保證rdreq為有效且q輸出有效數(shù)據(jù),并將q與wrfull、rdempty區(qū)分開來;reset_N與A/D轉(zhuǎn)換模塊的reset相連。
為了實現(xiàn)電流調(diào)制和軟硬件的同步觸發(fā),利用Nios主程序產(chǎn)生一個有效信號給到FPGA,F(xiàn)PGA產(chǎn)生所需方波信號,通過I/O端口輸給電流正負(fù)調(diào)制電路,再通過I/O口檢測輸入方波信號的下跳變,檢測到下跳變時進(jìn)入中斷,產(chǎn)生一個有效start信號來啟動A/D轉(zhuǎn)換,同時也用來控制FIFO的寫請求和寫時鐘,經(jīng)過足夠的時間后(T=3.9 μs),AD7812產(chǎn)生有效數(shù)據(jù);同時輸出寫請求、寫時鐘信號,此時數(shù)據(jù)變?yōu)橛行?,此后在wrclk的上升沿將A/D轉(zhuǎn)換器的數(shù)據(jù)讀入FIFO。同時對FIFO的滿標(biāo)志進(jìn)行判斷,如果滿標(biāo)志有效,跳出中斷,停止輸入方波信號的產(chǎn)生,再將數(shù)據(jù)通過串口發(fā)送,發(fā)送完后等待下一次方波信號產(chǎn)生命令;如果滿標(biāo)志無效,則繼續(xù)產(chǎn)生方波信號、進(jìn)行A/D轉(zhuǎn)換和數(shù)據(jù)存儲。
圖7 同步數(shù)據(jù)采集控制原理圖
在本實驗中,注入激光器的電流周期T為10 ms,比對光路與測量光路進(jìn)過光電轉(zhuǎn)換后的信號作為被采集模擬信號的信號源,利用本系統(tǒng)將采集的8 192個數(shù)據(jù)的一部分進(jìn)行顯示。
如圖8所示,依次為激光器電流信號、對比干涉信號、測量干涉信號。從電流正負(fù)調(diào)制開始同步進(jìn)行數(shù)據(jù)轉(zhuǎn)換,電流調(diào)制的2個周期對干涉信號采集了5 000個點,每個周期采集到的點數(shù)n為2 500個,每采集到一個數(shù)據(jù)點的時間為τ;本系統(tǒng)設(shè)計采樣頻率為251 kHz,采樣時間為4 μs。則τ=T/n與本系統(tǒng)的采樣時間一致,驗證了該采集系統(tǒng)的有效性,滿足高速采樣的需求,有利于后面進(jìn)行數(shù)據(jù)分析和處理。
圖8 頻率掃描干涉信號
本文設(shè)計了一種調(diào)制激光干涉系統(tǒng)的嵌入式數(shù)據(jù)采集方法,利用FPGA作為數(shù)據(jù)采集系統(tǒng)的控制核心,控制電流正負(fù)調(diào)制和軟硬同步觸發(fā),通過軟件變成控制硬件實現(xiàn)通道的選擇。利用FPGA控制實現(xiàn)A/D轉(zhuǎn)換,并給出控制轉(zhuǎn)換狀態(tài)圖。利用FPGA內(nèi)部16位的FIFO,實現(xiàn)了數(shù)據(jù)的緩沖存儲,接口單元的寫允許信號wrreq和寫時鐘信號wrclk充分利用系統(tǒng)資源,節(jié)約系統(tǒng)成本。利用上位機對轉(zhuǎn)換數(shù)據(jù)的實時顯示,驗證該設(shè)計運行正常,完成可以滿足信號高速采樣的需求,為激光干涉系統(tǒng)的數(shù)據(jù)采集系統(tǒng)向智能行、便攜式提供了條件,具有廣泛的應(yīng)用前景。
[1]王強,文豐,任勇峰.基于FPGA的高速實時數(shù)據(jù)采集存儲系統(tǒng).儀表技術(shù)與傳感,2009(1):50-52.
[2]何元,張會新,劉波,等.基于FPGA的高速實時數(shù)據(jù)采集存儲系統(tǒng)設(shè)計.儀表技術(shù)與傳感器,2011(8):64-66.
[3]LI Z L,WANG X Z,BU P,et al.Sinusoidal phase - modulating laser diode interferometer insensitive to the intensity modulation of the light source .Optik,,2009,121(16):799 -803.
[4]WANG X F,WANG X Z,LIU Y M,et al.A sinusoidal phase - modulating fiber-optic interferometer insensitive to the intensity change of the light source .Opt Laser Technol,2003,35(3):219 -222.
[5]YANG H J,RILES K.High - precision absolute distance measurement using dual-laser frequency scanned interferometry under realistic conditons .Nucl Instrum Meth A,2007,575(3):395 -401.
[6]皮代軍,張海勇,葉顯陽,等.基于FPGA的高速實時數(shù)據(jù)采集系統(tǒng)設(shè)計.現(xiàn)代電子技術(shù),2009,32(6):12 -14.
[7]王選擇,張帥,翟中生,等.一種針對頻率掃描測量系統(tǒng)的信號處理方法.計量學(xué)報,2013,34(6):513 -518.
[8]辛鳳艷,孫曉曄.基于FPGA的AD轉(zhuǎn)換控制器設(shè)計.中國科技信息,2012(5):78-79.
[9]熊洪兵,陳琦.基于FPGA的異步FIFO設(shè)計與實現(xiàn).微計算機信息,2006,22(6):216 -218.
[10]羅先哲,張仁喆,付大鵬.基于FPGA的高速異步FIFO存儲器的設(shè)計與實現(xiàn).中國科技信息,2009,21(2):90-94.