在 fpga 上接收 UDP 数据包

Receice UDP Packets on fpga

我正在尝试使用以太网电缆将数据从我的 PC 发送到 FPGA。

我使用 this code 来接收从我的 PC 发送到 FPGA(通过以太网电缆)的数据包。我使用 ila(集成逻辑调试器)在 FPGA 上捕获接收到的数据包。

当我在 linux 电脑上使用 ifconfig 对 FPGA 进行编程后,我看到以下内容:(我隐藏了我的 MAC 地址)

enp7s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1490
        ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1427  bytes 199195 (199.1 KB)
        TX errors 1071  dropped 0 overruns 0  carrier 0  collisions 0

正如我从 this 类似问题中了解到的,我的 FPGA 没有任何特定的 IP 地址甚至端口号。它根据它的 MAC 地址监听在 RXD(以太网 mii)上发送的每个数据包。

即使我没有任何特定的 IP 和端口,我如何将数据包发送到 FPGA?

我想我应该在我的 PC 上为我的 FPGA 设置端口和 IP(不需要更改硬件)但我不知道该怎么做?

选项很少。

  • 如果 FPGA 直接连接到您的接口,那么它会收到您发送的任何内容,所以不用担心网络配置
  • 如果你在两者之间有一个交换机,你可以发送一个广播消息,该消息将被转发到网络中的所有设备(假设你的交换机中没有像 vlan 或类似的复杂配置)。

关于广播:https://en.wikipedia.org/wiki/Broadcasting_(networking) 它只是一个 dest mac with FFs

至于实际发送,您可以使用 python 生成并发送数据包。 scapy 是一个非常简单的包,应该可以帮助你 文档:https://scapy.readthedocs.io/en/latest/usage.html

看看这个具体的例子:

sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="eth1")