读书频道 > 系统 > 其他综合 > 计算机网络系:统集成技术基础与解决方案
2.9.2 组编码方法
2013-07-01 11:15:59     我来说两句 
收藏    我要投稿   
本书从一线系统集成工程技术人员和管理人员的实际工作角度出发,介绍系统集成实际要掌握的四个方面的知识:系统集成基础、系统集成环境、前端(广域网)集成技术和用户端(设备系统)集成技术,主要包括网络系统...  立即去当当网订购

组编码是用m位编码来表示n位数据,这种编码被称为nB/mB码(m≥n)。常用的组编码有4B/5B、8B/10B、HDB3码和4B3T码等。

1.4B/5B码

4B/5B编码方案是用5位二进制编码表示4位二进制的数据。4B/5B码的编码效率为80%,并且能做到编码后的码流具有下列特性:不会超过3个连续的“0”,直流分量的变化小于10%,可以通过非法码来加错误检测能力。5位编码具有32个不同的码点,只需选用其中16个码点表示4位二进制的16个不同数据,其余的码点可用来作为控制码点以及非法码点等。4B/5B编码的实现方法很简单。FDDI网络的PHY层就是选用了这种编码方式。如表2-3所示为4B/5B编码表。

表2-3 4B/5B编码表传输信号(4B) 数据符号 5B编码 传输信号(4B) 数据符号 5B编码
0000 0 11110 1100 C 11010
0001 1 01001 1101 D 11011
0010 2 10100 1110 E 11100
0011 3 10101 1111 F 11101
0100 4 01010 Reset(重设为逻辑0) R 00111
0101 5 01011 Set(重设为逻辑1) S 11001
0110 6 01110 帧起始第一个符号 J 11000
0111 7 111 帧起始第二个符号 K 10001
1000 8 10010 帧结束符 T 01101
1001 9 10011 无信号(Quiet) Q 00000
1010 A 10110 闲置(Idle) I 11111
1011 B 10111 停滞(Halt) H 00100

例如,数据符号“F”代表4位二进制数据1111,用5位11101编码来表示。从表2-3中可以看出,不管数据符号怎样组合在一起,编码的连“0”个数最多是3个。如两位十六进制数据E5,可用数据符号E和数据符号5来代表,其编码为1110001011,有三个连“0”出现。控制符号对JK表示一个帧的开始,其编码为1100010001,也有两处出现三个连“0”的情况。在帧结束分界符T后面的帧状态符号R和S,不论怎样组合,连“0”的个数最多是两个。帧传输间隔期间,所传输的空闲符号I的编码为11111,不会出现连“0”的情况。总之,FDDI的物理链路在正常工作期间不会出现三个以上连“0”的情况。只有在物理链路启动或故障时,Q符号、H符号和V符号的传送才能产生大于三个连“0”的情形。FDDI网络的数据传输率为100?Mbps,由于采用4B/5B编码,传输介质上的速率是125?Mbps。

2.8B/10B码

8B/10B编码是在1984年由IBM公司发明的,它是基于一个5B/6B码和一个3B/4B码的特殊组合。8B/10B直流分量为零,但实现方案比8B/10B码要复杂很多。HDB3和4B3T组编码方案被用于电话传输系统综合业务网络ISDN中。

现在许多文章、书籍经常提到8B/10B码,8B/10B编码方式包含了在一个8位字节中对于265个可能位组合的有效码组的列表。一个可能的编码方法是在帧发送期间,使用那个码表将字节编码成8B/10B代码组,而在帧接收期间把8B/10B代码组译回字节。另一个方法是把一个字节拆成3b和5b,然后以并列的方式编/译码,以使得到8B/10B编/译码。

表2-4~表2-7给出5B/6B和3B/4B码,8B/10B就是由它们构成的。

表2-4 数据5B/6B编码数据标号 数据位EDCBA 编码位当前RD(-)abcdei 编码位当前RD(+)abcdei
D0 00000 100111 011000
D1 00001 011101 100010
D2 00010 101101 010010
D3 00011 110001 110001
D4 00100 110101 001010
D5 00101 101001 101001
D6 00110 011001 011001
D7 00111 111000 000111
D8 01000 111001 000110
D9 01001 100101 100101
D10 01010 010101 010101
D11 01011 110100 110100
D12 01100 001101 001101
D13 01101 101100 101100
D14 01110 011100 011100
D15 01111 010111 101000
D16 10000 011011 100100
D17 10001 100011 100011
D18 10010 010011 010011
D19 10011 110010 110010
D20 10100 001011 001011
D21 10101 101010 101010
D22 10110 011010 011010
D23 10111 111010 000101
D24 11000 110011 001100
D25 11001 100110 100110
D26 11010 010110 010110
D26 11010 010110 010110
D27 11011 110110 001001
D28 11100 001110 001110
D29 11101 101110 010001
D30 11110 011110 100001
D31 11111 101011 010100

表2-5 数据3B/4B编码数据标号 数据位HGF 编码位当前RD(-)fghj 编码位当前RD(+)fghj
.0 000 1011 0100
.1 001 1001 1001
.2 010 0101 0101
.3 011 1100 0011
.4 100 1101 0010
.5 101 1010 1010
.6 110 0110 0110
.7 111 1110或0111 0001或1000

