OMAPL138+FPGA通过EMIF异步模式通讯。
EMA_CLK 100MHz,寄存器参数配置如下:
R_STROBE = 3
W_STROBE = 3
TA = 2
ASIZE = 1h (16Bit)
配置源码如下:
/*CS4 FPGA*/
emifaRegs->CE4CFG = 0x00000000;
emifaRegs->CE4CFG |= CSL_EMIFA_CE4CFG_ASIZE_16BIT;
emifaRegs->CE4CFG |= 0x3 << CSL_EMIFA_CE4CFG_R_STROBE_SHIFT;
emifaRegs->CE4CFG |= 0x3 << CSL_EMIFA_CE4CFG_W_STROBE_SHIFT;
emifaRegs->CE4CFG |= 0x2 << CSL_EMIFA_CE4CFG_TA_SHIFT;
操作时发现EMIF的读取延时很高。如下图所示:
图中蓝线是片选信号。开始进行2次写入操作,然后连续进行5次读取操作。测试程序只对FPGA进行读写操作,且运行过程中ARM核未运行任何程序。
写入操作正常。片选长度为58ns,两次写入之间的延时为28ns。写入速率约为12MHz
读取操作不正常。片选长度为58ns,但两次读取操作之间的延时为308ns。读取速率约为3Mhz。远远低于应用要求。
通过DMA读取时,两次读取操作之间的延时减小为108ns,读取速率约为6MHz仍然很慢。如下图所示:
尝试修改过EMIF相关的寄存器配置,都不能改变这个数据读取后的延时。
请问这个延时是什么原因造成的?有什么方法可以提高EMIF的读取速率?