Tlk2711是TI为千兆超高速双向串行通信研发的收发器件,支持热插拔操作,具备8b/10b编解码功能,并行数据总线位宽16bit,并行时钟速率工作范围80MHz-125MHz。 高品质的时钟源是保证tlk2711高可靠地工作的必要条件。Tlk2711高速串行收发器采用时钟恢复技术实现收端时钟与发端时钟的同步,在实际工作中,要求时钟抖动小于40ps,占空比40%-60%,并要求发送端,定期发送comma用于维持收发两端时钟的同步及收端串并转换字节边界对齐。 在项目中使用tlk2711进行图像数据传输,并行时钟100MHz,时钟方案采用“晶振-FPGA-tlk2711”方式。FPGA采用Virtex5-130T系列。在帧消隐期间和行消隐期间,发送端持续发送comma用于时钟同步。经过实际测试,在传输距离12小时的稳定传输。 实验调试中遇到的主要问题是时钟同步问题。具体而言,1.采用了100MHz晶振品质太差,导致传输不稳定;2.没有定期发送comma,导致长时间传输不稳定。关于时钟品质,应当在晶振采购时,标注抖动要求,并选择可靠的供货渠道,实际调试中,应当首先利用示波器对晶振输出、tlk2711时钟输入信号进行眼图测量,分析时钟抖动(jitter)。定期发送Comma时,应当保证每次连续发送至少两个字(一个字定义为两个字节,即16bits),每个字由comma及其校正码组成,因为tlk2711芯片内部的comma检测电路仅能对0011111实现字节对齐,而8b/10b编码电路为了实现直流平衡,计算每个编码结果的0和1的个数差异(不均等性,disparity),确定极性偏差RD(running disparity),如果当前编码的RD为-,则下一个码字编码时采用RD+,因此对于同一个源码,在实际传输中根据其前一编码结果的不同而形成两个不同的编码,例如,对于源码K28.5,如果在其之前的源码编码的极性偏差RD为+,K28.5编码结果为1100001010,如果在其之前的源码编码的极性偏差RD为-,K28.5编码结果为0011110101,因此 如果保证在接收端出现0011110101,那么发送端需要发送1100001010 XXXXXXXXXX 0011110101或者0011110101 XXXXXXXXXX 1100001010 其中XXXXXXXXXX的disparity为0,TI应用报告(SGLA001A,Using the TLK2711-SP With Minimal Protocol)中给出的一个idle字为/K28.5/D5.6/(低八位/高八位),给出的最小传输协议为: K28.5 D5.6 K28.5 D5.6 K28.5 D11.5 (SOF optional and user definable) Dxx Dxx (Transmitted packet. Repeat for packet depth.) Dxx Dxx (Packet CRC if desired) K28.5 D5.6 K28.5 D5.6 K28.5 D11.5 (SOF optional) Repeat with next packet. 即每一个传输包由两个空闲字、一个可选控制字、可变长度传输字包、CRC字、两个空闲字、一个可选控制字组成。 发送空闲字K28.5 D5.6时: TKLSB =‘1’, TXD[ 7 downto 0]=dec2hex(5,3)&dec2hex(28,5)=0xBC TKMSB=‘0’, TXD[15 downto 8]=dec2hex(6,3)&dec2hex(5,5)=0xC5 即 TKMSB=‘0’,TKLSB =‘1’,TXD[15 downto 0]= 0xC5BC 此外,tlk2711发送端对输入并行数据的采样发生在发送并行时钟的上升沿,因此应当对FPGA输出给tlk2711的并行数据进行相位约束。 参考资料: Tlk2711手册; TI应用报告(SGLA001A,Using the TLK2711-SP With Minimal Protocol); 8B/10B编码编解码详解(https://www.cnblogs.com/YINBin/p/11011232.html)
|