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

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,应该属于正常范围)

Allen35065:

你可以先参照http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/18837.aspx看看端口什么状态?

另外可以先测试一下内部loopback有没有问题

qian cui:

回复 Allen35065:

你好,我需要通过CPS1848使得DSP6678和FPGA之间进行通信,有没有相关的例子,以及初始化1848的代码或文档。非常感激

Bruce Yang:

回复 qian cui:

请查看1848 user manual,上面有讲初始化流程

qian cui:

回复 Bruce Yang:

你好,我按照1848手册配置dsp和fpga端口分别做回环,路由表配置的回环。dsp第一次上电后可以回环,不下电再次调试都失败,好像只有每次重新上电才可以,请问是什么问题?
Fpga端口和dsp配置的一样,回环不能成功,请问怎么解决?
谢谢

tao yang3:

回复 qian cui:

你好, 请问你用1848这个东西srio跑通了吗??

我这边两个6678通过1848连接,我这边做了一个简单的程序,配置了1848的output,input的使能,配置好路由以后。

维护包可以跑通,但是数据包不通,而且有时候维护包也会出错,你那边有遇到过类似的问题,有相应的解决方案嘛?

我这边是在loopbackDIOexamplePrj上面改的一个简单工程

Lidong Guo:

回复 tao yang3:

您好,您的问题解决了吗,我也遇到了类似问题,谢谢!

Zhengdong Li:

回复 tao yang3:

你好,我现在在做跟你之前做的类似的东西,两片6678通过1848互联,想请教一下你关于1848的配置问题。

我使用ARM通过I2C配置1848可以成功,两片6678可以进行正常通信。但是,想用6678发送维护包给1848进行配置时,发现ARM写进去的寄存器的值都可以通过维护包读到,但是没法让6678使用维护包进行更改1848的各个寄存器的值。也就是说6678只能读1848而不能写,请问你遇到这种问题了吗,是怎么解决的?进行维护包写1848的时候,需要一些额外的操作比如说打开1848的写开关之类的吗,谢谢!

 

Xin Wang21:

回复 qian cui:

qian cui,你好,通过CPS1848使得DSP6678和FPGA之间进行通信的程序调试得怎么样了?想请教您几个问题。关于FPGA与DSP之间SRIO通信的讨论群群号码是74522342

赞(0)
未经允许不得转载:TI中文支持网 » SRIO的3.125Gbps和5Gbps跑不通,请教大家!
分享到: 更多 (0)