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

基于MicroBlaze的可靠網絡接口設計

2016-11-21 09:47:44侯鴻杰王竹剛
電子設計工程 2016年21期
關鍵詞:嵌入式

侯鴻杰,王竹剛

(1.中國科學院 國家空間科學中心,北京 100190;2.中國科學院大學 北京100190)

基于MicroBlaze的可靠網絡接口設計

侯鴻杰1,2,王竹剛1

(1.中國科學院 國家空間科學中心,北京 100190;2.中國科學院大學 北京100190)

Microblaze是Xilinx公司設計一種軟核SOPC,它是FPGA芯片內部邏輯組成的一種32位軟核嵌入式處理器。為了實現(xiàn)數據從FPGA到計算機的高速傳遞,本文介紹了一種基于uIP及LwIP的網絡協(xié)議棧,提出了一種可靠UDP(reliable UDP,RLUDP)協(xié)議,并完成了嵌入式TCP/IP協(xié)議棧設計與實現(xiàn),實現(xiàn)了PC與MicroBlaze的高速數據傳輸,并對其性能進行了簡單的測試,最終達到了設計要求。

MicroBlaze;SOPC;可靠UDP;嵌入式TCP/IP

現(xiàn)場可編程門陣列(FPGA)廣泛應用于數傳,遙測,調制解調等領域。隨著我國測控通信技術的極速發(fā)展,對通信基帶數據發(fā)射和接收的速度及實時性要求日漸提高。針對FPGA與計算機等信源信宿的高速數傳需求,需要有一種基于現(xiàn)有通信協(xié)議的解決方案。網絡方式可以滿足長距離(100 m及以上級別)的高速數傳需求。近年來SOPC技術得到了迅速的發(fā)展,基于FPGA的SOPC系統(tǒng)結合FPGA及微處理器的優(yōu)點在點對點數傳方面的得到了廣泛應用。文獻[1]描述了一種基于MicroBlaze的嵌入式協(xié)議棧移植,并搭建了簡單LED外設進行驗證。文獻[2]提出了基于FPGA的Micro Blaze+DM9000網卡以太網接口方案,并實現(xiàn)了TCP,UDP通信。基于以上需求及成功的應用案例本文采用了Xilinx的FPGA,并使用其嵌入式軟核處理器MicroBlaze,采用嵌入式TCP/IP協(xié)議棧的方法實現(xiàn)了高速數傳。

1 系統(tǒng)總體設計

系統(tǒng)總體硬件框圖如圖1所示,系統(tǒng)分為兩部分,分別PC上位機和FPGA,F(xiàn)PGA端包括MicroBlaze處理器系統(tǒng)[3-5],調制解調軟核,PC端主要為上位機。數據調制解調模塊主要完成通信物理層相關的數字信號處理工作,MicroBlaze是本系統(tǒng)的核心,在其上運行嵌入式TCP/IP協(xié)議棧,其他模塊包括基于DMA[6]的千兆網卡MAC IP核[7],LED外設[8]等。PC上位機是協(xié)議棧的客戶端點,完成數據收發(fā)請求,寄存器配置,連接建立保持等功能。FPGA采用了Xilinx的7系列芯片,由于調制解調數據有高速傳輸需求,因此采用的是千兆網卡的MAC IP核。

圖1 系統(tǒng)總體結構圖

本系統(tǒng)的數傳端點分別為FPGA和PC,對于FPGA協(xié)議棧選擇了在MicroBlaze中實現(xiàn),總體的協(xié)議棧參考模型如圖2所示,F(xiàn)PGA網絡接口層使用的是Xilinx的千兆以太網IP核,其余各層則在MicroBlaze中實現(xiàn)。PC端采用Windows操作系統(tǒng),使用MFC界面[9],用戶代碼主要完成傳輸層以上的處理。

圖2 系統(tǒng)協(xié)議棧模型

2 可靠UDP協(xié)議設計

UDP協(xié)議是一種面向無連接的協(xié)議[10],它不提供可靠性,如果數據包發(fā)生丟失UDP也不提供丟失信息。然而由于沒有確認信息,差錯信息的額外開銷,UDP相比于TCP具有了高速的特點。由于點對點的近距離網絡通信環(huán)境誤碼率較低,并且由于網卡內部緩沖區(qū)有限,可能存在丟包的現(xiàn)象,因此設計一種通過重傳來保證可靠性的UDP成為了最佳選擇。SOPC作為嵌入式系統(tǒng)內存資源有限,在高速通信時可能存在緩存區(qū)溢出的情況,因此需要對UDP數據包的發(fā)送速率進行控制,本文設計的可靠UDP協(xié)議主要包括了兩部分:超時重傳,流量控制。在標準的TCP/IP的協(xié)議棧基礎上加入超時重傳,流量控制功能,RLUDP的首部設計如圖3所示。

