• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于千兆以太網(wǎng)的高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計

      2014-06-23 06:39:42張金鳳李耀南
      火控雷達技術(shù) 2014年2期
      關(guān)鍵詞:PC機字段計數(shù)器

      張金鳳 李耀南

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

      0 引言

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

      1 UDP協(xié)議

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

      圖1 TCP/IP協(xié)議族

      2 千兆以太網(wǎng)設(shè)計實現(xiàn)

      2.1 千兆以太網(wǎng)系統(tǒng)設(shè)計

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

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

      圖2 系統(tǒng)結(jié)構(gòu)圖

      2.2 以太網(wǎng)控制器接口

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

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

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

      圖4 LocalLink接口發(fā)送時序圖

      2.3 以太網(wǎng)MAC幀格式

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

      圖5 以太網(wǎng)MAC幀格式

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

      2.4 發(fā)送模塊

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

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

      圖6 網(wǎng)絡(luò)數(shù)據(jù)封裝及發(fā)送原理結(jié)構(gòu)圖

      數(shù)據(jù)封裝的具體實現(xiàn)過程如下:

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

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

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

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

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

      2.5 接收模塊

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

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

      3 結(jié)束語

      本文基于千兆以太網(wǎng)實現(xiàn)FPGA和PC機的高速數(shù)據(jù)傳輸。采用UDP、IP協(xié)議的MAC幀格式,通過判斷頭部校驗和和校驗和字段,檢測數(shù)據(jù)在傳輸中是否有錯,提高數(shù)據(jù)傳輸?shù)目煽啃?,而且突發(fā)速率達到1Gbit/s。利用FPGA內(nèi)嵌的MAC核建立千兆以太網(wǎng)系統(tǒng),為高速數(shù)據(jù)傳輸提供了方便的途徑。

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

      [2]謝希仁..計算機網(wǎng)絡(luò)(第5版)[M].北京:電子工業(yè)出版社,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.

      猜你喜歡
      PC機字段計數(shù)器
      圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
      采用虛擬計數(shù)器的電子式膜式燃氣表
      煤氣與熱力(2022年2期)2022-03-09 06:29:30
      基于PC機與單片機的多機通信技術(shù)及抗干擾方法
      基于三菱FXPLC的感應(yīng)淬火機床與PC機的串行通信實現(xiàn)
      VC.NET下實現(xiàn)dsPIC單片機與PC機的通信
      電子制作(2017年23期)2017-02-02 07:16:47
      計數(shù)器競爭冒險及其處理的仿真分析
      CNMARC304字段和314字段責任附注方式解析
      無正題名文獻著錄方法評述
      任意N進制計數(shù)器的設(shè)計方法
      河南科技(2014年10期)2014-02-27 14:09:30
      基于單片機的仰臥起坐計數(shù)器
      延安市| 定襄县| 福安市| 九龙县| 保亭| 和田县| 西林县| 大化| 简阳市| 高唐县| 盐边县| 明溪县| 三明市| 桐城市| 乌拉特后旗| 集贤县| 当涂县| 桐柏县| 太湖县| 镇康县| 招远市| 灵寿县| 资中县| 绍兴市| 云林县| 沐川县| 合川市| 惠东县| 绥棱县| 天台县| 宣威市| 嘉定区| 大新县| 丽江市| 广南县| 汝阳县| 达尔| 沾益县| 科技| 民乐县| 丰城市|