上上篇讲了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上,是怎么分配传输的?

 见此文。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注