圖3 可靠UDP首部

其各字段為:

GROUP ID(組標示號):一次傳輸單元(組)的唯一標示,即同一組的數據包GROUP ID字段相同,GROUP ID的長度為16位。

SEQ(包序列號):一個傳輸組中的單個數據包的序列號,長度為8位,功能為標示其在一個數據組的前后順序,一組中第一個數據包的SEQ為0。

FLAG(標志):8位,各個位有不同的功能,DEF位表示一個組的最后一個包,ACK位代表確認包,F(xiàn)CF位代表流量控制標志,其余5位保留。

GROUP LENGTH/ACKERR H16:GROUP LENGTH表示一個組攜帶的數據總長度(不包括首部),以字節(jié)為單位,該字段長度為16位。ACKERR H16表示該字段對應位置在數據確認包首部中表示數據丟失掩碼的高16位。

PACKET LENGTH/ACKERR L16:PACKET LENGTH表示本數據包所攜帶的數據長度,以字節(jié)為單位,長度為16位,該字段大小不超過網絡的MTU與協(xié)議首部的長度差。ACKERR L16表示該字段對應位置在數據確認包中標示數據丟失掩碼的低16位。

CHANNEL(通道號):RLUDP通道號,長度為8位,通道號與應用層傳輸需求對應。

OPTION(選項):8位,保留。

ACKERR中各個二進制位對應一組中數據包的SEQ序列號,序列號為n的數據包對應ACKERR的第n位二進制位。本協(xié)議一組最大包個數為32個。

RLUDP使用通道(channel)的方式來滿足應用層的不同傳輸要求,即調制數據的發(fā)送功能占用一個通道,調制數據的接收功能占用一個通道,寄存器讀寫占用一個通道,通過該方式可實現(xiàn)RLUDP層的復用,各通道之間相互獨立,其功能與傳輸層的端口功能類似,在所有的通道中0號通道為特殊通道,用于維護PC與FPGA端的連接信息。針對點對點簡單通信環(huán)境,RLUDP并未使用類似于TCP的3次握手過程。當PC端啟動時,PC向FPGA發(fā)送連接詢問包,其首部中SEQ字段為0xFF,CHANNEL字段為0,其余字段也均為0。該通道用于探測FPGA端的協(xié)議棧是否處于活動狀態(tài),連接詢問包始終由PC發(fā)送,在空閑時段,每隔一定時間就發(fā)送該詢問包,F(xiàn)PGA返回的響應包僅僅將對應詢問包中的ACK置位。若PC收到響應包,則表示連接存在,若約定時間內未收到響應包,則表示FPGA端未處于活動狀態(tài),PC端上位機釋放所有通道的緩存數據,禁止所有數據的傳輸功能。此時,由用戶決定是否重連FPGA。

數據收發(fā)過程:發(fā)送端一次發(fā)送一組數據包 (n個包,ACK為0),等待ACK包(flag字段中ACK置1的包)。接收端在接收到一個包后檢查GROUP ID是否和之前的相同,若相同丟棄該包,若不相同則啟動定時器,如圖4(a)所示,若在規(guī)定時間段內收到完整一組包,則向發(fā)送端發(fā)送ACK包,ACK ERR字段為全零,圖 4(b)中規(guī)定時間內未收到完整一組包返回ACK包并在ACKERR中指明丟失包的序號。由于SEQ指明了數據包在一組的序號,所以即使發(fā)生亂序也能將順序糾正,n值的選取直接影響了發(fā)送的速率,n值越大,應答的效率越高,等價傳輸的速率就越快,然而對于FPGA而言卻需要更大的緩沖區(qū)。

如圖 4(c)所示,若在接收完一組包后緩沖區(qū)大小小于設定值,則將返回的ACK包flag標志中FCF置位,PC端對應通道停止發(fā)送數據包,處于等待狀態(tài)。直到FPGA緩沖區(qū)大小大于設定值后發(fā)送該組ACK包,F(xiàn)CF復位。

3 上位機程序設計

