Verilog 实现千兆网UDP协议 基于88E1111--板级验证--增加ARP

增加ARP后,Board通过电脑端的APR请求获取PC端MAC地址及IP,所以宏定义内不定义Destination_MAC、Destination_IP。提取到顶层文件用以寄存器存储。

`define   Leading_code   					64'h55_55_55_55_55_55_55_D5 
`define   Source_MAC      					48'h00_11_22_33_44_08
//`define   Destination_MAC 					48'h11_22_33_44_55_02
`define   IP_TYPE		 					16'h08_00
`define   IP_TYPE_ARP		 				16'h08_06
`define   Source_IP      					32'hC0_A8_00_04  //192.168.0.4  //BOARD
`define   Source_Gateway      				32'hC0_A8_00_01  //192.168.0.1
//`define   Destination_IP 					32'hC0_A8_00_03  //192.168.0.3
`define   Source_Port      					16'd8001                        //BOARD
`define   Destination_Port 					16'd8000                        //PC

ARP数据更新进程。接收进程接收到ARP包后,将数据复制给reg,并通知接收进程收取完毕(ARP_addr_Get )进程回到正常接收模式。

/*ARP_PROCESS*/
always @(posedge Rx_Clk_i or negedge ETH_RESET_n)
begin
	if(!ETH_RESET_n)begin
		ARP_addr_Get 	<= 1'b0;
		Eth_Command[2]  <= 1'b0;
	end
	else if (ARP_addr_en)begin
		ARP_addr_Get 	<= 1'b1;
		Destination_MAC <= ARP_addr_data[79:32];
		Destination_IP  <= ARP_addr_data[31: 0];
		Eth_Command[2]  <= 1'b1;
	end
	else begin
		ARP_addr_Get <= 1'b0;
		Eth_Command[2]  <= 1'b0;
	end
end

Board APR回复数据,需要增加16byte的padding,以太网数据传输有最小包要求。

ARP_Code	 <= {`Leading_code,	Destination_MAC,`Source_MAC,`IP_TYPE_ARP, // 8 + 6 + 6 + 2 = 22
				 16'h00_01    ,	16'h08_00  	   ,16'h06_04  ,16'h00_02   , // 2 + 2 + 2 + 2 = 8
				 `Source_MAC  ,	`Source_IP	   ,						  // 6 + 4         = 10
				 Destination_MAC,Destination_IP,							  // 6 + 4         = 10
				 {18{8'h00}}											  //padding
				};

wireshark实时捕获:
在这里插入图片描述

Py测试数据源代码:

from scapy.all import *
pkt = ARP()
pkt.psrc = "192.168.0.35"
pkt.pdst = "192.168.0.4"
for n in range(10):
   aaa = send(pkt)
   print(aaa)

板级调试

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值