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.
大家好!
我的板子上有两片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,应该属于正常范围)
你可以先参照http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/18837.aspx看看端口什么状态?
另外可以先测试一下内部loopback有没有问题
你好,我现在在做跟你之前做的类似的东西,两片6678通过1848互联,想请教一下你关于1848的配置问题。
我使用ARM通过I2C配置1848可以成功,两片6678可以进行正常通信。但是,想用6678发送维护包给1848进行配置时,发现ARM写进去的寄存器的值都可以通过维护包读到,但是没法让6678使用维护包进行更改1848的各个寄存器的值。也就是说6678只能读1848而不能写,请问你遇到这种问题了吗,是怎么解决的?进行维护包写1848的时候,需要一些额外的操作比如说打开1848的写开关之类的吗,谢谢!
qian cui,你好,通过CPS1848使得DSP6678和FPGA之间进行通信的程序调试得怎么样了?想请教您几个问题。关于FPGA与DSP之间SRIO通信的讨论群群号码是74522342