在PC端,通道號與應用層數據傳輸功能進行了綁定,每個數據傳輸功能均由一個線程來完成。應用層數據傳輸需求包括3個線程,數據下行線程,數據上行線程,寄存器配置線程。RLUDP協(xié)議實現(xiàn)包括兩個線程:RS(Receive and Store)線程,RLU(Reliable UDP)線程。RS線程位于RLUDP的最底層,該線程主要負責數據包的接收工作,區(qū)分ACK包 (Flag中ACK置位)和DATA包(Flag中ACK復位)以及連接響應包(CHANNEL為0),ACK包和DATA包存放于相應的包隊列中,同時向RLU線程發(fā)送數據包到來的消息。RLU線程是RLUDP的核心線程,該線程工作于消息驅動模式,功能包括RLUDP協(xié)議主要部分:通道復用,通道分用,流量控制,數據發(fā)送,數據接收。

單個通道通過狀態(tài)機的模式來嚴格控制數據傳輸,其狀態(tài)機如圖5所示。其中有 4個狀態(tài) net idle,recv wait,ack wait,flow wait。

圖4 可靠UDP發(fā)送過程

圖5 可靠UDP程序狀態(tài)機

其中各個轉換條件為:c1表示一組中所有包接收完畢,c2表示收到一組中一個包,c3表示包發(fā)送完畢,c4表示接收到ACK包(FCF=0),c5表示接收到ACK包(FCF=1)。每個通道(0號除外)的初始狀態(tài)為net idle,當應用層的某個線程要發(fā)送一組數據時,就將數據存入該線程對應通道的RLUDP類對象的數據緩沖區(qū)中,并通知RLU線程,發(fā)送該組數據。此時若該通道的RLU狀態(tài)為net idle那么就將該組數據的各個數據包加上RLU的協(xié)議首部,發(fā)送一組數據,接著就將RLU狀態(tài)置為ack wait狀態(tài),等待ACK包的到來。若收到了ACK包,就檢查是否無數據包丟失,若無丟失就向應用層相應的線程發(fā)送消息,通知應用層該組數據已經發(fā)送成功,同時將RLU狀態(tài)置為net idle狀態(tài)。若有數據包丟失就發(fā)送丟失的數據包,直到收到ACK包指示無數據丟失為止,應用層要接收數據時,向FPGA應用層發(fā)送通知包,該通道處于net idle狀態(tài),接收到數據包后轉換為recv wait狀態(tài)接收完一組包后就轉換為net idle狀態(tài)。

當FPGA內存剩余空間大小小于指定閾值時,將RLUDP的ACK確認包首部的FCF字段置一,PC端接收到該ACK包就將相應的通道RLU狀態(tài)置為flow wait狀態(tài),此時應用層線程阻塞在消息等待處,就不會繼續(xù)發(fā)送下一組數據。當FPGA的內存空間大于閾值時就再次發(fā)送ACK數據包并清除相應的FCF標志,此時PC收到該ACK包后就將向應用層線程發(fā)送該組數據發(fā)送完成的消息,應用層可繼續(xù)發(fā)送下一組數據,同時RLU狀態(tài)置為net idle。

4 MicroBlaze嵌入式TCP/IP協(xié)議棧程序設計

本協(xié)議棧的傳輸層及以下各協(xié)議根據uIP和LwIP協(xié)議改寫。uIP和LwIP是瑞典計算機科學院的AdamDunkels等開發(fā)嵌入式TCP/IP協(xié)議棧,uIP協(xié)議棧針對嵌入式系統(tǒng)資源有限的特點保留了網絡通訊必須的協(xié)議[11]。LwIP的主要目的是在保持 TCP/IP協(xié)議主要功能的情況下減少對 RAM的使用[12-13]。在MicroBlaze處理器的主頻限制下,LwIP其他功能會占用大量的時間,從而導致數傳的時間片有限,無法保證較高的傳輸速率。

針對高速數傳需求,本協(xié)議在uIP的基礎上,保留了ARP,IP,ICMP,UDP,在UDP之上架設一層可靠UDP協(xié)議。采用LwIP的協(xié)議棧內存管理模型,在內存中申請一片緩沖池,使用隊列方式來對內存進行管理,提供內存的申請釋放API。MicroBlzae系統(tǒng)采用Xilinx XPS環(huán)境開發(fā)[14],軟件開發(fā)環(huán)境為EDK[15],協(xié)議棧各層的設計如下:

