999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于千兆以太網的高速數據傳輸系統設計

2014-06-23 06:39:42張金鳳李耀南
火控雷達技術 2014年2期

張金鳳 李耀南

(西安電子工程研究所 西安 710100)

0 引言

近年來,FPGA在通信領域的應用越來越廣泛,FPGA運行速度快,容易實現大規模系統。隨著電子技術的發展,高速數據傳輸在現代電子系統中起著重要的作用。FPGA與普通計算機主要通過以太網接口、串口等連接。串口傳輸速度慢,難以實現高速數據傳輸,而且由于串口不能進行遠程數據傳輸,因此要求FPGA和PC機必需在同一地點,這就限制了高速數據傳輸系統使用的靈活性及在特殊場合的應用。以太網接口速度高,傳輸距離遠,便于構建FPGA和PC機的高速數據傳輸系統。基于以太網實現FPGA和PC機的高速數據傳輸方法有兩種:一種是利用FPGA內嵌的MAC硬核實現,另一種是利用嵌入到FPGA的單片機實現[1]。后者邏輯控制繁瑣,而且需要額外的資源,給布線帶來很大的難處;前者利用FPGA自帶的資源,使用簡單、方便。FPGA自帶的MAC硬核提供了MAC層與用戶和物理層的接口,用戶只需將需要發送的數據封裝成MAC幀傳輸到MAC層與用戶接口,將接收到的數據解包、錯誤檢驗和存儲便可實現FPGA和PC機的高速數據互傳。

1 UDP協議

UDP和TCP是TCP/IP協議族中傳輸層的兩個主要協議,圖1給出了這兩種協議在TCP/IP協議族中的位置[2]。UDP、TCP主要為應用程序傳來的數據提供傳輸服務。TCP提供面向連接的服務,在傳送數據之前必須先建立連接,數據傳送結束后要釋放連接,它提供可靠的傳輸服務,因此不可避免地增加了許多開銷,這不僅使協議數據單元的首部增大很多,還要占用許多FPGA資源。而UDP是無連接的,在傳送數據之前不需要先建立連接,因此減少了開銷和發送數據之前的時延。UDP對應用程序交下來的報文,在添加首部后就向下交付給IP層,首部只有8個字節,比TCP的20個字節的首部短,因此UDP易于實現,占用資源也比較少。而且UDP沒有擁塞控制,因此網絡出現的擁塞不會使源主機的發送速率降低。所以本系統采用UDP進行數據傳輸。

圖1 TCP/IP協議族

2 千兆以太網設計實現

2.1 千兆以太網系統設計

千兆以太網系統的FPGA設計工作包括以太網MAC層的FPGA設計、MAC層與上層協議的接口設計以及MAC層與物理層(PHY)的接口設計。該以太網控制器的總體結構設計框圖如圖2所示,整個系統包括發送模塊、接收模塊和MAC控制模塊。發送模塊和接收模塊主要提供MAC幀的發送和接收功能,其主要操作有MAC幀的封裝和解包及錯誤檢測,它直接提供了到外部物理層芯片的并行數據接口,這也是本文的重點。MAC控制模塊用于執行全雙工模式中的流量控制功能,由IPcore產生。

本系統基于Xilinx ML605評估板實現,FPGA芯片為XC6VLX240T,它內部集成的以太網MAC核支持MII/GMII、RGMII、SGMII等多種類型接口。以太網 PHY芯片選用 Marvell公司 Alaska系列的88E1111芯片。88E1111是一款支持IEEE802.3u協議規定的自動協商機制的物理層芯片,可以支持MII/GMII、RGMII及 SGMII等多種類型的 PHYMAC接口[3]。本系統MAC層與物理層采用GMII接口。

圖2 系統結構圖

2.2 以太網控制器接口

利用FPGA內嵌的IPCore生成MAC控制器時,Xilinx提供了一個以太網自發自收數據的例子程序,該例子程序是對MAC的最簡最小封裝,但對本系統中使用FPGA進行數據收發非常實用,如圖3所示。它簡化了用戶和MAC數據交互程序的編寫,本系統對該例子程序做了一定修改,只利用LocalLink接口以下的程序。將地址交換模塊替換成數據發送和數據接收模塊,實現對網絡數據的封裝和解包。

圖3 Xilinx Gigabit Ethernet例子程序接口框圖

以太網MAC控制器與用戶邏輯的接口為LocalLink接口,該接口以包為單位進行數據傳送,數據流由sof_n、eof_n、src_rdy_n和 dst_rdy_n四個信號控制,LocalLink接口的數據發送時序如圖4所示。這些控制信號都是低電平有效,當sof_n、src_rdy_n和dst_rdy_n都為低時表示一個網絡數據包傳輸開始;當src_rdy_n和dst_rdy_n都為低時,表示正在進行網絡數據包傳輸;當eof_n、src_rdy_n和dst_rdy_n都為低時,表示一個網絡數據包傳輸結束[4]。

