基于FPGA+RTL8201的ARP实现(二)

基于FPGA+RTL8201的ARP实现(二)

1、设计需求

       在之前的设计中发现,使用FPGA+RTL8201或者FPGA+RTL8211这样的组合和PC端进行网络通信时,我们已经将板卡端的MAC和IP地址在电脑上进行了绑定,所以在上位机向板卡的IP地址发送数据时,便会将向绑定的MAC地址发送;
       但是这就造成了一种不便就是在更换了PC端时,我们必须重新绑定IP和MAC,本设计意在进行一个自动的ARP握手的过程;
       即在板卡上电后,便向PC端发送ARP请求,在一定时间内如果没有收到PC端的ARP响应,就重新向PC端发送ARP请求,收到PC端的ARP响应后,便去等待PC端的ARP请求,收到PC端的ARP请求后,便发出ARP响应,会送给PC端。

2、效果

       使用的硬件是一块FPGA的核心板和RTL8201百兆网模块,如下图所示:
基于FPGA+RTL8201的ARP实现(二)_第1张图片

一些参数的设置:

  • 给FPGA板卡设置的MAC地址(源MAC地址)是:00-0a-35-01-fe-c0 ;
  • 给FPGA板卡设置的IP地址(发送方IP)是 :192.168.0.4 ;
  • 电脑端IP(接收方IP)设置的是:192.168.0.3 ;

通过wireshark工具我们可以抓到板卡的arp请求以及PC端给出的响应:
基于FPGA+RTL8201的ARP实现(二)_第2张图片

基于FPGA+RTL8201的ARP实现(二)_第3张图片

当使用网络调试助手向192.0168.0.4发送数据的时候,由于事先并没有绑定板卡的IP和MAC地址,所以PC端会发送一个ARP请求,询问192.168.0.4的MAC地址是多少,可以看出板卡端也做出了正确的响应,如下图所示:
基于FPGA+RTL8201的ARP实现(二)_第4张图片

2、确定设计顶层的输入输出信号

基于FPGA+RTL8201的ARP实现(二)_第5张图片

3、模块连接框图

根据我的设计需求,总共将功能分成了五个模块,其中一个顶层模块,由四个模块组成:

基于FPGA+RTL8201的ARP实现(二)_第6张图片

未完待续~~~~~~~

你可能感兴趣的:(FPGA网络接口)