NANO2開發(fā)板實例之__FPGA實現(xiàn)UDP數(shù)據(jù)收發(fā)數(shù)據(jù) 1、首先需要了解網絡分層結構,直接看圖,分層架構已經很清晰了。 ![]() ![]() 了解一下這些名詞 UDP(User Datagram Protocol)用戶數(shù)據(jù)包協(xié)議 IP(Internet Protocol(網絡之間互連的協(xié)議)) MAC(MediaAccessControl,媒體訪問控制,數(shù)據(jù)鏈路層) PHY(Physical Layer Device物理層) 1、需要了解MAC層和PHY的硬件接口,只介紹GMII,和MII,其它類似 網絡接口GMII/MII MAC(MediaAccessControl )層和PHY層鏈接接口GMII (Gigabit Medium Independent Interface) ![]() 時鐘接口 GTX_CLK 125M RX_CLK 125M 數(shù)據(jù)接口 TXD[7:0] RXD[7:0] TX_EN, 發(fā)送數(shù)據(jù)使能 TX_ER,發(fā)送數(shù)據(jù)錯誤 RX_DV, 接收數(shù)據(jù)有效 RX_ER 接收出錯指示 MDIO/MDC 控制接口 MDC為控制時鐘 MDIO控制數(shù)據(jù) 2、MII(Media Independent Interface)接口 ![]() 時鐘接口 TX_CLK RX_CLK 25M(100M) 數(shù)據(jù)接口 TXD[3:0] TX_EN TX_ER RXD[3:0] RX_DV RX_ER 控制接口 MDC/MDIO CRS 載波偵測 COL 沖突檢測 3、需要了解TCP/IP協(xié)議,UDP協(xié)議,ICMP協(xié)議 ![]() 以太網幀 ![]() 前序,以太網幀頭,0x55*7,0xd5共8byte. 目的MAC地址,源地址MAC分別為6個byte. 協(xié)議類型,比如0x0800,表示IP協(xié)議幀,0x0806表示ARP幀。 FCS為4byte校驗序列。 網絡長度為以太網(Ethernet)數(shù)據(jù)幀的長度必須在46-1500字節(jié)之間,這是由以太網的物理特性決定的. IP報文如下 ![]() 1、4位版本,表示IPV4。 2、包頭長度4,為4*5=20字節(jié),表示IP幀頭有20字節(jié)。 3、16位總長度,字段為16進制表示,報文總長度,不含最后幀的FCS校驗。 4、8位生存時間,表示數(shù)據(jù)包在網絡上生存多久,每通過一個路由器該值減一,為0時將被路由器丟棄。TTL<64 128< TTL<256表示LINUX操作系統(tǒng),64 5、8位協(xié)議,16進制表示,常用的協(xié)議及其十進制數(shù)值包括ICMP(1)、TCP(6)、UDP(17)。 6、16位首部校驗和,對IP包頭的4*5包頭進行校驗。為了計算一份數(shù)據(jù)報的IP檢驗和,首先把檢驗和字段置為0。然后,對首部中每個16位進行二進制反碼求和。 7、32為源IP,目的IP,十六進制表示。 8、選項和數(shù)據(jù)表示IP層之上的數(shù)據(jù)包。 UDP報文 ![]() 2、16為校驗和,偽頭部( 4byte源IP地址 + 4byte目的IP地址 + 0x00 + 1byte協(xié)議 + UDP長度(2byte)4byte源IP地址 + 4byte目的IP地址 + 0x00 + 1byte協(xié)議(0x11)+ UDP長度(2byte))和整個報文的校驗。UDP數(shù)據(jù)報文的長度可以為奇數(shù)字節(jié),所以在計算校驗和時需要在最后增加填充字節(jié)0,(填充字節(jié)只是為了計算校驗和,可以不被傳送)。計算方法,將校驗和先置0,然后對整個字段反碼求和。當然UDP報文檢驗字段也可以為0,在UDP傳輸協(xié)議中,校驗和是可選的,當校驗和字段為0時,表明該UDP報文未使用校驗和,接收方就不需要校驗和檢查了,《tcp詳解,卷1》書上有一句話:“如果校驗和的計算結果為0,則存入的值為全1(65535),這在二進制反碼計算中是等效的”。 3、數(shù)據(jù)字節(jié)數(shù)最大為1472字節(jié),最小為**字節(jié);最好為最好不要超過512個字節(jié)。 TCP報文 ![]() ICMP報文 ![]() 1、類型字段,比如Ping請求,0x08,Ping相應0x00. 2、代碼段,網絡不可到達(Code=0)、主機不可到達(Code=1)、協(xié)議不可到達(Code=2) 3、檢驗和,對整個ICMP報文進行校驗。 4、32bit ,BE,LE identifier,sequence number。IMCP包頭為8字節(jié); 4、FPGA系統(tǒng)結構 ![]() ![]() 5、PHY芯片 PHY 88E1111 GMII 88E1116R RGMII RTL8201 MII LAT971A MII MDIO/MDC時序(讀模式) ![]() 6、軟件工具 設置PC,基于網路的數(shù)據(jù),必須包含MAC地址和IP地址,對于點對點的通信,必須設置IP,MAC地址的對應。 ![]() Wireshark抓數(shù),對于正確的以太網數(shù)據(jù)包,可以查看到網絡包的數(shù)據(jù)格式,包括mac數(shù)據(jù),IP數(shù)據(jù),udp數(shù)據(jù)。 ![]() ![]() 網絡調試工具 用NETassist工具,可以方便的實現(xiàn)網絡層之上的數(shù)據(jù)收發(fā),可以看到數(shù)據(jù)回環(huán)得到了驗證。 ![]() 應用平臺 :紅色颶風NANO2 ![]() -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 更多了解,請關注: NANO2用戶資料鏈接 http://yunpan.cn/QpNRkwW9ZFnek NANO2 論壇鏈接 http://www.zingsoc.com/forum/forum.php 關于這款開發(fā)板,請關注新浪微博及博客 [url=%20http://weibo.com/u/5061825906] http://weibo.com/u/5061825906[/url] |