该往哪儿走?
上上篇讲了8/10b编码,有朋友问我能否再稍微介绍一下编码的过程。这里把关键流程罗列一下。
8/10b编码首先是将我们要发送的8bit数据分成两组,一组3bit,一组5bit,分别编码成一组4bit和一组6bit,即每一组都增加一个bit,最终组成一组10bit的数据发送。在链路上的串行发送顺序为abcdeifghj。注意,图中的原始数据ABCDEFGH并不等于发送的实际数据abcdefgh。
上面是一个字节的编码过程,对于连续的多个字节,在链路上的发送又是怎么分配的呢?如果链路是x1的话,即仅有一条Lane0,多个字节按照顺序依次编码后在Lane0发送即可。如果链路有多条Lane呢? 假设我们的链路是x4的,即有四条Lane。连续的字节按照如下的规则发送:Byte0从Lane0发送,Byte1从Lane1发送,Byte2从Lane2发送,Byte3从Lane4发送,以此类推,见下图。
数据发送到接收端后,接收端按照相反的逻辑组合接收到的数据,并做解码,最终解析出原始数据,不再赘述。
上期问答:
Gen2的8b/10b编码怎么和Gen3的128/130b编码对接?
两个不同速率的device在协商阶段,首先按照最低的Gen1速率协商,均采用同样的8/10b编码。协商完成后,按照协商后的速率建立链接。
数据在不同的lane上,是怎么分配传输的?
见此文。