以太網:ARP和信息處理狀態機+代碼實現

ARP過程只需要一次發送和一次接受就可以完成了;

在實際實現協議棧的時候我個人認為要以主動ARP開始;

主動ARP:發送一次ARP請求,接受一個ARP報文;

使用這種方式的原因是上位機可能不知道你的IP地址(當然如果使用的是開發好的上位機的話,被動ARP也是可以的,例如原子上位機);

這是我的實現方法,提供給大家參考:

主要過程是:一次主動ARP之后,進入NORMAL狀態,當NORMAL狀態下接收到ARP請求的時候,再發送ARP ACK;

always @(posedge sys_clk) beginif(sys_rst_n == 1'b0) beginstate <= state_idle;end else begincase (state)state_idle:beginstate <= state_arp_req;endstate_arp_req:beginif(r1_arp_rx_ack_vaild == 1'b0 && arp_rx_ack_vaild == 1'b1) beginstate <= state_normal;end else beginstate <= state_arp_req;endendstate_normal:beginif(arp_wait == 1'b1) beginstate <= state_arp_ack;end else if(hb_wait == 1'b1 && data_wait == 1'b0) beginstate <= state_hb;end else if(hb_wait == 1'b1 && data_wait == 1'b1) beginstate <= state_hb;end else if(hb_wait == 1'b0 && data_wait == 1'b1)beginstate <= state_tx_data;end else beginstate <= state_normal;endendstate_arp_ack:beginif(r1_slave_arp_tx_end == 1'b1 && slave_arp_tx_end == 1'b0) beginstate <= state_normal;end else beginstate <= state_arp_ack;endendstate_hb:beginif(r1_slave_hb_tx_end == 1'b0 && slave_hb_tx_end == 1'b1) beginstate <= state_normal;end else beginstate <= state_hb;endendstate_tx_data:beginif(r1_slave_data_tx_end == 1'b0 && slave_data_tx_end == 1'b1) beginstate <= state_normal;end else beginstate <= state_tx_data;endenddefault: beginstate <= state;endendcaseendend

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23238.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql疑難報錯排查 - Field ‘XXX‘ doesn‘t have a default value

項目場景&#xff1a; 數據庫環境 &#xff1a;mysql8; 工程使用&#xff1a;MyBatisPlus 表情況&#xff1a; 問題描述 某一個插入語句使用了 MyBatisPlus 的 save 方法&#xff0c;因為end_time1 end_time2都并沒有值&#xff0c;所以在MyBatisPlus默認情況下&#xff0c;…

如何使自己寫的代碼易讀易懂?

〓● 如果代碼可讀性不佳、不容易理解&#xff0c;可能造成如下問題&#xff1a; 〓? 其他工程師浪費時間解讀它&#xff1b; 〓? 誤解導致引入缺陷&#xff1b; 〓? 其他工程師修改時破壞代碼。 〓● 提高代碼可讀性&#xff0c;有時候可能使其變得更為冗長、占用更多的…

【Python】深入認識Python數據類型和變量

???? 文章目錄 1. 引言數據類型的重要性Python中的數據類型概述 2. 數字類型整型&#xff08;int&#xff09;浮點型&#xff08;float&#xff09;復數&#xff08;complex&#xff09; 3. 字符串類型字符串的定義與使用字符串操作方法 4. 布爾類型布爾值和布爾運算 5. 列…

docker網絡詳解

1. 網絡模式 1.1 網絡結構 當安裝Docker以后&#xff0c;會自動創建三個網絡。可以使用docker network ls命令列出這些網絡。 $ docker network ls NETWORK ID NAME DRIVER SCOPE 440aefe8afa3 bridge bridge local aa8d6325580f host host …

02JAVA字符串和集合

1.字符串 1.String 介紹: String在java.lang包下,使用不需要導包,String代表字符串,帶""字符串都是String類的對象 字符串的特點: 字符串不可變,他們的值在創建后不能被改變 字符串效果相當于(char[]),底層原理是字節數組(byte[]) String構造方法: String 變量名 ne…

chat-glm4,qwen1.5性能對比

modelMMLUC-EvalGSM8KHumanEvalglm-4-9b74.777.184.070.1qwen1.5-7b6174.162.536.0qwen1.5-14b67.678.770.137.8 數據來源是以下兩個圖。可以看到GLM4非常優秀&#xff0c;qwen應該也快要開源自己的新模型了&#xff0c;希望國內的大模型團隊能夠繼續堅持&#xff0c;持續努力&…

AI框架之Spring AI與Spring Cloud Alibaba AI使用講解

文章目錄 1 AI框架1.1 Spring AI 簡介1.2 Spring AI 使用1.2.1 pom.xml1.2.2 可實現的功能 1.3 Spring Cloud Alibaba AI1.4 Spring Cloud Alibaba AI 實踐操作1.4.1 pom.xml1.4.2 配置文件1.4.3 對接文本模型1.4.4 文生圖模型1.4.5 語音合成模型 1 AI框架 1.1 Spring AI 簡介…

NSSCTF-Web題目5

