8b10b

(转)xilinx 高速收发器Serdes深入研究-Comma码

柔情痞子 提交于 2020-03-09 17:32:18
一、为什么要用Serdes 传统的源同步传输,时钟和数据分离。在速率比较低时(<1000M),没有问题。 在速率越来越高时,这样会有问题 由于传输线的时延不一致和抖动存在,接收端不能正确的采样数据,对不准眼图中点。 然后就想到了从数据里面恢复出时钟去采样数据,即CDR 这样就不存在延迟不一致的情况,有轻微的抖动也不会影响采样(恢复的时钟会随着数据一起抖动)。 二 、为什么要用8b10b,64b66b? 1 提供足够的跳变来恢复时钟 这样还有问题,收发两端必须共地,但往往很难实现。 于是采样差分信号传输,为了防止共模电压在接收端导致电流过大,使用电流驱动模式。看到接收端有电容进行交流耦合,隔直流。这样又带来一个问题,需要DC平衡。所以有了下面另一个原因。 2 DC平衡,即0和1的数量要相等。 3 run length,0和1连续出现的最大长度 AGC自动增益控制需要交流分量才能实现放大 4 comma码,K码 在serdes上面的高速串行流在接收端需要重新串并转化成多字并行,怎么找到字的边界进行对齐呢? 这就需要一个特殊的序列,这就是comma码。 传输过程中需要的一些控制,最好不要和数据冲突了,这就是K码。 基于以上四个原因,就有了8b10b,64b66b的出现。 三 、8b10b编码 8b10b编码一句话概括起来就是把8bit的数据变成10bit的数据