TI工程师您好
目前遇到一个问题,DSP6678与FPGA进行SRIO数据交互,需要测试SRIO传输速率。测试方式是DSP从DDR3中发送256M数据,每次发送1M数据,循环发送,发送256次,FPGA端接收,之后FPGA回传256M数据到DSP的DDR,通过门铃通知。DDR3运行的速率为1333MHz(已测,DDR读写速度符合理论值)。测试部分代码如下。
TSCL = 0;
TSCH = 0;
t_start = _itoll(TSCH, TSCL);
t_stop = _itoll(TSCH, TSCL);
t_overhead = t_stop - t_start;
//Start time
t_start = _itoll(TSCH, TSCL);
//Send 1M every time
for (i=0;i<256;i++)
{
uiCompletionCode=KeyStone_SRIO_DirectIO(SRC_START_ADDR+(i*1024*1024),DES_START_ADDR,0xFF,0x100000,0,0,SRIO_PKT_TYPE_NWRITE);
}
//End time
t_stop = _itoll(TSCH, TSCL);
cycles = (t_stop - t_start) - t_overhead;
speed = (unsigned long long)(256*1024*1024)*8/cycles*1000000000/1024/1024; //ByteCount*8bit*1G/time/1024K/1024M
目前测得的速度仅仅有7826Mbps,与理论值相差很大。进行了以下排查:
(1)使用该工程测试3.125G速率下的SRIO,速率为8628Mbps。
(2)上述方法测试的是对DDR3中的数据进行操纵,使用该方法,对程序生成的递增数组进行操作(64K),测速正常,速率为11000Mbps。
请问这个问题大概出在哪里,如何排查呢?
敬请指导,非常感谢。