基于FPGA的高速數(shù)據(jù)采集系統(tǒng)設計
隨著科學研究和工業(yè)生產對數(shù)據(jù)采集系統(tǒng)的速度、穩(wěn)定性、準確性要求的不斷提高,傳統(tǒng)數(shù)據(jù)采集系統(tǒng)已經逐漸不能滿足上述需求。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)通常使用單片機或DSP作為控制核心,而且需要連接復雜的外圍電路和外接存儲器,才能完成整個數(shù)據(jù)采集任務。其中,以單片機做為主控芯片的系統(tǒng),由于單片機采用串行工作方式,且操作指令周期較長。在應對多路高速數(shù)據(jù)輸入時,采集速率很低.且運行不穩(wěn)定,很難保證高速數(shù)據(jù)采集的實時性和同步性。而以DSP作為主控芯片的數(shù)據(jù)采集系統(tǒng)中,雖然DSP有較高的工作時鐘,能滿足高速數(shù)據(jù)采集對速度的需求,但是數(shù)據(jù)采集工作的完成還需要外圍的存儲器和相應的邏輯控制模塊的輔助,這樣就造成設計電路板的面積較大,成本偏高。
正因為傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的上述缺陷,基于FPGA的高速數(shù)據(jù)采集系統(tǒng)應運而生,成為解決上述問題的有效手段。FPGA芯片具有時鐘頻率高、內部延時小、工作效率高、擴展方便、I/O資源豐富、存儲方式多樣、設計靈活通用、全部控制邏輯由硬件完成等優(yōu)點。通過Verilog硬件描述語言對FPGA進行功能模塊設計不同于傳統(tǒng)的C語言對單片機的設計,數(shù)據(jù)在FPGA內部運算、傳輸?shù)葹椴⑿刑幚?,恰好適合多路高頻數(shù)據(jù)處理要求。因此,本文設計了一個基于FPGA的高速數(shù)據(jù)采集系統(tǒng),不需搭建復雜的外圍電路和外接存儲器,在系統(tǒng)的時效性、穩(wěn)定性和設計成本上均有較大優(yōu)勢。
1 系統(tǒng)結構與方案
本文所設計高速數(shù)據(jù)采集系統(tǒng)結構如圖1所示。本系統(tǒng)FPGA采用Xilinx公司的XC3S200AN-4-FT256-C芯片。該芯片擁有20萬門邏輯單元,內含16個18KB的塊存儲器(Block RA M)與30 KB分布存儲器(Distributed RAM),最高工作頻率為326 MHz,完全可以滿足本系統(tǒng)對時序的需求。系統(tǒng)所用AD轉換芯片為ADI公司生產的高速高精度流水線型AD9233模數(shù)轉換芯片。該系統(tǒng)與PC機之間的數(shù)據(jù)通信使用串口通信。
2 系統(tǒng)邏輯設計
邏輯部分方案框圖如圖2所示。
邏輯部分主要由AD芯片控制邏輯、脈沖檢測控制邏輯、PC指令解析邏輯、系統(tǒng)運行邏輯4部分組成。
隨機序列經過脈沖檢測控制邏輯中的包含的上升沿檢測邏輯檢測到后,輸出脈沖信號。每有一個上升沿輸入,上升沿檢測邏輯就輸出一個脈沖信號。上升沿檢測邏輯輸出的脈沖信號經過脈沖檢測控制邏輯內包含的上升沿計數(shù)邏輯對上升沿計數(shù),計數(shù)結果為當前時刻256μs時間窗內上升沿個數(shù)。PC端與采集系統(tǒng)連接采用串口通信。PC指令解析邏輯對PC機的串口指令進行解析,將解析的指令送到控制邏輯,控制邏輯控制統(tǒng)計計數(shù)和數(shù)據(jù)傳送。在PC端對采集到的數(shù)據(jù)通過串口助手來顯示。當解析出開始檢測指令時,控制邏輯根據(jù)兩個檢測點時刻(一個檢測點為隨機輸入序列的上升沿,另一個檢測點為上升沿延時1 ms)使能鎖存器對上升沿計數(shù)器的計數(shù)結果進行鎖存,并以該計數(shù)值為地址將對應的統(tǒng)計計數(shù)器加1。當解析停止檢測指令時控制邏輯禁能鎖存器和統(tǒng)計計數(shù)器。當解析清除指令時,控制邏輯將統(tǒng)計計數(shù)器清零。當解析傳送數(shù)據(jù)指令時,控制邏輯將兩統(tǒng)計計數(shù)器的值分別傳送,通過多路選擇器分別鎖存統(tǒng)計計數(shù)器結果,然后啟動串口發(fā)送邏輯發(fā)送鎖存器中的數(shù)值。
2.1 AD芯片控制邏輯
模擬信號輸入到AD芯片進行由連續(xù)模擬信號到離散數(shù)字信號的轉換。AD9233芯片是由1.8 V模擬電源供電、1.8~3.3 V數(shù)字電源供電、精度為12位的模數(shù)轉換器,有80/105/125 Msps三種轉換速率的芯片。AD9233的模數(shù)轉換時序圖如圖3所示。
圖中CLK為AD9233的工作采樣時鐘,是由FPGA提供的。由FPGA內部的分頻電路對系統(tǒng)時鐘進行分頻,分頻后的時鐘做為AD9233的工作采樣時鐘。AD9233的使能端也是由FPGA邏輯來控制的,通過FPGA系統(tǒng)運行邏輯提供的關于AD芯片工作狀態(tài)指示的信號來控制其工作狀態(tài)。圖中DATA為數(shù)字信號輸出。用Verilog HDL編寫的數(shù)據(jù)傳輸部分程序如下:
Rstn低電平有效,對寄存器Shift_Register進行初始化?;蛘弋擲hift_Register_En為高電平時開始對14位的寄存器Shift_Register移位賦值。當有模擬信號進入AD轉換芯片,根據(jù)系統(tǒng)提供的工作采樣時鐘來將轉換出的數(shù)字信號輸入通過數(shù)據(jù)以14位為一組傳送端口送入FPGA內部,然后數(shù)據(jù)進入脈沖檢測控制邏輯。
2.2 脈沖檢測控制邏輯
脈沖控制邏輯主要針對采集到AD轉換芯片內部傳送到FPGA的數(shù)字脈沖信號。主要內容為上升沿計數(shù)邏輯。主要由14 bit計數(shù)器和脈沖時間節(jié)拍計數(shù)器組成。CLK250M為系統(tǒng)時鐘(250 MHz/4 ns),Rstn為系統(tǒng)復位信號,低電平有效。DI信號為上升沿檢測到的脈沖信號。輸入信號每有一個上升沿脈沖,就輸出一個脈沖信號,脈沖信號的脈寬為一個系統(tǒng)時鐘周期。DI信號同時輸入到14 bit計數(shù)器和時間節(jié)拍計數(shù)器記錄此時刻。14 bit計數(shù)器和時間節(jié)拍計數(shù)器在系統(tǒng)復位時 初始化為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時間段內輸入隨機序列上升沿個數(shù)。
脈沖檢測控制邏輯仿真時所用仿真軟件為ModelSim10.1。測試腳本編寫語言為Verilog HDL測試腳本文件中設置系統(tǒng)時鐘為25 MHz,復位信號Rstn為高電平,輸入的脈沖序列頻率為3.125 MHz。仿真結果如圖4所示。
2.3 PC指令解析邏輯
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ù)傳輸。
通過設置固定的8 bit數(shù)據(jù)分別作為“開始”、“復位”、“停止”信號,由PC機端串口助手發(fā)送數(shù)據(jù)到FPGA來控制系統(tǒng)完成開始采集數(shù)據(jù)、清空存儲器數(shù)據(jù)、停止數(shù)據(jù)采集等工作。同時,配合系統(tǒng)運行邏輯,當有數(shù)據(jù)被采集時,存儲到數(shù)據(jù)存儲器后,通過串口發(fā)送到PC端。
2.4 系統(tǒng)運行邏輯
系統(tǒng)運行邏輯為系統(tǒng)中主要邏輯部分。主要功能是協(xié)調各個其他邏輯模塊的配合工作,處理其他邏輯模塊反饋信號,發(fā)送控制信號,使數(shù)據(jù)采集工作完成。當PC機通過串口發(fā)送開始檢測數(shù)據(jù)到系統(tǒng)時,經由PC指令解析邏輯分析,發(fā)送開始檢測信號給系統(tǒng)運行邏輯,系統(tǒng)運行邏輯做出相應反應,給數(shù)據(jù)存儲器提供復位信號,清空存儲器中數(shù)據(jù),準備存入新采集到的數(shù)據(jù),同時使AD控制邏輯給AD轉換芯片使能端賦值,使其開始工作。
當有數(shù)據(jù)被采集到系統(tǒng)時,模數(shù)轉換芯片將其轉換為數(shù)字脈沖信號。脈沖信號進入脈沖檢測控制邏輯,同時系統(tǒng)控制邏輯部分接到脈沖檢測控制邏輯信號,將數(shù)據(jù)暫時存入數(shù)據(jù)存儲系統(tǒng)。然后將數(shù)據(jù)存儲器中的的數(shù)據(jù)傳送至串口,按8位數(shù)據(jù)的寬度多次發(fā)送給串口控制模塊,然后傳輸至PC機,PC端實時顯示所采集到數(shù)據(jù)。系統(tǒng)采集的部分數(shù)據(jù)在串口助手軟件顯示如圖6所示。
3 結束語
設計了一種基于FPGA的高速數(shù)據(jù)采集系統(tǒng)。采用高速模數(shù)轉換芯片+FPGA芯片+PC機的硬件結構,發(fā)揮FPGA的并行數(shù)據(jù)處理能力,與傳統(tǒng)的以DSP和單片機為主要處理芯片的數(shù)據(jù)采集系統(tǒng)相比,不需要搭建復雜的外圍電路,主要功能模塊均在FPGA內部通過Verilog HDL語言設計完成,在數(shù)據(jù)采集速度和系統(tǒng)運行穩(wěn)定性上均有較大優(yōu)勢,可以滿足高速數(shù)據(jù)采集需求。