TIwilliam hill官网
直播中

马雁翔

7年用户 191经验值
私信 关注
[问答]

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
    [

       if(srio_cfg->blockEn.bLogic_Port_EN)

       [

           while(0==(gpSRIO_regs->RIO_SP.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<
              (1< 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
万分感激!!

回帖(3)

王英

2018-6-21 02:28:50
一般是CSR/CAR寄存器配置不对造成的;
你可以试试 
1. 1X模式通不通?
2. 两边的地址是否一致(8 or 16)?
3. PER_SET_CTNL里的Prescaler配的值是否正确?
4. 两边的波特率是否一致?
举报

马雁翔

2018-6-21 02:39:07
引用: hdfsf 发表于 2018-6-21 02:28
一般是CSR/CAR寄存器配置不对造成的;
你可以试试 
1. 1X模式通不通?

您好!非常感谢您的回答!
问题已经解决。主要是以下2个问题导致:
1、6678在硬件配置时,有1,2个推荐悬空的RSV的管脚没有悬空;
2、srio的走线虽然做到等长和阻抗匹配,但过孔较多(单路有6个过孔)、接插件板布线间隔非常有限(只能从孔间隙间走线),导致信号噪声严重(用示波器看眼图基本没眼,但可能和没有差分探头有关)。
现将速率降到2.5GHz即可正常通信。
虽然问题解决了,但还有几个问题:
1、Prescaler配置是用来改变什么参数的?
2、RSV悬空管脚明显和外设功能相关,能否在数据手册中具体说明?
3、self test kit中srio工程配置时,速率配为3.125GHz时的MPY和RATE值不对,能否修正?
谢谢!
举报

王英

2018-6-21 02:44:34
引用: 影子王子 发表于 2018-6-21 02:39
您好!非常感谢您的回答!
问题已经解决。主要是以下2个问题导致:
1、6678在硬件配置时,有1,2个推荐悬空的RSV的管脚没有悬空;

看来还是和信号质量相关啊,Prescaler主要是配置VBUS的频率区间,看SRIO手册上有说明;
RSV暂时没有具体说明,一般都是按最新的Datasheet去处理。
举报

更多回帖

×
20
完善资料,
赚取积分