表2-6 特殊代码组的5B/6B编码
数据标号 数据位EDCBA 编码位当前RD(-)abcdei 编码位当前RD(+)abcdei
K23 10111 111010 000101
K27 11011 110110 001001
K28 11100 001111 110000
K29 11101 101110 010001
K30 11110 011110 100000

表2-7 特殊代码组的3B/4B编码数据标号 数据位HGF 编码位当前RD(-)fghj 编码位当前RD(+)fghj
.0 000 1011 0100
.1 001 1001 1001
.2 010 1010 0101
.3 011 1100 0011
.4 100 1101 0010
.5 101 0101 1010
.6 110 1001 0110
.7 111 0111 1000

5B/6B和3B/4B码表结构曾用于为10位代码组制定方便的命名约定。这个码可为普通数据的传输生成数据代码组,也可以为控制序列(逗号序列、有序集等)的传输生成特殊代码组。10位代码组的命名约定如下:

数据代码组的标号都以D开头(代表数据)。

控制代码组的标号以K开头(代表控制)。

字母D或K后跟着来自5B码表中的数据标号——它只是5B输入数据位的十进制值(编成的数据位)。再加上对应于3B/4B码表中3B的输入数据位的数据标号,从而完成代码组标号。

代码组标号的例子是D20.1、D0.7和K28.0。全部以这种方式命名的可能的数据代码组都是有效代码组,仅有12个控制代码组被定义为有效的控制代码组。

图2-33示意从输入字节的位(TXD<7:0>=)翻译成输入字节的位标号,通过5B/6B、3B/4B再翻译成输出代码组的位标号,而后翻译成输出代码组的位(tx_code-group<9:0>=)。对于每个代码组,代码组位0是第一个被传输的位,而代码组位9是最后一个被传输的位。


 

5B/6B和3B/4B码表有两个用于6B和4B子组的译码位栏,称为当前RD加(RD(+))和当前RD减(RD(-))。当前RD指在最后子组的末尾的RD状态。8B/10B代码组像下面这样由分离的码表构成:

根据子组计算一个代码组的RD,其中,前面6位(abcdei)形成一个子组,后面4位(fghj)形成另一个子组。

6位子组开头的RD是上一个代码组结尾的RD。

4位子组开头的RD是6位子组结尾的RD。

代码组结尾的RD是4位子组结尾的RD。

子组的RD计算如下:

如果子组包含的1比0多,在任何子组末尾的RD都是正的。如果6位子组是000111,在6位子组的末尾它还是正的;如果4位子组的末尾是0011,它是正的。

如果子组包含的0比1多,在任何子组末尾的RD都是负的。如果6位子组是111000,在6位子组的末尾它还是负的;如果4位子组是1100,在4位子组的末尾它是负的。

在其他情况下,子组末尾的RD与子组开始的RD相同。

为了限制子组间的0和1的连续长度,8B/10B传输码规定:

编码为000111或0011的子组仅当在子组开始的RD为正的时候产生;这样,这些子组末尾的RD也是负的。

D11.7、D13.7、D14.7、D17.7、D18.7和D20.7必须使用交替的4B编码。

发送机最初假定一个负的RD,然后使用8B/10B码表和规则编码送给它的全部数据。接收机可以假定一个负的RD,译码器将检测代码组,决定它们是否有效,并计算新的RD。RD还可用来检测差错,因为它必须或者是+1,或者是-1。

尽管有12个特殊代码组(如表2-8所示),但仅有6个用于构成千兆以太网的有序集。被PMA和PCS用于代码组对准的通用码形式001111xxx出现在特殊代码组28.1、28.5和28.7中。尽管如此,在正常工作情况下,仅使用K28.5逗号代码组。K28.5代码组可能用于测试,但使用时应当注意,因为这个代码组与其他一些代码组一起,可能产生一个非代码组。

表2-8 千兆以太网特殊代码组
特殊代码组名 abcdei fghj值RD(-) abcdei fghj值RD(+)
K28.0 001111 0100 110000 1011
K28.1a 001111 1001 110000 0110
K28.2 001111 0101 110000 1010
K28.3 001111 0011 110000 1100
K28.4 001111 0010 110000 1101
K28.5a 001111 1010 110000 0101
K28.6 001111 0110 110000 1001
K28.7a,b 001111 1000 110000 0111
K23.7 111010 1000 000101 0111
K27.7 110110 1000 001001 0111
K29.7 101110 1000 010001 0111
K30.7 011110 1000 100001 0111

K28.1a、K28.5a和K28.7a,b包含用于字节同步的逗号序列。带有b的标号名不能重复,否则将破坏逗号序列条件。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.9.1 编码
下一篇:2.9.3 8B/10B码的特性、符号、术语、直流平衡和行程偏差
相关文章
图文推荐
2.7.12 使用仿真器查
2.7.11 栈和寄存器组
2.7.8 出栈
2.7.7 压栈
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站