目錄 [SWPUCTF 2021 新生賽]error 1、題目 2、知識點 3、思路 [LitCTF 2023]作業管理系統 1、題目 2、知識點 3、思路 [HUBUCTF 2022 新生賽]checkin 1、題目 2、知識點 3、思路 [SWPUCTF 2021 新生賽]error 1、題目 2、知識點 數據庫注入、報錯注入 3、思路 首先…

淺談InoDB中的行級鎖

行級鎖的類型&#xff1a; Record Lock&#xff0c;記錄鎖&#xff0c;僅僅把?條記錄鎖上&#xff0c;記錄鎖分為排他鎖和共享鎖。Gap Lock&#xff0c;間隙鎖&#xff0c;鎖定?個范圍&#xff0c;但是不包含記錄本身&#xff0c;只存在于可重復讀隔離級別&#xff0c;?的是…

Oracle 重置system用戶的密碼

荊軻刺秦王 如果您忘記了Oracle數據庫的密碼&#xff0c;可以通過以下步驟來重置密碼&#xff1a; Oracle 版本&#xff1a;linux 11g Release 11.2.0.4.0-64bit Froduction 1. 以SYSDBA權限登錄到數據庫。 conn / as sysdba 2. 停止數據庫實例。 shutdown immediate; 3…

vue 文件預覽mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml

vue 文件預覽 圖片、mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml 最近公司要做一個類似電腦文件夾的功能&#xff0c;支持文件夾操作&#xff0c;文件操作,這里就不說文件夾操作了&#xff0c;說說文件預覽操作&#xff0c;本人是后端java開發&#xff0c;前端vue&#…

Nginx通過轉發代理解決跨域問題

前后端分離開發WEB端&#xff08;瀏覽器&#xff09;&#xff0c;不可避免的就是要解決跨域問題&#xff0c;因為這是瀏覽器的一種安全機制&#xff0c;當請求的&#xff08;1&#xff09;域名、&#xff08;2&#xff09;端口、&#xff08;3&#xff09;協議 。其中的一項與源…

MySQL如何多表關聯更新

在 MySQL 中,多表關聯更新可以使用 UPDATE 語句與 JOIN 子句結合來實現。以下是一個多表關聯更新的基本示例: 基本語法 UPDATE table1 JOIN table2 ON table1.column = table2.column SET table1.column = new_value, table2.column = new_value WHERE condition;

Linux系統安裝APITable詳細流程與遠程訪問本地平臺數據分析

文章目錄 前言1. 部署APITable2. cpolar的安裝和注冊3. 配置APITable公網訪問地址4. 固定APITable公網地址 &#x1f4a1;推薦 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。【點擊跳轉到網站】 前言 v…

AMD顯卡和英偉達顯卡哪個好?

顯卡是計算機中負責處理圖形和視頻輸出的硬件設備&#xff0c;主要分為兩種類型&#xff1a;AMD的A卡和NVIDIA的N卡。那么AMD顯卡和英偉達顯卡哪個好&#xff1f;怎么選&#xff1f; 答&#xff1a;不能一概而論地說哪個好&#xff0c;因為它們各有優勢&#xff0c;選擇應基于…

listbox有scrollviewer,點擊后不會觸發selectionchanged事件

這個問題是因為在ListBox中的ScrollViewer處于焦點狀態時&#xff0c;SelectionChanged事件沒有觸發。這通常是因為ScrollViewer在處理鼠標事件時會優先于ListBox。 為了解決這個問題&#xff0c;可以通過以下方法來確保SelectionChanged事件在ListBox中被觸發&#xff1a; 在…

RE_RC4加密

之前做的幾道題目&#xff0c;rc4也是經常遇到&#xff0c;今來系統學學&#xff0c;記錄一下 對稱加密&#xff0c;即加密和解密的密鑰可以相互推導&#xff0c;也有的是相同的。 RC4 是以字節流處理每一個字節&#xff0c;而不是 DES 的分組操作。 包含三個參數&#xff1…

探索通信技術的未來:2024中國通信技術和智能裝備產業博覽會

探索通信技術的未來&#xff1a;2024通信技術產業專場 隨著信息技術的飛速發展&#xff0c;通信技術已成為現代社會不可或缺的基礎設施。2024年10月11日至13日&#xff0c;青島將迎來一場通信技術的盛會——2024中國軍民兩用智能裝備與通信技術產業博覽會。本次博覽會不僅將展…

面試(03)————多線程

目錄 一、線程和進程的區別&#xff1f; 二、并行和并發的區別&#xff1f; 三、線程創建的方式有哪些&#xff1f; 3.1、繼承Thread類 3.2、實現Runnable接口 3.3、實現Callable接口 3.4、線程池 四、Runnable和Callable的區別&#xff1f; 五、在啟動線程的時候&am…

使用packstack快速部署OpenStack

目錄 資源列表 基礎環境 安裝packstack 安裝OpenStack 本文記錄了基于CentOS操作系統使用packstack快速部署openstack。 資源列表 操作系統配置磁盤IP數量CentOS7.94C8G50G192.168.207.1551 基礎環境 服務器開啟虛擬化&#xff0c;我這里使用的是VMware虛擬機&#xff0…