我在zybo板上构建一些东西,所以使用Zynq设备。
我想从CPU写入主内存,并使用FPGA读取它,以便将CPU结果写入另一台设备。
我很确定我需要使用AXI总线来做这件事,但我无法找到解决问题的最佳方法。我:
无论是什么,它都需要快速,并且需要能够从我板上的DDR内存中进行大量读取。该内存也需要由CPU写入。
谢谢!
答案 0 :(得分:3)
一个简单的选择是在程序框图中使用AXI-Stream FIFO组件。然后,您可以编写AXI-Stream从站以接收数据。所以ARM会通过AXI写入FIFO,你的组件会将数据从FIFO中流出。无需做任何AXI工作。
详细了解Xilinx的PG080。
答案 1 :(得分:1)
如果您有权访问vivado-hls工具。 然后,在突发方案下将数据从主存储器传输到FPGA存储器(例如,BRAM)将是一种解决方案。 只需在代码中使用 memcpy ,然后综合工具就会自动生成非常快速可靠的主IP。
答案 2 :(得分: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还为此提供了软件驱动程序。