鄭天宇 尹達(dá)一
摘 要: 在FPGA中設(shè)計(jì)并實(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)硬核媒體訪問(wèn)控制器移植彈性低,資源消耗大的難題。仿真與實(shí)驗(yàn)結(jié)果表明,協(xié)議棧資源占用率低,用戶端數(shù)據(jù)率可達(dá)964 Mbit/s,在幀長(zhǎng)度為1 472時(shí)丟包率為0%,對(duì)于1 000[×]1 000(pixel)面陣CMOS探測(cè)器幀頻可達(dá)48 f/s,適用于嵌入式高速圖像采集系統(tǒng)。
關(guān)鍵詞: 千兆以太網(wǎng); UDP/IP協(xié)議棧; 流量控制; 圖像采集; FPGA; 高速成像
中圖分類號(hào): TN911.73?34; TP393.0; TP73 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 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)場(chǎng)的應(yīng)用日漸廣泛,但巨大的數(shù)據(jù)量以及實(shí)時(shí)性需要較高的數(shù)據(jù)帶寬使其應(yīng)用受限[1]。傳統(tǒng)的IEEE 1394,Camera link等接口因?yàn)楣母?、體積大等原因在手持設(shè)備或移動(dòng)端的應(yīng)用受到限制。千兆以太網(wǎng)是一種新型的以太網(wǎng),具有高速、高效、高性能的特點(diǎn),它不僅能夠提供1Gbit/s的傳輸帶寬,降低了系統(tǒng)整體的成本,還能夠提高系統(tǒng)的擴(kuò)展性[2]。近幾年來(lái)通信系統(tǒng)中千兆以太網(wǎng)媒體訪問(wèn)控制器作為硬核集成在芯片中的應(yīng)用不斷發(fā)展,但硬核成本高和可移植性低的缺點(diǎn)限制了其使用[3]。
FPGA在嵌入式圖像采集系統(tǒng)中應(yīng)用廣泛[4?5],內(nèi)部可編程邏輯適用于多種接口[6]。本文在FPGA內(nèi)設(shè)計(jì)了一種千兆以太網(wǎng)UDP/IP協(xié)議棧,以減少邏輯資源消耗為目的,同時(shí)增強(qiáng)了可移植性,較傳統(tǒng)硬核具有較大優(yōu)勢(shì),適用于數(shù)據(jù)量大的圖像采集傳輸系統(tǒng)。
1 協(xié)議棧整體框架結(jié)構(gòu)
UDP,IP協(xié)議分別服務(wù)于TCP/IP參考模型的傳輸層與網(wǎng)絡(luò)層,面向無(wú)連接、不可靠、數(shù)據(jù)報(bào)傳輸?shù)膮f(xié)議[7],特別適用于高速圖像采集系統(tǒng)。UDP/IP協(xié)議棧總體框圖如圖1所示,包含MAC層和UDP層兩部分。
MAC層與物理層芯片直接連接,完成以太網(wǎng)基本幀的接收以及發(fā)送,具體包括發(fā)送、接收控制器,發(fā)送、接收緩沖器以及流量控制模塊;UDP層為頂層用戶提供數(shù)據(jù)接口,負(fù)責(zé)數(shù)據(jù)組裝及配置。UDP層與MAC層通過(guò)緩沖器互聯(lián)。
兩站點(diǎn)之間通過(guò)以太網(wǎng)收發(fā)數(shù)據(jù)時(shí),數(shù)據(jù)按照一定協(xié)議格式封裝,然后以比特流的形式在信道中傳輸。數(shù)據(jù)打包傳輸過(guò)程如圖2所示。用戶數(shù)據(jù)從應(yīng)用程序產(chǎn)生,然后傳遞給傳輸層,在傳輸層針對(duì)不同的傳輸協(xié)議加上不同的傳輸層協(xié)議首部,此處加UDP頭。然后傳給網(wǎng)絡(luò)層,在此加IP頭。最后傳給網(wǎng)絡(luò)接口層,封裝為基本以太網(wǎng)幀。幀發(fā)送為自上向下過(guò)程,幀接收過(guò)程與之相反。
2 各模塊實(shí)現(xiàn)
以太網(wǎng)數(shù)據(jù)在信道中以數(shù)據(jù)幀的形式傳遞,底層MAC幀格式如圖3所示。以太網(wǎng)幀包含前導(dǎo)碼(PREAMBLE)、幀起始符(SFD)、幀目的地址(DESTINATION ADDRESS)、幀源地址(SOURCE ADDRESS)、幀長(zhǎng)度/類型(LENGTH/TYPE)、數(shù)據(jù)及填充(DATA&PAD;)、幀CRC校驗(yàn)值(CRC VALUE)。按照從上到下的順序發(fā)送字節(jié),每個(gè)字節(jié)按LSB到MSB的順序發(fā)送。其中,前導(dǎo)碼包含7個(gè)字節(jié)的0x55,用來(lái)完成物理層同步;幀起始符是1個(gè)字節(jié)的0xd5,表示一幀的開始;幀目的地址(DESTINATION ADDRESS)、幀源地址(SOURCE ADDRESS)各包含6個(gè)字節(jié),代表該幀所要到達(dá)的目的MAC地址和發(fā)送站點(diǎn)的MAC地址;幀長(zhǎng)度/類型包含2個(gè)字節(jié),當(dāng)其值小于1 536時(shí)表示幀長(zhǎng)度;數(shù)據(jù)及填充字段為46~1 518 B的幀數(shù)據(jù);幀CRC校驗(yàn)值是從幀目的地址字段到填充字段的校驗(yàn)和,以太網(wǎng)中使用CRC?32校驗(yàn)和[8]。
IEEE 802.3規(guī)定千兆以太網(wǎng)具有半雙工和全雙工兩種通信模式。半雙工通信方式為了解決媒體隨機(jī)接入控制中的信道沖突采用載波監(jiān)聽多點(diǎn)接入(CSMA),每個(gè)站點(diǎn)在發(fā)送數(shù)據(jù)包前首先監(jiān)聽信道狀態(tài),確定無(wú)其他站點(diǎn)數(shù)據(jù)通信時(shí)才發(fā)起該次通信[9]。隨著技術(shù)的進(jìn)步以及交換機(jī)的應(yīng)用,全雙工通信方式得以普及,優(yōu)點(diǎn)是無(wú)需對(duì)信道進(jìn)行監(jiān)聽,可直接收發(fā)數(shù)據(jù),通信時(shí)需要流量控制。因?yàn)閳D像數(shù)據(jù)為點(diǎn)對(duì)點(diǎn)通信,所以本文設(shè)計(jì)的UDP/IP協(xié)議棧工作在全雙工模式。
全雙工模式為了避免流量過(guò)大,通信站點(diǎn)間使用PAUSE幀請(qǐng)求暫停數(shù)據(jù)傳輸一段時(shí)間。PAUSE幀結(jié)構(gòu)類似于普通以太網(wǎng)數(shù)據(jù)幀,具有相同結(jié)構(gòu)的前導(dǎo)碼、幀起始符、幀目的地址、幀源地址、以及幀CRC校驗(yàn),不同的地方在于幀長(zhǎng)度/類型字段為PAUSE幀特有的標(biāo)識(shí)符:32h88080001,數(shù)據(jù)段為兩字節(jié)的暫停時(shí)間參數(shù),單位為512 bit單位傳輸時(shí)間。
發(fā)送控制器如圖4所示,配置模塊接收用戶配置,包括源地址、目的地址。發(fā)送狀態(tài)機(jī)控制多路選擇器完成整幀發(fā)送,GMII_tx_en有效時(shí)在GMII_tx_clk的上升沿將數(shù)據(jù)送入GMII接口,千兆以太網(wǎng)GMII接口的數(shù)據(jù)位寬為8 bit,時(shí)鐘頻率為125 MHz。同時(shí)發(fā)送狀態(tài)機(jī)接收PAUSE幀請(qǐng)求信號(hào),在線路中數(shù)據(jù)量較大,站點(diǎn)難以有效接收時(shí)向發(fā)送方發(fā)送PAUSE幀。
復(fù)位后處于IDLE狀態(tài)。當(dāng)發(fā)送緩沖器要滿時(shí),tx_valid有效。此時(shí)若pause_req為0,即無(wú)暫停請(qǐng)求,則進(jìn)入PREAMBLE狀態(tài),連續(xù)7個(gè)時(shí)鐘周期發(fā)送字節(jié)碼8h55作為前導(dǎo)碼。下一時(shí)鐘周期進(jìn)入SFD狀態(tài)發(fā)送幀起始符8hd5,此時(shí)發(fā)送緩沖器fifo_rd有效。接下來(lái)進(jìn)入GMII_data狀態(tài)發(fā)送以太網(wǎng)用戶數(shù)據(jù),數(shù)據(jù)的長(zhǎng)度為FRM_LEN,數(shù)據(jù)來(lái)自于發(fā)送緩沖器。最后發(fā)送4 B CRC校驗(yàn)碼。
接收控制器如圖6所示,配置模塊接收用戶配置需要過(guò)濾的幀信息。接收狀態(tài)機(jī)負(fù)責(zé)控制數(shù)據(jù)接收過(guò)程,接收到的數(shù)據(jù)幀拆解掉前導(dǎo)碼、幀起始符后將有效數(shù)據(jù)存入Memory,接收并校驗(yàn)完成后發(fā)送接收有效信號(hào)rx_valid。
復(fù)位后處于IDLE狀態(tài)。GMII_rx_dv信號(hào)來(lái)自于物理層芯片,當(dāng)其有效時(shí),表示接收到以太網(wǎng)幀,接下來(lái)8個(gè)時(shí)鐘周期開始接收PREAMBLE和SFD,然后進(jìn)入FRAME DATA狀態(tài)接收以太網(wǎng)數(shù)據(jù)并使能數(shù)據(jù)校驗(yàn),接收到目的地址后通過(guò)消息過(guò)濾模塊進(jìn)行消息匹配,過(guò)濾出想要接收的消息。如果為PAUSE幀則進(jìn)入PAUSE FRAME狀態(tài),如果為正常幀,當(dāng)FRAME CRC狀態(tài)確認(rèn)以太網(wǎng)幀有效時(shí),進(jìn)入IDLE狀態(tài)。對(duì)于PAUSE幀,在PAUSE FRAME狀態(tài)持續(xù)5個(gè)時(shí)鐘周期,接收完源MAC地址后進(jìn)入PAUSE CHECK狀態(tài)依次校驗(yàn)PAUSE幀的長(zhǎng)度/類型、暫停標(biāo)志,校驗(yàn)成功后進(jìn)入STORE TIME1和STORE TIME2狀態(tài)保存暫停時(shí)間。校驗(yàn)完成后進(jìn)入DO PAUSE狀態(tài),在該狀態(tài)進(jìn)入一個(gè)空循環(huán),循環(huán)周期計(jì)數(shù)值由接收到的暫停時(shí)間決定。
UDP/IP幀結(jié)構(gòu)包括幀頭信息和數(shù)據(jù)兩部分,幀頭信息預(yù)先存儲(chǔ)在可配置RAM中,可由用戶修改,幀頭各字段的內(nèi)容及占據(jù)的數(shù)據(jù)位寬如圖8所示。UDP幀發(fā)送組裝模塊如圖9所示,其由控制模塊、地址產(chǎn)生模塊、幀組裝控制模塊、長(zhǎng)度產(chǎn)生模塊、幀頭組裝模塊和可配置RAM組成。該組裝模塊主要完成UDP/IP幀頭信息的產(chǎn)生與數(shù)據(jù)封裝。工作流程為:當(dāng)tx_start有效時(shí)產(chǎn)生使能信號(hào)和sof信號(hào)。地址生成模塊中的計(jì)數(shù)器累加,可配置RAM中的UDP幀頭信號(hào)輸出,此時(shí)缺少頭長(zhǎng)和校驗(yàn)部分。IP,UDP頭長(zhǎng)信息可由長(zhǎng)度產(chǎn)生模塊得到,分別為data_lenth+28和data_lenth+8,幀組裝控制模塊輸出控制信號(hào)將頭長(zhǎng)度信息和RAM中存儲(chǔ)的其他信息相結(jié)合,最終在控制模塊的作用下由多路選擇器先輸出幀頭信息,后輸出數(shù)據(jù)。輸出完畢后eof信號(hào)有效。
3 系統(tǒng)硬件框圖
系統(tǒng)硬件結(jié)構(gòu)框圖如圖10所示。其由1 000[×]1 000 CMOS探測(cè)器組件、FPGA以及千兆以太網(wǎng)物理層芯片組成。探測(cè)器ADC量化位數(shù)為12 bit,像素碼值通過(guò)8路LVDS信號(hào)傳至FPGA,F(xiàn)PGA將數(shù)據(jù)打包發(fā)送到UDP應(yīng)用層,通過(guò)UDP/IP協(xié)議棧將數(shù)據(jù)發(fā)送到上位機(jī)。上位機(jī)接收數(shù)據(jù)顯示并保存,同時(shí)可發(fā)送積分時(shí)間、開窗區(qū)域等指令至FPGA。
4 實(shí)驗(yàn)驗(yàn)證及成像
實(shí)驗(yàn)驗(yàn)證系統(tǒng)由探測(cè)器板和信息處理板組成如圖11所示,二者通過(guò)軟板互聯(lián),UDP/IP協(xié)議棧在信息處理板FPGA內(nèi)實(shí)現(xiàn)。
為了驗(yàn)證硬件設(shè)計(jì)的正確性,發(fā)送固定已知格式的數(shù)據(jù)幀至上位機(jī),在上位機(jī)利用Wireshark網(wǎng)絡(luò)抓包分析工具抓取數(shù)據(jù),并分析其正確性。圖12為Wireshark某次抓取界面,由抓取結(jié)果分析可知,數(shù)據(jù)幀符合UDP協(xié)議,源地址為192.168.1.2,目的地址為192.168.1.1,幀長(zhǎng)度為999,與FPGA中配置的幀頭信息及數(shù)據(jù)長(zhǎng)度完全一致。
其中UDP幀頭長(zhǎng)度固定為42,數(shù)據(jù)長(zhǎng)度越大,有效數(shù)據(jù)在一幀中占得比重越大,帶寬利用率越高。丟包率是衡量UDP通信協(xié)議的一個(gè)重要標(biāo)準(zhǔn),考核方法為:定義UDP幀數(shù)據(jù)段中一個(gè)32 bit字段為幀計(jì)數(shù),F(xiàn)PGA中UDP幀組裝時(shí)每發(fā)送完一幀該計(jì)數(shù)值加1,上位機(jī)接收完一定量數(shù)據(jù)幀后統(tǒng)計(jì)該計(jì)數(shù)值是否連續(xù)遞增;若幀之間出現(xiàn)非連續(xù)狀態(tài),通過(guò)兩幀之間該字段的差值得到丟失幀數(shù),最后統(tǒng)計(jì)總丟失幀數(shù)后計(jì)算丟包率。
5 結(jié) 論
本文詳細(xì)分析了IEEE 802.3ab以太網(wǎng)標(biāo)準(zhǔn)協(xié)議,在FPGA內(nèi)實(shí)現(xiàn)了面向高速圖像數(shù)據(jù)傳輸?shù)腢DP/IP協(xié)議棧。經(jīng)測(cè)試,協(xié)議棧數(shù)據(jù)傳輸速率高、系統(tǒng)穩(wěn)定、丟包率低,滿足大面陣圖像采集系統(tǒng)的要求。本文創(chuàng)新點(diǎn)有:
1) 完整地實(shí)現(xiàn)了一種IEEE 802.3ab以太網(wǎng)UDP/IP協(xié)議棧,具有用戶可配置及顯式流量控制功能。
2) UDP/IP協(xié)議棧完全由硬件描述語(yǔ)言設(shè)計(jì)完成,資源占用率低、可移植性高,屬性修改靈活,可縮短開發(fā)周期,同時(shí)降低系統(tǒng)成本。
3) UDP/IP協(xié)議棧成功應(yīng)用在大面陣探測(cè)器高速圖像采集系統(tǒng)中,經(jīng)實(shí)際測(cè)試,數(shù)據(jù)傳輸丟包率低,系統(tǒng)運(yùn)行穩(wěn)定、可靠。
本文實(shí)現(xiàn)的UDP/IP協(xié)議??蔀榍度胧綀D像采集傳輸系統(tǒng)提供參考。
參考文獻(xiàn)
[1] 俞鵬煒,任勇,馮鵬,等.基于FPGA的千兆以太網(wǎng)CMOS圖像數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)[J].國(guó)外電子測(cè)量技術(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)相機(jī)的傳輸系統(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è)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),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] 呂星宇.嵌入式計(jì)算機(jī)智能圖像信息處理系統(tǒng)設(shè)計(jì)與實(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è)計(jì)與實(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的信號(hào)處理模塊及其IP核設(shè)計(jì)技術(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è)計(jì)和實(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] 吳瓊,劉建國(guó),黃慶超,等.基于以太網(wǎng)幀結(jié)構(gòu)的AES加解密算法的實(shí)現(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實(shí)現(xiàn)[J].計(jì)算機(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空間域算法的圖像增強(qiáng)技術(shù)的研究與應(yīng)用[J].電子設(shè)計(jì)工程,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.