赛灵思
直播中

白珊

7年用户 129经验值
私信 关注
[问答]

如何通过PCIe进行FPGA到PC的通信?

嗨,
我正在使用超大规模的FPGA板。
我可以通过DMA子系统IP和DDR控制器IP将数据从PC传输到DDR。
我打算在FPGA中进行一些处理,然后更新数据,以便PC可以读取。
如何通过PCIe指示PC处理结束?
是否有任何示例设计可以通过PCIe DMA子系统从FPGA在PC上产生中断。
如何在PC端写入由PCIe中断触发的中断服务程序?
谢谢,
尼基尔

回帖(2)

陈键

2020-5-8 10:12:51
@muzaffer
如果我的理解如下,请告诉我。
从FPGA端生成中断
DMA子系统IP的usr_irq_req必须高,我们需要等到usr_irq_ack变高。
这将通过PCIe向PC发送中断。
我们还需要在触发另一个中断之前等待另一个usr_irq_ack。
在PC端处理中断
关于如何做这方面,我并不是很清楚。
有人能指出我的PCIe中断或其他文档的hello world程序。
我在Ubuntu 16.04中这样做。
当我在网上搜索资料时,结果显示了linux的复杂细节。
举报

陈苏文

2020-5-8 10:32:22
@nikhilmaheshnot确定usr_irq_req。
在映射到我使用的pcie ip的axi内存中,我很确定msi请求在其名称中提到了msi。
也许你的块没有,但我再次阅读文档以确保usr_irq_req是正确的。
至于linux pcie中断处理,你可以从这里开始:http://stackoverflow.com/questions/24264030/pcie-interrupt-number
有一个如何显示如何编写Linux内核驱动程序来管理pcie枚举,msi启用等。另请查看:http://haifux.org/lectures/256/haifux-pcie.pdf
- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分