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

基于FPGA 的UDP_IP 協議棧的設計與實現

2023-06-21 01:58:24商艷娟徐卓汀王成群
智能計算機與應用 2023年6期
關鍵詞:設計

商艷娟, 徐卓汀, 王成群

(浙江理工大學信息學院, 杭州 310018)

0 引 言

網絡通信技術的快速發展,為大量數據的傳輸提供了可能[1]。 總線按照傳輸數據的方式可以分為串行總線和并行總線。 并行總線控制復雜,傳輸距離有限,串行總線設計簡單,但是傳輸速率低[2]。以太網技術的發展克服了總線傳輸的缺點,接口速度快,傳輸的距離遠,在復雜的工業控制系統中受到廣泛應用[3]。 傳統的以太網在主控芯片內部編寫以太網協議或者使用嵌入式處理器運行操作系統,在操作系統下完成協議的通信[4]。 使用主控芯片和嵌入式處理器來實現以太網通信協議無法保證較高的數據傳輸實時性和確定性。 使用現場可編程門陣列(FPGA,Field Programmable Gate Array)實現數據的通信,因為通過硬件固化協議的處理邏輯,可以有效地提高數據傳輸系統的性能,FPGA 芯片與物理層(PHY,Physical)芯片相連,連接結構簡單,不需要外部設備驅動與大量的外圍控制電路,可移植性強,系統集成度高[5]。 基于綜上的一些研究,本文設計了一款UDP_IP 協議棧,將其移植到FPGA 芯片中,使用以太網線將包含FPGA 芯片和PHY 芯片的電路板與電腦相連,完成數據的傳輸。 本設計具有以下功能:

(1)實現ARP 請求和應答報文的發送,完成IP地址和MAC 地址的映射;

(2)支持ICMP 報文的ping 操作;

(3)實現UDP 回環通信。

1 UDP_IP 協議棧結構和功能

UDP_IP 協議棧模型是將開放式系統互聯通信參考模型(Open System Interconnection Reference Model, OSI)7 層結構簡化成4 層,從上往下分別是應用層、傳輸層、網絡層、網絡接口層,如圖1 所示。應用層支持SMTP、HTTP、TFTP 等協議傳輸[6];傳輸層包含TCP 協議和UDP 協議,TCP 協議是一種基于3 次握手機制的可靠傳輸協議,UDP 是一種不可靠的傳輸協議,該協議實現簡單,適用于低時延、數據量大的快速傳輸場景;網絡層可以實現IP 協議、ICMP 協議通信,IP 協議負責將數據報通過互聯網發送出去,ICMP 協議主要是采用錯誤偵測和回饋機制,為通信環境提供可能發生的問題反饋信息;網絡接口層支持ARP 協議傳輸,將已知的IP 地址解析成MAC 地址,使得交換機可以通過MAC 地址進行相應的通信。 本文設計的UDP_IP 協議棧可以實現ARP 請求、ARP 響應、ICMP 響應、UDP 回環多種協議傳輸。

圖1 UDP_IP 協議棧參考模型Fig. 1 UDP_IP protocol stack model

2 UDP_IP 協議棧設計

本文采用模塊化的思想設計UDP_IP 協議棧,整個UDP_IP 協議棧由6 個模塊組成,分別是MAC數據解析模塊、IP 數據解析模塊、ARP 處理模塊、ICMP 處理模塊、UDP 處理模塊、MAC 數據封裝模塊,UDP_IP 協議棧總體架構如圖2 所示。

圖2 UDP_IP 協議棧總體架構Fig. 2 Overall architecture of the UDP_IP protocol stack

2.1 MAC 數據解析模塊設計

MAC 數據解析模塊的作用是分離出ARP 報文和IP 報文,在這個模塊中使用異步先入先出隊列(First Input First Output, FIFO)進行數據的跨時鐘域處理,MAC 數據解析模塊處理報文的流程圖如圖3 所示。 首先,調用異步FIFO 的IP 核,將接收的數據以及接收使能信號全部緩存進FIFO 中;根據FIFO 中存儲數據的個數產生FIFO 讀使能信號,將數據和接收使能信號讀出;根據讀出的使能信號驅動計數器計數,當計數到相應的值時,解析在該值處接收的數據,該數據即是以太網協議類型;判斷協議的類型是否為IP 或ARP 協議類型,如果不是,直接丟棄該數據幀,如果類型值為0x0800,則判斷該報文屬于IP 報文,如果類型值為0x0806,則該報文屬于ARP 報文,根據不同類型報文的判斷結果,將數據送入不同的后級模塊。

