袁文燕,鄭 玥,宋宇飛,王 凱,田進(jìn)進(jìn),張俊杰
(上海大學(xué)通信與信息工程學(xué)院,上海 200072)
FPGA片間萬(wàn)兆可靠通信的設(shè)計(jì)與實(shí)現(xiàn)
袁文燕,鄭 玥,宋宇飛,王 凱,田進(jìn)進(jìn),張俊杰
(上海大學(xué)通信與信息工程學(xué)院,上海 200072)
隨著云計(jì)算技術(shù)的發(fā)展,采用FPGA作為協(xié)同加速成為其發(fā)展的一個(gè)趨勢(shì),如何設(shè)計(jì)與實(shí)現(xiàn)FPGA片間的高速通信是該研究方向的一個(gè)熱點(diǎn)。研究了FPGA萬(wàn)兆通信的物理層、MAC層的實(shí)現(xiàn)機(jī)制,在通信協(xié)議可靠傳輸方面實(shí)現(xiàn)了MAC層的流控以及錯(cuò)誤包檢測(cè)功能。仿真以及實(shí)際平臺(tái)測(cè)試表明,該通信協(xié)議能夠?qū)崿F(xiàn)FPGA片間萬(wàn)兆的線速通信。
云計(jì)算;FPGA;10 G MAC層;流控
云計(jì)算服務(wù)目前在互聯(lián)網(wǎng)上急速增長(zhǎng),其通過(guò)互聯(lián)網(wǎng)來(lái)提供動(dòng)態(tài)易擴(kuò)展的資源。隨著云計(jì)算的發(fā)展,對(duì)以太網(wǎng)的數(shù)據(jù)通信以及高性能計(jì)算也提出了更高的要求[1],而基于大規(guī)模的FPGA協(xié)同加速成為云計(jì)算服務(wù)的一種發(fā)展趨勢(shì)[2-3]。因此如何設(shè)計(jì)與實(shí)現(xiàn)多片F(xiàn)PGA之間的可靠通信成為云計(jì)算研究的一個(gè)熱點(diǎn)。文獻(xiàn)[4-5]對(duì)物理層和MAC層的接口進(jìn)行了設(shè)計(jì),實(shí)現(xiàn)了吞吐率達(dá)Gbit/s級(jí)的通信速率。文獻(xiàn)[6-7]設(shè)計(jì)了千兆以太網(wǎng)全雙工模式下的物理通信,包括Pause幀的收發(fā),還實(shí)現(xiàn)了數(shù)據(jù)包的校驗(yàn)出錯(cuò)重傳機(jī)制,但限于上層應(yīng)用,對(duì)Pause幀的實(shí)現(xiàn)機(jī)制沒(méi)有具體闡述。
文獻(xiàn)[8-9]基于Xilinx公司FPGA平臺(tái),在分析如何實(shí)現(xiàn)萬(wàn)兆以太網(wǎng)的CRC32糾錯(cuò)以及接收控制策略、CRC編碼/校驗(yàn)及與千兆以太網(wǎng)兼容等關(guān)鍵問(wèn)題的基礎(chǔ)上,實(shí)現(xiàn)了萬(wàn)兆以太網(wǎng)MAC層控制但缺乏具體的實(shí)現(xiàn)方案。文獻(xiàn)[10]采用自定義的的10 G MAC,設(shè)計(jì)與實(shí)現(xiàn)了以太包的調(diào)度策略。
上述研究沒(méi)有涉及萬(wàn)兆MAC層的流控以及可靠傳輸?;诖吮疚奶岢鲆环N通過(guò)利用Xilinx FPGA集成的萬(wàn)兆MAC IP核以及XAUI IP核實(shí)現(xiàn)FPGA片間可靠通信的方法。
本文提出的互聯(lián)系統(tǒng)結(jié)構(gòu)如圖1所示,系統(tǒng)由4片Xilinx公司的Virtex6系列的FPGA xc6vlx550t-2ff1759構(gòu)成。每2片F(xiàn)PGA之間都有4路高速雙向傳輸通道,每路運(yùn)行速度均為3.125 Gbit/s,對(duì)外都有1路10 G/20 G的QSFP光通信接口,線路采用8B/10B編碼,因此FPGA之間的互聯(lián)通信速率為10 Gbit/s??梢酝ㄟ^(guò)該硬件實(shí)現(xiàn)多級(jí)FPGA的級(jí)聯(lián)通信。
圖1 互聯(lián)系統(tǒng)結(jié)構(gòu)
為了支持FPGA之間的萬(wàn)兆通信,物理層采用Xilinx公司提供的XAUI IP,MAC層采用Xilinx公司的萬(wàn)兆以太MAC IP實(shí)現(xiàn)傳輸協(xié)議的CRC32校驗(yàn)碼的填充與檢測(cè),如圖2所示。在MAC層之上增加了MAC控制模塊,該模塊通過(guò)FIFO接口簡(jiǎn)化了應(yīng)用層的設(shè)計(jì),并采用流量控制以及錯(cuò)誤檢測(cè)功能實(shí)現(xiàn)數(shù)據(jù)的10 G線速可靠傳輸。
圖2 高速互聯(lián)接口結(jié)構(gòu)圖
XAUI IP核配合Xilinx的Rocket IO GTX實(shí)現(xiàn)XGMII總線與10 G物理通道的轉(zhuǎn)換[11]。GTX收發(fā)器實(shí)現(xiàn)高速串行收發(fā)器的數(shù)據(jù)緩沖、通道綁定、接收端時(shí)鐘恢復(fù)以及發(fā)送預(yù)加重等功能[12]。XAUI IP核的XGMII總線包括32位的雙速率和64位的單速率接口,由于本文的XGMII總線在FPGA內(nèi)部,因此采用單速率的XGMII總線接口,系統(tǒng)工作時(shí)鐘頻率為156.25 MHz。
萬(wàn)兆MAC核是一個(gè)單速,全雙工10 Gbit/s的以太網(wǎng)媒體控制器,實(shí)現(xiàn)IEEE802.3ae萬(wàn)兆以太網(wǎng)數(shù)據(jù)的前導(dǎo)碼過(guò)濾與增加、數(shù)據(jù)4 byte CRC32校驗(yàn)碼的填充與驗(yàn)證。支持的以太數(shù)據(jù)幀長(zhǎng)最小為64 byte,最大為1 518 byte(可以支持Jumbo frame)。其內(nèi)部結(jié)構(gòu)包括發(fā)送、接收引擎,流量控制模塊,管理接口和XGMII接口,通過(guò)XGMII接口能夠很方便地連接到XAUI IP核[13]。
發(fā)送端在傳輸數(shù)據(jù)之前,MAC層會(huì)先發(fā)送7 byte的同步碼和1 byte的幀首定界符,并在1幀傳送結(jié)束時(shí)填充4 byte的CRC32校驗(yàn)碼,如果數(shù)據(jù)長(zhǎng)度小于46 byte,則會(huì)自動(dòng)在數(shù)據(jù)字段填充PAD字符,即補(bǔ)0。在接收端,MAC層去掉前導(dǎo)碼和幀首定界符,并對(duì)幀進(jìn)行CRC32校驗(yàn)。如果校驗(yàn)正確則向上層發(fā)送收到正確幀(rx_good_frame)信號(hào),否則發(fā)送收到錯(cuò)誤幀(rx_bad_frame)信號(hào)。MAC層還具有流控的功能,實(shí)現(xiàn)收發(fā)雙方的通信速率匹配。
Xilinx提供的萬(wàn)兆MAC控制器對(duì)接收到的錯(cuò)誤數(shù)據(jù)并不進(jìn)行處理,僅僅給出數(shù)據(jù)CRC32校驗(yàn)是否正確。為了提供物理層的可靠傳輸,需要在此基礎(chǔ)上增加接收錯(cuò)誤幀過(guò)濾模塊,如果接收到的是校驗(yàn)錯(cuò)誤幀,則需過(guò)濾掉該幀。本文采用基于雙端口數(shù)據(jù)RAM以及幀信息FIFO的存儲(chǔ)機(jī)制實(shí)現(xiàn)錯(cuò)誤包的過(guò)濾,如圖3所示。接收存儲(chǔ)控制模塊若檢測(cè)到萬(wàn)兆MAC IP接收端口收到的數(shù)據(jù)rx_valid(rx_data_valid_o!=8’h0)有效,則把該數(shù)據(jù)緩存到雙口數(shù)據(jù)RAM中去。然后檢測(cè)rx_valid是否小于8個(gè)時(shí)鐘節(jié)拍,如果小于8個(gè)時(shí)鐘節(jié)拍,則不用判斷rx_good_frame以及rx_bad_frame,因?yàn)榇藭r(shí)接收到的幀肯定錯(cuò)誤(小于萬(wàn)兆以太協(xié)議的最小64 byte),回到IDLE狀態(tài)。如果rx_valid持續(xù)有效時(shí)鐘大于8個(gè)時(shí)鐘節(jié)拍,則在幀尾檢測(cè)是否有rx_good_frame或者rx_bad_frame;如果是bad幀,不作處理回到IDLE狀態(tài),如果是good幀,則將該幀存放RAM的起始地址和幀長(zhǎng)信息寫(xiě)入幀信息FIFO,并返回IDLE狀態(tài)。如果在幀尾沒(méi)有檢測(cè)到good或者bad信息,則等待;若等到good信息則把該幀長(zhǎng)以及起始地址寫(xiě)入幀信息FIFO,并返回IDLE狀態(tài),若等到bad信息則直接回到IDLE狀態(tài),其狀態(tài)機(jī)如圖4所示。
圖3 接收錯(cuò)誤幀過(guò)濾圖
圖4 過(guò)濾模塊狀態(tài)機(jī)
讀取控制模塊若檢測(cè)到幀信息FIFO有數(shù)據(jù),則表示雙口數(shù)據(jù)RAM中已經(jīng)存儲(chǔ)了正確的以太幀,從幀信息FIFO中獲取接收到幀的地址與長(zhǎng)度,并把接收到的數(shù)據(jù)存儲(chǔ)到用戶控制端口的接收FIFO中。由于采用存儲(chǔ)校驗(yàn)機(jī)制,因此接收端相對(duì)發(fā)送端有一定的延遲,最大延遲為最長(zhǎng)以太幀的存儲(chǔ)時(shí)間。
圖5 Pause幀傳輸鏈路延時(shí)
為了解決發(fā)送FPGA與接收FPGA通信速率的不匹配,需要在MAC層增加流控功能,即當(dāng)接收FIFO裕量小于預(yù)設(shè)的安全值,向發(fā)送方發(fā)送暫停(Pause)幀,告知發(fā)送方停止發(fā)送數(shù)據(jù)一段時(shí)間。發(fā)送方接收到暫停幀以后,停止數(shù)據(jù)的發(fā)送,若暫停期間沒(méi)有接收到新的Pause幀,則繼續(xù)本次數(shù)據(jù)通信,若暫停期間接收到新的暫停幀,則從當(dāng)前時(shí)刻增加新的暫停時(shí)間。Xilinx的萬(wàn)兆MAC提供了流控功能,如圖2所示。當(dāng)萬(wàn)兆MAC IP核檢測(cè)到暫停請(qǐng)求(Pause_req)為1時(shí),等待當(dāng)前發(fā)送的以太幀傳輸完畢,然后把暫停時(shí)間Pause_val(16位寬)值封裝成標(biāo)準(zhǔn)IEEE802.3av Pause幀,并通過(guò)XAUI IP核把Pause幀發(fā)送出去。暫停時(shí)間為Pause_val×51.2 ns,最長(zhǎng)為3.35 ms。根據(jù)本文的實(shí)現(xiàn)方案,從 Pause幀發(fā)出到接收方收到該幀并對(duì)其響應(yīng),需要經(jīng)歷多級(jí)鏈路延時(shí),如圖5所示。其中當(dāng)前幀發(fā)送等待時(shí)間表示當(dāng)系統(tǒng)產(chǎn)生Pause_req時(shí),如果萬(wàn)兆MAC當(dāng)前正在發(fā)送以太幀,則需要等待該幀發(fā)送完畢的時(shí)間,因此Tsnd_current_delay等于最大以太幀長(zhǎng)傳輸?shù)臅r(shí)間也即 1.2 μs。Tsnd_create_pau,Tsnd_xaui,Trcv_xaui與萬(wàn)兆MAC IP以及XAUI IP核的特性相關(guān),其中Tsnd_create_pau表示從萬(wàn)兆MAC接收到Pause_req有效到把Pause幀傳輸?shù)絏AUI IP核的延遲時(shí)間,Tsnd_xaui與Trcv_xaui表示從XGMII總線到高速串行鏈路之間的延時(shí),Trcv_pau表示萬(wàn)兆MAC接收到Pause幀到內(nèi)部邏輯處理該幀的時(shí)間。Tsnd_create_pau,Tsnd_xaui與Trcv_xaui以及Trcv_pau通過(guò)萬(wàn)兆MAC以及XAUI IP的仿真即可得到。圖6是萬(wàn)兆以太網(wǎng)點(diǎn)對(duì)點(diǎn)的Modelsim仿真,從該圖可以看出Tsnd_create_pau的延時(shí)為19 個(gè)時(shí)鐘節(jié)拍,即0.12 μs,Tsnd_xaui與Trcv_xaui延時(shí)為27個(gè)時(shí)鐘也即0.17 μs,Trcv_pau的延時(shí)為14個(gè)時(shí)鐘節(jié)拍也即0.09 μs。接收響應(yīng)延時(shí)Trcv_paus_res為當(dāng)萬(wàn)兆MAC IP核接收到Pause幀以后,需要等待當(dāng)前以太幀發(fā)送完畢的延時(shí),因此Trcv_paus_res為以太幀最長(zhǎng)幀傳輸?shù)臅r(shí)間即1.2 μs。
圖6 Pause幀從發(fā)送到接收延遲仿真(截圖)
因此Pause幀從發(fā)送到接收響應(yīng)的Tpause_response延時(shí)為通道延時(shí)Tchannel+2.8 μs。在本文的硬件平臺(tái)中,F(xiàn)PGA之間的物理通道為直接連接,因此Tchannel為0。在Tpause_response期間,數(shù)據(jù)發(fā)送端仍有可能在10 G線速發(fā)送數(shù)據(jù),因此若要保證接收FIFO緩沖區(qū)不溢出,接收FIFO必須在裕量大于Tpause_response×8/6.4=3 500 byte的時(shí)候發(fā)送Pause幀。故接收緩沖區(qū)FIFO的深度必須大于512(寬度為8 byte)。
圖7 流量控制測(cè)試(截圖)
在Xilinx公司的ISE開(kāi)發(fā)環(huán)境中進(jìn)行代碼綜合、映射及布局布線,綜合結(jié)果測(cè)試表明,本設(shè)計(jì)的工作頻率可以達(dá)到156.25 MHz。通過(guò)快寫(xiě)慢讀操作來(lái)驗(yàn)證流控模塊,如圖7所示。最終實(shí)驗(yàn)結(jié)果表明能正常過(guò)濾錯(cuò)誤以太包,并確保通信速率達(dá)到了10 Gbit/s。用復(fù)位來(lái)模擬掉電操作,最終測(cè)試結(jié)果表明該系統(tǒng)在正常傳輸過(guò)程中若發(fā)送端或接收端突然掉電,上電后雙方仍能重新正常通信。
本文實(shí)現(xiàn)了萬(wàn)兆MAC層發(fā)送、接收、流控以及錯(cuò)誤幀過(guò)濾的設(shè)計(jì)。并且使用Xilinx的Virtex-6系列FPGA器件進(jìn)行布局布線后進(jìn)行板級(jí)測(cè)試驗(yàn)證。結(jié)果表明,系統(tǒng)可以在156.25 MHz時(shí)鐘頻率正常工作,接收和發(fā)送帶寬均可接近10 Gbit/s。但隨著社會(huì)的發(fā)展,人們對(duì)通信速率的要求越來(lái)越高,在不久的將來(lái),10 Gbit/s的通信速率將不能滿足人們的需求,所以對(duì)高速互聯(lián)的研究將永無(wú)止境,下一步可以提高互聯(lián)通信速率,進(jìn)一步研究20 Gbit/s、40 Gbit/s或更高速率的互聯(lián)結(jié)構(gòu)。
:
[1]王文彬,肖玉杰,龍明.基于云移動(dòng)技術(shù)的應(yīng)急視頻指揮系統(tǒng)[J].電視技術(shù),2013,37(1):161-164.
[2]YU J B,ZHU Y X,XIA L,et al.Grounding high efficiency cloud computing architecture:HW-SW co-design and implementation of a standalone web server on FPGA[C]//Proc.Applications of Digital Information and Web Technologies(ICADIWT).[S.l.]:IEEE Press,2011:124-129.
[3]NIVEDITA N,DAKHOLE P K,ZODE P P.Embedded web server on Nios II embedded FPGA platform[C]//Proc.Second International Conference on Emerging Trends in Engineering and Technology.[S.l.]:IEEE Press,2009:372-377.
[4]ZHANG Q ,KANG G X.MAC-PHY interface design and implementation based on PLB for Gbps transmission system[C]//Proc.The 8th Annual IEEE Consumer Communications and Networking Conference-Wireless Consumer Communication and Networking,Conference Publication.[S.l.]:IEEE Press,2011:674-678.
[5]WANG Guixin,KANG Guixia,WANG Hao.Design and FPGA implementation of MAC-PHY interface based on PCI express for next-generation WLANs[C]//Proc.8th International Conference on Wireless Communications,Networking and Mobile Computing(WiCOM).[S.l.]:IEEE Press,2012:1-4.
[6]丁世勇,譚文文,李桂英.基于FPGA的以太網(wǎng)MAC控制器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2011,19(21):163-165.
[7]張克功,李和平,高鑫.基于千兆以太網(wǎng)的雷達(dá)數(shù)據(jù)可靠傳輸系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀表,2012(6):26-31.
[8]曹政,李磊,陳明宇.萬(wàn)兆以太網(wǎng)MAC層控制器設(shè)計(jì)與實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2007,28(6):974-978.
[9]張友亮,劉志軍,馬成海,等.萬(wàn)兆以太網(wǎng)MAC層控制器的FPGA設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(6):77-79.
[10]ARENAS R A,F(xiàn)INOCHIETTO J M,ROCHA L M.Design and implementation of packet switching capabilities on 10GbE MAC core[C]//Proc.Programmable Logic Conference(SPL).[S.l.]:IEEE Press,2010:141-146.
[11]馬騰飛,吳志勇,李增.基于XAUI協(xié)議的10Gb/s光纖通信系統(tǒng)[J].計(jì)算機(jī)工程,2010,36(17):264-265.
[12]LogicCORE IP 10-Gigabit Ethernet MAC v10.2 User Guide[EB/OL].[2013-05-10].http://www.xilinx.com.
[13]韓盛杰,張俊杰,林如儉.10G EPON的ONU硬件設(shè)計(jì)與實(shí)現(xiàn)[J].光通信技術(shù),2009(5):5-7.
Design and Implementation of 10-Gbit/s Reliable Intra-FPGA Communication
YUAN Wenyan,ZHENG Yue ,SONG Yufei,WANG Kai,TIAN Jinjin,ZHANG Junjie
(School of Communication and Information Engineering,Shanghai University,Shanghai 200072)
FPGA have already been successfully employed since the rapid growth of cloud computing,so that many researches focus on the reliable intra-FPGA communication .This paper adopts the bad frame filter technique and flow control technique to realize the reliable multi-FPGA communication after introducing the PHY and MAC layer design of 10 G Ethernet.The simulation and experimental results show that communication speed can reach 10 Gbit/s.
cloud computing;FPGA;10 G MAC;flow control
TN919.3
A
【本文獻(xiàn)信息】袁文燕,鄭玥,宋宇飛,等.FPGA片間萬(wàn)兆可靠通信的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2014,38(1).
國(guó)家高技術(shù)研究發(fā)展計(jì)劃863項(xiàng)目(2009AA012201)
袁文燕(1981— ),女,碩士,教師,主研數(shù)據(jù)高速傳輸。
責(zé)任編輯:魏雨博
2013-05-11