背景介绍:
芯片:DSP:C6455,FPGA:XCV5
每帧数据量:320*300*16bit
传输方式:EMIF 32位传输 异步传输 外部空间CE2
DSP内部时钟:1GHz
数据频率:50Hz
1、由于每一帧的数据量有些大,FPGA存储空间限制,无法一次性写入CE2,分300次写入,每次写入160*32bit,
利用for循环300次,使用mymcpy读取,读取完一帧数据需要3.6*10^6个时钟周期,优化后需要1.7*10^6个时钟
周期,超时严重,无法满足实时性要求;
2、在使用优化后,传输时,每一个32位数据会被读取两次,即在一个CE下拉周期中,AOE下拉两次;
请问:1、有没有其他方式实现EMIF读取,比如DMA读取方式,速度会不会变快
2、如何解决优化时,在一个CE下拉周期中,AOE下拉两次的问题
咫尺和天涯:
我的理解是你用的是CPU读取,可以考虑尝试使用EDMA读取,但是需要注意EDMA每次传输数据大小也有限制。
Tony Tang:
eric zhang61、有没有其他方式实现EMIF读取,比如DMA读取方式,速度会不会变快
EDMA会快很多很多。
eric zhang62、如何解决优化时,在一个CE下拉周期中,AOE下拉两次的问题
你的EMIF是配置成的多少位宽?代码里是按short,还是int型访问的?