圖3 MAC 數據解析模塊流程圖Fig. 3 Flow chart of the MAC data parsing module

2.2 ARP 處理模塊設計

ARP 處理模塊的主要功能是對接收的ARP 報文進行分析,更新ARP 緩存表,具體實現過程如圖4 所示。 當上級MAC 數據解析模塊將ARP 報文發送到ARP 處理模塊后,對ARP 接收報文進行解析,得到ARP 報文中的操作碼、發送方IP 地址、發送方MAC 地址、接收方IP 地址。 當接收的操作碼為1,同時報文中的目的IP 等于本地設置的IP,說明接收的是ARP 請求報文,將該報文中的發送方IP 地址和MAC 地址寄存,用作ARP 緩存列表的更新值,同時還用于發送ARP 應答報文中目的IP 地址和目的MAC 地址。 當接收的操作碼為2,同時報文中的目的IP 等于本地設置的IP,判斷接收的是ARP 應答報文,應答報文只需將報文中發送方IP 地址和MAC 地址寄存,用來ARP 緩存列表信息的更新。圖4 虛線部分實現了ARP 列表的更新,本設計定義了一個數組存儲ARP 信息,每當接收一個ARP 請求或者是ARP 應答報文時,定義的數組單元會更新IP 地址和MAC 地址,每8 條ARP 緩存滿時,會自動覆蓋之前的信息,進行下一輪的更新。 另外,本設計還自定義了一個固定的目的IP 地址,協議棧會自動地向這個自定義的目的IP 地址主機定時發送ARP請求報文。

圖4 ARP 處理模塊流程圖Fig. 4 Flow chart of ARP processing module

2.3 IP 數據解析模塊設計

IP 數據解析模塊有兩個作用:將UDP 報文和ICMP 報文分離;進行IP 層校驗和計算,檢測接收報文的IP 層是否正確,IP 數據解析模塊流程圖如圖5所示。 由MAC 分離出的IP 報文被送入IP 數據解析模塊,對IP 報文的頭部進行解析,得到上層協議類型,目的IP 地址。 在報文解析的同時,對IP 的報頭信息進行校驗和計算,得到的正確值為16’hffff,如果校驗和的計算不是該值,說明接收到的IP 報文是錯誤的,丟棄該報文。 根據報文解析的上層協議類型、目的IP 地址、IP 校驗和來判斷該報文是UDP報文還是ICMP 報文,將不同類型的報文數據使用存儲器寄存,傳輸到接下來的ICMP 處理模塊或者是UDP 處理模塊。

圖5 IP 數據解析模塊流程圖Fig. 5 Flow chart of IP data analysis module

2.4 ICMP 處理模塊設計

ICMP 處理模塊能夠對ICMP 請求報文作出響應,同時將接收的ICMP 報文數據部分緩存,然后轉發。 在該模塊中整個報文的處理過程經歷3 個不同的狀態,如圖6 所示。 當IP 數據解析模塊沒有發送任何數據給ICMP 處理模塊時,該模塊一直處于空閑狀態,一旦接收到上級模塊發送ICMP 報文,ICMP 報文接收開始使能信號跳變為高電平,狀態跳轉到接收狀態;接收狀態下,對接收的ICMP 報文進行解析,得到ICMP 報文的類型和代碼值分別為0x08 和0x00,則接收的是ICMP 請求報文,直到ICMP 報文接收結束使能信號變為高電平時,狀態跳轉到發送狀態,如果接收的是ICMP 應答報文時,狀態一直保持接收狀態;接收狀態下,另一個操作是使用同步隨機存取存儲器(Random Access Memory,RAM)存儲報文,等到發送狀態下取出報文數據部分內容,發送回電腦。 等到發送的數據正好等于接收的數據長度時,ICMP 報文發送結束信號跳變為高電平,由發送狀態跳轉到空閑狀態,等待IP 數據解析模塊發送下一個ICMP 報文。

圖6 ICMP 處理模塊狀態機圖Fig. 6 State of ICMP processing module

2.5 UDP 處理模塊設計