圖4 LocalLink接口發送時序圖

2.3 以太網MAC幀格式

標準的以太網幀結構由五部分組成,如圖5所示。前兩個字段分別是6個字節長的目的地址和源地址字段。第三個字段是2字節的類型字段,用來標志上一層使用的是什么協議,以便把收到的MAC幀的數據上交給上一層的這個協議。第四個字段是數據字段,其長度在46到1500字節之間。最后一個字段是4字節的幀檢驗序列FCS[2]。

圖5 以太網MAC幀格式

本系統網絡層使用IP,傳輸層使用UDP。發送方的UDP對應用程序交下來的報文,在添加首部后就向下交付給IP層,IP層數據添加IP首部后傳送到MAC層,在MAC層將數據組成MAC幀格式。從MAC子層向下傳到物理層時還要在幀的前面插入8字節(由硬件生成),它由兩個字段組成,第一個字段是7個字節的前同步碼(0x55),它的作用是使物理層做好發送接受準備,第二個字段是幀開始定界符(0xD5),它是幀開始的標志。

2.4 發送模塊

發送模塊是將用戶提供的數據封裝之后發送到以太網MAC層,實現數據從FPGA到PC機的傳輸。數據封裝主要是基于UDP將數據封裝成圖5所示的MAC幀格式,即在數據前添加UDP、IP以及MAC幀頭。

發送模塊與用戶邏輯之間的接口通過一個異步FIFO連接,將用戶要發送的數據先存入FIFO中,FIFO深度可以根據發送數據包長度自行決定,但是FIFO寬度為32bit,這是為了后續封裝方便,根據FIFO的空滿信號控制FIFO寫數據和封裝開始信號。圖6為模塊的具體實現過程。

圖6 網絡數據封裝及發送原理結構圖

數據封裝的具體實現過程如下:

整個過程由狀態機控制,該狀態機包括三個狀態:TX_IDLE(初始狀態)、TX_UDP_HEAD(幀頭封裝狀態)、TX_UDP_READ(數據封裝狀態)。

a.上層協議接到封裝開始信號時,控制狀態機進入TX_UDP_HEAD狀態,幀頭計數器累加。標識字段在系統中是一個計數器,每產生一個數據報,計數器就加1,計數器為0時執行此操作。計數器為3時開始計算頭部校驗和,頭部校驗和字段只檢驗IP數據報的首部。先把IP數據報首部劃分為許多16bit的序列,并把校驗和字段置零。用反碼算術運算把所有16bit相加,總共需要6個時鐘周期,將最終得到的和的反碼寫入校驗和字段。計數器為4時,開始對IP數據首部協議字段之前的字段封裝,總共需要6個時鐘周期。

b.幀頭計數器為9時,進入TX_UDP_READ狀態,此時數據計數器累加。計數器為0時開始IP首部的其他字段以及UDP首部和發送數據部分封裝,將IP首部的剩余字段和UDP首部字段完全封裝一共需要5個時鐘周期。數據封裝過程中關鍵部分是UDP校驗和計算,因為UDP校驗和是把UDP偽首部、UDP首部以及發送數據一起檢驗,所以UDP校驗和的計算是在發送狀態機將數據從FIFO讀出的過程中同時進行。計數器為2時開始從FIFO讀取數據,計數器為3時開始計算數據校驗和,首先置UDP校驗和初始值為0x0000,并添加到UDP校驗和字段,其計算方法與IP首部校驗和方法相同。計數器為4時,開始數據封裝。計數器值等于數據長度加4時,從FIFO讀出的數據封裝結束。計數器值等于數據長度加7時,校驗和計算完成,此時進入TX_IDLE狀態。

c.整個系統采用流水線操作,將封裝數據和校驗和分別存入FIFO中,利用FIFO的寫計數器計數,當計數器長度為發送數據長度時,開始從FIFO中將數據讀出,寫入FIFO的校驗和在寫入的下一個周期立即讀出,當校驗和使能有效時,將計算所得的校驗和重新寫入MAC幀的UDP校驗和字段。最后所得MAC幀數據再經過一個FIFO,根據以太網速度要求,控制讀出數據寬度,以千兆以太網為例,讀數寬度為8bit。

d.因為數據以32bit進行封裝,MAC首部、IP數據報首部和UDP數據報首部總長度為42個字節,即十個32 bit和一個16bit,不是32bit的整數倍,所以在數據包末尾多加了16bit的零數據,雖然不影響UDP校驗和計算,但它改變了數據長度,所以發送之前必須把末尾多加的數據截掉。從FIFO讀出數據時,根據數據有效信號按照圖4所示的網絡數據發送時上層協議與以太網MAC層接口時序的要求產生 tx_ll_src_rdy_n、tx_ll_eof_n、tx_ll_sof_n 等控制信號就可以實現對網絡數據包的傳輸控制。發送到PC機的數據包,既可以通過WireShark抓包軟件抓包,也可以通過網絡調試助手將收到數據直接存儲起來,用于后續處理。

