亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA 的UDP_IP 協(xié)議棧的設計與實現(xiàn)

        2023-06-21 01:58:24商艷娟徐卓汀王成群
        智能計算機與應用 2023年6期
        關(guān)鍵詞:高電平以太網(wǎng)報文

        商艷娟, 徐卓汀, 王成群

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

        0 引 言

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

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

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

        (3)實現(xiàn)UDP 回環(huán)通信。

        1 UDP_IP 協(xié)議棧結(jié)構(gòu)和功能

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

        圖1 UDP_IP 協(xié)議棧參考模型Fig. 1 UDP_IP protocol stack model

        2 UDP_IP 協(xié)議棧設計

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

        圖2 UDP_IP 協(xié)議棧總體架構(gòu)Fig. 2 Overall architecture of the UDP_IP protocol stack

        2.1 MAC 數(shù)據(jù)解析模塊設計

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

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

        2.2 ARP 處理模塊設計

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

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

        2.3 IP 數(shù)據(jù)解析模塊設計

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

        圖5 IP 數(shù)據(jù)解析模塊流程圖Fig. 5 Flow chart of IP data analysis module

        2.4 ICMP 處理模塊設計

        ICMP 處理模塊能夠?qū)CMP 請求報文作出響應,同時將接收的ICMP 報文數(shù)據(jù)部分緩存,然后轉(zhuǎn)發(fā)。 在該模塊中整個報文的處理過程經(jīng)歷3 個不同的狀態(tài),如圖6 所示。 當IP 數(shù)據(jù)解析模塊沒有發(fā)送任何數(shù)據(jù)給ICMP 處理模塊時,該模塊一直處于空閑狀態(tài),一旦接收到上級模塊發(fā)送ICMP 報文,ICMP 報文接收開始使能信號跳變?yōu)楦唠娖剑瑺顟B(tài)跳轉(zhuǎn)到接收狀態(tài);接收狀態(tài)下,對接收的ICMP 報文進行解析,得到ICMP 報文的類型和代碼值分別為0x08 和0x00,則接收的是ICMP 請求報文,直到ICMP 報文接收結(jié)束使能信號變?yōu)楦唠娖綍r,狀態(tài)跳轉(zhuǎn)到發(fā)送狀態(tài),如果接收的是ICMP 應答報文時,狀態(tài)一直保持接收狀態(tài);接收狀態(tài)下,另一個操作是使用同步隨機存取存儲器(Random Access Memory,RAM)存儲報文,等到發(fā)送狀態(tài)下取出報文數(shù)據(jù)部分內(nèi)容,發(fā)送回電腦。 等到發(fā)送的數(shù)據(jù)正好等于接收的數(shù)據(jù)長度時,ICMP 報文發(fā)送結(jié)束信號跳變?yōu)楦唠娖剑砂l(fā)送狀態(tài)跳轉(zhuǎn)到空閑狀態(tài),等待IP 數(shù)據(jù)解析模塊發(fā)送下一個ICMP 報文。

        圖6 ICMP 處理模塊狀態(tài)機圖Fig. 6 State of ICMP processing module

        2.5 UDP 處理模塊設計

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

        圖7 UDP 處理模塊狀態(tài)機Fig. 7 State of UDP processing module

        2.6 MAC 數(shù)據(jù)封裝模塊設計

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

        圖8 MAC 數(shù)據(jù)封裝模塊流程圖Fig. 8 Flow chart of MAC data encapsulation module

        3 設計驗證

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

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

        圖10 ICMP 應答報文發(fā)送圖Fig. 10 ICMP message sending diagram

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

        圖11 ARP 報文測試結(jié)果圖Fig. 11 ARP packet test result

        圖12 ICMP 報文測試結(jié)果圖Fig. 12 ICMP packet test result diagram

        為了評估本設計UDP_IP 協(xié)議棧發(fā)送UDP 回環(huán)報文的性能,使用網(wǎng)絡調(diào)試助手每1 ms 發(fā)送一次UDP 報文,測試的結(jié)果如圖13 所示。 發(fā)送UDP 報文次數(shù)達到10 萬次,每一次的發(fā)送都能正確接收,說明本文設計的UDP_IP 協(xié)議棧具有可靠穩(wěn)定的傳輸性能,傳回電腦的數(shù)據(jù)與電腦發(fā)送出去的數(shù)據(jù)是完全一致的,驗證了數(shù)據(jù)能夠在該協(xié)議棧內(nèi)完成正確的數(shù)據(jù)接收和發(fā)送。

        圖13 UDP 報文測試結(jié)果圖Fig. 13 UDP packet test result diagram

        4 結(jié)束語

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

        猜你喜歡
        高電平以太網(wǎng)報文
        基于J1939 協(xié)議多包報文的時序研究及應用
        汽車電器(2022年9期)2022-11-07 02:16:24
        一種基于FPGA的PWM防錯輸出控制電路
        基于1500以太網(wǎng)養(yǎng)豬場的智能飼喂控制系統(tǒng)的設計與實現(xiàn)
        CTCS-2級報文數(shù)據(jù)管理需求分析和實現(xiàn)
        淺析反駁類報文要點
        中國外匯(2019年11期)2019-08-27 02:06:30
        TS-03C全固態(tài)PDM中波發(fā)射機開關(guān)機控制電路原理及故障分析
        科技傳播(2019年15期)2019-08-22 08:07:44
        DM 50KW中波廣播發(fā)射機欠推動故障分析
        談實時以太網(wǎng)EtherCAT技術(shù)在變電站自動化中的應用
        電子制作(2017年24期)2017-02-02 07:14:44
        PDM 1kW中波廣播發(fā)射機保護電路分析
        ATS與列車通信報文分析
        国产av三级精品车模| 成人免费毛片aaaaaa片| 亚洲av男人的天堂在线观看| 99热门精品一区二区三区无码| 国产女主播强伦视频网站| 成人av一区二区亚洲精| 亚洲久悠悠色悠在线播放| 免费观看18禁无遮挡真人网站| 人妻少妇邻居少妇好多水在线 | 久久精品成人91一区二区| 国产一品二品三品精品久久| 国产精品一区二区三区播放| 夜夜爽日日澡人人添| 99香蕉国产精品偷在线观看| 亚洲h电影| 中文字幕色婷婷在线视频| 日韩精品极品免费视频观看| 亚洲av综合av成人小说| 四房播播在线电影| 精品国产91久久久久久久a| 白白在线免费观看视频| 欲女在线一区二区三区| 国产精品无码无在线观看| 欲妇荡岳丰满少妇岳| 久久久亚洲欧洲日产国码是AV| 国产一区二区三区小向美奈子| 免费a级毛片在线播放| 黄网站欧美内射| 国产va免费精品高清在线观看| 韩国女主播一区二区三区在线观看| 邻居美少妇张开腿让我爽了一夜| 大地资源网高清在线播放| 3344永久在线观看视频| 久久中文字幕久久久久91| 一区二区三区精品免费| 一色桃子中文字幕人妻熟女作品| 亚洲av综合色区无码一二三区| 亚洲中出视频| 日本一区二区三区爱爱视频| 人成午夜大片免费视频77777| 夜夜高潮夜夜爽夜夜爱爱|