以前在广州创龙电子那买了块开发板,现在又买了他们一块FPGA的板子玩,由于初次玩FPGA,在搞EMIF通信的时候不是很懂,想请教一下各位大虾。
有没有大虾能解释一下OMAPL138怎么通过EMIF与FPGA通信的?
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.
Baohua,
读一个数据由setup, strobe, hold三个阶段组成,根据外部连接的设备的要求,进行相应的配置即可,最快能配多少由外部设备的IO特性决定。因为单位是cycle,且EMIF是100MHz,一个cycle是10ns,所以按每个阶段一个cycle,也最快为30ns读一个数。
但是,由于CPU访问EMIF,中间通过了SCR,bridge,所以不能连续起来,每个访问之间会有一段时间的延时(片选为高),大概在100ns左右的样子(与EMIF及CPU的工作频率相关),这个时间导致EMIF的CPU访问方式下效率较低。
所以如果想达到高的访问速度,可以用EDMA代替CPU去访问EMIF。
通过程序来看,你是对同一个地址读一次,写一次,再判断一次。只是不知道你是如何得出分别的时间的?不过这也不重要了。
#1. 这种测试意义不太,因为完全是单次操作EMIF和DDR,形不成流水线操作。一般来说测试都是做一个for循环,比如:
for(i=0, i<0x800000, i++
{
destAddress = sourceAddress;
}
#2. 你上面的操作只是打开了Cache,对于D-Cache,还需要配置MMU。
#3. 不知道你的函数实现,不如提供实际寄存器的值。
#4. 如果可以的话,配置到100MHz。
另外,真要想提高EMIF的速度,还是用DMA吧。