成雅麗, 李錦明, 成乃朋
(中北大學(xué) 儀器與電子學(xué)院, 太原 030051)
隨著電子技術(shù)的飛速發(fā)展,人們對大容量數(shù)據(jù)的傳輸速度提出了越來越高的要求。為了能夠?qū)崟r、有效地采集和傳輸數(shù)據(jù),系統(tǒng)提出了一個基于FPGA與以太網(wǎng)的測試系統(tǒng)的設(shè)計。針對某設(shè)備發(fā)出的前端數(shù)據(jù),對其進(jìn)行采集與測試。FPGA具有體系結(jié)構(gòu)和邏輯單元靈活、集成度高以及使用范圍寬的特點,可實現(xiàn)較大規(guī)模的電路,編程靈活[1]。設(shè)計運用FPGA內(nèi)部程序并行處理的特點,結(jié)合千兆以太網(wǎng)的高速運行速度,將采集的數(shù)據(jù)進(jìn)行實時處理和分析,并發(fā)送至上位機進(jìn)行顯示。系統(tǒng)采用用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol, UDP)進(jìn)行數(shù)據(jù)傳輸,節(jié)約了網(wǎng)絡(luò)資源,實現(xiàn)了數(shù)據(jù)的高效率傳輸。
系統(tǒng)硬件部分主要由FPGA主控、A/D采集、16路無源觸點開關(guān)信號輸出、64路模擬電壓輸出、6路串口通信、電壓檢測和千兆以太網(wǎng)通信等模塊組成。FPGA主控模塊實現(xiàn)對7路AD采集、6路串口、電壓檢測以及千兆以太網(wǎng)等模塊的控制;千兆以太網(wǎng)模塊實現(xiàn)上位機與板卡之間的通信。系統(tǒng)采用220 V交流電供電,利用AC/DC電源適配器將220 V交流電轉(zhuǎn)換成28 V直流電源,然后通過DC/DC轉(zhuǎn)換器將28 V直流電壓轉(zhuǎn)換成5 V直流電源給所需模塊供電,采用TPS70358、TPS70345電源轉(zhuǎn)換芯片將5 V轉(zhuǎn)換成3.3 V、2.5 V、1.2 V直流電源,負(fù)責(zé)給FPGA以及所需模塊供電。系統(tǒng)工作電流≤0.2 A,并且內(nèi)部電源與供電電源隔離。系統(tǒng)設(shè)計總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
A/D轉(zhuǎn)換單元負(fù)責(zé)將7路模擬信號轉(zhuǎn)換為數(shù)字信號,并輸出到FPGA。系統(tǒng)采用了8通道8 bits A/D轉(zhuǎn)換器AD7908,該轉(zhuǎn)換器能夠?qū)崿F(xiàn)同時對8路輸入信號進(jìn)行采樣轉(zhuǎn)換[2]。A/D采集電路如圖2所示。
圖2 A/D采集電路
系統(tǒng)設(shè)計了16路無觸點開關(guān),每路負(fù)載容量為28 V/100 mA。利用FPGA控制光電耦合器實現(xiàn)對無觸點開關(guān)的電隔離控制[3]。單路無觸點開關(guān)接口設(shè)計如圖3所示。
系統(tǒng)設(shè)計了6組RS422數(shù)據(jù)接口,芯片選用MAX13433EETD+,按照RS422典型電路搭建數(shù)據(jù)接口,碼速率大于10 Mb/s,滿足任務(wù)需要,并且在接收端添加保護電路,防止外部電壓輸入不穩(wěn)定造成的芯片損壞。串口收發(fā)電路如圖4所示。
圖3 單路無源觸點開關(guān)電路
圖4 串口收發(fā)電路
系統(tǒng)對0~32 V電壓檢測時,需要將該電壓信號與測試臺其他信號進(jìn)行隔離。將28 V直流電源轉(zhuǎn)換成-5 V電源,利用轉(zhuǎn)換而成的±5 V電壓為隔離運放芯片ISO124供電。同時,利用兩個電阻進(jìn)行分壓,將需檢測的電壓信號分壓為0~5 V電壓,并連接至ISO124芯片的輸入端,從而產(chǎn)生可被A/D芯片識別的電壓。為了保持電壓穩(wěn)定,ISO124的輸出端先連接至電壓跟隨器[4],對輸出電壓進(jìn)行模數(shù)轉(zhuǎn)換并發(fā)送至FPGA進(jìn)行判斷。電壓檢測電路部分原理圖如圖5所示。
圖5 電壓檢測電路
系統(tǒng)采用RTL8211以太網(wǎng)GPHY芯片,支持10/100/1 000 b/s網(wǎng)絡(luò)速率[5]。圖6所示為RTL8211與FPGA的電路連接示意圖。
圖6 RTL8211與FPGA的電路連接示意圖
當(dāng)網(wǎng)絡(luò)連接至千兆以太網(wǎng)時,F(xiàn)PGA和PHY芯片RTL8211EG的數(shù)據(jù)傳輸時通過千兆媒體獨立接口(Gigabit Medium Indpendent Interface,GMII)總線通信,發(fā)送時鐘E_GTXC由FPGA提供,頻率為125 MHz,數(shù)據(jù)為TXD0~TXD7,數(shù)據(jù)有效信號為TXEN[6]。接收時鐘E_RXC由PHY芯片提供,數(shù)據(jù)為RXD0~RXD7,數(shù)據(jù)有效信號為RXDV,數(shù)據(jù)在時鐘上升沿采樣[7]。
FPGA程序是在ISE中通過Verilog語言編寫的[8]。系統(tǒng)接收來自某設(shè)備的6路波特率為115 200 b/s的RS422數(shù)據(jù),并且對其輸出的電壓信號進(jìn)行循環(huán)采集。系統(tǒng)對接收的數(shù)據(jù)進(jìn)行仲裁編幀,然后通過以太網(wǎng)模塊將其上傳至上位機進(jìn)行顯示,以驗證其正確性。
系統(tǒng)采用了8位逐次逼近型AD7908,設(shè)置采樣方式為8路循環(huán)采樣,采樣頻率為1kHz[9]。第8路為無用數(shù)據(jù),所以將第8路數(shù)據(jù)設(shè)置為固定值“EB”,這樣在進(jìn)行數(shù)據(jù)處理時就能通過“EB”標(biāo)志將7路數(shù)據(jù)解析出來。如圖7所示,對A/D采集模塊進(jìn)行了仿真驗證,從圖中可以看出,A/D模塊實現(xiàn)了對7路數(shù)據(jù)的循環(huán)采集。
圖7 A/D采集模塊仿真圖
由于系統(tǒng)要同時完成6路RS422數(shù)據(jù)和7個通道模擬信號的采集,因此為了防止數(shù)據(jù)接收混亂導(dǎo)致數(shù)據(jù)失效,在接收數(shù)據(jù)的同時對每一路數(shù)據(jù)添加幀頭。將7個通道的模擬信號認(rèn)為是第6路進(jìn)行接收,待上位機接收到該通道數(shù)據(jù)后再對其進(jìn)行解析。系統(tǒng)采用4個字節(jié)的幀標(biāo)記,依次為BEH、90H、通道標(biāo)識以及一個字節(jié)的幀計數(shù)。表1列出了7路數(shù)據(jù)的幀頭標(biāo)志。
表1 4通道數(shù)據(jù)的幀頭標(biāo)志
系統(tǒng)設(shè)置存儲器(First In First Out,FIFO)的大小為2 KB,在FIFO半滿信號有效時輸出數(shù)據(jù)并增加4個字節(jié)的幀標(biāo)志位至以太網(wǎng)模塊,實現(xiàn)數(shù)據(jù)的仲裁和編幀[10]。即千兆網(wǎng)模塊每次讀取1 024 Byte發(fā)送至上位機。接收數(shù)據(jù)完畢后,在上位機軟件中對數(shù)據(jù)進(jìn)行后續(xù)處理。
2.2.1 千兆以太網(wǎng)測試模塊
千兆以太網(wǎng)測試模塊采用的是UDP,F(xiàn)PGA通過GMII總線和以太網(wǎng)模塊的Gigabit PHY芯片RTL82IIEG通信[11],Gigabit PHY芯片通過網(wǎng)線和PC進(jìn)行數(shù)據(jù)交換。千兆以太網(wǎng)模塊與PC的數(shù)據(jù)通信圖如圖8所示。
圖8 千兆以太網(wǎng)模塊與PC的連接圖
2.2.2 UDP協(xié)議
UDP是面向非連接的協(xié)議,只需知道對方的IP地址和端口號就可以將數(shù)據(jù)包發(fā)送出去[12]。UDP占用網(wǎng)絡(luò)資源較少,數(shù)據(jù)處理快,在應(yīng)用程序運行時受環(huán)境影響較少,不太容易出錯。UDP報文格式如圖9所示。由于UDP是傳輸層(transport layer)協(xié)議,位于應(yīng)用層與網(wǎng)絡(luò)層之間,因此UDP數(shù)據(jù)包需要經(jīng)過IP協(xié)議的封裝傳至電腦[13]。
圖9 UDP報文格式
2.2.3 以太網(wǎng)發(fā)送數(shù)據(jù)檢測
發(fā)送數(shù)據(jù)時,采用Wireshark工具進(jìn)行網(wǎng)絡(luò)抓包,如圖10所示,測試系統(tǒng)與電腦完成了連接,由圖中可以看出,源MAC Address為(00:0a:35:01:fe:c0),類型為IP(0x800)。
如圖11所示,UDP數(shù)據(jù)包中包含1 024 Byte,IP包總長度為1 052 B(04c1),端口號為8080。
圖10 Wireshark抓包圖1
圖11 Wireshark抓包圖2
測試系統(tǒng)與上位機進(jìn)行通信時,當(dāng)UDP發(fā)送模塊檢測到FIFO半滿信號時,就將數(shù)據(jù)組成UDP IP包格式通過GMII總線發(fā)送給PHY芯片,PHY芯片再將數(shù)據(jù)通過網(wǎng)口上發(fā)至PC。IP數(shù)據(jù)發(fā)送時,首先發(fā)送IP數(shù)據(jù)包的包頭,IP 包頭由 8 Byte的前導(dǎo)碼,目標(biāo)MAC Address,源MAC Address和2 Byte的IP包類型組成。前導(dǎo)碼是由 7個0x55,1個0xD5 字節(jié)組成,表示一個IP 數(shù)據(jù)包傳輸?shù)拈_始[14]。如圖12所示,發(fā)送第一路RS422數(shù)據(jù)給上位機,利用Chipscope 對其進(jìn)行驗證,結(jié)果顯示,以太網(wǎng)模塊可靠地完成了數(shù)據(jù)的傳輸。
圖12 千兆以太網(wǎng)傳輸?shù)臄?shù)據(jù)
經(jīng)過實際測試,UDP通信的速度可達(dá)900 Mb/s以上,實現(xiàn)了數(shù)據(jù)的高速傳輸。
系統(tǒng)采用Visual Basic語言編寫上位機軟件,提供了友好的人機交互界面[15]。 硬件電路中對要接收的電壓進(jìn)行標(biāo)定,標(biāo)定結(jié)果如表2所示。
表2 測試電壓標(biāo)定結(jié)果表
上位機接收的原始數(shù)據(jù)如圖13所示。利用Matlab對RS422數(shù)據(jù)中的幀計數(shù)進(jìn)行提取和波形顯示,如圖14所示,數(shù)據(jù)未出現(xiàn)丟幀和錯幀現(xiàn)象。在上位機軟件中選擇電壓信號通道號,以波形的形式進(jìn)行顯示,如圖15~21所示。對比其標(biāo)定值,可以確定電壓信號均在正常范圍內(nèi)。
圖13 上位機接收的原始數(shù)據(jù)
圖14 RS422幀計數(shù)顯示
圖15 通道1電壓28 V波形顯示
圖16 通道2電壓28 V波形顯示
圖17 通道3電壓28 V波形顯示
圖18 通道4電壓+15 V波形顯示
圖19 通道5電壓-15 V波形顯示
圖20 通道6電壓5 V波形顯示
圖21 通道7電壓28 V波形顯示
系統(tǒng)針對前端大容量數(shù)據(jù)的高速傳輸,設(shè)計了基于FPGA和以太網(wǎng)的測試系統(tǒng)。在聯(lián)調(diào)過程中觀察和分析測試結(jié)果,系統(tǒng)能夠?qū)?shù)據(jù)進(jìn)行實時的采集和分析處理,通過千兆以太網(wǎng)模塊,實現(xiàn)了高速數(shù)據(jù)的傳輸,對采集的數(shù)據(jù)進(jìn)行分析和波形顯示,測試結(jié)果良好?;谇д滓蕴W(wǎng)的測試系統(tǒng)硬件占用資源少,傳輸速率高,有很好的實際應(yīng)用價值。