1)網絡接口層:使用了FPGA的DMA模式下MAC IP核,在協(xié)議棧初始化階段將自定義的內存區(qū)指針交給DMA,在MAC IP核中由DMA對該內存區(qū)進行操作,數據發(fā)送操作也是向DMA傳遞指針。2)ARP協(xié)議:接收操作對底層接收的數據包進行解析,只對廣播包機地址為本機的包進行處理,發(fā)送操作在初始化階段發(fā)送ARP請求,并執(zhí)行退避算法,在已存在目標IP映射的情況下,填充MAC地址,以太網協(xié)議類型字段0x8000。3)IP協(xié)議:接收操作對底層接收的數據包長度,校驗和,及協(xié)議等字段進行解析,只處理合法的UDP和ICMP包;發(fā)送操作完成IP首部各字段填充。4)ICMP協(xié)議:對收到的ECHO請求包進行應答。5)UDP協(xié)議:接收操作對端口號進行解析,處理端口匹配的數據包,發(fā)送操作對UDP首部進行填充。

5 系統(tǒng)性能測試

系統(tǒng)性能測試主要為數據速率的測試,運行MicroBlaze,主頻配置為最大值100 MHz。性能測試分為兩個方向:PC到FPGA,發(fā)送116 MB的文件,F(xiàn)PGA只進行接收操作,測試不同的n值(一組包中包的個數)對速率的影響,以及其他一些簡單的功能測試。進行測試時,首先在PC端進行ping的測試如圖6所示,PC端可成功ping通FPGA,用WireShark抓包軟件可看到ping相關的ARP包,ICMP包,接著進行功能復用測試,在發(fā)送調制數據的同時對寄存器進行讀寫操作,可成功配置寄存器,觀察LED可看到配置的寄存器值。

圖6 WireShark抓取的ICMP包

速率測試,改變n值測試文件傳輸時間,得出傳輸速率,n值對應速率測試結果如表1所示。從表中可以看出n值越大速率越高。

表1 速率測試結果

6 結 論

經過改寫后的TCP/IP協(xié)議棧加上RLUDP協(xié)議可完成丟包環(huán)境下的數據傳輸,該通信處理器應用于SOPC環(huán)境下的測控通信數據傳輸,通過接收確認方式完成了高速通信數據的傳輸功能。上位機采用多線程方式,通過多通道的方法完成了FPGA[16-17]下位機多功能復用。文中的流量控制方法很好的解決了CPU在內存資源有限的條件下,對數據傳輸速率的動態(tài)控制問題,目前該接口已應用于相關的測控通信系統(tǒng),運行狀態(tài)穩(wěn)定可靠,速率高,達到了系統(tǒng)設計需求。

[1]高一沅,黃春暉.基于MicroBlaze的以太網通信系統(tǒng)平臺設計的研究[J].現(xiàn)代電子技術,2007(17):29-31.

[2]薛昊,佘勇,姚振東,等.基于MicroBlaze和DM9000A的以太網接口設計[J].通信技術,2013(2):32-34.

[3]何賓.基于AXI4的可編程SOC系統(tǒng)設計[M].北京:清華大學出版社,2011.

[4]Xilinx Inc.MicroBlaze Processor Reference Guide[EB/OL].http: //www.xilinx.com/support/documentation/sw_manuals/xilinx14_ 3/mb_ref_guide.pdf

[5]Xilinx Inc.LogiCORE IP AXI Timer v1.03a[EB/OL](2012). http://www.xilinx.com.

[6]Xilinx Inc.LogiCORE IP AXI Ethernet v3.01a[EB/OL](2012).http://www.xilinx.com/support/documentation/ip_documentation/axi_ethernet/v3_01_a/ds759_axi_ethernet.pdf.

[7]Xilinx Inc.LogiCORE IP AXI DMA v6.02a[EB/OL](2012). http://www.xilinx.com.

[8]Xilinx Inc.LogiCORE IP AXI GPIO v1.01.b[EB/OL](2012). http://www.xilinx.com.

[9]孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2013.

[10]W.Richard Stevens TCP/IP詳解卷1:協(xié)議[M].范建華,胥光輝,等譯.北京:機械工業(yè)出版社,2014.

[11]Dunkels A.uIP-A Free Small TCP/IP Stack[EB/OL].(2002-01-15).http://www.sics.se/adam/uip.

[12]Dunkels A.Design an implementation of the LwIP TCP/IP Stack[EB/OL].http://www.sics.se/adam/lwip.

[13]張燕芳,沈麗.基于Xilinx Spartan-3E和LwIP協(xié)議的以太網通訊[J].核電子學與探測技術,2013(5):540-543.

[14]Xilinx Inc.EDK Profiling User Guide[EB/OL](2012).http:// www.xilinx.com.

[15]Xilinx Inc.OS and Libraries Document Collection[EB/OL](2013).http://www.xilinx.com.

