0

我目前在 PyQT5(客户端)中制作了一个 GUI,并使用 C 代码制作了一个服务器。目标是将输入从 GUI 发送到服务器,然后服务器与 FPGA 接口以产生我将从示波器读取的信号(我使用 Red Pitaya 作为我的板)。我目前已经制作了 GUI,并且能够将数据发送到它成功接收的服务器(当服务器在红色火龙果上运行时),但是,我不确定如何使用 Vivado 2019.1 将服务器接收到的数据发送到我在框图中创建的特定输入。我假设

我必须为输入引脚分配一个红色火龙果端口,但不确定在 Vivado 或 C 服务器中的何处/如何执行此操作。

基本上,任何人都可以指出如何将我的 C 服务器代码与 Vivado 中的框图输入接口。

我的红色火龙果板通过以太网连接到我的 PC,并有自己的 IP 地址,我用它在 PuTTY 中运行它的 linux 服务器。我使用 gcc 在 PuTTY shell 中运行服务器。

编辑:很抱歉模棱两可。我要做的是将 Vivado 生成的 .bit 文件加载到我的 Red Pitaya 中,然后在 redpitaya linux shell 中运行我的服务器(TCP/IP)(使用 PuTTY)。关键是,我希望能够将我从 GUI 输入的数据发送到服务器(它将在红色火龙果的 linux 服务器上运行),然后将该数据发送到我的 Vivado 项目中的输入,这将位于加载到板上的 .bit 文件(输入)上。

如果我说的不清楚或者我以错误的方式处理这个问题,请告诉我!

4

3 回答 3

0

将数据从 Zynq PS(处理系统,Linux)发送到 Zynq PL(可编程逻辑,FPGA)的最简单方法是使用 AXI GPIO。

在您的 Vivado 设计中,您必须:

  • 实例化 AXI GPIO,配置其宽度和方向(读取或写入)。
  • 我建议使用 Vivado 的连接自动化工具将 AXI GPIO 正确连接到 Zynq 处理系统。
  • 查看 Vivado 中的地址编辑器并记下 GPIO 端口的 AXI 地址。

在您的 C/C++ 代码中,您必须:

  • 进行内存映射并将变量分配给 AXI GPIO 的内存地址。
  • 读/写该地址。

例子:

我最近构建了一个图形设计工具,用于对 Redpitaya 的 FPGA ( DSPsandbox-Canvas ) 进行编程,它包括 AXI GPIO 和用于通过 PS 访问它们的 C 代码。

你可以在这里下载项目的源代码。如果您打开 Vivado 项目/Zynq_7010/Zynq_PL/Canvas.xpr,您将看到与 Zynq PS 的通信是通过上述 AXI GPIO 完成的。为了在 Linux 中访问这些 GPIO,我使用/Zynq_7010/Zynq_PS/constantsLoader.c来执行内存映射,读取一组 .txt 文件并相应地配置 GPIO。我相信您可以修改此代码以将其放置在您的 TCP 服务器中。

于 2019-11-08T07:20:12.347 回答
0

我的问题是如何将服务器中的数据写入板上的 32 位输入。

回答你的问题的一大麻烦是整理我们的命名法(我们所说的我们谈论的东西)。

通常,当我们谈论“输入”和“FPGA 代码”时,这意味着 FPGA 上的输入端口。输入意味着它从外部源获取数据。您的 CPU 无法向该输入发送数据。

也许您指的是 FPGA 上的一个“块”,它执行一个功能并且可以从 CPU 访问。(因为那个'块有一个连接到CPU总线的读/写端口。)这通常被称为'外围设备'。

你问问题的方式让我怀疑其他人制造了这样的外围设备。或者您甚至退后一步,您仍然需要制作外围设备。也许你可以展示你谈论的图表的一部分。

如果您已经有外围设备,您可以打开显示“图表”的选项卡旁边的“地址”选项卡。在那里,您可以找到所有外围设备的列表以及访问它们所需的 CPU 地址。

除了地址,您还应该知道外围设备是如何工作的。如果有内部寄存器以及它们的作用。简而言之:但是制造的外围设备应该为它制作手册。

如果您甚至没有外设,而只有一个(浮动、未连接的)输入端口,我们/我无法帮助您,因为教您 HDL 以及如何使用 AXI 总线制作外设需要数周时间。

于 2019-08-20T17:00:54.940 回答
0

在这里,我假设现在(使用以太网连接)可以访问 FPGA SoC 的 ARM 部分(您的主板很可能有 Xilinx Zynq 7010 SoC 或类似的东西)。

首先,您需要为您的模块创建一个自定义 IP 核,以使您的自定义模块符合 AXI4 协议(Vivado 中有一个工具可以自动生成接口代码,您只需正确实例化您的模块并进行正确的端口连接)。使用模块设计工具(在 Vivado 中),您需要将您的定制 IP 正确连接到处理器 IP 内核(将处理器的 AXI 主设备连接到您的定制 IP 内核的 AXI 从设备),该工具可以帮助您进行正确的连接.

可以自动生成自定义设计的头文件(用于正确寻址)。您可以使用生成的标头编写 C 代码,该代码从服务器获取指令,转换为您的自定义 IP 可以理解的指令,并将它们发送到正确的地址,以便能够正确控制您的自定义块。

编辑 1:这些YouTube 教程可能对您 有帮助1、2、3

于 2019-08-20T12:09:39.063 回答