如何将Avalon片上存储器FIFO连接到用于PCI Express的V系列MM DMA?

时间:2019-07-04 23:24:21

标签: c verilog quartus pci-e qsys

我正在尝试从连接到FPGA(Stratix V)的PC上运行的C程序读写片上FIFO。在过去的一周中,我一直在互联网上不停地阅读,并且遇到过许多不同的关键概念,但是无法相互理解,因此我无法理解如何在我的计算机上实现数据传输自己的。

但是,我确实在用户指南磁盘上找到了一个示例程序,该程序补充了PCIE接口并写入了片上存储器和DDR3存储器,并且包括一个我可以在PC端使用的C库,其中包含{ {1}},PCIE_Read32()及其对应的对象。

由于我仍然不完全了解整个PCIE / DMA / AVALON系统的工作原理,因此我非常感谢平台设计人员提供有关如何将FIFO连接到该系统的信息。

我尝试将PCIE的读取主设备连接到fifo的外部,而将PCIE的写入主设备连接到fifo的外部,但是出现以下错误:

  

“错误:[...] pcie_256_dma.dma_wr_master是只读的,而pcie_256_dma.dma_wr_master是只读的。”

(这完全没有意义)

  

“错误:[...]:fifo_0.out是只读的,而pcie_256_dma.dma_rd_master是只读的。”

以相反的方式连接它们(我不知道如何处理它们而使PCIE_DmaRead()in_csr引脚悬空了),但这是行不通的。

我希望将设计发布到平台设计器窗口中作为参考,但是我不确定如何做到这一点。

这是我尝试用于从PC访问FIFO的语法:

in_irq

和写类似。我也尝试过其他版本

#include "stdafx.h"

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include "PCIE.h"

#define DEMO_PCIE_USER_BAR      PCIE_BAR4
#define FIFO_WRITE_MEM_ADDR         0x80020
#define FIFO_READ_MEM_ADDR          0x80024

...
BOOL bPass;
    int* push;

    bPass = PCIE_Read32(hPCIe, DEMO_PCIE_USER_BAR, FIFO_READ_MEM_ADDR,(DWORD)push);

发生的事情是“ FIFO”的行为类似于32位寄存器。如果我写一个值,我可以读取任意多次。如果我写另一个值,那将成为读取的值。

0 个答案:

没有答案