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