保证稳定的直流均衡(“0”的个数与“1”的个数总是相同的)。
具备1bit误码纠错能力(“00”或者“11”是无效码)。
高达100%的系统开销。
扰码技术是串行链路常用的另一种编码技术。这种技术将伪随机序列与原始码流混合,以实现转换、直流均衡等目的。伪随机发生器由线性反馈移位寄存器产生的最长序列(m序列)构成1。此序列的周期为2n,其中n为线性反馈移位寄存器特征多项式的最高阶。例如SONET/SDH的特征多项式为x7+x6+1,它的序列长度为27-1,即127。
扰码器包括两种类型,分别为边扰码器与自同步扰码器。通常,边扰码器的寄存器状态与发送数据异或构成它的下一个状态,这需要在输入与输出之间“重置/同步”扰码器状态。自同步扰码器直接将输入数据作为扰码器状态,不需要重置和同步过程。
8B10B编码技术
8B10B是应用最广泛的编码技术。它被用于串行连接SCSI、串行ATA、光纤链路、吉比特以太网、XAUI(10吉比特接口)、PCI Express总线、InfiniBand、SeriaRapidIO、HyperTransport总线以及IEEE1394b接口(火线)技术中。
8B10B2将8bit代码组合编码成10bit代码,代码组合包括256个数据字符编码和12个控制字符编码(如表1所示)。通过仔细选择编码方法可以获得不同的优化特性。这些特性包括满足串行/解串行器功能必须的变换;确保“0”码元与“1”码元个数的一致,又称为直流均衡;确保字节同步易于实现(在一个比特流中找到字节的起始位);以及对误码率有足够的容忍能力和降低设计复杂度。
8B10B中所有的编码都具备3到10种变换。每个码字确保:
在一行中不会产生超过四个连“1”或连“0”;
“1”与“0”的不平衡度(不平衡度指“0”的个数减去“1”的个数)不会超过2个码字(5个“1”/5个“0”,4个“1”/6个“0”或4个“0”/6个“1”)。
8B10B采用一种简单的方法保证了编码的直流平衡。在不平衡时,采用两个10bit字符表示一个8bit字符,其中一个称为RD-,表示“1”的个数比“0”多2个,另一个称为RD+,表示“1”的个数比“0”少2个。选取合适的RD字符可以保证不平衡度不大于1。同时,采用只有在控制字符(K28.5,K28.1,K28.7)中才有的特殊字符可以保证同步定位的准确。
8B10B借助总共268个字符及它们的反转码,还可以检测任何可能破坏不平衡的误码。但是,即使接收机接收到了正确的码字,有时它们也有可能因为不平衡性而导致误码,这种现象被称为误码复制。8B10B编码技术将8bit数据分成3bit和5bit两组,因此可以看作是3B4B和5B6B编码技术的组合。