This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6748的EMIFA配置问题

请教个问题,配置EMIFA的CS0使用的SDRAM接口,参数是数据位宽16、突发长度为8。EMIFA另一端为模拟一片SDRAM的FPGA,FPGA数据总线输出是从1开始累加的数,一个突发读到的应该是从1到8的8个数据。在DSP代码中直接用CPU读取CS0地址的short类型值,Byte地址每次累加2(short指针加1),连续读8个。但是DSP得到的结果是[1,2,1,2,1,2,1,2]。从FPGA抓到的waveform看抓到的数据是这样的:当每次突发读取开始后在读取第一个数据的时候就发出了突发中止命令,连续读了多个burst。附件附了抓取的前三个突发,其他突发现象一致;由于不是用的同步时钟抓取的,所以CLK看起来不是很均匀。当DSP用memcpy函数读取SDRAM时,能得到[1,2,3,4,1,2,3,4],突发在第三个数据时发出中止命令。现象大概就是这样的,请问出现这种情况的原因是什么,或者怎么正确使用配置EMIFA的SDRAM接口? 谢谢

waveform.pdf
  • 因为CPU读不是连续的,即使你用for循环,其实你看对应的汇编代码,它还是一个一个单个的访问,想要连续的访问需要用EDMA, 你可以用EDMA来访问测一下波形对比。

    另外,基本上没听说过有人用EMIF的SDRAM模式与FPGA通讯,一般都是用异步模式。