TI中文支持网
TI专业的中文技术问题搜集分享网站

如何实现 C6748 EMIF 异步 + EDMA 的组合

大家好,我需要用C6748 EMIF 16bit宽度 从FPGA拿数据,需要40MB/S 带宽

CS用4 BANK

以下是我配置代码

void PSCInit(void)
{
    // 使能 GPIO 模块
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);

    // 使能 EMIFA 模块
    PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
}

void EMIFAInit(void)
{
    // 配置 EMIFA 相关复用引脚
    //AD7606PinMuxSetup();

    // 配置数据总线 16bit
    EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4, EMIFA_DATA_BUSWITTH_16BIT);

    // 选择 Normal 模式
    EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4, EMIFA_ASYNC_INTERFACE_NORMAL_MODE);

    // 禁止WAIT引脚
    EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4, EMIFA_EXTENDED_WAIT_DISABLE);

    // 配置 W_SETUP/R_SETUP W_STROBE/R_STROBE W_HOLD/R_HOLD   TA 等参数
    EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4, EMIFA_ASYNC_WAITTIME_CONFIG(1, 2 , 1, 1, 2, 1, 0 ));
}

main

{    PSCInit();
    EMIFAInit();

while(1)

{emif_rbuffer[0] = ((short *)SOC_EMIFA_CS4_ADDR)[0];

}

}

通过逻辑分析仪看 RD 和CS4的波形,如下:

RD和CS 频率是3.2MHz, x 16bit = 6.4MB/s,不足以满足要求

我看到可以使用 EDMA的方式来对EMIF进行操作,总带宽可以到40MB/S

请问有相关的例程可以参考吗?谢谢

Tony Tang:

我这里有个EMIFA的性能总结对比,你写的B是bit还是byte? 如果是bit还是可以达到的。

user5233520:

回复 Tony Tang:

大 B , byte
不知 C6748用EDMAEMIF可以跑到 40MByte/s 吗?

Shine:

回复 user5233520:

可以看一下下面测试的数值。
processors.wiki.ti.com/…/AM1x_Throughput_Measurements

Ryan BL:

基于性能考虑,使用EDMA搬移并将异步时延全配置为最低是可以达到的,但是太不划算了,EDMA搬移EMIF数据就将你的互联交换总线带宽占用了将近50%,会严重影响你的其他子系统性能的.
建议upp,甚至同步EMIF将时延调为最低的方式都能好很多.

user5233520:

回复 Ryan BL:

你好, 嗯嗯,谢谢你的建议。我这个板子上 EMIF的CLK 没有引出,所以只能选用异步模式。

我想请教一下, EMIF无论是 同步还是异步,加上EDMA,总带宽也就40MB/S, 与DDR内存的带宽相比,这个带宽应该占用的比较少吧,不知你说的 50% 是怎么引起的呢?

因为在我的理解里,如果用DMA方式传输,EMIF 以最高40MB/S速率 访问总线,而总线带宽怎么也有几百MB/S吧, 假设EMIF不停的往DDR内存里传输数据,内存带宽裕量还有很多吧?

Tony Tang:

回复 user5233520:

user5233520我这个板子上 EMIF的CLK 没有引出,所以只能选用异步模式。

你都已经有板子了,直接测一下速度不是更好?

user5233520:

回复 Ryan BL:

十分感谢你的回答,说的十分详细具体。
考虑性能带宽的占用,可能用UPP会好很多,或者使用更高级的DSP。

Tony Tang:

回复 Ryan BL:

SCR不是点对点的总线。只是slave端口不冲突,可以同时并发。

Ryan BL:

回复 Ryan BL:

Shine Zhang给出的测试里面EDMA搬移DDR能达到EDMA理论带宽的90%,是因为DDR2的实际有效带宽可以达到那么大,我查了下EVM上的DDR是支持DDR2 – 800的,意味着其在800MTps的速率下,理论速率可以达到800M * 16/8 == 1600MBps,实际测试使用的时候应该是降频了的. 目测使用的133*2M,带宽能达到266 * 16/2 == 532,刚好和EDMA的最高速率匹配.

赞(0)
未经允许不得转载:TI中文支持网 » 如何实现 C6748 EMIF 异步 + EDMA 的组合
分享到: 更多 (0)