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

6678的srio配置为4X模式初始化不成功(与switch相连)

大家好:

现有6678与一片switch(IDT-cps1848)通信的的情况(6678和1848各一块单板,通过高速接插件相连,已充分做到等长等条件)。6678的参考时钟为156.25MHZ,配置为4X模式,无论使用1.25G还是3.125G波特率,srio端口均不能正常打开,死在了以下函数中。

    /*———wait all enabled ports OK————-*/

    for(i=0; i<SRIO_MAX_PORT_NUM; i++)

    {

       if(srio_cfg->blockEn.bLogic_Port_EN[i])

       {

           while(0==(gpSRIO_regs->RIO_SP[i].RIO_SP_ERR_STAT&

              CSL_SRIO_RIO_SP_ERR_STAT_PORT_OK_MASK));

       }

    }

 

查看SPn_ERR_STAT寄存器为0x00000001,即Port Uninitialized=1。

 

Srio配置(主要)如下:

serdes_cfg.commonSetup.inputRefClock_MHz = 156.25;

    srio_cfg.loopback_mode= SRIO_NO_LOOPBACK;

    srio_cfg.device_ID_routing_config= dsp0_device_ID_routing_config;

    srio_cfg.uiNumDeviceId=

       sizeof(dsp0_device_ID_routing_config)/sizeof(SRIO_Device_ID_Routing_Config);

 

    serdes_cfg.commonSetup.loopBandwidth= SERDES_PLL_LOOP_BAND_MID;

    srio_cfg.serdes_cfg= &serdes_cfg;

 

    serdesLinkSetup.txOutputSwing    = 15; /*0~15 represents between 100 and 850 mVdfpp  */

    serdesLinkSetup.testPattern      = SERDES_TEST_DISABLED;

    serdesLinkSetup.rxAlign          = SERDES_RX_COMMA_ALIGNMENT_ENABLE;

    serdesLinkSetup.rxInvertPolarity = SERDES_RX_NORMAL_POLARITY;

    serdesLinkSetup.rxTermination    = SERDES_RX_TERM_COMMON_POINT_AC_COUPLE;

    serdesLinkSetup.rxEqualizerConfig= SERDES_RX_EQ_ADAPTIVE;

    serdesLinkSetup.rxCDR            = 5;

    serdesLinkSetup.txInvertPolarity = SERDES_TX_NORMAL_POLARITY;

    SRIO_Interrupts_Init();

serdesLinkSetup.linkSpeed_GHz= 3.125;

    srio_cfg.srio_1x2x4x_path_control= SRIO_PATH_CTL_4xLaneABCD;

    srio_identify_used_ports_lanes(srio_cfg.srio_1x2x4x_path_control);

 

    KeyStone_SRIO_Init(&srio_cfg);

 

 

由于配置为3.125G时,MPY和RATE的测试程序配置异常,故自行修改:根据KeyStone Architecture Serial Rapid IO (SRIO) User Guide的Table 3-7配置,并观察寄存器SRIO_SERDES_CFGPLL的Mpy位为10(00101000b);SRIO_SERDES_CFGRX[0-3]的RATE位为Half(0b01)。

 

最让人疑惑的是,寄存器SPn_CTL的Initialized Port Width位显示为0b000 – Single-lane port, lane 0,理论上应该是0b010 – Four-lane port。(查看寄存器PLM_SP(n)_PATH_CTL,PATH_CONFIG位为100 = Configuration 4 – 4 lanes, a maximum of 4 ports;PATH_MODE位为100 = Mode 4,可以发现,4X模式正常配置)

 

现已基本排除1848配置问题(1848与fpga通信正常)、板件和板子设计问题(srio走线充分等长)、DSP自身硬件问题(可以通过serdes的自闭环测试)、srio参考时钟问题(已用示波器观察)。

请问各位大牛,

1、在保持3.125G,4X模式的基础上,还有什么造成port初始化不通过的可能问题或配置错误?以及解决方案。(个人感觉配置错误的可能性较高)

2、port初始化不通过是否与上文和下文程序中的绿色标记处的参数有关:

/*TWPST1: Adjacent Post Cursor Tap Weight.

              If trace length is 4”, start with 20 (-10%).

              If trace length is between 4” and 10”, start with 27 (-27.5%).*/

              (18<<SERDES_TX_CFG_TWPST1_SHIFT)|

              (1<<SERDES_TX_CFG_TWPRE_SHIFT)|    /*TWPRE: The settings range from 0 to -17.5% in 2.5% steps.*/

3、参考帖子:

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/19854.aspx

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/64364.aspx

万分感激!!

Allen35065:

回复 user3500278:

看来还是和信号质量相关啊,Prescaler主要是配置VBUS的频率区间,看SRIO手册上有说明;

RSV暂时没有具体说明,一般都是按最新的Datasheet去处理。

赞(0)
未经允许不得转载:TI中文支持网 » 6678的srio配置为4X模式初始化不成功(与switch相连)
分享到: 更多 (0)