UDP 處理模塊完成UDP 報文的解析并且為發送UDP 回包封裝UDP 首部信息,整個UDP 處理模塊狀態跳轉如圖7 所示。 首先,如果IP 數據解析模塊沒有發送任何UDP 報文,狀態機一直會處于空閑狀態,直到接收到有效的UDP 報文,UDP 報文接收開始使能信號跳為高電平,狀態機隨后跳轉到接收狀態;等到所有數據報文接收完成后,UDP 報文接收結束使能信號變為高電平,狀態機跳轉到計算UDP 校驗和狀態,等到校驗和的計數器計數到9時,狀態會跳轉到發送狀態;當發送的數據長度正好等于接收的數據長度時,UDP 報文發送結束使能信號變為高電平,表示發送完成,狀態機跳轉到空閑狀態,等待IP 數據解析模塊傳輸下一個UDP 報文數據。 在整個狀態機跳轉過程中,數據處于接收狀態時,解析UDP 報文,得到目的端口號、源端口號、UDP 數據長度、發送方IP 地址,為UDP 回環的實現提供目的端口號和源端口號。 數據需要返回給發送端,必須將接收的UDP 數據緩存下來,調用一個同步RAM 的IP 核進行數據的緩存。 在UDP 報頭校驗和計算狀態下,計算校驗和為發送UDP 回包提供正確的UDP 校驗和。

圖7 UDP 處理模塊狀態機Fig. 7 State of UDP processing module

2.6 MAC 數據封裝模塊設計

ARP 處理模塊提取的目的IP 和目的MAC 地址,ICMP 處理模塊重新打包的ICMP 應答報文以及UDP 處理模塊重新封裝的UDP 報文都傳入MAC數據封裝模塊合流。 具體選擇返回哪一種協議報文在MAC 數據封裝模塊需要進行仲裁,具體的MAC數據封裝模塊流程圖如圖8 所示。 首先,判斷發送使能信號,如果是ARP 報文發送使能信號,還需要判斷發送的是ARP 應答報文還是ARP 請求報文。如果ARP 應答報文發送使能信號為高電平,按照ARP 數據格式組幀整個ARP 報文內容;如果是ARP 請求發送使能信號為高電平,依照同樣的組幀方式設置ARP 請求報文內容,傳輸到MAC 數據封裝模塊。 ARP 報文前面再封裝以太網首部信息,最終發送給目標主機。 如果判斷是IP 報文發送使能信號為高電平,根據發送的上層協議類型,得到發送的報文是ICMP 報文還是UDP 報文,如果協議類型是0x11,則表示發送UDP 報文,將UDP 處理模塊傳輸過來的內容作為整個以太網幀的數據部分,如果協議類型是0x01,則表示發送ICMP 報文,將ICMP處理模塊傳輸過來的內容作為整個以太網幀的數據部分。 以太網幀其他部分使用以太網首部以及IP首部信息填充。 數據按照標準以太網協議幀封裝完成后,可以將這些數據直接傳輸給MAC 接口,MAC將這些數據傳回給發送端。

圖8 MAC 數據封裝模塊流程圖Fig. 8 Flow chart of MAC data encapsulation module

3 設計驗證

本設計在Quartus II 13.0 軟件中使用Verilog 語言編寫整個UDP 協議棧代碼,設計完成后使用modelsim 仿真軟件對整個UDP_IP 協議棧進行功能驗證。 ICMP 請求報文和應答報文的仿真時序圖如圖9 和圖10 所示。 從圖9 可以看到兩個報文發送的以太網協議類型都是0x0800, ICMP 報文的首部符合協議數據的設定值,接收數據與發送數據是相同的,報文的結尾都是使用FCS 校驗碼封裝,驗證了本協議棧可以正確接收ICMP 請求報文和發送ICMP 應答報文;此外,關于ARP 協議和UDP 協議的接收和發送功能仿真驗證也是正確的。

圖9 ICMP 請求報文接收圖Fig. 9 ICMP reception diagram

圖10 ICMP 應答報文發送圖Fig. 10 ICMP message sending diagram

仿真驗證后進行板級驗證,使用Cyclone IV 系列FPGA 芯片電路板。 通過電腦發送不同的協議報文,然后使用wireshark 軟件抓取電腦發送的報文以及接收的報文,驗證UDP_IP 協議棧設計的功能。當使用小兵以太網發送ARP 請求報文和ARP 應答報文時,ARP 報文測試結果如圖11 所示。 電腦每發送一個ARP 廣播報文,板子會返回一個ARP 應答報文給電腦。 當電腦發送ARP 應答報文給板子時,板子不會立即返回請求報文,但是本設計設置了一個電腦IP 地址存儲在ARP 處理模塊,會定時發送ARP 請求報文給電腦。 使用ping 命令后,ICMP報文測試結果圖如圖12 所示,可以看到當發送一個ICMP 請求報文,會傳回一個ICMP 應答報文。 接收報文數據和發送報文數據內容完全相同,證明了接收的數據在協議棧中能夠正確緩存并轉發。

