FPGA收发包实验踩坑记录

本文记录了在FPGA进行网络通信实验时遇到的问题,即FPGA(千兆网口)无法与百兆网口笔记本通信。通过排查IP、MAC设置、硬件故障、软件配置,最终发现是速度不匹配导致的兼容性问题,千兆网卡的FPGA无法适应百兆网口,更换为千兆网口的台式机后通信成功。
摘要由CSDN通过智能技术生成

最近在使用带有网络通信功能的FPGA做实验,在整个实验过程中出现了一些小问题,在此记录。本片博客主要想记录我尝试去解决问题的思路。

实验环境

FPGA方面:我使用的是带有两个千兆网口的实验板,其它配置不过多赘述
硬件程序方面:我是在Windows环境下使用vivado编程和烧写程序
网络通信的另一端:有一台带有百兆网口的笔记本和一台有千兆网口的台式机

实验的流程

简单来说实验流程是FPGA需要封装UDP包发往另一端。此次实验主要目的是想要正确配置搭建好这个可通信的环境,为之后的实验打好基础。

1、在硬件程序中,我们直接写死了本端(FPGA)和对端的IP与MAC

2、然后按照vivado的使用流程正确下载到了FPGA中

3、将我们的FPGA和笔记本通过网线直连

4、打开笔记本的设置,设置成硬件程序中设置的地址,并添加路由

5、在笔记本的命令行中pingFPGA

问题的出现

在这个时候,我原本以为这个简单的实验应该以ping通作为完美结束了,结果出现的现象是:
在这里插入图片描述
1、此时我的第一反应是:在笔记本上看看之前关于IP、MAC、路由的设置是否正确。结果发现是正确的。

2、然后我就想是不是物理层面上出了问题,比如说:网线坏了,FPGA的网口坏了,整个FPGA都坏了,硬件程序没有正确下载到板上(严格来说这不算物理层面)。

接着就经历了:换网线,换FPGA接口,重做以上实验流程,运行其它实验以查看能否正确下载硬件程序,换一块板子等等操作。这一系列的操作完成之后,结果并没有发生改变。

3、这个时候我就打开了笔记本上的wireshark尝试抓包。结果发现我在ping FPGA的时候,所有的包都是从PC到FPGA,而没有从FPGA到PC的返回包(这也是我之后询问过导师,他让我首先查看的内容)。这里多嘴一句,这里我的情况是:arp包无应答。还有一种情况是,对面回了arp包,但是命令行还是显示了超时,这个时候是因为你的防火墙把这些应答包墙掉了。

4、以上操作尝试过之后,我有点失去了冷静。我在想是不是我的包不是从这个百兆网口出去的?然后就把笔记本的网络配置重配了一下,还特意指定了去FPGA的IP的包从特定端口出去。结果还是没什么改变。

这个时候你可能会问,你为什么从没考虑过是你的硬件程序写错了呢?按照常理来说,第一个该排查的确实应该是这里。但是因为我这个程序是在前人工作基础上少量修改的,而我改动的内容不会导致ping不通的情况。

5、此时我开始怀疑,是不是FPGA的IP和MAC因为什么原因没有设置成程序中写的那样啊?这样的话,我在另一端和物理层面上搞来搞去确实结果应该不变。搜了许多资料无果之后,我只能去询问我的导师有没有什么办法通过FPGA的上位机查看它的IP和MAC。然后他除了给我一些如何检查ping不通的建议之外,他告诉我:我们之所以能通过通过命令行查看IP和MAC,是因为驱动为操作系统提供了接口。所以除非你的驱动去配合,否则这是做不到的。

6、在问题出现的当晚,我冷静地思考了一下,还有哪里的问题没有排查呢?这时我想到,我换过FPGA,换过网线,不如把我的笔记本换一下?第二天我就尝试把FPGA连接的另一端换成了一台有千兆网卡的台式机,结果就成功了。

疑惑与反思

我开始思考我的笔记本和这台台式机有什么区别呢?我的笔记本连网线可以上网的,所以应该不是什么网卡、插口的问题。唯一的区别就是:我的笔记本是百兆网口的,台式机是千兆网口的。

我之前没有考虑过这个问题是因为按道理来说,两种速度不匹配的网卡互发应该是没问题的,高速的那个会适应低速的那个。就结果来说,我猜测,应该是FPGA的这个千兆网卡无法适应笔记本的百兆网卡,如果FPGA的另一端是一个10G的网卡,那么应该是可以适应的。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值