(求助)tlk2201数据对齐问题
最近在调tlk2201,10bit位宽,tbi模式。目前的进度如下:如果发射端不发k28.5,那接收端syncen拉低,是无法对齐的。td0-td9随机对应rd0-rd9。这样不行,所以拉高syncen,让2201检测k28.5,然后对齐。
目前问题如下,希望ti的工作人员帮忙分析告知一下:
1.如果我fpga端使用8b10b编码,比如前一个周期发的dx.y 后一个周期是另一个dx.y,然后两者恰好第一个数的后5位和第二个数的前5位,两者连续组成了k28.5,那岂不是会打乱2201的同步?(我看了8b10b的全码表,确实有可能出现这种情况,码表在单位)
2.如果我不用8b10b。假定我的数据是加扰过,不考虑直流平衡。那我应该怎么同步啊?一是害怕接收端把不是k码的序列检测成了k码,影响了对齐。二是不知道如何控制syncen这个信号,是用sync/pass这个信号来判断同步了,还是在rd0-rd9直接看数据是不是k28。5来判断?
这个2201好难用啊,工作人员有没有方案能提供啊?
Hi Xin,
1.如果我fpga端使用8b10b编码,比如前一个周期发的dx.y 后一个周期是另一个dx.y,然后两者恰好第一个数的后5位和第二个数的前5位,两者连续组成了k28.5,那岂不是会打乱2201的同步?(我看了8b10b的全码表,确实有可能出现这种情况,码表在单位)
一般来说,只要你不连续的发相同的编码(类似于全零对应的编码),那么就不会出现连续的你所说的有前数据的后比特和后数据的前比特组成的满足编码要求的数据,TLK2201也就不会误报同步。
Hi Nick
我试验了一下。
8bit数据6e是极性负,f7是极性正,的10b码 就会组成“0011111010”的k码。
8'h6e: dataout_r <= 10'b1100001110; //first
8'hf7: dataout_r <= 10'b1000010111; //2nd
确实打乱了同步,这两个数之后接收的数据就乱了。直到下一次k28.5才会恢复。
只能控制syncen,不需要同步的时候把这个syncen拉低。失步的时候再拉高syncen。请问,正确的操作是否是这样的?