基于FPGA的主從式高速數據采集與傳輸系統
隨著數字技術的飛速發展和數字系統的廣泛應用,模擬信號轉換為可處理的數字信號,對采集系統的精度、采樣率以及數據速率都有更高的要求。對于大型復雜的設備,其故障檢測和診斷同樣是一項復雜的工作,采集設備的工作狀態及環境變化,對操作者了解設備的工作狀態,及時對系統的故障作出判斷和處理有積極的意義。FPGA器件具有很高的集成度,豐富的資源,用戶可編程,使用方便靈活,設計周期短,因而廣泛應用于數字系統中。本文介紹了以FPGA為控制核心的高速數據采集與傳輸系統,以低速串口傳輸數據量少的上位機控制指令,通過高速USB接口向上位機傳輸數據量大的采集數據幀,保證指令和數據傳輸的可靠性,可提供最多32路采集通道,并可通過上位機界面配置采集通道數量和采集電路增益,FPGA控制器根據約定的控制協議執行操作。系統程序設計以ISE 10.1為平臺,使用Verilog HDL語言設計實現。系統針對復雜環境的大型設備的運行監測和故障診斷需求,提供一種可應用遠程測控的底層數據采集與傳輸應用[1-3]。
1 系統硬件結構
系統結構如圖1所示,系統主要有上位機管理系統、鏈路管理主控層和通道管理從控制層三個主體部分。上位機管理系統提供人機交互的功能,本文不做詳細介紹,系統硬件主體主要由主控層和從控層組成。鏈路管理主控制層主要實現控制指令解析、數據管理和從控層管理等功能,通道管理從控制層主要功能是通道管理和配置、數據管理和傳輸。主控層提供3個與從控層通信的差分接口,可支持3塊從控層并行工作。
鏈路管理主控制層由1片Xilinx的FPGA芯片XC3S1500作為控制模塊,3組差分芯片對作為主控層與從控層的通信鏈路,1片RS232和CY7C68013A芯片分別作為控制層與上位機管理系統的下行控制鏈路和上行數據鏈路。主控FPGA與采集FPGA是跨印制板連接,使用差分驅動和接收芯片(LVDS391/390)通過屏蔽差分線纜連接,主控層與每個從控層通過1根包含6對差分線的屏蔽線纜連接,上行和下行各3對差分線路,保證板間通信的可靠性。
從控層由1片Xilinx的XC3S200AN芯片作為控制模塊構成母板,每2路采集通道組構成采集子板,以雙列直插的方式與母板連接,整體結構并行對稱,采集母板提供了4個子板接口,可以8路通道并行工作。從控層結構如圖2所示,每一路采集通道由AD8253和AD8250組成的前后兩級放大,級聯的芯片增益可由從控層FPGA通過軟件配置,溫度傳感器DS18B20實時監控系統本身的工作環境溫度。
2 控制及數據傳輸
由系統硬件結構可知,系統有上行和下行兩組通信鏈路,即控制指令鏈路和數據傳輸鏈路。控制指令起于上位機系統,由串口發送到控制層,經主控層解析處理后,分發至相應的從控層,再由從控層執行相應的指令操作。數據傳輸起于從控層,通過差分線路傳輸到主控層,在主控層組幀后,寫入USB芯片,最后由上位機系統讀入顯示。指令和數據都約定了特定的格式,以一定的協議進行通信,同時對從控層和采集通道都進行了編號,以此實現控制協議的解析和分發,以及數據管理和上位機解析。
2.1 控制協議
控制協議是由上位機、主控層和從控層共同約定的,控制命令以字為單位,有標志字、控制命令和配置參數三類。其中標志字約定為11111111B,標志字是命令和參數的起始標志,主控層或從控層只有在接收到標志字后,才會解析接下來的數據,判斷上位機發出的命令。
控制命令:00000000B、01xxxxxxB、11xxxxxxB和01XXxx
xxB分別約定為系統復位指令、停止轉換指令、啟動轉換指令和從控層配置指令。指令格式如表1所示。
配置參數:XXXXxxxxB,主要有采樣率參數和通道配置參數,其中XXXX為通道號,編碼為0000~0111B,即0~7號通道。配置參數跟在指令01XX1100B/01XX1110B后時,xxxx為XXXX通道的采樣率參數,作為從控層/主控層采樣脈沖的參數。配置參數緊接在XX層通道配置計數指令后時,則xxxx為XXXX通道的增益配置參數,高2位為前級放大器增益,低2位為后級放大器增益。
配置命令基本格式如圖3所示。在系統上電后以FF00H迫使系統復位,系統復位成功后,同樣以FFH開始,發送采樣率配置和通道增益配置命令及參數。如配置指令FF_4E_x1H,即第一層所有通道采用同一內采樣脈沖,采樣率分頻參數為1,對應內采樣率設置為40 kHz。
2.2 通信協議及數據格式
上文已經介紹了系統各部分的硬件連接,主控層和從控層之間有6對差分線,上行和下行分別3對,下行有復位信號、采樣脈沖信號和數據信號線,上行有數據線、同步時鐘線和同步使能線。數據信號線以異步串行的方式,主控層向從控層發送命令和配置參數,采樣脈沖信號線在不同層采用外采樣脈沖或主控層提供的脈沖時使用,以保證不同層間的同步采樣。上行數據以SPI同步串行方式傳輸,數據速率為12.5 Mb/s。
數據格式如圖4,一個數據有3 B,由6 bit的頭信息編碼和18 bit數據位組成。高2位是該從控層的編號,編碼范圍為00B~11B(0~3層);次高4位為通道編碼,0000B~0111B(0~7號通道)為A/D通道編碼,1010B(10號通道)為溫度傳感器信息編碼,余下通道編碼可作擴展。
3 系統程序結構
主控層主要完成上位機配置命令解析、采集數據組幀,從控層主要執行配置命令、控制A/D通道工作狀態,以及采集數據編碼上傳。
3.1 主控層程序設計
主控層是系統的中間節點,是聯系上位機管理系統和下層采集的重要結構。主控層實時接收并解析來自上位機管理系統的命令字和配置參數,同時向從控層分發控制和配置信息。主控層在接收到采集FPGA上傳的數據后,組幀發送至USB芯片。
主控層程序結構如圖5所示,主要有串口收發模塊、狀態機控制器、數據接收模塊、USB控制器及數據FIFO。串口接收器波特率9 600 b/s,與PC機的標準串口連接。串行發送模塊以異步串行方式向從控層發送控制命令和配置參數。緩沖區FIFO是基于乒乓操作機制,大小為4 096 B,緩沖區數據每滿512 B,則由USB控制器讀入USB芯片CYS68031A[4]。此處USB采用的是同步讀寫方式,數據速率設置為25 MB/s。
主控層程序流程如圖6所示。數據被讀入主控層緩沖后,通過查詢方式循環讀取數據并寫入FIFO緩沖區。數據寫入FIFO同時是組幀,數據幀的格式:以512 B為一個數據塊,每一個數據塊的前2 B以FF作為幀同步頭,次3 B為幀計數信息,其余507 B為數據空間。
3.2 從控層程序設計
從控層程序結構如圖7所示,主體功能有:接收并解析主控FPGA發送的配置參數;根據配置參數進行系統鏈路自檢,配置通道增益;接收主控板采集脈沖并啟動A/D轉換;讀取A/D轉換數據并組合編碼;對數據進行濾波處理;向主控FPGA上傳A/D數據。
系統的流程如圖8所示。采集通道的增益配置是在從控層接收到所有通道的配置參數后同步完成。首先配置前級增益,再配置后級。系統的鏈路自檢是由從控層生成一組約定的數據,發送到上位機系統,以判斷各層之間的連接狀態。在采用相同的采樣率時,從控層所有通道保持數據同步,采樣率不同時,各通道的數據經過復接同步后再發送主控層。
3.3 FIR濾波器設計
數字FIR濾波器由上位機發送控制命令,對指定的通道數據進行濾波處理,以濾除采集電路的信號干擾。濾波器結構如圖9所示,采用半并行對稱結構,濾波系數的設計借助MATLAB的FDATOOL,根據系統的既定采樣率和參數,設計了2組33階的系數,系數被儲存在ROM中,因濾波器為對稱結構,所以ROM只需儲存17個系數,系統可根據配置信息選取濾波系數。濾波器框架為串并結合結構,同時可以選擇不同的濾波系數,減少濾波器對乘法器資源和邏輯資源的使用。
圖10所示為用FDATOOL設計的33階kaiser窗濾波系數的MATLAB仿真圖,β=0.3,截止頻率Wc=0.5。輸入信號頻率f=0.5 MHz,采樣頻率Fs=5 MHz。
借助仿真軟件ModelSim驗證FIR濾波器,仿真結果如圖11所示。以輸入0.5 MHz方波信號為例,采樣率設置為6 MHz,經過濾波處理后,得到了0.5 MHz正弦信號。
4 系統測試與數據指標
經過大量的測試分析和統計證明系統具有很好的性能和測量精度。表2所示為部分測量數據分析結果。幅值為10 mV~5 V信號,在不同增益下,直流信號的測量精度平均值可達0.293%,頻率為100 Hz交流信號的測量精度平均值可達0.642%。
本系統提供了最大24路的采集通道,系統工作通道可配置、可選擇,系統啟動迅速,具有很強的實時性,通道間的相位誤差小于10°,精度高、數據吞吐量大,并具有一定故障自檢能力。系統內采樣時鐘最小為100 Hz,最大為40 kHz,A/D最大采樣頻率可達250 kHz,USB的讀寫能力最大可達到48 MB/s。可以應用于檢測、控制等系統中,目前已應用于某測控系統。
評論