1.IP 配置2.协议理解
2.1 变速箱Gearbox的理解
64B66B编码,数据输入是64bit,输出是66bit,所以这之间存在着2bit的带宽差,Gearbox 就是用来解决这种差异的,实现方式是:将66bit数据拿出来2bit先存入Gearbox,然后输出64bit.
当发送32次后,用户这边暂停发送一帧,让Gearbox当中的64bit数据发送,这样就将输入输出带宽差异消除。而这里的计数器就是用来计数发了多少次数据了的。这个计数器可以是在GT内部实现,也可以在用户逻辑里实现,GTH以后就没有内部计数器了,为了减小电路复杂度,这里为了通用我们也选择外部计数器。
需要注意:变速箱计数器txsequence[6:0]在TX复位完成后,就开始启动,计数器一直自加++,在32的位置归零
2.2 同步头的理解
同步头数据txheader_out只能是2’b01或者2’b10,不能是其他值。发送数据时,配置成1;发送同步码或控制数据时,配置成2.
2.3 变速箱移位
每次rxgearboxslip产生一个脉冲,变速箱移位一次。变速箱移位功能等同于iserdeses2的bitslip,很重要,接收端都需要移位实现数据完整接收。
2.4 加扰和解扰!!!!!!
这个功能一定要加!64B66B需要配合加扰和解扰功能一起使用。这个功能由逻辑代码完成。如果不用,会出现这种情况:自回环测试,数据收发ok.一旦和对方通信,对方接收的就是一堆乱码,因为GT链路发送数据不能是全1或全0,或者长时间的1或0.否则线路容易受到干扰,毕竟线速率10多G,用了加扰和解扰,就可以提高抗干扰能力。
2.5复位
复位顺序可以参考官方手册:
需要注意2点:
1)QPLL复位,如果是tx rx收发通道都要用,那tx_pll_and_datapath 和 rx_pll_and_datapath就要同时产生,不能有先后。
2)接收链路复位信号gtwiz_reset_rx_datapath_in
当发送端 一直发送同步码(自定义的),接收端反复进行slip都没有接收正确,这时候就可以用gtwiz_reset_rx_datapath_in数据链路复位信号了。建议复位时间5ms以上,保证链路数据清除干净。