0

我正在 zybo 板上构建一些东西,所以使用 Zynq 设备。

我想从 CPU 写入主存储器,并用 FPGA 从它读取,以便将 CPU 结果写入另一个设备。

我很确定我需要使用 AXI 总线来执行此操作,但我无法找到解决问题的最佳方法。我是否:

  • 自己制作完整的 AXI 外设?大概是一个主机,它向主内存发出读取请求,然后完成它们。我发现很难找到有关如何实际制作 AXI 外设的资源,我从哪里开始寻找简单的解释。
  • 使用其中一个 Xilinx IP 内核为我处理 AXI 总线,但其中有很多,我不确定最好使用哪一个。

无论是什么,它都需要速度快,并且需要能够从我板上的 DDR 内存中进行大量读取。该内存还需要可由 CPU 写入。

谢谢!

4

3 回答 3

3

一个简单的选择是在框图中使用 AXI-Stream FIFO 组件。然后您可以编写一个 AXI-Stream 从机来接收数据。因此 ARM 将通过 AXI 写入 FIFO,而您的组件会将数据从 FIFO 中流出。无需做任何 AXI 工作。

详情请查看 Xilinx 的PG080

于 2016-04-21T17:14:29.073 回答
1

如果您可以访问 vivado-hls 工具。然后在突发方案下将数据从主存储器传输到 FPGA 存储器(例如,BRAM)将是一种解决方案。只需要在代码中使用memcpy,然后综合工具会自动生成主 IP,非常快速和可靠。

于 2016-04-19T10:30:57.490 回答
1

选项 1:创建您自己的 AXI 主机。出于配置目的,您可能还需要创建一个 AXI 从站。我发现这篇文章对开始使用 AXI 很有帮助: http ://silica.com/wps/wcm/connect/88aa13e1-4ba4-4ed9-8247-65ad45c59129/SILICA_Xilinx_Designing_a_custom_axi_slave_rev1.pdf?MOD=AJPERES&CVID=kW6xDPd 当然,完整的 AXI 参考规范在这里: http ://www.gstitt.ece.ufl.edu/courses/fall15/eel4720_5721/labs/refs/AXI4_specification.pdf

选项 2:使用 Xilinx AXI DMA 组件设置 DDR 存储器和 AXI 流之间的 DMA 传输。您需要将您的逻辑连接到 Xilinx DMA 组件的“AXI 流”。AXI 流通常比创建新的高性能 AXI 主机更容易实现。这种方法支持非常高的带宽,并且可以进行连续流和基于数据包的传输。它还支持每个数据包的元数据。Xilinx AXI DMA 组件位于: http ://www.xilinx.com/products/intellectual-property/axi_dma.html Xilinx 还为此提供了软件驱动程序。

于 2016-04-22T19:29:48.760 回答