本帖最后由 叶随风 于 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的状态寄存器。
|