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.

OMAPL138通过EMIF与FPGA通信问题



        以前在广州创龙电子那买了块开发板,现在又买了他们一块FPGA的板子玩,由于初次玩FPGA,在搞EMIF通信的时候不是很懂,想请教一下各位大虾。

有没有大虾能解释一下OMAPL138怎么通过EMIF与FPGA通信的?

  • 在FPGA端按照EMIF时序实现一个异步从接口,L138访问FPGA时跟访问异步内存方式一样。

  • Hi Tony,

    我最近做数据采集板,数据从AD采集过来,通过FPGA送到DSP。我使用的是EMIF异步EDMA传输方式,16bit数据位宽。

    我想问一下,DSP通过EMIF接口,最快能几个CLK能读取一次16bit?我现在的貌似要14CLK才能读取一次(16bit).

  • Hi Tony,

    刚刚说的有些问题,应该是6个EMIF CLK才能读取一个16bit数据。时序图如附件所示,不知道可不可以更快?最快可以几个CLK?多谢!

     

    我最近做数据采集板,数据从AD采集过来,通过FPGA送到DSP。我使用的是EMIF异步EDMA传输方式,16bit数据位宽。

    我想问一下,DSP通过EMIF接口,最快能几个CLK能读取一次16bit?我现在的貌似要14CLK才能读取一次(16bit).

  • Baohua,

    读一个数据由setup, strobe, hold三个阶段组成,根据外部连接的设备的要求,进行相应的配置即可,最快能配多少由外部设备的IO特性决定。因为单位是cycle,且EMIF是100MHz,一个cycle是10ns,所以按每个阶段一个cycle,也最快为30ns读一个数。

    但是,由于CPU访问EMIF,中间通过了SCR,bridge,所以不能连续起来,每个访问之间会有一段时间的延时(片选为高),大概在100ns左右的样子(与EMIF及CPU的工作频率相关),这个时间导致EMIF的CPU访问方式下效率较低。

    所以如果想达到高的访问速度,可以用EDMA代替CPU去访问EMIF。

  • 了解,多谢!

  • 你好,我也在搞fpga和138和数据采集能不能请教一些问题我们qq121757305

  • 你好,我也在搞fpga和138和数据采集能不能请教一些问题我们qq121757305

  • Hi TonyTang

    俺也遇到一个感觉很奇怪的问题。就是CPU从EMIFA读取8M的数据存入mDDR。做一个数据的采集和回放。

    程序运行在mDDR里面。示例代码如下,后面注释是存取8M数据各自的大概耗时。

    mDDR控制器时钟为150MHz。为何效率如此低呢?

  • tang  会不是mDDR也和SCR,bridge有关,导致效率比较低呢?

  • #1. 是ARM端,还是DSP端的访问?

    #2. Cache是否使能?是否知道如何确定是使能的?

    #3. EMIFA的时序是否知道如何配置?

    #4. EMIFA的模块时钟配置是多少?

    不是很理解上面的数据,一条代码的运行要几秒钟,怎么也不可能,如果说是8M,循环在哪里?

  •  Tang 你好

    不是一条语句耗时几秒,是循环8M次总共耗时。++testdata.length是循环计数,到达8M次的话会有一个led被点亮。

    #1  程序运行在ARM端

    #2   CP15ICacheEnable(); CP15DCacheEnable();这两句是不是可以使能cache

    #3  时序配置应该没问题,都是以前使用的配置。EMIF_CSxCFG(0,0,1,5,5,1,5,1,4,1);

    #4  时钟75MHz

  • EMIF连接FPGA需要设置EMIFA_WAIT引脚吧?

  • 通过程序来看,你是对同一个地址读一次,写一次,再判断一次。只是不知道你是如何得出分别的时间的?不过这也不重要了。

    #1. 这种测试意义不太,因为完全是单次操作EMIF和DDR,形不成流水线操作。一般来说测试都是做一个for循环,比如:

    for(i=0, i<0x800000, i++

    {

    destAddress = sourceAddress;

    }

    #2. 你上面的操作只是打开了Cache,对于D-Cache,还需要配置MMU。

    #3. 不知道你的函数实现,不如提供实际寄存器的值。

    #4. 如果可以的话,配置到100MHz。

    另外,真要想提高EMIF的速度,还是用DMA吧。

  • 你好,我也在做L138和fpga通信的事,可否加我qq,1549839022