金瑞

NIOS II的DMA之存储器之间的数据传输

0
阅读(2863)

今天一个哥们问我DMA的传输,他用我上一篇关于DMA串口传输的程序,因为他没怎么学过所以我给他讲不通,而且他根本不了解串口怎么连接!所以想做个DMA的存储器之间的传输。

下面的图是SOPC连接图,其中dma_0为上次的串口和SDRAM传输控制,注意上次讲错了——因为DMA是可以双向传输,即读写端口可以同时连载要传输的两个设备上。dma_1为这次要用到的,分别连到SDRAM和ON_CHIP_MEM上,其实可以不用ON_CHIP_MEM的,即DMA可以完成同一存储器之间不同地址的传输。


      下面是NIOS II C++源程序

需要注意的是:DMA传输数据长度必须是2的N次方(2^N),否则会出现错误的,另外可能由于SDRAM数据同步问题,如果接收数据的是SDRAM上的内存空间,结果会打印:Transfer failed !即,在比较两个空间数据时会出现不相等,但是调试的时候是可以,虽然我做了延时5秒钟,但是还是不能解决,希望高手解答!如果接收数据的是ON_CHIP_MEM的话是完全没有问题的。