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.

SRIO的3.125Gbps和5Gbps跑不通,请教大家!

大家好!

   我的板子上有两片6678和一片switch(IDT-cps1848),在调试SRIO时,使用1.25G和2.5G波特率,srio x4模式,通过switch两片6678收发数据正确。

但是使用3.125G和5G波特率时,srio端口不能打开。

我的程序是基于论坛keystone_srio的程序更改的:

板子srio参考时钟用的是156.25MHz,以3.125Gbps为例

serdes_cfg.commonSetup.inputRefClock_MHz = 156.25;

serdesLinkSetup.linkSpeed_GHz=3.125;   //使用3.125Gbps

srio_cfg.srio_1x2x4x_path_control=SRIO_PATH_CTL_4xLaneABCD;  //使用4xsrio

在Keystone_SRIO_HyperLink_Serdes_init(srio_cfg->serdes_cfg, srioSerdesRegs);函数中更改srio速率的配置:

按照srio_userGuide手册中page 2-12到2-20配置SRIO_SERDES_CFGPLL的MPY(RefClk=156.25MHz,DataRate=3.125Gbps,so MPY=10,Rate=Half(0b01))

pllMpy= 10;

serdesRegs->CFGPLL = 1| /*ENPLL*/
        (serdes_cfg->commonSetup.loopBandwidth<<11)|
        (vcoRange<<9)|
        ((Uint32)(pllMpy*4)<<1);

serdesRegs->link[i].CFGRX= 0x440495;     //RATE=0b01
            if(i==0)
                serdesRegs->link[i].CFGTX= 0x180795;
            else
                serdesRegs->link[i].CFGTX= 0x080795;

将switch的端口配置成3.125Gbps模式后,运行程序最后开在这了

    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));
        }
    }

按照上面的方式,使用1.25G和2.5G可以正确收发数据,但是3.125G和5G就不行了,请各位大牛工程师帮我看看哪里有问题?谢谢

(PCB上的srio lane差分线长度误差最大有10mil,应该属于正常范围)

x 出现错误。请重试或与管理员联系。