大家好,我需要用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的最高速率匹配.
TI中文支持网