2.5 接收模塊

對于FPGA收到的數據,在接收模塊內完成MAC幀的解包和存儲。接收模塊相對于發送模塊而言邏輯設計簡單。接收模塊收到的數據通過判斷首部校驗和、校驗和、目的MAC地址和協議類型字段判斷收到的數據是不是要發給本FPGA的,或發送的數據是否正確。

根據rx_ll_src_rdy_n、rx_ll_sof_n控制信號判斷數據起始位置,此時計數器累加,將數據的前6個字節鎖存起來,拼接成一個48bit的數據與本FPGA的MAC進行比較。如果不是發給本FPGA的,直接將該包丟掉,不再進行后續處理,否則,當計數器為13時,按照發送模塊中計算首部校驗和的方法計算收到數據的首部校驗和。計數器計到23時,將該字節數據鎖存,判斷是否為UDP協議。計數器為25時,開始計算校驗和,計數器為34時,頭部校驗和計算結束,計數器為41時,開始將數據存到FIFO中以便后續使用。當rx_ll_eof_n信號抬高時,計數器停止計數,數據存儲結束,下一個時鐘周期校驗和計算結束。如果判斷結果正確,且計算所得的校驗和都為0XFFFF,將收到的數據用于后續處理,否則FIFO復位將該包數據丟掉。

3 結束語

本文基于千兆以太網實現FPGA和PC機的高速數據傳輸。采用UDP、IP協議的MAC幀格式,通過判斷頭部校驗和和校驗和字段,檢測數據在傳輸中是否有錯,提高數據傳輸的可靠性,而且突發速率達到1Gbit/s。利用FPGA內嵌的MAC核建立千兆以太網系統,為高速數據傳輸提供了方便的途徑。

[1]羅侄敬.在嵌入FPGA的IP核8051上實現TCP/IP的設計[J].電子元器件應用,2007,(4):44-50.

[2]謝希仁..計算機網絡(第5版)[M].北京:電子工業出版社,2010.

[3] MARVELL corp.88E1111 datasheet[CP].2004.

[4]Virtex-6 FPGA Embedded Tri-Mode Ethernet MAC user guide[M].XILINX.UG368(v1.2)[CP].January 17,2010.

主站蜘蛛池模板: 毛片免费试看| 免费精品一区二区h| 欧美中文字幕在线播放| 99在线视频网站| 中文字幕2区| 香蕉在线视频网站| 亚洲男人天堂久久| 99热这里只有成人精品国产| 美女裸体18禁网站| 久久综合九九亚洲一区 | 国产永久在线视频| 免费又黄又爽又猛大片午夜| 一本色道久久88| 亚洲an第二区国产精品| 内射人妻无套中出无码| 中文毛片无遮挡播放免费| 色屁屁一区二区三区视频国产| 草草线在成年免费视频2| 日韩国产综合精选| 黄片一区二区三区| 香蕉国产精品视频| 亚洲91在线精品| 又黄又湿又爽的视频| 国产美女91视频| 91福利免费视频| 少妇精品久久久一区二区三区| 亚洲精品国产综合99| 色妺妺在线视频喷水| 国产农村妇女精品一二区| 国产精品林美惠子在线播放| 69av免费视频| 98精品全国免费观看视频| 欧美日韩另类在线| 无码'专区第一页| 高清免费毛片| 婷婷综合在线观看丁香| 色综合国产| 色综合a怡红院怡红院首页| 91精品视频在线播放| 热久久综合这里只有精品电影| 色网站免费在线观看| 99久久成人国产精品免费| 老司机午夜精品视频你懂的| 精品欧美一区二区三区久久久| 国产裸舞福利在线视频合集| 亚洲国产成人久久77| 成人伊人色一区二区三区| 97视频精品全国在线观看| 国产成人禁片在线观看| 女人av社区男人的天堂| 午夜福利无码一区二区| 毛片在线看网站| 亚洲日本www| 欧美va亚洲va香蕉在线| 久久人妻xunleige无码| a网站在线观看| 亚洲一区二区成人| 亚洲国产综合精品一区| 亚洲国产成人超福利久久精品| 日韩无码黄色| 精品一区二区三区波多野结衣| 中文字幕亚洲乱码熟女1区2区| 亚洲中文字幕无码爆乳| 91在线精品麻豆欧美在线| 国产麻豆永久视频| 国产免费羞羞视频| 日a本亚洲中文在线观看| 精品综合久久久久久97超人该| 欧美无专区| 国产成人欧美| 国产传媒一区二区三区四区五区| 夜夜操国产| 999在线免费视频| 国产亚洲视频免费播放| 亚洲天堂网站在线| 精品国产免费观看一区| 国产成人无码Av在线播放无广告| 久久无码高潮喷水| 免费aa毛片| 欧美另类第一页| 成人在线视频一区| P尤物久久99国产综合精品|