是否可以将发送到 FPGA 的 UDP 数据包限制为单个主机?

问题描述 投票:0回答:1

我正在尝试将数据从 Windows 11 PC 上的 Qt 应用程序发送到配备 Xilinx TEMAC IP 核的 Arty A7-100T。

目前,Qt 应用程序仅包含一个启动/停止切换按钮,按下该按钮时,会将一个字节的数据发送到 FPGA。如果字节是特定数字,则板载 LED 之一会切换。

这是因为按下 Qt GUI 上的按钮将切换 LED 状态,但有时 LED 会在我不单击任何东西的情况下切换,这意味着我的 PC 上可能有其他东西正在向 FPGA 发送数据。无论我是否运行 Qt 应用程序,都会发生这种情况,但如果我从 FPGA 拔掉以太网,则不会发生这种情况。

我认为将 bindMode 设置为 DontShareAddress 的 QAbstractSocket::bind 命令会阻止其他服务与 FPGA 通信,但我想事实并非如此。请告诉我如何确保我的 Qt 应用程序唯一向 FPGA 发送数据。预先感谢。

qt udp fpga
1个回答
0
投票

按照你的意思是不可能的,不。您可以控制它侦听的通道(在本例中为端口),但您无法控制谁在该端口上发言。您可以尝试找到一个空端口,就像您所做的那样,但正如您所发现的,无法保证没有其他人在该端口上进行通话。

您可以做的是创建一个只有您的 FPGA 和 Qt 应用程序有权访问的协议。

例如,您可以在两端硬编码“密码”。假设您决定将其设置为 7 位数字,密码为 1111111。那么 Qt 应用程序可以发送 8 个字节,前 7 个字节全为 1,最后一个字节是您激活 LED 的特定数字。您的 FPGA 会将每个字节存储到大小为 8 字节的 FIFO 缓冲区中。然后它将前 7 个与密码进行比较;如果它们都是 1,那么它可以检查最后一个字节是否是该特定数字并切换 LED。

这就是我们有协议和加密的原因;在任何网络上,从 LAN 到大学“专用”网络再到整个互联网,没有听众可以知道是谁在说话。同样,发言者也无法知道谁在听。绝对确保只有一台主机与您的 FPGA 通信的唯一方法是创建一个仅包含您的 FPGA 和所需主机的网络。

© www.soinside.com 2019 - 2024. All rights reserved.