圖11 ARP 報文測試結果圖Fig. 11 ARP packet test result

圖12 ICMP 報文測試結果圖Fig. 12 ICMP packet test result diagram

為了評估本設計UDP_IP 協議棧發送UDP 回環報文的性能,使用網絡調試助手每1 ms 發送一次UDP 報文,測試的結果如圖13 所示。 發送UDP 報文次數達到10 萬次,每一次的發送都能正確接收,說明本文設計的UDP_IP 協議棧具有可靠穩定的傳輸性能,傳回電腦的數據與電腦發送出去的數據是完全一致的,驗證了數據能夠在該協議棧內完成正確的數據接收和發送。

圖13 UDP 報文測試結果圖Fig. 13 UDP packet test result diagram

4 結束語

本文設計了一種基于FPGA 的UDP_IP 協議棧,ICMP 報文和UDP 報文數據部分在該協議棧內完成了正確的緩存和轉發,當發送ARP 報文時,在該協議棧內能夠及時進行ARP 列表的更新。 本設計具有良好的穩定性和可靠性,為高速以太網通信提供了一個很好的解決方案,有著廣泛的應用前景。

猜你喜歡
設計
二十四節氣在平面廣告設計中的應用
河北畫報(2020年8期)2020-10-27 02:54:06
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
基于PWM的伺服控制系統設計
電子制作(2019年19期)2019-11-23 08:41:36
基于89C52的32只三色LED搖搖棒設計
電子制作(2019年15期)2019-08-27 01:11:50
基于ICL8038的波形發生器仿真設計
電子制作(2019年7期)2019-04-25 13:18:16
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
從平面設計到“設計健康”
商周刊(2017年26期)2017-04-25 08:13:04
主站蜘蛛池模板: 中文字幕亚洲电影| 91无码人妻精品一区二区蜜桃| 91网站国产| 毛片视频网址| 国产精品午夜福利麻豆| 高清久久精品亚洲日韩Av| 亚洲最大看欧美片网站地址| 好吊妞欧美视频免费| 日本亚洲欧美在线| www.99在线观看| 在线观看国产精品日本不卡网| 亚洲清纯自偷自拍另类专区| 三上悠亚在线精品二区| 日韩在线视频网站| 国产人人射| 高清无码一本到东京热| 99久久国产综合精品女同| 91午夜福利在线观看| 欧美精品综合视频一区二区| 波多野结衣在线se| 国产真实乱子伦精品视手机观看 | 麻豆精品在线| 91九色国产porny| 一级毛片免费观看久| 992tv国产人成在线观看| 精品第一国产综合精品Aⅴ| 中文无码日韩精品| 久久亚洲黄色视频| 亚洲国产综合精品一区| 亚洲中文精品人人永久免费| 毛片视频网址| 亚洲福利网址| 亚洲第一色视频| 伊人无码视屏| 久久精品aⅴ无码中文字幕| 亚洲国产欧美目韩成人综合| 日本国产精品| 999国内精品久久免费视频| 一区二区三区国产精品视频| 亚洲国产天堂久久综合| 欧美黄色网站在线看| 99精品国产电影| 在线观看av永久| 国产偷国产偷在线高清| 久久精品一品道久久精品| 色噜噜狠狠色综合网图区| 99九九成人免费视频精品| 国产男女免费完整版视频| 久久综合国产乱子免费| 国产精品无码AV片在线观看播放| 一级福利视频| 欧美日韩国产在线播放| 国产精品护士| 欧洲日本亚洲中文字幕| 福利在线免费视频| av在线手机播放| 白浆免费视频国产精品视频 | 国产自在自线午夜精品视频| 国产手机在线ΑⅤ片无码观看| 日韩精品欧美国产在线| 中国一级特黄视频| 国产高清在线观看91精品| 亚洲激情区| 国产男女免费视频| 中文一级毛片| 久久久精品无码一区二区三区| 无遮挡一级毛片呦女视频| 亚洲天堂区| 久草性视频| 国产簧片免费在线播放| 国产麻豆另类AV| 亚洲一区无码在线| 日韩免费毛片| 国产精品所毛片视频| 永久免费无码日韩视频| 久久久久人妻一区精品色奶水| 夜夜高潮夜夜爽国产伦精品| 亚洲天堂视频在线免费观看| 久久精品欧美一区二区| 亚洲制服丝袜第一页| 欧美在线黄| 黄片一区二区三区|