万兆以太网MAC设计(13)主机与FPGA之间进行PING

文章目录

前言:

在上板尝试进行PING操作的时候,发现一直是请求超时的情况,结果排查发现是首部校验和没有计算的问题。在UDP层,我们不进行校验和是不会影响数据正常收发的,但是在ICMP层不可以,FPGA没有进行校验和主机是无法正常进行PING板卡的。

一、ICMP校验和计算

ICMP校验和计算与IP层一样,只不过IP层只校验首部,但ICMP需要将数据一起进行校验。校验步骤:

  1. 将数据按照16bit组成一组,以此进行求和
  2. 如果结果超出16位,需要将高16位与低16位进行相加
  3. 对低16位进行取反,即可得到最终校验结果
c 复制代码
always@(posedge i_clk,posedge i_rst)
begin
    if(i_rst)
        r_hd_checksum <= 'd0;
    else if(i_trigger)
        r_hd_checksum <= 16'h0000 + 16'h0000 + i_Identifier + i_Sequence
                            + 16'h6162 + 16'h6364 + 16'h6566 + 16'h6768
                            + 16'h696a + 16'h6b6c + 16'h6d6e + 16'h6f70
                            + 16'h7172 + 16'h7374 + 16'h7576 + 16'h7761
                            + 16'h6263 + 16'h6465 + 16'h6667 + 16'h6869;
    else if(ri_trigger)
        r_hd_checksum <= r_hd_checksum[31:16] + r_hd_checksum[15:0];
    else 
        r_hd_checksum <= r_hd_checksum;
end
c 复制代码
rm_axis_ip_data <= {16'h0000,(~r_hd_checksum[15:0]),ri_Identifier,ri_Sequence};

二、上板效果

修改完校验和计算后PING结果一切正常。

1、终端命令行

1、wireshark捕捉

相关推荐
手握风云-7 分钟前
ProtoBuf:从序列化原理到高性能架构底座(一)
java·网络·架构
caimouse10 分钟前
Reactos 第 9 章 设备驱动 — 9.6 中断处理
网络·windows
FPGA小徐28 分钟前
深度神经网络FPGA设计进展、实现与展望
fpga开发
qq3621967051 小时前
第三方安卓应用商店安全评测 2026:Appteka、Aptoide、APKPure 等 7 家横评
android·网络·人工智能·安全·chatgpt·智能手机
AI科技星1 小时前
数术工坊・八卷全书【本源创世终极版・万世定稿】
开发语言·网络·量子计算·拓扑学
AI科技星2 小时前
数术工坊・八卷全书(番外・实战升华副卷)【终极典藏定稿|完整无删减】
c语言·开发语言·网络·量子计算·agi
DreamLife☼2 小时前
OpenBCI-脑电信号的隐私与安全保护
网络·安全·开源硬件·脑机接口·eeg·openbci·神经科技
yyuuuzz2 小时前
云服务器软件部署的几个常见问题
运维·服务器·开发语言·网络·云计算·php·apache
dust_and_stars2 小时前
为什么ubuntu24 snap install code-server 不需要--classic?
网络·数据库
tiancaijiben2 小时前
阿里云日志服务SLS全流程对接与深度使用指南
网络·数据库