注:很多基礎內容並本文不做講解,重點講解fpga實現時需要注意的地方,沒有用IP。[就這樣]歡迎大家一起交流,Q群:912014800。
一。 實現的意義分析等。
用fpga實現udp可以用來傳消息、圖片等,udp本身作為一種不可靠的傳輸,一般也就傳圖像什么的啦,暫時只講發送方向,也就是fpga向pc(或者其他。。)傳輸,學會了發送方向,接收就可以自己搞定啦。
二。效果展示
(1) 消息傳輸
通過wireshark和網絡助手,可以抓到測試數據(目測沒有什么可解釋的)。
(2)圖像傳輸
上位機顯示圖像(在此對徐大神表示感謝):
三。協議重點分析(只分析我認為比較重要的,是時候借用一些大牛的圖片了。。。需要注意的是,以下圖片紅色的部分是fpga需要計算的,在udp中需要長度信息[8+data_len],在ip頭中需要校驗和和長度信息[28+data_len])
(1)整體報文
注:最后的mac層就是要傳給phy芯片的數據。FCS采用crc32,注意計算的時序,MAC幀頭為7個0x55和一個0xD5。
(2)udp包頭
(3)ip包頭
四。模塊設計架構[懶得畫,直接看綜合后的吧]
模塊功能:用戶主要輸入給該模塊一個8bit位寬的包文,該模塊就可以把用戶的數據發給phy芯片[簡單,方便,以千兆網為例]。
五。參考資料
自己看看相關udp的資料,結合小兵以太網發包工具可以更快速的理解,記得下載。其他軟件需要的自己去搜尋吧,大家加油。[完]
六。 附錄
(1)crc 順序
默認從最高位開始傳輸,調換順序后從最高位開始傳輸。
Ethernet II以太網幀格式:
目標MAC 源MAC 類型 數據 FCS
6字節 6字節 2字節 46-1500字節 4字節
所以最小6+6+2+46+4 = 64,最大6+6+2+1500+4 = 1518。
(注:ISL封裝后可達1548字節,802.1Q封裝后可達1522字節)
而udp頭和IP頭 占用28個 46-28 = 18 . 也就是說最小長度要大於等於18個。