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