8B/10B编码
- 8B/10B编码
- 介绍
- 实现方式
- 8b/10b编码中的编码表和字节编码
- RD
- 控制符号
8B/10B编码
介绍
8b/10b编码是将8位符号映射到10位符号,以实现直流平衡,同时提供足够多的状态来实现时钟恢复。这意味着在一个至少20位的字符串中,1和0的计数之差不超过2,并且在一排中不超过5个1或0。
实现方式
8位数据作为一个10位实体被传输,称为符号,或字符。数据的低5位被编码成一个6位组(5b/6b部分),前3位被编码成一个4位组(3b/4b部分)。这些编码组串联在一起,形成在电线上传输的10位符号。数据符号通常被称为D.x.y,其中x的范围是0-31,y是0-7。使用8b/10b编码的标准还定义了最多12个特殊符号(或控制字符),可以代替数据符号发送。它们经常被用来表示帧开始、帧结束、链路空闲、跳过和类似的链路级条件。它们中至少有一个(即 "逗号 "符号)需要用来定义10位符号的对齐。它们被称为K.x.y,具有与任何D.x.y符号不同的编码方式。
由于8b/10b编码使用10位符号来编码8位字,因此可以排除一些可能的1024(10位,2^10)符号,以授予5个连续相等比特的运行长度限制,并确保0和1计数之间的差异不超过2. 256个可能的8位字中有一些可以用两种不同的方式进行编码。使用这些替代编码,能够在串行数据流中实现长期DC平衡。这使得数据流可以通过具有高通特性的信道进行传输,例如以太网的变压器耦合未屏蔽双绞线或使用自动增益控制的光学接收器。
8b/10b编码中的编码表和字节编码
请注意,在以下表格中,对于每个输入字节(表示为HGF EDCBA),A表示最低有效位(LSB),H表示最高有效位(MSB)。输出增加了两个额外的位,即i和j。这些位从LSB到MSB发送:a,b,c,d,e,i,f,g,h和j;即5b / 6b代码后跟3b / 4b代码。这确保了逗号符号中特殊位序列的唯一性。
数据流中0和1的数量对于传输的0和1的数量的剩余影响由运行失调(RD)维护,并且偏移的效果通过选择后续符号的编码来平衡。
5b / 6b代码是成对失调代码,3b / 4b代码也是如此。每个6位或4位代码单词具有相等数量的0和1(失调为0),或者0比1多两个(四个零和两个一或三个零和一个一)的形式成对出现。当使用具有非零失调(1的计数减去0的计数;即-2或+2)的6位或4位代码时,正失调编码或负失调编码的选择必须是切换运行失调的编码。换句话说,非零失调代码会交替出现。
RD
8b/10b编码是无直流偏置的,这意味着长期传输的1和0的比率恰好为50%。为了实现这一点,每个符号结束时传输的1和0的数量之间的差异始终限制在±2之内,因此它要么是+1要么是-1。这种差异被称为运行失调(RD)。
该方案只需要两种状态来运行失调+1和-1。它从-1开始。
对于每个具有不同数量的1和0的5b/6b和3b/4b代码,可以使用两个位模式来传输它:一个带有两个以上的“1”位,另一个则反转所有位,因此有两个以上的“0”。根据信号的当前运行失调,编码引擎选择为给定数据发送哪个可能的六位或四位序列。显然,如果六位或四位代码具有相等数量的1和0,则没有选择可供选择,因为失调不会改变,但是D.07(00111)和D.x.3(011)子块除外。在任一情况下,失调仍然不变,但是如果RD在遇到D.07时为正,则使用000111,如果为负,则使用111000。同样,如果RD在遇到D.x.3时为正,则使用0011,如果为负,则使用1100。这在下面的图表中得到了准确反映,但值得额外提及的是这是唯一两个具有相等数量的1和0且每个都具有两种可能编码方式的子块。
控制符号
在8b/10b中,控制符号是10b符号,它们是有效的位序列(不超过六个1或0),但没有相应的8b数据字节。它们用于低级控制功能。例如,在光纤通道中,K28.5用于四字节序列(称为“有序集”)的开头,执行诸如环路仲裁、填充字、链路复位等功能。
由于5b/6b和3b/4b表,以下12个控制符号被允许发送。