在之前的设计中发现,使用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端。
使用的硬件是一块FPGA的核心板和RTL8201百兆网模块,如下图所示:
一些参数的设置:
通过wireshark工具我们可以抓到板卡的arp请求以及PC端给出的响应:
当使用网络调试助手向192.0168.0.4发送数据的时候,由于事先并没有绑定板卡的IP和MAC地址,所以PC端会发送一个ARP请求,询问192.168.0.4的MAC地址是多少,可以看出板卡端也做出了正确的响应,如下图所示:
根据我的设计需求,总共将功能分成了五个模块,其中一个顶层模块,由四个模块组成:
未完待续~~~~~~~