[X]关闭

PCIE如何产生中断提供给上位机使用

文档创建者:叶随风
浏览次数:5030
最后更新:2019-09-05
本帖最后由 叶随风 于 2019-9-5 20:23 编辑

一:数据存入DDR之前有两个方案:
(1)      CHO7中通过VDMA模块,存入DDR,存入一帧(一定量的数据)会产生中断,上位机接收到中断后就可以通过PCIE从DDR中取出数据保存到上位机分配的内存空间。
(2)      CH10中通过FDMA模块,存入DDR,存入一帧(一定量的数据),需要在上位机按照帧速要求定时(产生假中断)通过PCIE从DDR中取出数据保存到上位机分配的内存空间。

1)问题:现在是想通过FDMA将数据传输到DDR中,DDR有三块缓存空间,这样只能定时通过PCIE从DDR取数据。由于我们课题组主要是做相机,现在做的相当于一个测试系统,需要准确的传输数据。我们的相机是单比特相机,一个像素点一帧只有一位数据,所以帧速很快40Kfps,所以准备打包800帧进行传输(800帧数据量16KB*800,时间是20ms)。在上位机上定时(产生假中断)从FPGA中取数据时如果时间短的话,读数据可能会重复从DDR某个块中(DDR有三块缓存空间)重复读出;如果定时时间长的话,就会累计最终会漏掉一包,循环下去不断漏包(800帧)。
         2)预想的解决方法:
1. 想问下VDMA是专门用来处理RGB那种图片数据的吗?我们摄像头产生的数据打包后能通过VDMA传到DDR?还是说VDMA只能处理那RGB,RGBA的
2.就是我们想使用FDMA的情况下模拟产生中断,一帧写入DDR后立马产生中断,想知道VDMA产生的中断是什么样的信号,是存到VDMA的某个寄存器里的值,还是一个类似脉冲的信号。

read_device(event1_device,0,1,(BYTE *)&val);上位机中该条语句检测中断时,信号是来自上图的usr+irq_req[1:0]?接着的下条语句为什么清除VDMA的状态寄存器。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

发表评论已发布 1

uisrc

发表于 2019-9-5 20:24:21 | 显示全部楼层

1、上位机不是实时系统,当中断产生后也不会立马处理,所以开了一个线程,在线程里面不断去读取中断标志,看是否有中断产生。
2、你可以用FDMA的例子用户代码部分产生一个中断,给XDMA,在上位机里面也开一个线程不断读取中断标志就可以了。只要速度足够处理不要导致中断丢失就行。
越努力越幸运!加油!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则