前言:
在上板尝试进行PING操作的时候,发现一直是请求超时的情况,结果排查发现是首部校验和没有计算的问题。在UDP层,我们不进行校验和是不会影响数据正常收发的,但是在ICMP层不可以,FPGA没有进行校验和主机是无法正常进行PING板卡的。
一、ICMP校验和计算
ICMP校验和计算与IP层一样,只不过IP层只校验首部,但ICMP需要将数据一起进行校验。校验步骤:
- 将数据按照16bit组成一组,以此进行求和
- 如果结果超出16位,需要将高16位与低16位进行相加
- 对低16位进行取反,即可得到最终校验结果
always@(posedge i_clk,posedge i_rst)
begin
if(i_rst)
r_hd_checksum <= 'd0;
else if