鄭天宇 尹達一
摘 要: 在FPGA中設(shè)計并實現(xiàn)了傳輸速率為1 000 Mbit/s的以太網(wǎng)UDP/IP協(xié)議棧,并將其應(yīng)用在圖像采集系統(tǒng)完成圖像傳輸。UDP/IP協(xié)議棧分為MAC層和UDP層,MAC層完成基本以太網(wǎng)幀的收發(fā),UDP層完成頂層用戶數(shù)據(jù)封裝。協(xié)議棧完全兼容IEEE 802.3ab千兆以太網(wǎng)標(biāo)準(zhǔn),具有顯式流量控制功能,解決了FPGA千兆以太網(wǎng)硬核媒體訪問控制器移植彈性低,資源消耗大的難題。仿真與實驗結(jié)果表明,協(xié)議棧資源占用率低,用戶端數(shù)據(jù)率可達964 Mbit/s,在幀長度為1 472時丟包率為0%,對于1 000[×]1 000(pixel)面陣CMOS探測器幀頻可達48 f/s,適用于嵌入式高速圖像采集系統(tǒng)。
關(guān)鍵詞: 千兆以太網(wǎng); UDP/IP協(xié)議棧; 流量控制; 圖像采集; FPGA; 高速成像
中圖分類號: TN911.73?34; TP393.0; TP73 文獻標(biāo)識碼: A 文章編號: 1004?373X(2018)18?0001?05
Implementation of gigabit UDP/IP protocol stack in FPGA and its
application in high?speed imaging system
ZHENG Tianyu1,2,3, YIN Dayi1,2
(1. Key Laboratory of Infrared Detection and Imaging Technology, Chinese Academy of Sciences, Shanghai 200083, China;
2. Shanghai Institute of Technical Physics, Chinese Academy of Sciences, Shanghai 200083, China;
3. University of Chinese Academy of Sciences, Beijing 100049, China)
Abstract: An Ethernet UDP/IP protocol stack with 1000 Mbit/s transmission rate was designed and implemented in FPGA, and applied in the image acquisition system to achieve image transmission. The UDP/IP protocol stack consists of the MAC layer and UDP layer. The MAC layer completes reception and sending of basic Ethernet frames, while the UDP layer completes encapsulation of top?level user data. The protocol stack is fully compatible with IEEE 802.3ab gigabit Ethernet standard, and has the function of explicit flow control, which can solve the difficulties of low transplant flexibility and large resource consumption of gigabit Ethernet hard core media access controller in FPGA. The simulation and experimental results show that the protocol stack has low resource occupation rate, data rate of 964 Mbps on the client side, packet loss rate of 0% when the frame length is 1 472, and frame frequency of 48 f/s for the 1 000×1 000 (pixel) area array CMOS detector, which is applicable for the embedded high?speed image acquisition system.
Keywords: gigabit Ethernet; UDP/IP protocol stack; flow control; image acquisition; FPGA; high?speed imaging
0 引 言
大面陣、高幀頻的高速圖像采集系統(tǒng)在科研領(lǐng)域、工業(yè)現(xiàn)場的應(yīng)用日漸廣泛,但巨大的數(shù)據(jù)量以及實時性需要較高的數(shù)據(jù)帶寬使其應(yīng)用受限[1]。傳統(tǒng)的IEEE 1394,Camera link等接口因為功耗高、體積大等原因在手持設(shè)備或移動端的應(yīng)用受到限制。千兆以太網(wǎng)是一種新型的以太網(wǎng),具有高速、高效、高性能的特點,它不僅能夠提供1Gbit/s的傳輸帶寬,降低了系統(tǒng)整體的成本,還能夠提高系統(tǒng)的擴展性[2]。近幾年來通信系統(tǒng)中千兆以太網(wǎng)媒體訪問控制器作為硬核集成在芯片中的應(yīng)用不斷發(fā)展,但硬核成本高和可移植性低的缺點限制了其使用[3]。
FPGA在嵌入式圖像采集系統(tǒng)中應(yīng)用廣泛[4?5],內(nèi)部可編程邏輯適用于多種接口[6]。本文在FPGA內(nèi)設(shè)計了一種千兆以太網(wǎng)UDP/IP協(xié)議棧,以減少邏輯資源消耗為目的,同時增強了可移植性,較傳統(tǒng)硬核具有較大優(yōu)勢,適用于數(shù)據(jù)量大的圖像采集傳輸系統(tǒng)。
1 協(xié)議棧整體框架結(jié)構(gòu)
UDP,IP協(xié)議分別服務(wù)于TCP/IP參考模型的傳輸層與網(wǎng)絡(luò)層,面向無連接、不可靠、數(shù)據(jù)報傳輸?shù)膮f(xié)議[7],特別適用于高速圖像采集系統(tǒng)。UDP/IP協(xié)議??傮w框圖如圖1所示,包含MAC層和UDP層兩部分。
MAC層與物理層芯片直接連接,完成以太網(wǎng)基本幀的接收以及發(fā)送,具體包括發(fā)送、接收控制器,發(fā)送、接收緩沖器以及流量控制模塊;UDP層為頂層用戶提供數(shù)據(jù)接口,負責(zé)數(shù)據(jù)組裝及配置。UDP層與MAC層通過緩沖器互聯(lián)。
兩站點之間通過以太網(wǎng)收發(fā)數(shù)據(jù)時,數(shù)據(jù)按照一定協(xié)議格式封裝,然后以比特流的形式在信道中傳輸。數(shù)據(jù)打包傳輸過程如圖2所示。用戶數(shù)據(jù)從應(yīng)用程序產(chǎn)生,然后傳遞給傳輸層,在傳輸層針對不同的傳輸協(xié)議加上不同的傳輸層協(xié)議首部,此處加UDP頭。然后傳給網(wǎng)絡(luò)層,在此加IP頭。最后傳給網(wǎng)絡(luò)接口層,封裝為基本以太網(wǎng)幀。幀發(fā)送為自上向下過程,幀接收過程與之相反。
2 各模塊實現(xiàn)
以太網(wǎng)數(shù)據(jù)在信道中以數(shù)據(jù)幀的形式傳遞,底層MAC幀格式如圖3所示。以太網(wǎng)幀包含前導(dǎo)碼(PREAMBLE)、幀起始符(SFD)、幀目的地址(DESTINATION ADDRESS)、幀源地址(SOURCE ADDRESS)、幀長度/類型(LENGTH/TYPE)、數(shù)據(jù)及填充(DATA&PAD;)、幀CRC校驗值(CRC VALUE)。按照從上到下的順序發(fā)送字節(jié),每個字節(jié)按LSB到MSB的順序發(fā)送。其中,前導(dǎo)碼包含7個字節(jié)的0x55,用來完成物理層同步;幀起始符是1個字節(jié)的0xd5,表示一幀的開始;幀目的地址(DESTINATION ADDRESS)、幀源地址(SOURCE ADDRESS)各包含6個字節(jié),代表該幀所要到達的目的MAC地址和發(fā)送站點的MAC地址;幀長度/類型包含2個字節(jié),當(dāng)其值小于1 536時表示幀長度;數(shù)據(jù)及填充字段為46~1 518 B的幀數(shù)據(jù);幀CRC校驗值是從幀目的地址字段到填充字段的校驗和,以太網(wǎng)中使用CRC?32校驗和[8]。
IEEE 802.3規(guī)定千兆以太網(wǎng)具有半雙工和全雙工兩種通信模式。半雙工通信方式為了解決媒體隨機接入控制中的信道沖突采用載波監(jiān)聽多點接入(CSMA),每個站點在發(fā)送數(shù)據(jù)包前首先監(jiān)聽信道狀態(tài),確定無其他站點數(shù)據(jù)通信時才發(fā)起該次通信[9]。隨著技術(shù)的進步以及交換機的應(yīng)用,全雙工通信方式得以普及,優(yōu)點是無需對信道進行監(jiān)聽,可直接收發(fā)數(shù)據(jù),通信時需要流量控制。因為圖像數(shù)據(jù)為點對點通信,所以本文設(shè)計的UDP/IP協(xié)議棧工作在全雙工模式。
全雙工模式為了避免流量過大,通信站點間使用PAUSE幀請求暫停數(shù)據(jù)傳輸一段時間。PAUSE幀結(jié)構(gòu)類似于普通以太網(wǎng)數(shù)據(jù)幀,具有相同結(jié)構(gòu)的前導(dǎo)碼、幀起始符、幀目的地址、幀源地址、以及幀CRC校驗,不同的地方在于幀長度/類型字段為PAUSE幀特有的標(biāo)識符:32h88080001,數(shù)據(jù)段為兩字節(jié)的暫停時間參數(shù),單位為512 bit單位傳輸時間。
發(fā)送控制器如圖4所示,配置模塊接收用戶配置,包括源地址、目的地址。發(fā)送狀態(tài)機控制多路選擇器完成整幀發(fā)送,GMII_tx_en有效時在GMII_tx_clk的上升沿將數(shù)據(jù)送入GMII接口,千兆以太網(wǎng)GMII接口的數(shù)據(jù)位寬為8 bit,時鐘頻率為125 MHz。同時發(fā)送狀態(tài)機接收PAUSE幀請求信號,在線路中數(shù)據(jù)量較大,站點難以有效接收時向發(fā)送方發(fā)送PAUSE幀。
復(fù)位后處于IDLE狀態(tài)。當(dāng)發(fā)送緩沖器要滿時,tx_valid有效。此時若pause_req為0,即無暫停請求,則進入PREAMBLE狀態(tài),連續(xù)7個時鐘周期發(fā)送字節(jié)碼8h55作為前導(dǎo)碼。下一時鐘周期進入SFD狀態(tài)發(fā)送幀起始符8hd5,此時發(fā)送緩沖器fifo_rd有效。接下來進入GMII_data狀態(tài)發(fā)送以太網(wǎng)用戶數(shù)據(jù),數(shù)據(jù)的長度為FRM_LEN,數(shù)據(jù)來自于發(fā)送緩沖器。最后發(fā)送4 B CRC校驗碼。
接收控制器如圖6所示,配置模塊接收用戶配置需要過濾的幀信息。接收狀態(tài)機負責(zé)控制數(shù)據(jù)接收過程,接收到的數(shù)據(jù)幀拆解掉前導(dǎo)碼、幀起始符后將有效數(shù)據(jù)存入Memory,接收并校驗完成后發(fā)送接收有效信號rx_valid。
復(fù)位后處于IDLE狀態(tài)。GMII_rx_dv信號來自于物理層芯片,當(dāng)其有效時,表示接收到以太網(wǎng)幀,接下來8個時鐘周期開始接收PREAMBLE和SFD,然后進入FRAME DATA狀態(tài)接收以太網(wǎng)數(shù)據(jù)并使能數(shù)據(jù)校驗,接收到目的地址后通過消息過濾模塊進行消息匹配,過濾出想要接收的消息。如果為PAUSE幀則進入PAUSE FRAME狀態(tài),如果為正常幀,當(dāng)FRAME CRC狀態(tài)確認(rèn)以太網(wǎng)幀有效時,進入IDLE狀態(tài)。對于PAUSE幀,在PAUSE FRAME狀態(tài)持續(xù)5個時鐘周期,接收完源MAC地址后進入PAUSE CHECK狀態(tài)依次校驗PAUSE幀的長度/類型、暫停標(biāo)志,校驗成功后進入STORE TIME1和STORE TIME2狀態(tài)保存暫停時間。校驗完成后進入DO PAUSE狀態(tài),在該狀態(tài)進入一個空循環(huán),循環(huán)周期計數(shù)值由接收到的暫停時間決定。
UDP/IP幀結(jié)構(gòu)包括幀頭信息和數(shù)據(jù)兩部分,幀頭信息預(yù)先存儲在可配置RAM中,可由用戶修改,幀頭各字段的內(nèi)容及占據(jù)的數(shù)據(jù)位寬如圖8所示。UDP幀發(fā)送組裝模塊如圖9所示,其由控制模塊、地址產(chǎn)生模塊、幀組裝控制模塊、長度產(chǎn)生模塊、幀頭組裝模塊和可配置RAM組成。該組裝模塊主要完成UDP/IP幀頭信息的產(chǎn)生與數(shù)據(jù)封裝。工作流程為:當(dāng)tx_start有效時產(chǎn)生使能信號和sof信號。地址生成模塊中的計數(shù)器累加,可配置RAM中的UDP幀頭信號輸出,此時缺少頭長和校驗部分。IP,UDP頭長信息可由長度產(chǎn)生模塊得到,分別為data_lenth+28和data_lenth+8,幀組裝控制模塊輸出控制信號將頭長度信息和RAM中存儲的其他信息相結(jié)合,最終在控制模塊的作用下由多路選擇器先輸出幀頭信息,后輸出數(shù)據(jù)。輸出完畢后eof信號有效。
3 系統(tǒng)硬件框圖
系統(tǒng)硬件結(jié)構(gòu)框圖如圖10所示。其由1 000[×]1 000 CMOS探測器組件、FPGA以及千兆以太網(wǎng)物理層芯片組成。探測器ADC量化位數(shù)為12 bit,像素碼值通過8路LVDS信號傳至FPGA,F(xiàn)PGA將數(shù)據(jù)打包發(fā)送到UDP應(yīng)用層,通過UDP/IP協(xié)議棧將數(shù)據(jù)發(fā)送到上位機。上位機接收數(shù)據(jù)顯示并保存,同時可發(fā)送積分時間、開窗區(qū)域等指令至FPGA。
4 實驗驗證及成像
實驗驗證系統(tǒng)由探測器板和信息處理板組成如圖11所示,二者通過軟板互聯(lián),UDP/IP協(xié)議棧在信息處理板FPGA內(nèi)實現(xiàn)。
為了驗證硬件設(shè)計的正確性,發(fā)送固定已知格式的數(shù)據(jù)幀至上位機,在上位機利用Wireshark網(wǎng)絡(luò)抓包分析工具抓取數(shù)據(jù),并分析其正確性。圖12為Wireshark某次抓取界面,由抓取結(jié)果分析可知,數(shù)據(jù)幀符合UDP協(xié)議,源地址為192.168.1.2,目的地址為192.168.1.1,幀長度為999,與FPGA中配置的幀頭信息及數(shù)據(jù)長度完全一致。
其中UDP幀頭長度固定為42,數(shù)據(jù)長度越大,有效數(shù)據(jù)在一幀中占得比重越大,帶寬利用率越高。丟包率是衡量UDP通信協(xié)議的一個重要標(biāo)準(zhǔn),考核方法為:定義UDP幀數(shù)據(jù)段中一個32 bit字段為幀計數(shù),F(xiàn)PGA中UDP幀組裝時每發(fā)送完一幀該計數(shù)值加1,上位機接收完一定量數(shù)據(jù)幀后統(tǒng)計該計數(shù)值是否連續(xù)遞增;若幀之間出現(xiàn)非連續(xù)狀態(tài),通過兩幀之間該字段的差值得到丟失幀數(shù),最后統(tǒng)計總丟失幀數(shù)后計算丟包率。
5 結(jié) 論
本文詳細分析了IEEE 802.3ab以太網(wǎng)標(biāo)準(zhǔn)協(xié)議,在FPGA內(nèi)實現(xiàn)了面向高速圖像數(shù)據(jù)傳輸?shù)腢DP/IP協(xié)議棧。經(jīng)測試,協(xié)議棧數(shù)據(jù)傳輸速率高、系統(tǒng)穩(wěn)定、丟包率低,滿足大面陣圖像采集系統(tǒng)的要求。本文創(chuàng)新點有:
1) 完整地實現(xiàn)了一種IEEE 802.3ab以太網(wǎng)UDP/IP協(xié)議棧,具有用戶可配置及顯式流量控制功能。
2) UDP/IP協(xié)議棧完全由硬件描述語言設(shè)計完成,資源占用率低、可移植性高,屬性修改靈活,可縮短開發(fā)周期,同時降低系統(tǒng)成本。
3) UDP/IP協(xié)議棧成功應(yīng)用在大面陣探測器高速圖像采集系統(tǒng)中,經(jīng)實際測試,數(shù)據(jù)傳輸丟包率低,系統(tǒng)運行穩(wěn)定、可靠。
本文實現(xiàn)的UDP/IP協(xié)議??蔀榍度胧綀D像采集傳輸系統(tǒng)提供參考。
參考文獻
[1] 俞鵬煒,任勇,馮鵬,等.基于FPGA的千兆以太網(wǎng)CMOS圖像數(shù)據(jù)傳輸系統(tǒng)設(shè)計[J].國外電子測量技術(shù),2016,35(11):76?81.
YU Pengwei, REN Yong, FENG Peng, et al. Design of gigabit Ethernet CMOS image data transmission system based on FPGA [J]. Foreign electronic measurement technology, 2016, 35(11): 76?81.
[2] 沈淦松.基于FPGA的千兆以太網(wǎng)相機的傳輸系統(tǒng)研究[D].成都:電子科技大學(xué),2013.
SHEN Gansong. Research on FPGA based gigabit Ethernet camera transmission system [D]. Chengdu: University of Electronic Science and Technology of China, 2013.
[3] 朱保琨,劉廣文.千兆以太網(wǎng)通信端口FPGA設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2016,37(9):2292?2298.
ZHU Baokun, LIU Guangwen. Design and implementation of gigabit Ethernet communication port based on FPGA [J]. Computer engineering and design, 2016, 37(9): 2292?2298.
[4] 呂星宇.嵌入式計算機智能圖像信息處理系統(tǒng)設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2016,39(21):83?86.
L? Xingyu. Design and implementation of embedded computer intelligent image information processing system [J]. Modern electronics technique, 2016, 39(21): 83?86.
[5] 李鵬.嵌入式系統(tǒng)中千兆以太網(wǎng)的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2014,37(12):4?7.
LI Peng. Design and realization of gigabit Ethernet in embedded system [J]. Modern electronics technique, 2014, 37(12): 4?7.
[6] 毛群.基于DSP和FPGA的信號處理模塊及其IP核設(shè)計技術(shù)研究[D].杭州:浙江大學(xué),2016.
MAO Qun. Research on signal processing module and IP core design technology based on DSP and FPGA [D]. Hangzhou: Zhejiang University, 2016.
[7] 張威.基于FPGA的高速以太網(wǎng)接口設(shè)計和實現(xiàn)[D].成都:電子科技大學(xué),2016.
ZHANG Wei. Design and implementation of Ethernet high?speed interface based on FPGA [D]. Chengdu: University of Electronic Science and Technology of China, 2016.
[8] 吳瓊,劉建國,黃慶超,等.基于以太網(wǎng)幀結(jié)構(gòu)的AES加解密算法的實現(xiàn)[J].光通信技術(shù),2016,40(11):16?19.
WU Qiong, LIU Jianguo, HUANG Qingchao, et al. Implementation of AES cipher and decipher algorithm based on Ethernet frame structure [J]. Optical communication technology, 2016, 40(11): 16?19.
[9] 孫海超,陳春寧,田睿,等.基于以太網(wǎng)的高速圖像傳輸?shù)难芯颗c實現(xiàn)[J].計算機技術(shù)與發(fā)展,2014,24(3):187?189.
SUN Haichao, CHEN Chunning, TIAN Rui, et al. Research and implementation of high?speed image transmission based on Ethernet [J]. Computer technology and development, 2014, 24(3): 187?189.
[10] 江麗.基于Matlab空間域算法的圖像增強技術(shù)的研究與應(yīng)用[J].電子設(shè)計工程,2016,24(22):131?133.
JIANG Li. The research and application of the image enhancement techniques in the spatial domain based on Matlab [J]. Electronic design engineering, 2016, 24(22): 131?133.