(转)xilinx serdes通道绑定channel bonding

1、通道绑定原理

通道绑定只支持8b10b编码协议,通道绑定利用内部的FIFO来抵消通道间的延时差,原理如下图 
这里写图片描述
master channel 和slave channel都有特定的字节,可以是K码。当master 检测到K码时,进行一个计数,slave检测到K码同样会计数。等master 计数到sequence max_skew时,通过移动指针消除前面的延时。

2、通道间的级联

下面是两个级联的例子 
这里写图片描述 
其中的level是为了满足时序,在master和slave间加入的流水线级数。(如果全部直接相连的话,会因为收发器之间离得太远而无法满足时序要求)。可以看出bondlevel是在收到CB信号后等几级流水延迟才开始进行通道绑定。

3、FIFO内数据流动

这里写图片描述 
sequence max_skew的作用,可以防止slave通道延迟的情况。注意max_skew根据通道间的时延设置尽量大一点,但不要超过最近两个通道绑定K码的一半。(这样就分不清到底是哪一次绑定了)

4、IP核设置

由于使用的是K码,不会和数据冲突,所以sequence length设置为1就行了。如果不使用K码,sequence length最好设置为4,这样有64bit的序列,和数据重复的概率很小很小。下面的时钟纠正就是这样设置的。 
这里写图片描述

5、上板调试

最后生成好bit实验,通道绑定成功。 
这里写图片描述可以看到,comma码和通道绑定的K码都是对齐的,并且comma码是用的组合commaNP码即tx_data=0x0504BCBC–>tx_isk=11,然后comma码用的K28.1即0x3C,tx_isk=01。实验成功