目前有个项目需要Lattice ecp5 (型号:LFE5UM-25-6MG285C)与 Xilinx k7之间通过两路SerDes进行通信,从ecp5发送到k7端是两路1.485G的SerDes信号,从k7端发送至ecp5端是一路SerDes信号(速率为0.7425G和1.485G都可以)。
k7端发送和接收都正常(SerDes自环验证也正常),ecp5端发送正常,但是接收会出现问题,如图1所示,接收通道ch0端数据经常会出现错误,正常情况下如图2所示。k7端SerDes发送代码及Tx波形如图3、图4所示。
检测了ecp5的SerDes自环(SerDes自发自收),发现也有上述类似问题,更改了pcs配置参数(加大了均衡、预加重、去加重等参数)仍然会收到错误信号,找了一块ecp3的板子,验证ecp3上SerDes自发自收正常,查找了两个工程中SerDes部分的差异,根据正常的ecp3的配置参数修改ecp5的配置,但是ecp5上SerDes接收端一直有上述问题。
后来想想感觉是不是ecp5上SerDes接收端有一路通道(ch1通道)直接悬空导致ch0通道数据会有影响,抓去了一下ch1通道的信号,如图5所示,发现ch1通道的CDR居然能锁住,然后将ecp5 ip核中的pcs配置通道由2通道改为1通道,发现1个通道情况下,SerDes在0.7425G和1.485G的速率下接收正常。
于是将ecp5上的SerDes拆为2个pcs核(一个pcs配置mode选择Tx and Rx,另一个pcs配置mode选择Tx only),编译时会报DCU数量超出范围的错误,查看了一下手册,ecp5 LFEUM-25只有1个DCU,如图6、图7所示。
现在ecp5上SerDes接收端Rx ch1悬空,图8为Reports上SerDes I/O分布,图9为ecp5原理图中SerDes部分。
现在感觉问题应该是ecp5 SerDes接收端2个通道都应该接收数据,或则接收端Rx只使用1路通道时,有哪个地方,没有正确的配置,ecp5 SerDes部分I/O好像无法自己约束(系统内部配置)。
目前没有办法解决,跪求各位大神解答
谢谢各位,项目解决了。为了确保项目进行,在一块已有的ecp3板卡上验证了两路SerDes发送一路SerDes接收,所以项目直接将ecp5换成了ecp3,型号为LFE-17EA-328,有两路SerDes通道。ecp3通道选择方式是Channel0为Rx and Tx,Channel为Tx Only,两路SerDes发送(1.485Gb/s),一路SerDes接收(1.485Gb/s)均能正常工作。
现在想想ecp5的问题可能还是上面提及的另一路没有用到的SerDes直接悬空导致的。
最后祝给位Lattice开发的伙伴工作顺利!
老铁,我的问题和你相反,我的是lattice发,xilinx收,xilinx总是收到乱码,是什么鬼呀?lattice和xilinx均测试自发自收没问题。。
你好,请问您的问题解决没?我现在也是接收端收到乱码,但是自闭环都没问题。
能加qq沟通么?我的qq 643265518,添加的时候注明一下hiFPGA
不知道能不能和到你,我之前遇到过serders反复复位好多次才能锁住的问题,后来发现是3.10版本的clarity生成的PCS的复位模块有问题,换用3.9生成,然后在3.10里导入,问题解决。
谢谢!我这边也遇见了这样的现象,3.10版本有点问题,我在3.10上面生成的PCS,用reveal抓不到波形,CDR失锁,同样的工程换到3.9上面CDR就正常,但是现象还是和上面的现象一样
您好!谢谢您的解答。
对于第2点,我用的都是ecp5外部环回,包括ecp5自己的Tx与Rx通过外部信号线连接以及ecp5与k7连接,reveal也是代码从底层配置环回,抓取的外部环回的数据;
第3点,diamond用的一直是3.9.1.119版本(3.10没有安装),3.9版本好像不能分两次配置(DCU会报错);
对于第1点,CDR可以锁住,RX端也能用reveal抓取到数据,如上述图5最下面的数据所示,这样还是无效的么?
我现在的回环用1个通道没有问题,能正确接收数据,用两个通道(其中Rx1悬空)才会出现接收不正常的问题(如上面的描述)。
如果是电源有问题,那么只用一路通道时接收也应该会出现问题,但是一路通道接收正常(同一块板子,只是将pcs配置中2路通道改为1路通道即正常)
谢谢您的建议!试过了还是不行。建两个clarity好像只显示一个clarity,另一个显示无法生成。
第1点,CDR可以锁住,这个是无效的,我找原厂确认过,具体机理不明。 如果3.9有问题,试试3.8是否正常。我估计很有可能是由于同时配置两个通道导致的,但这个BUG是从哪个版本引入的并不清楚,也许只是到3.10才发现。你在同一个clarity里配两次,每次一个通道是不行的,那就建两个clarity试试。
如果回环都有问题一般是电源有问题。