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