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.

TMS320C6678与FPGA通过SRIO通信

Other Parts Discussed in Thread: TMS320C6678

你好:

最近在调试TMS320C6678的SRIO与FPGA通信,是通过论坛提供的KeyStone_SRIO的例程调试的,目前已分别实现4条lane的单lane的通信,速度是1.25G的,参考时钟为125MHz,但是还有以下问题,我想请教下:
1、调试有时候会卡在如下代码处:
/*---------wait all enabled ports OK-------------*/
for(i=0; i<SRIO_MAX_PORT_NUM; i++)
{
if(srio_cfg->blockEn.bLogic_Port_EN[i])
{
while(0==(srioRegs->RIO_SP[i].RIO_SP_ERR_STAT&
CSL_SRIO_RIO_SP_ERR_STAT_PORT_OK_MASK));
}
}
例如当i=0时卡住,此时srioRegs->RIO_SP[i].RIO_SP_ERR_STAT的值等于1,也就是说其他位都0,意味这个port初始化未成功或未初始化,很疑惑。这个问题,有时候会出现,有时候后不出现,当出现的时候断电重新上电几次,就可能通过,这个问题可能和硬件有关吗?还是其他什么原因?
2、我的FPGA与DSP的通信是通过fpga发doorbell给DSP触发中断来实现的,当前者发给doorbell后,后者收到doorbell触发中断,通过判断中断标志发起NREAD类型的通信,但是我发现进行多组通信时,初始化完成后,发起第一次通信的时间比较长,大约在3秒左右,我拼命,我没做过DSP对DSP的SRIO通信,感觉不太正常,难道首次通信必须这么长时间吗?请帮忙分析下原因。
3、论坛提供的KeyStone_SRIO的例程main函数开始对pll,ddr的初始化部分,在我自己做的板子上初始化感觉不大对劲,因为进行SRIO_DIGITAL_LOOPBACK模式下测试时,凡是涉及到DDR的数据校验就会出现错误。而将KeyStone_SRIO的例程main函数开始对pll,ddr的初始化部分注释,改用CCS5的debug界面下,scripts--evmc6678l init functions--global_default_setup进行初始化,则不会出现前面的错误i,这个初始化是根据.gel文件来的(这个GEL文件在msdk的一个叫gel的文件夹中),我现在想问下在.gel中其提供的一些初始化数据中:

标写EVM是对TMDX6678L开发板来说的,而对KeyStone_SRIO的例程如欲改得和CCS5的debug界面下,scripts--evmc6678l init functions--global_default_setup进行初始化效果一样是将代码:

else if(SHANNON==dspType)
{
//DSP core speed
//KeyStone_main_PLL_init (20, 1); //for 50MHz input clock
KeyStone_main_PLL_init (10, 1); //for 100MHz input clock

//DDR speed = 66.67*20/1= 1333
KeyStone_DDR_PLL_init (20, 1);

Shannon_EVM_DDR_Init(666.667); //for 1333Mbps

serdes_cfg.commonSetup.inputRefClock_MHz = 312.5;

改为:

else if(SHANNON==dspType)
{
//DSP core speed
//KeyStone_main_PLL_init (20, 1); //for 50MHz input clock
KeyStone_main_PLL_init (39,1); //for 100MHz input clock

//DDR speed = 66.67*20/1= 1333
KeyStone_DDR_PLL_init (20, 0);

Shannon_EVM_DDR_Init(666.667); //for 1333Mbps

serdes_cfg.commonSetup.inputRefClock_MHz = 312.5;

不知这样改动是否正确?而且还有什么地方需要改动?表中PA PLL VCO Rate是什么意思,是对应了我标红部分吗?

问题有点多,麻烦了!
谢谢!!