[16]李威,翟社平.模擬路標識別及其FPGA實現(xiàn)[J].電子科技,2016(2):45-47.

[17]黨俊博,李哲,李雅俊.基于FPGA的串口通信電路設計與實現(xiàn)[J].電子科技,2016(7):106-109.

Design of reliable network interface based on MicroBlaze

HOU Hong-jie1,2,WANG Zhu-gang1
(1.National Space Science Center,Chinese Academy of Sciences,Beijing 100190,China;2.University of Chinese Academy of Sciences,Beijing 100190,China)

Microblaze is a kind of soft-core SOPC designed by Xilinx.It is a 32-bit soft-core embedded processor that consist of FPGA logic units.In order to achieve high-rate data transmission from FPGA to computer,a reliable UDP(RLUDP)protocol is proposed in this paper based on uIP and LwIP network protocol stacks.This paper introduces the design and implement of embedded TCP/IP protocol stacks,and illustrates the high-rate data transmission between PC and MicroBlaze according to the proposed protocol.Simple test on system performance is described,which shows that the designed system meets the design requirement.

MicroBlaze;SOPC;reliable UDP;Embeded TCP/IP

TN925

A

1674-6236(2016)21-0105-04

2015-11-12稿件編號:201511117

侯鴻杰(1991—),男,四川宜賓人,碩士研究生。研究方向:時間馴服與時間同步,嵌入式技術。

猜你喜歡
嵌入式
Focal&Naim同框發(fā)布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內核的自恢復設計
嵌入式系統(tǒng)通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發(fā)平臺
基于嵌入式系統(tǒng)Windows CE的應用程序開發(fā)
嵌入式單片機在電機控制系統(tǒng)中的應用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產流程控制系統(tǒng)中的應用
Altera加入嵌入式視覺聯(lián)盟
主站蜘蛛池模板: 老熟妇喷水一区二区三区| 久久动漫精品| 永久免费无码成人网站| 无码AV高清毛片中国一级毛片| 久久久久无码精品国产免费| 久青草国产高清在线视频| 亚洲第七页| 日韩高清中文字幕| 先锋资源久久| 国产手机在线小视频免费观看| 网久久综合| 粗大猛烈进出高潮视频无码| 黄色a一级视频| 亚洲欧美综合另类图片小说区| 一级毛片免费播放视频| 国产永久免费视频m3u8| 亚洲无码熟妇人妻AV在线| 亚洲男人在线天堂| 2020国产免费久久精品99| 人妻中文久热无码丝袜| 国产欧美中文字幕| 亚洲毛片网站| 午夜无码一区二区三区在线app| 爱做久久久久久| 乱人伦中文视频在线观看免费| 久久这里只有精品66| 香蕉视频在线观看www| 免费无码AV片在线观看国产| 亚洲国模精品一区| 六月婷婷综合| 国产精品9| www.99在线观看| 亚洲男人天堂网址| 中文无码精品a∨在线观看| 夜夜拍夜夜爽| 伊人91在线| 五月激情综合网| 日韩麻豆小视频| 999在线免费视频| 亚洲av无码久久无遮挡| 免费观看成人久久网免费观看| av色爱 天堂网| 久久综合亚洲色一区二区三区| 福利在线不卡一区| 色丁丁毛片在线观看| 成人在线不卡| 亚洲精品第一页不卡| 国产污视频在线观看| 欧美成人在线免费| 亚洲成a人片77777在线播放| 青青草原国产一区二区| AV无码无在线观看免费| 国产精品香蕉在线| 91福利免费视频| 在线精品自拍| 蜜桃视频一区二区| 免费国产高清精品一区在线| 中日韩一区二区三区中文免费视频| 国产亚洲精品精品精品| 国产毛片不卡| 天天综合网站| 国产国语一级毛片在线视频| 天堂在线视频精品| 一级片一区| 色爽网免费视频| 综合人妻久久一区二区精品 | 亚洲欧洲免费视频| 又黄又爽视频好爽视频| 久久精品这里只有精99品| 久久久久亚洲精品无码网站| 成人在线第一页| 国产爽歪歪免费视频在线观看| 色综合久久88色综合天天提莫 | A级毛片高清免费视频就| 亚洲人妖在线| 亚洲视频欧美不卡| 在线不卡免费视频| 亚洲一道AV无码午夜福利| 日韩中文无码av超清| 熟妇人妻无乱码中文字幕真矢织江| 免费无码AV片在线观看国产| 老司国产精品视频|