赞
踩
参考:https://blog.csdn.net/Mary19920410/article/details/59035804
将上层协议发送的数据进行组帧,具体如何实现与上一篇内容MAC层设计一致,连接在此:https://blog.csdn.net/m0_56222647/article/details/136958436?spm=1001.2014.3001.5502
难点在于首部校验和计算过程:
计算过程:
always @(posedge i_clk or posedge i_rst)begin
if(i_rst)
r_ip_header_chk <= 'd0;
else if(ri_send_valid && r_ip_data_cnt == 0)
r_ip_header_chk <= 16'h4500 + ri_send_len + r_ip_tag + 16'h4000 + {8'd64,ri_send_type} + 16'd0
+ r_src_ip[31:16] + r_src_ip[15:0] + r_dst_ip[31:16] + r_dst_ip[15:0];
else if(r_ip_data_cnt == 1)
r_ip_header_chk <= r_ip_header_chk[31:16] + r_ip_header_chk[15:0];
else if(r_ip_data_cnt == 2)
r_ip_header_chk <= r_ip_header_chk[31:16] + r_ip_header_chk[15:0];
else if(r_ip_data_cnt == 3)
r_ip_header_chk <= ~r_ip_header_chk;
else
r_ip_header_chk <= r_ip_header_chk;
end
很简单,按照协议进行解析即可,将IP头数据刨除,将数据字段交给上一层(UDP或者ICMP)即可。
按部就班即可,完整代码参考GitHub:https://github.com/shun6-6/Tri_Eth_UDP_pro_stack
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。