大家好!
我的板子上有两片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