吳 洋,徐廣平,耿 林,張偉健
(華北光電技術(shù)研究所,北京 100015)
激光科學(xué)技術(shù)[1-2]的誕生促進了一批激光領(lǐng)域設(shè)備的探索。激光和一般光源相對比,激光具有高亮度、方向性好、單色性好等優(yōu)點,因此被廣泛應(yīng)用在測距領(lǐng)域。傳統(tǒng)的激光測距設(shè)備的工作原理是使用激光器將其對準(zhǔn)目標(biāo)后進行操作來發(fā)射出一系列的激光脈沖。一段時間后激光脈沖遇到目標(biāo)反射回來被激光器接收到,然后通過測量激光脈沖到達目標(biāo)并返射回來被接收設(shè)備接收到的回波的往返距離時間差來間接測量出激光器與目標(biāo)之間的距離[3-4],它沒有利用信號的波形信息,本文采用全波形采樣的方案,將回波信號采集、傳輸、存儲和處理,可以顯著提高接收信號的信噪比,這在半導(dǎo)體遠距離測距機中具有明顯優(yōu)勢[5],本文內(nèi)容是這種方案測距機的一部分,主要涉及高速采樣、FPGA數(shù)據(jù)存儲、傳輸?shù)裙δ堋?/p>
在信號數(shù)據(jù)采集系統(tǒng)方面,現(xiàn)場可編輯邏輯門陣列(field programmable gate array,F(xiàn)PGA)與DSP、單片機、CPLD等相比具有以下優(yōu)點:支持流水線操作,可以同時讓多個處理單元工作,可以實現(xiàn)數(shù)據(jù)采集與實時傳輸;FPGA 的時鐘頻率最高可達幾百兆,它十分適合作為高速數(shù)據(jù)采集與實時傳輸?shù)目刂菩酒?;與其他的可編程器件進行對比可知FPGA還具有很好的靈活性的優(yōu)勢。傳統(tǒng)的設(shè)計在邏輯接口設(shè)計上一般還需要使用相匹配的接口芯片,而這些接口的邏輯設(shè)計對于FPGA來說可以通過本身的編程功能來實現(xiàn),從使得外圍電路設(shè)計的難度極大的減少。FPGA自身擁有與各種不同級別電平相兼容的特性,因此可以將設(shè)計方案的簡化變得比較容易并且將設(shè)計所存在的無法預(yù)知和不確定的風(fēng)險降到極低的水平。和傳統(tǒng)的電平轉(zhuǎn)換器進行比對可知通過使用FPGA芯片能夠?qū)㈦娐吩O(shè)計的難度大大在降低。通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter,UART)可以在發(fā)送數(shù)據(jù)時將并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),在接收數(shù)據(jù)時將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),并實現(xiàn)全雙工發(fā)送和接收。UART協(xié)議[6]最為基礎(chǔ),電路結(jié)構(gòu)簡單、成本也比較低,因此在注重性價比的情況下,UART協(xié)議使用極其的廣泛。傳統(tǒng)的激光測距系統(tǒng)對于回波信號的處理主要是通過模擬電路,然而在信號處理方面模擬電路對于提升測距量程是非常有限的,在遠距離測量下回波信號很容易被噪聲信號所掩蓋無法有效接收到,使得測距量程很難達到更進一步地提升。而采用數(shù)字化處理可以增強回波信號的抗干擾能力,更容易達到提升測距量程的目的,數(shù)據(jù)采集與處理技術(shù)則是實現(xiàn)數(shù)字激光回波接收的核心部分[7-11]。與傳統(tǒng)的激光測距系統(tǒng)相比,使用AD采樣芯片可以將模擬信號以更快的速度轉(zhuǎn)化為數(shù)字信號,以便于后續(xù)使用FPGA對信號進行一系列的自相關(guān)與互相關(guān)運算和存儲處理等操作,來使得激光回波的信噪比可以得到很大的提升,這是傳統(tǒng)激光測距系統(tǒng)所無法更進一步達到的,在遠距離測量方面由于傳統(tǒng)激光測距系統(tǒng)無法更進一步的提高信號的信噪比來濾出回波信號峰值,因此比傳統(tǒng)測距系統(tǒng)有更大的發(fā)展前途和研究價值。針對激光回波數(shù)據(jù)采集與實時傳輸?shù)囊蠛虯D采樣芯片的多通道、數(shù)據(jù)量大、速率快的特點,選用FPGA、FIFO(First-In-First-Out)和RS232接口[12]以Verilog編碼進行狀態(tài)機的設(shè)計來搭建數(shù)據(jù)采集與實時傳輸系統(tǒng)將回波信息采集存儲起來,并對回波信息進行累加平均相關(guān)運算以提高信號的信噪比,為后期研究搭建完整的激光測距系統(tǒng)打下基礎(chǔ)。
信號前端處理電路限制激光回波信號的幅值在0~1.2 V之間;前端處理電路限幅后的信號經(jīng)過A/D轉(zhuǎn)換[13],由模擬信號變?yōu)閿?shù)字信號以LVDS[14]形式輸出并發(fā)送給數(shù)據(jù)采集和傳輸系統(tǒng)。數(shù)據(jù)采集與傳輸系統(tǒng)以FPGA為控制核心,FPGA內(nèi)部處理模塊提供50 MHz采樣時鐘、向AD芯片寫入配置數(shù)據(jù)的同時,也接收AD芯片的輸出數(shù)據(jù)并送入到FIFO存儲器[15]進行緩存;緩存好的數(shù)據(jù)由UART異步串行通信RS232總線接口發(fā)送給上位機。
A/D信號采集和數(shù)據(jù)轉(zhuǎn)換芯片用作數(shù)據(jù)源,將二進制離散數(shù)字信號傳遞給激光回波數(shù)據(jù)采集和傳輸系統(tǒng)。選擇Altera公司的EP4CE10F17C8N芯片[16]作為FPGA主控制芯片,它具有豐富的資源可以滿足系統(tǒng)設(shè)計的需求。ADC 芯片選用的是TI 公司生產(chǎn)的ADC128S102 型 ADC 芯片,該芯片提供一個 12 位采樣精度的 ADC 和 8 個模擬輸入通道,轉(zhuǎn)換速率最高可達1 Msps,模擬輸入信號電壓的范圍則為0至VA(模擬供電電壓)。ADC128S102 對外提供一個標(biāo)準(zhǔn)的 SPI 數(shù)字接口,將該數(shù)字接口連接到 Cyclone IV E 上,可以通過 Cyclone IV E 來對 ADC128S102進線控制以實現(xiàn)模擬電源到數(shù)字信號的轉(zhuǎn)換過程。RS232收發(fā)器RS3232,RS232接口作為工業(yè)設(shè)備的標(biāo)準(zhǔn)接口,目前大多數(shù)工業(yè)設(shè)備中都存在,使用此接口可以實現(xiàn)具有RS232接口的設(shè)備的控制。 圖1顯示了系統(tǒng)的硬件結(jié)構(gòu)圖。
圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
FPGA以及RS232接口芯片的電源電壓是3.3 V,鎖相環(huán)、輔助電壓和配置電壓是2.5 V,ADC128S102芯片所需要的電壓為1.8 V,FPGA核心電壓為1.2 V。CH340G是可以用3.3 V或5V 電壓供電來實現(xiàn)USB端口轉(zhuǎn)換到串行端口的傳輸芯片。根據(jù)以上所述,本系統(tǒng)要求使用以上提及的四種和其他可能需求的輸出電壓。于是本系統(tǒng)使用型號為PTH05060W的電源芯片。PTH05060W芯片的輸出電壓可以在0.8~3.6 V之間進行調(diào)節(jié)。
FPGA對ADC128S102進行配置數(shù)據(jù)通道的輸入,以用于工作方式和芯片的修調(diào)。ADC128S102的輸出通道的數(shù)據(jù)則被FPGA所采集。采用12位數(shù)據(jù)總線與FPGA通信,轉(zhuǎn)換速度為1 Msps。
圖2是FPGA的內(nèi)部結(jié)構(gòu)框圖。根據(jù)功能的不同可分為五個部分:A/D采樣控制、FIFO存儲緩沖、RS232通信、狀態(tài)機控制和系統(tǒng)時鐘模塊。
圖2 FPGA 內(nèi)部結(jié)構(gòu)框圖
A/D模數(shù)轉(zhuǎn)換器采用的是一種低功率損耗的芯片ADC128S102,它是逐次逼近型低功率損耗芯片,用于將已經(jīng)進行過對比的模擬信號轉(zhuǎn)變成為數(shù)字信號。輸出的標(biāo)準(zhǔn)值是采用二進制形式來進行表示的。
AD 控制模塊的主要作用:對ADC128S102串行寫入8路配置數(shù)據(jù),速率為1 Msps;接收來自ADC128S102的8路數(shù)據(jù);將每個通道接收到的激光回波數(shù)據(jù)進行串并轉(zhuǎn)換,以8 bit依次并行輸出同一個像素單元的數(shù)據(jù),每個通道可最多輸出 8192個像素單元的數(shù)據(jù)。FPGA接收的數(shù)據(jù)進行串并轉(zhuǎn)換后以8 bit輸出。利用FIFO將單個像素單元的數(shù)據(jù)補全至12 bit并在FIFO中暫存,其中高4位默認(rèn)為0。ADC芯片的控制框圖如圖3所示。
圖3 ADC128S102控制框圖
通過ADC芯片的接口時序圖,可以按照線性序列機的設(shè)計思路來整理得到每個信號發(fā)生變化時所對應(yīng)的時刻以及該時刻計數(shù)器對應(yīng)的值。線性序列機的設(shè)計思路就是借助計數(shù)器連續(xù)進行計數(shù)。 當(dāng)對應(yīng)于計數(shù)值的時間達到設(shè)定的要求時,信號將被操作。
在FPGA中采用FIFO一般應(yīng)用于高速異步數(shù)據(jù)的交互和緩存。FIFO和通用存儲器之間的主要不同之處在于,其沒有專門的外部讀寫地址線,這也使得對于FIFO的應(yīng)用相對容易起來。但是,缺點是只能按順序?qū)懭牒妥x取數(shù)據(jù),不可以與普通存儲器一樣把FIFO寫入特意指定的地址之上以供讀取的選擇。 系統(tǒng)采用的是如圖4所示的單時鐘FIFO(SCFIFO)。
圖4 SCFIFO控制框圖
在 FPGA 的控制下從ADC128S102讀取到的一連串的數(shù)字信號數(shù)據(jù),首先被寫入到SCFIFO 中,采集完成后從SCFIFO讀取數(shù)據(jù)以 UART 串口波特率將數(shù)據(jù)依次發(fā)送出去直至數(shù)據(jù)發(fā)送完畢為止。ADC128S102的單次讀取數(shù)據(jù)的速度可能很快,但并不是每個時刻都需要采集數(shù)據(jù)。因此需要將從ADC128S102中采集到的數(shù)據(jù)首先用 SCFIFO緩存起來,然后再用串口的數(shù)據(jù)速率較緩慢的發(fā)送出去。
在系統(tǒng)設(shè)計中所采用的FIFO IP內(nèi)核是由Quartus II軟件供給的免費的已成型內(nèi)核。該軟件可以給使用者供給較為友好的圖形操作界面,并且可以很容易地設(shè)置其結(jié)構(gòu)以及各種類型的參數(shù)。對于已經(jīng)由軟件設(shè)計者根據(jù)不同功能所生成的FIFO IP內(nèi)核還可以根據(jù)不同系列的Altera器件的結(jié)構(gòu)對其進行有差別化的優(yōu)化。
系統(tǒng)設(shè)計中使用的FIFO IP內(nèi)核是Quartus II軟件提供的自由格式內(nèi)核。 該軟件可以為用戶提供友好的圖形操作界面,并且可以輕松設(shè)置其結(jié)構(gòu)和各種類型的參數(shù)。 由軟件設(shè)計人員生成的FIFO IP內(nèi)核可以根據(jù)不同系列Altera器件的結(jié)構(gòu)進行不同的優(yōu)化。
這個FIFO IP核是通過Verilog語言進行描述的而且已經(jīng)提供了幾乎大部分的設(shè)計所需要的功能。
本系統(tǒng)中使用的UART協(xié)議的RS232接口的通信協(xié)議必須要用一些硬件才能夠加以實現(xiàn)數(shù)據(jù)傳輸?shù)墓δ?。在探索階段所采用的大部分的方法為RS232變換為TTL,這使得數(shù)據(jù)的轉(zhuǎn)換需要采用SP3232、MAX232或者其他同類型的電平轉(zhuǎn)換芯片才能夠?qū)崿F(xiàn)。其外圍電路簡單,然而最少需要4個電容才能夠正常工作。現(xiàn)在的系統(tǒng)集成度則變得越來越高,DB9的RS232接口占用PCB面積過大,多數(shù)系統(tǒng)已經(jīng)轉(zhuǎn)而采用USB轉(zhuǎn)TTL。用CH340G來實現(xiàn)從USB端口到串行端口的轉(zhuǎn)換,可以用3.3 V或者5 V電壓提供電源。它的內(nèi)部配置有收發(fā)緩沖區(qū),并且可以使用硬件全雙工串行端口。RS232接口可以由外部電平轉(zhuǎn)換器來供給。CH340G的驅(qū)動程序在Windows操作系統(tǒng)下可以模擬標(biāo)準(zhǔn)串行端口,因此一般它無需進行修改就可以與大多數(shù)原始串行端口配合使用。圖5為串行傳輸模塊的整體框圖。
圖5 串口發(fā)送模塊整體框圖
數(shù)據(jù)采集狀態(tài)機設(shè)計思想為本系統(tǒng)的重點研究部分,狀態(tài)機用于控制系統(tǒng)的各個模塊,將各個模塊聯(lián)結(jié)起來。系統(tǒng)使用獨熱碼和一個三階段狀態(tài)機進行設(shè)計。代碼的每個狀態(tài)都需要使用一個寄存器。只需要一位來比較狀態(tài)。與其他解碼電路相比,它更簡單。第一段采用組合邏輯描述狀態(tài)的轉(zhuǎn)移,此階段只有狀態(tài)的跳轉(zhuǎn),無邏輯的輸出,這使得狀態(tài)機的設(shè)計思路十分的清晰。第二段將狀態(tài)機打一拍,有兩個表示狀態(tài)條件,分別表示當(dāng)前和下一個狀態(tài)。第三段為時序邏輯控制所有的輸出,并且保證第一段狀態(tài)跳轉(zhuǎn)的準(zhǔn)確度。本系統(tǒng)的狀態(tài)機設(shè)計思路的優(yōu)點是將狀態(tài)與輸出分開寫,更利于軟件的分析和綜合,能將狀態(tài)機電路分析優(yōu)化比較好。與一段式比較減少了軟件工作量、運行速度更快、優(yōu)化的更好。系統(tǒng)狀態(tài)機跳轉(zhuǎn)的Verilog編寫思路則為空閑、連續(xù)采集、采集數(shù)據(jù)完成、串口發(fā)送、發(fā)送完成5個過程部分:1)空閑狀態(tài)(IDLE)等待開始按鍵按下產(chǎn)生key_pressed信號后,才能直接跳轉(zhuǎn)到連續(xù)采集狀態(tài)(SAMPLE_TRIG),否則狀態(tài)不變。2)連續(xù)采集狀態(tài)(SAMPLE_TRIG)結(jié)束后跳轉(zhuǎn)到等待采集完成信號狀態(tài)(WAIT_CONV_DONE),等待接收到轉(zhuǎn)換完成標(biāo)志信號(Conv_Done)后,才能直接跳轉(zhuǎn)到采集數(shù)據(jù)轉(zhuǎn)換完成狀態(tài)(ADC_CONV_DONE),不滿足條件則保持不變。3)采集數(shù)據(jù)轉(zhuǎn)換完成狀態(tài)等待累加平均轉(zhuǎn)換完成次數(shù)信號sample_times_cnt進入串口連續(xù)發(fā)送狀態(tài)(UART_TX_TRIG),否則返回連續(xù)采集狀態(tài)。4)串口連續(xù)發(fā)送狀態(tài)結(jié)束后跳轉(zhuǎn)到等待串口發(fā)送完成狀態(tài)(WAIT_TX_DONE)。5)等待串口發(fā)送完成狀態(tài)直到接收到一次發(fā)送數(shù)據(jù)完成標(biāo)志信號Tx_Done后,才能直接跳轉(zhuǎn)到串口發(fā)送完成狀態(tài)(UART_TX_DONE),串口發(fā)送完成狀態(tài)接收到設(shè)定的發(fā)送次數(shù)完成信號Tx_times_cnt進入空閑狀態(tài),否則返回到串口連續(xù)發(fā)送狀態(tài)。如圖6所示為控制狀態(tài)轉(zhuǎn)換圖。
圖6 控制狀態(tài)轉(zhuǎn)換圖
以FPGA內(nèi)部的鎖相環(huán)來滿足整個激光回波數(shù)據(jù)采集與實時傳輸系統(tǒng)的時鐘需求,系統(tǒng)所提供的時鐘是50 MHz。經(jīng)查閱手冊知道器件的工作頻率SCLK的推薦范圍為0.8~3.2 MHz,在此定義其工作頻率為1.92 MHz(周期為520 ns)。并且設(shè)置一個兩倍于SCLK的采樣時鐘SCLK2X,使用50 M系統(tǒng)時鐘十三分頻而來即SCLK2X為3.84 MHz。
選擇以C sharp語言在Microsoft VS2010中來對PC程序進行設(shè)計的,在點擊傳輸?shù)拈_始按鈕后,則會啟動數(shù)據(jù)的接收和存儲的線程,數(shù)據(jù)最終會以文件的形式存儲在 PC磁盤之中,流程圖如圖7所示。
圖7 流程圖
仿真實驗采用的軟件是ModelSim,實驗結(jié)果如圖8。圖中ADC_data信號是AD芯片的12位轉(zhuǎn)換輸出數(shù)據(jù),傳輸給FPGA。Tx_data是UART 異步串行通信發(fā)送模塊RS232接口傳輸給PC機的8位數(shù)據(jù),其中Tx_data截取ADC_data 的高8位數(shù)據(jù)(Tx_data=ADC_data[11:4])。RS232_Tx是UART 異步串行通信發(fā)送模塊的輸出信號。使用$display()函數(shù)將運行數(shù)據(jù)顯示在ModelSim信息窗口,將ModelSim文件下的msim_transcript文件中的ADC_data與Tx_data數(shù)據(jù)進行比對和分析,沒有發(fā)現(xiàn)存在誤碼的情況,圖9為選取的部分?jǐn)?shù)據(jù)對比表。AD芯片的工作方式正確,配置數(shù)據(jù)的寫入與傳輸也正確。證明了本文的激光器高速數(shù)據(jù)采集與傳輸系統(tǒng)的邏輯的正確性。
圖8 仿真實驗結(jié)果圖
圖9 部分?jǐn)?shù)據(jù)對比表
圖10 不累加平均波形
圖11 累加平均64次波形
介紹了主要以FPGA和FIFO、RS232協(xié)議為核心的激光器的回波數(shù)據(jù)采集與實時傳輸系統(tǒng),本設(shè)計系統(tǒng)結(jié)構(gòu)比較簡單和移植行較好,不僅局限于激光介質(zhì)還可以采用其他介質(zhì)進行采集和存儲回波的信號,并且具有較高速率、高可靠性、實時性、實用性、準(zhǔn)確性較好、成本低等特點,后期可以采用更高速率的AD采樣芯片將系統(tǒng)速率進一步提高,以及在遠距離測量中加入一些性能更好的信號自相關(guān)與互相關(guān)算法來更進一步地提高激光回波采集信號的信噪比來更好的提取出信號,使得信號更為準(zhǔn)確以便于應(yīng)用于測距系統(tǒng)之中。仿真測試中未發(fā)現(xiàn)有誤碼現(xiàn)象,表明該系統(tǒng)可以滿足激光回波數(shù)據(jù)采集與實時傳輸?shù)幕拘枨?并且可以較好的提取出激光回波波形的信號數(shù)據(jù),供后續(xù)數(shù)據(jù)處理部分使用。