在 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")
我正在尝试使用以太网电缆将数据从我的 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")