我采用EMIFA与FPGA通信,接受FPGA的数据。采用的是GPIO去触发EDMA3来读取总线数据,一次读取2048个字节,读取3000次后DMA产生完成中断。在读使能OE下降沿的时候FPGA给我数据,知道第二个下降沿的时候给我下一个数据。
现有如下问题:
1,EMIF采用的是正常模式,16数据总线,100M的速率,由于是异步读取数据,所以请问实际最高的数据读取速率可以达到多少?
2,我读取的数据出现错误,比如FPGA给我要读取的数据是 0x0100,0x0302,0x0405…………….. 但是我读取回来后的数据却是:0x0100, 0x0000, 0x0302, 0x0000, 0x0405. 0x0000,………每读取16位后会出现16位的全零数据。但是如果我变成8位总线来读取数据后,只是FPGA给的数据会丢掉8位,但是就不会出现0x0000穿插在中间的情况了。实在没有想到是什么原因,请教帮解答一下,谢谢。
Tony Tang:
不好意思~~~
#1. 通过EDMA,EMIFA的最高速度太概能到13Mbyte/位宽的样子。
#2. 应该是没有地址线,是按固定地址读取的吧。DMA的参数是如何设置的?