訾立強,郭寶增,于雪蓮,劉 贊
(河北大學(xué) 河北 保定 071002)
隨著科學(xué)研究和工業(yè)生產(chǎn)對數(shù)據(jù)采集系統(tǒng)的速度、穩(wěn)定性、準確性要求的不斷提高,傳統(tǒng)數(shù)據(jù)采集系統(tǒng)已經(jīng)逐漸不能滿足上述需求。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)通常使用單片機或DSP作為控制核心,而且需要連接復(fù)雜的外圍電路和外接存儲器,才能完成整個數(shù)據(jù)采集任務(wù)。其中,以單片機做為主控芯片的系統(tǒng),由于單片機采用串行工作方式,且操作指令周期較長。在應(yīng)對多路高速數(shù)據(jù)輸入時,采集速率很低,且運行不穩(wěn)定,很難保證高速數(shù)據(jù)采集的實時性和同步性。而以DSP作為主控芯片的數(shù)據(jù)采集系統(tǒng)中,雖然DSP有較高的工作時鐘,能滿足高速數(shù)據(jù)采集對速度的需求,但是數(shù)據(jù)采集工作的完成還需要外圍的存儲器和相應(yīng)的邏輯控制模塊的輔助,這樣就造成設(shè)計電路板的面積較大,成本偏高[1]。
正因為傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的上述缺陷,基于FPGA的高速數(shù)據(jù)采集系統(tǒng)應(yīng)運而生,成為解決上述問題的有效手段。FPGA芯片具有時鐘頻率高、內(nèi)部延時小、工作效率高、擴展方便、I/O資源豐富、存儲方式多樣、設(shè)計靈活通用、全部控制邏輯由硬件完成等優(yōu)點。通過Verilog硬件描述語言對FPGA進行功能模塊設(shè)計不同于傳統(tǒng)的C語言對單片機的設(shè)計,數(shù)據(jù)在FPGA內(nèi)部運算、傳輸?shù)葹椴⑿刑幚?,恰好適合多路高頻數(shù)據(jù)處理要求。因此,本文設(shè)計了一個基于FPGA的高速數(shù)據(jù)采集系統(tǒng),不需搭建復(fù)雜的外圍電路和外接存儲器,在系統(tǒng)的時效性、穩(wěn)定性和設(shè)計成本上均有較大優(yōu)勢。
本文所設(shè)計高速數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)如圖1所示。本系統(tǒng)FPGA采用Xilinx公司的XC3S200AN-4-FT256-C芯片。該芯片擁有20萬門邏輯單元,內(nèi)含16個18 KB的塊存儲器(Block RAM)與 30 KB 分布存儲器(Distributed RAM),最高工作頻率為326 MHz,完全可以滿足本系統(tǒng)對時序的需求[2]。系統(tǒng)所用AD轉(zhuǎn)換芯片為ADI公司生產(chǎn)的高速高精度流水線型AD9233模數(shù)轉(zhuǎn)換芯片。該系統(tǒng)與PC機之間的數(shù)據(jù)通信使用串口通信。
圖1 系統(tǒng)硬件構(gòu)成框圖Fig.1 Structure diagram of the system hardware
邏輯部分方案框圖如圖2所示。
邏輯部分主要由AD芯片控制邏輯、脈沖檢測控制邏輯、PC指令解析邏輯、系統(tǒng)運行邏輯4部分組成。
圖2 系統(tǒng)邏輯方案框圖Fig.2 Structure diagram of the system logic scheme
隨機序列經(jīng)過脈沖檢測控制邏輯中的包含的上升沿檢測邏輯檢測到后,輸出脈沖信號。每有一個上升沿輸入,上升沿檢測邏輯就輸出一個脈沖信號。上升沿檢測邏輯輸出的脈沖信號經(jīng)過脈沖檢測控制邏輯內(nèi)包含的上升沿計數(shù)邏輯對上升沿計數(shù),計數(shù)結(jié)果為當前時刻256μs時間窗內(nèi)上升沿個數(shù)。PC端與采集系統(tǒng)連接采用串口通信。PC指令解析邏輯對PC機的串口指令進行解析,將解析的指令送到控制邏輯,控制邏輯控制統(tǒng)計計數(shù)和數(shù)據(jù)傳送。在PC端對采集到的數(shù)據(jù)通過串口助手來顯示。當解析出開始檢測指令時,控制邏輯根據(jù)兩個檢測點時刻(一個檢測點為隨機輸入序列的上升沿,另一個檢測點為上升沿延時1 ms)使能鎖存器對上升沿計數(shù)器的計數(shù)結(jié)果進行鎖存,并以該計數(shù)值為地址將對應(yīng)的統(tǒng)計計數(shù)器加1。當解析停止檢測指令時控制邏輯禁能鎖存器和統(tǒng)計計數(shù)器。當解析清除指令時,控制邏輯將統(tǒng)計計數(shù)器清零。當解析傳送數(shù)據(jù)指令時,控制邏輯將兩統(tǒng)計計數(shù)器的值分別傳送,通過多路選擇器分別鎖存統(tǒng)計計數(shù)器結(jié)果,然后啟動串口發(fā)送邏輯發(fā)送鎖存器中的數(shù)值。
模擬信號輸入到AD芯片進行由連續(xù)模擬信號到離散數(shù)字信號的轉(zhuǎn)換。AD9233芯片是由1.8 V模擬電源供電、1.8~3.3 V數(shù)字電源供電、精度為12位的模數(shù)轉(zhuǎn)換器,有80/105/125 Msps三種轉(zhuǎn)換速率的芯片[3]。AD9233的模數(shù)轉(zhuǎn)換時序圖如圖3所示。
圖中CLK為AD9233的工作采樣時鐘,是由FPGA提供的。由FPGA內(nèi)部的分頻電路對系統(tǒng)時鐘進行分頻,分頻后的時鐘做為AD9233的工作采樣時鐘。AD9233的使能端也是由FPGA邏輯來控制的,通過FPGA系統(tǒng)運行邏輯提供的關(guān)于AD芯片工作狀態(tài)指示的信號來控制其工作狀態(tài)。圖中DATA為數(shù)字信號輸出。用Verilog HDL編寫的數(shù)據(jù)傳輸部分程序如下:
always@(posedge SCLK ,negedge Rstn)
begin
if( !Rstn )
begin
Shift_Register <=14'd0;
end
else if(1==Shift_Register_En)
begin
Shift_Register<={Shift_Register[12:0],AD9233_SdaIn};
end
end
Rstn低電平有效,對寄存器Shift_Register進行初始化?;蛘弋擲hift_Register_En為高電平時開始對14位的寄存器Shift_Register移位賦值。當有模擬信號進入AD轉(zhuǎn)換芯片,根據(jù)系統(tǒng)提供的工作采樣時鐘來將轉(zhuǎn)換出的數(shù)字信號輸入通過數(shù)據(jù)以14位為一組傳送端口送入FPGA內(nèi)部,然后數(shù)據(jù)進入脈沖檢測控制邏輯。
脈沖控制邏輯主要針對采集到AD轉(zhuǎn)換芯片內(nèi)部傳送到FPGA的數(shù)字脈沖信號。主要內(nèi)容為上升沿計數(shù)邏輯。主要由14 bit計數(shù)器和脈沖時間節(jié)拍計數(shù)器組成。CLK250M為系統(tǒng)時鐘(250 MHz/4 ns),Rstn為系統(tǒng)復(fù)位信號,低電平有效。DI信號為上升沿檢測到的脈沖信號。輸入信號每有一個上升沿脈沖,就輸出一個脈沖信號,脈沖信號的脈寬為一個系統(tǒng)時鐘周期。DI信號同時輸入到 14 bit計數(shù)器和時間節(jié)拍計數(shù)器
圖3 A/D轉(zhuǎn)換時序圖Fig.3 Timing sequence diagram of A/D conversion
記錄此時刻。14 bit計數(shù)器和時間節(jié)拍計數(shù)器在系統(tǒng)復(fù)位時 初始化為0。計數(shù)器根據(jù)時間節(jié)拍計數(shù)器最小值與當前時間節(jié)拍差值與時間窗比較來決定計數(shù)器是加1、減1、保持原值不變。計數(shù)器操作情況如下:
當CLK_D_value<=CLK_Window時計數(shù)器保持原值不變。
當 Pulse=1時,計數(shù)器加1。
當 CLK_D_value>CLK_Window時,計數(shù)器減 1,時間節(jié)拍計數(shù)器加1。
上升沿計數(shù)邏輯中計數(shù)器的計數(shù)值為256μs時間段內(nèi)輸入隨機序列上升沿個數(shù)。
脈沖檢測控制邏輯仿真時所用仿真軟件為ModelSim 10.1。測試腳本編寫語言為VerilogHDL.測試腳本文件中設(shè)置系統(tǒng)時鐘為25MHz,復(fù)位信號Rstn為高電平,輸入的脈沖序列頻率為3.125MHz。仿真結(jié)果如圖4所示。
圖4 脈沖檢測控制邏輯部分ModelSim仿真圖Fig.4 PulsedetectioncontrollogicpartoftheModelSimsimulationdiagram
PC機與系統(tǒng)之間的數(shù)據(jù)傳輸采用RS-232標準進行串口通信。PC指令解析邏輯通過分析PC機通過串口通訊模塊發(fā)送過來的數(shù)據(jù)對系統(tǒng)運行模塊進行控制。發(fā)送接收數(shù)據(jù)說明如圖5所示。信號線從高電平變?yōu)榈碗娖介_始數(shù)據(jù)傳輸,與圖中不同之處在于,本文中傳輸數(shù)據(jù)位數(shù)為8位,替代了圖中奇偶校驗位,直到接收到停止位,終止這一組數(shù)據(jù)傳輸[4]。
圖5 串口通訊數(shù)據(jù)說明圖Fig.5 Diagramofserialportcommunicationdata
通過設(shè)置固定的8bit數(shù)據(jù)分別作為“開始”、“復(fù)位”、“停止”信號,由PC機端串口助手發(fā)送數(shù)據(jù)到FPGA來控制系統(tǒng)完成開始采集數(shù)據(jù)、清空存儲器數(shù)據(jù)、停止數(shù)據(jù)采集等工作。同時,配合系統(tǒng)運行邏輯,當有數(shù)據(jù)被采集時,存儲到數(shù)據(jù)存儲器后,通過串口發(fā)送到PC端。
系統(tǒng)運行邏輯為系統(tǒng)中主要邏輯部分。主要功能是協(xié)調(diào)各個其他邏輯模塊的配合工作,處理其他邏輯模塊反饋信號,發(fā)送控制信號,使數(shù)據(jù)采集工作完成[5]。當PC機通過串口發(fā)送開始檢測數(shù)據(jù)到系統(tǒng)時,經(jīng)由PC指令解析邏輯分析,發(fā)送開始檢測信號給系統(tǒng)運行邏輯,系統(tǒng)運行邏輯做出相應(yīng)反應(yīng),給數(shù)據(jù)存儲器提供復(fù)位信號,清空存儲器中數(shù)據(jù),準備存入新采集到的數(shù)據(jù),同時使AD控制邏輯給AD轉(zhuǎn)換芯片使能端賦值,使其開始工作。
當有數(shù)據(jù)被采集到系統(tǒng)時,模數(shù)轉(zhuǎn)換芯片將其轉(zhuǎn)換為數(shù)字脈沖信號。脈沖信號進入脈沖檢測控制邏輯,同時系統(tǒng)控制邏輯部分接到脈沖檢測控制邏輯信號,將數(shù)據(jù)暫時存入數(shù)據(jù)存儲系統(tǒng)。然后將數(shù)據(jù)存儲器中的的數(shù)據(jù)傳送至串口,按8位數(shù)據(jù)的寬度多次發(fā)送給串口控制模塊,然后傳輸至PC機,PC端實時顯示所采集到數(shù)據(jù)[6]。系統(tǒng)采集的部分數(shù)據(jù)在串口助手軟件顯示如圖6所示。
圖6 采集的部分數(shù)據(jù)圖Fig.6 Diagramofthecollecteddata
設(shè)計了一種基于FPGA的高速數(shù)據(jù)采集系統(tǒng)。采用高速模數(shù)轉(zhuǎn)換芯片+FPGA芯片+PC機的硬件結(jié)構(gòu),發(fā)揮FPGA的并行數(shù)據(jù)處理能力,與傳統(tǒng)的以DSP和單片機為主要處理芯片的數(shù)據(jù)采集系統(tǒng)相比,不需要搭建復(fù)雜的外圍電路,主要功能模塊均在FPGA內(nèi)部通過Verilog HDL語言設(shè)計完成,在數(shù)據(jù)采集速度和系統(tǒng)運行穩(wěn)定性上均有較大優(yōu)勢,可以滿足高速數(shù)據(jù)采集需求。
[1]孫東輝,胡輝,郭云波.基于FPGA的高速多路數(shù)據(jù)采集系統(tǒng)的設(shè)計 [J].微計算機信息,2009(8):209-210.SUN Dong-hui,HU Hui,GUO Yun-bo.The design of multichannel signal sources based on FPGA [J].Control and Automation Publication Group,2009(8):209-210.
[2]王金明.數(shù)字系統(tǒng)設(shè)計與Verilog HDL[M].北京:電子工業(yè)出版社,2008.
[3]胡惠.多通道超高速數(shù)據(jù)采集與記錄系統(tǒng)的設(shè)計與實現(xiàn)[D].南京:南京理工大學(xué),2010.
[4]鄧耀華,劉桂雄,吳黎明.基于FPGA的PXI高速數(shù)據(jù)采集統(tǒng)設(shè)計 [J].電測與儀表,2010(5):60-63.DENG Yao-hua,LIU Gui-xiong,WU Li-ming.The design of PXI high-speed data acquisition system based on FPGA[J].Electrical Measurement&Instrumentation,2010(5):60-63.
[5]王彥.基于FPGA的工程設(shè)計與應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007.
[6]王旭東,潘明海.數(shù)字信號處理[M].北京:清華大學(xué)出版社,2011.