这是本文档旧的修订版!
数据编码
~~TOC~~
概述
二进制数字信息在传输过程中,需要转换成适合通信线路传输的信号,这一过程称为数据编码或线路编码。
不同编码方案在以下方面存在差异:
- 电平数量;
- 抗噪声能力;
- 时钟同步能力;
- 检错能力;
- 所需信道带宽;
- 编码效率;
- 实现复杂度和成本。
本节主要介绍以下编码方式:
- 单极性码;
- 极性码;
- 双极性码与AMI;
- 归零码;
- 双相码;
- 不归零码与NRZ-I;
- 曼彻斯特编码;
- 差分曼彻斯特编码;
- 多电平编码;
- MLT-3编码;
- 4B/5B编码;
- 8B/6T编码;
- 4D-PAM5编码。
核心问题:数据编码不仅要表示“0”和“1”,还要兼顾同步、抗干扰、带宽利用率、传输速率和实现成本。
1. 数据编码的评价指标
选择编码方案时,通常需要考虑以下指标:
| 指标 | 含义 |
|---|---|
| 表示能力 | 编码能否明确区分二进制0和1 |
| 自同步能力 | 接收端能否从信号跳变中恢复时钟 |
| 抗噪声能力 | 信号受到干扰后是否仍容易识别 |
| 检错能力 | 编码规则被破坏时能否发现错误 |
| 频带利用率 | 单位带宽能够传输多少有效数据 |
| 直流分量 | 信号是否长期偏向某个电平 |
| 实现成本 | 编码器、解码器和接口电路的复杂程度 |
1.1 自同步
发送端和接收端需要保持位边界一致。若编码信号本身包含规律性的电平跳变,接收端就可以从这些跳变中恢复时钟,这种能力称为自同步。
缺乏自同步能力的编码在传输长串相同比特时,可能因为长时间没有电平变化而失去位同步。
1.2 电平与跳变
数据可以通过两种基本方式表示:
- 使用当前电平的高低表示数据;
- 使用电平是否发生跳变表示数据。
易错点:“高电平或低电平代表什么”与“是否发生跳变代表什么”是两种不同的判读方式。
2. 基本编码方案
2.1 单极性码
单极性码只使用一种极性的电压和零电平表示数据。
例如:
+3 V表示二进制0;0 V表示二进制1。
具体的0、1映射可以由系统约定,关键特征是信号只使用一种极性。
特点
- 实现简单;
- 电路成本较低;
- 电平差较小,抗噪声能力较弱;
- 含有明显的直流分量;
- 不具备自同步能力;
- 传输连续的0或1时可能无法恢复时钟。
典型应用
- 电传打字机接口;
- PC与TTY兼容接口。
2.2 极性码
极性码分别使用正电压和负电压表示二进制0和1。
例如:
+3 V表示二进制0;-3 V表示二进制1。
特点
- 正负电平之间的差值较大;
- 抗干扰能力优于单极性码;
- 仍然可能出现长时间无电平变化;
- 通常需要额外的时钟信号;
- 不具备可靠的自同步能力。
2.3 双极性码
双极性码使用三个电平:
- 正电平;
- 零电平;
- 负电平。
典型的双极性码是 AMI编码。
2.3.1 AMI编码
AMI是Alternate Mark Inversion的缩写,中文通常称为信号交替反转编码或传号交替反转码。
其基本规则为:
- 二进制
0使用零电平表示; - 二进制
1在正电平和负电平之间交替出现。
例如:
数据: 1 0 1 1 0 1 电平: +V 0 -V +V 0 -V
优点
- 正负脉冲交替,直流分量较小;
- 抗噪声性能优于普通二进制电平码;
- 具有一定的检错能力;
- 正负交替规律被破坏时,可检测到AMI违例。
缺点
- 连续传输多个
0时,信号长期保持零电平; - 长串0不包含跳变,接收端可能失去位同步。
AMI违例
正常情况下,表示1的脉冲必须按照以下顺序交替:
+V → -V → +V → -V
若连续出现两个同极性脉冲,例如:
+V → +V
则称为AMI违例。
2.4 B6ZS编码
B6ZS是Bipolar with 6-Zero Substitution的缩写,可译为六零替代双极性码。
其基本思想是:
- 当数据中出现连续6个
0时; - 使用一组包含特殊脉冲的代码替换这6个0;
- 替代码中人为引入AMI违例;
- 接收端识别该违例后,将其还原为连续6个0。
作用
- 避免长串0导致时钟同步丢失;
- 保留AMI编码的基本特点;
- 利用规定的违例模式携带同步信息。
理解要点:AMI违例通常意味着错误,但在B6ZS等改进编码中,特定违例模式是发送端有意插入的同步标记。
2.5 归零码
归零码简称 RZ,英文为Return to Zero。
在每个码元持续时间内,信号都会回到零电平。因此,相邻码元之间由零电平隔开。
教材图示为一种双极性归零码:
- 正电平回到零电平的跳变表示一种码元;
- 负电平回到零电平的跳变表示另一种码元;
- 每个码元中间都存在电平跳变。
优点
- 每个码元内部都有跳变;
- 具有自同步能力;
- 根据跳变边沿识别数据;
- 抗噪声能力较好。
缺点
- 一个码元需要多个信号区间;
- 占用的信道带宽较大;
- 编码和传输效率相对较低。
2.6 双相码
双相码要求每一个码元中间都出现一次电平跳变。
特点
- 每位均包含时钟信息;
- 具有良好的自同步能力;
- 可以检测部分编码错误;
- 某一位中间缺少规定的跳变时,可判定为违例;
- 所需带宽通常高于普通不归零码。
曼彻斯特编码和差分曼彻斯特编码都属于双相码。
2.7 不归零码
不归零码简称 NRZ,英文为Non-Return-to-Zero。
在一个码元持续时间内,信号不要求回到零电平。
教材图示的不归零差分编码规则为:
- 出现
1时,电平翻转; - 出现
0时,电平保持不变。
此类编码也称为 NRZ-I。
特点
- 数据由电平是否变化表示,而不是由绝对电平高低表示;
- 实现简单;
- 成本较低;
- 频带利用率较高;
- 传输长串不触发跳变的比特时,容易失去同步;
- 不属于自同步编码。
典型应用
- 终端到调制解调器的接口;
- 与4B/5B组合用于部分高速以太网标准。
3. 曼彻斯特编码
曼彻斯特编码(Manchester Encoding)是一种双相码。
每一个码元中间都必须发生一次电平跳变,该跳变同时承担两个作用:
- 表示数据;
- 提供时钟同步信息。
教材采用的表示约定为:
- 高电平到低电平的跳变表示
0; - 低电平到高电平的跳变表示
1。
相反的映射也可以采用,具体取决于协议约定。
0:高电平 → 低电平 1:低电平 → 高电平
3.1 优点
- 每位中间都有跳变;
- 自同步能力强;
- 抗噪声能力较好;
- 可以检测缺少位中跳变的编码错误;
- 不依赖绝对电平长期保持。
3.2 缺点
- 每个码元需要两个信号区间;
- 调制速率约为数据码元速率的两倍;
- 对信道带宽要求较高;
- 实现成本高于简单NRZ编码。
3.3 典型应用
曼彻斯特编码用于传统以太网。
考试重点:曼彻斯特编码的位中跳变既表示数据,又提供时钟。
4. 差分曼彻斯特编码
差分曼彻斯特编码(Differential Manchester Encoding)也是一种双相码。
其编码规则为:
- 每一位中间的跳变只用于时钟同步;
- 每一位开始处是否发生跳变用于表示数据;
- 位开始处有跳变表示
0; - 位开始处无跳变表示
1。
位中间:必须跳变,用于同步 位开始:跳变表示0,不跳变表示1
4.1 优点
- 每位中间都有跳变;
- 具有自同步能力;
- 数据由相对变化表示;
- 不易受到线路极性反转影响;
- 抗噪声能力较好。
4.2 缺点
- 每个码元仍需两个信号区间;
- 所需调制速率较高;
- 占用带宽较大;
- 实现成本相对较高。
4.3 典型应用
差分曼彻斯特编码用于令牌环网。
5. 曼彻斯特编码对比
| 对比项 | 曼彻斯特编码 | 差分曼彻斯特编码 |
|---|---|---|
| 编码类型 | 双相码 | 双相码 |
| 位中间跳变 | 表示数据并提供时钟 | 只提供时钟 |
| 数据判定依据 | 位中间的跳变方向 | 位开始处是否跳变 |
| 教材中的0 | 高到低跳变 | 位开始处有跳变 |
| 教材中的1 | 低到高跳变 | 位开始处无跳变 |
| 自同步 | 是 | 是 |
| 典型应用 | 传统以太网 | 令牌环网 |
| 带宽需求 | 较高 | 较高 |
记忆方法:曼彻斯特看“中间跳变的方向”,差分曼彻斯特看“开始位置变不变”。
6. 多电平编码
多电平编码允许一个码元使用多个电平状态。
如果一个码元有M种状态,并且:
M = 2ⁿ
则一个码元可以表示:
n = log₂M bit
例如:
M = 4 n = log₂4 = 2
一个四电平码元可以表示2 bit二进制数据。
6.1 优点
- 一个码元能够携带多个比特;
- 数据传输速率可以高于波特率;
- 提高频带利用率;
- 在相同码元速率下传输更多信息。
6.2 缺点
- 相邻电平之间的差距减小;
- 对信道质量要求较高;
- 抗噪声能力相对较弱;
- 信号失真后不同电平可能难以区分;
- 编码和解码电路更复杂。
6.3 选择原则
选择数据编码方案时,需要综合考虑:
- 数据传输速率;
- 信道带宽;
- 线路质量;
- 抗干扰要求;
- 同步要求;
- 实现成本。
7. MLT-3编码
MLT-3是Multi-Level Transmit-3的缩写,通常称为三电平传输编码。
MLT-3使用三个电平状态:
- 正电平
+V; - 零电平
0; - 负电平
-V。
7.1 编码规则
- 输入比特为
0时,输出电平保持不变; - 输入比特为
1时,输出电平按照规定状态序列变化。
状态循环可以表示为:
0 → +V → 0 → -V → 0 → +V → ...
其中:
- 若当前为
+V或-V,输入1后转到0; - 若当前为
0,输入1后转到与上一个非零电平相反的非零电平; - 输入0时停留在当前状态。
7.2 状态转移示意
输入0:保持当前电平 输入1: 0 → +V +V → 0 0 → -V -V → 0 随后重复循环
7.3 特点
- 只有输入1时才发生电平变化;
- 连续多个1也不会每次在正负电平之间直接切换;
- 降低信号的最高变化频率;
- 减少对高频带宽的需求;
- 长串0仍可能造成同步信息不足,因此通常与其他编码配合使用。
7.4 典型应用
快速以太网 100BASE-TX 使用MLT-3作为线路编码的一部分。
易错点:MLT-3中的“3”表示三个电平状态,不表示每个码元携带3 bit。
8. 4B/5B编码
4B/5B是一种块编码。
其基本思想是:
- 将输入数据每4 bit划分为一组;
- 把每组4 bit映射为一个5 bit码组;
- 选择含有足够多
1的5 bit码组; - 再配合NRZ-I进行线路传输。
8.1 两级编码过程
4 bit原始数据
↓
4B/5B编码器
↓
5 bit码组
↓
NRZ-I编码器
↓
传输介质上的信号
4B/5B解决长串0造成的同步问题,NRZ-I负责把码组转换成线路信号。
8.2 为什么要使用4B/5B
NRZ-I的特点是:
- 输入1时发生电平翻转;
- 输入0时电平不变。
因此:
- 码流中的1越多,能够提供的同步信息越多;
- 长串0会导致信号长期不跳变;
- 4B/5B通过重新编码,限制连续0的数量。
4B/5B选用的有效5 bit码组中,1的数量不少于两个,从而为NRZ-I提供足够的电平跳变机会。
8.3 4B/5B编码表
| 十六进制 | 4 bit数据 | 5 bit码组 | 十六进制 | 4 bit数据 | 5 bit码组 |
|---|---|---|---|---|---|
| 0 | 0000 | 11110 | 8 | 1000 | 10010 |
| 1 | 0001 | 01001 | 9 | 1001 | 10011 |
| 2 | 0010 | 10100 | A | 1010 | 10110 |
| 3 | 0011 | 10101 | B | 1011 | 10111 |
| 4 | 0100 | 01010 | C | 1100 | 11010 |
| 5 | 0101 | 01011 | D | 1101 | 11011 |
| 6 | 0110 | 01110 | E | 1110 | 11100 |
| 7 | 0111 | 01111 | F | 1111 | 11101 |
8.4 编码效率
每4 bit有效数据被编码为5 bit:
编码效率 = 4 / 5 = 80% ``` 编码开销为: <code> 编码开销 = (5 - 4) / 4 = 25%
注意两种百分比的基准不同:
- 80%表示传输码流中有效数据所占比例;
- 25%表示相对于原始4 bit数据增加的编码位数。
8.5 典型应用
快速以太网 100BASE-FX采用4B/5B与NRZ-I组合编码。
类似的块编码还包括 8B/10B。
9. 8B/6T编码
8B/6T是一种二进制到三元符号的块编码:
8B表示8 bit二进制输入;6T表示6个三元符号输出;- 每个三元符号可以取
+、0、-三种电平。
编码过程为:
8 bit二进制数据
↓
映射
↓
6个三元符号
9.1 可用码组数量
6个符号中的每一个都具有3种状态,因此理论码组数量为:
3⁶ = 729
8 bit数据共有:
2⁸ = 256
种组合。
因此,可从729个三元码组中选择256个符合直流平衡、同步等要求的码组。
9.2 速率分析
100BASE-T4把6个三元符号轮流在3对输出线上发送。
每对线路的码元速率为:
25 MBaud
每对线路承载的数据率约为:
25 MBaud × 8/6 ≈ 33.3 Mbit/s
3对线路合计约为:
33.3 × 3 ≈ 100 Mbit/s
校正说明:数据率应按25 MBaud × 8/6计算。若写成25 MBaud ÷ 6/8,数学意义相同。
9.3 典型应用
快速以太网 100BASE-T4使用8B/6T编码。
10. 4D-PAM5编码
4D-PAM5用于 1000BASE-T千兆以太网。
其名称含义为:
- 4D:4个线对同时传输,形成四维符号;
- PAM:Pulse Amplitude Modulation,脉冲幅度调制;
- 5:每个线对具有5种电平状态。
每个线对可以使用以下电平:
+2、+1、0、-1、-2
其中,部分状态和冗余用于编码及前向纠错。
10.1 四维符号
4D表示四个线对在同一时刻共同形成一个符号:
(An, Bn, Cn, Dn)
教材用以下二进制组合说明四个符号:
| 符号 | 二进制表示 |
|---|---|
| An | 00 |
| Bn | 01 |
| Cn | 10 |
| Dn | 11 |
10.2 1000BASE-T传输方式
1000BASE-T具有以下特征:
- 使用5类或更高等级的双绞线;
- 共8根导线,即4个线对;
- 4个线对同时发送和接收;
- 使用全双工基带传输;
- 总数据传输速率为1000 Mbit/s;
- 每个线对的码元速率为125 MBaud;
- 每个码元承载约2 bit有效信息;
- 每个线对的数据率为250 Mbit/s。
计算如下:
单线对数据率 = 125 MBaud × 2 bit/码元
= 250 Mbit/s
总数据率 = 250 Mbit/s × 4
= 1000 Mbit/s
= 1 Gbit/s
10.3 前向纠错
PAM5提供5种电平,而表示2 bit数据理论上只需要4种状态。
增加的冗余有助于实现:
- 前向纠错;
- 信号均衡;
- 时钟恢复;
- 提高复杂信道中的可靠性。
FEC是Forward Error Correction的缩写,中文称为前向纠错。
11. 以太网编码对应关系
| 以太网标准 | 典型介质 | 编码方式 | 关键特点 |
|---|---|---|---|
| 传统以太网 | 同轴电缆或双绞线 | 曼彻斯特编码 | 自同步,带宽需求较高 |
| 100BASE-TX | 两对5类双绞线 | 4B/5B、NRZ-I、MLT-3 | MLT-3降低信号变化频率 |
| 100BASE-FX | 光纤 | 4B/5B与NRZ-I | 块编码保证同步跳变 |
| 100BASE-T4 | 四对3类双绞线 | 8B/6T | 8 bit映射为6个三元符号 |
| 1000BASE-T | 四对双绞线 | 4D-PAM5 | 四线对并行、每对125 MBaud |
说明:100BASE-TX的完整物理编码过程不只包含MLT-3,通常还包括4B/5B和NRZ-I等处理环节。教材在不同位置分别突出各机制。
12. 编码方案综合对比
| 编码方式 | 电平数量 | 自同步 | 检错能力 | 频带利用率 | 典型应用 |
|---|---|---|---|---|---|
| 单极性码 | 2 | 否 | 弱 | 一般 | TTY接口 |
| 极性码 | 2 | 否 | 弱 | 一般 | 基础数字接口 |
| AMI | 3 | 长串0时较差 | 有AMI违例检测 | 较好 | 数字通信线路 |
| B6ZS | 3 | 比AMI好 | 利用规定违例 | 较好 | AMI长零改进 |
| 归零码 | 3或更多 | 是 | 一定能力 | 较低 | 基础线路编码 |
| NRZ-I | 2 | 长串0时较差 | 弱 | 较高 | 调制解调器接口、与块编码组合 |
| 曼彻斯特 | 2 | 是 | 有 | 较低 | 传统以太网 |
| 差分曼彻斯特 | 2 | 是 | 有 | 较低 | 令牌环网 |
| 多电平编码 | 多个 | 视方案而定 | 视方案而定 | 高 | 高速网络 |
| MLT-3 | 3 | 长串0时不足 | 有限 | 较高 | 100BASE-TX |
| 4B/5B | 块编码 | 改善同步 | 可排除部分非法码组 | 80% | 100BASE-FX等 |
| 8B/6T | 3 | 较好 | 依赖码组设计 | 较高 | 100BASE-T4 |
| 4D-PAM5 | 每线对5个 | 是 | 支持冗余和纠错 | 高 | 1000BASE-T |
13. 编码方式的核心权衡
不同编码方式通常无法同时实现所有最优目标。
13.1 同步能力与带宽
曼彻斯特和差分曼彻斯特每位都有跳变:
- 时钟恢复容易;
- 自同步能力强;
- 但信号变化频繁;
- 所需带宽较大。
13.2 频带效率与抗噪声能力
多电平编码一个码元携带多个比特:
- 数据率高于码元速率;
- 频带利用率高;
- 但不同电平间距缩小;
- 对噪声和失真更加敏感。
13.3 简单实现与同步能力
NRZ-I实现简单、带宽利用率较高,但长串0没有跳变。
解决方法包括:
- 使用4B/5B限制连续0;
- 使用扰码;
- 使用其他能保证跳变密度的块编码。
13.4 冗余与可靠性
4B/5B、8B/6T和4D-PAM5都会引入一定冗余。
冗余的作用包括:
- 提供同步信息;
- 控制直流分量;
- 标识非法码组;
- 支持差错检测或纠正;
- 改善信号传输特性。
14. 易错点辨析
14.1 单极性码、极性码与双极性码
- 单极性码使用一种极性和零电平;
- 极性码使用正、负两个电平;
- 双极性码通常使用正、零、负三个电平;
- “双极性码”不等于“只有两个电平”。
14.2 归零码与不归零码
- 归零码在每个码元内回到零电平;
- 不归零码在码元内不要求回到零电平;
- 归零码通常同步性更好;
- 不归零码通常频带利用率更高。
14.3 NRZ与NRZ-I
- NRZ是“不归零”编码类别;
- NRZ-I中的I表示Invert on Ones;
- NRZ-I在输入1时翻转,输入0时保持;
- 不能简单地把NRZ-I理解为高电平表示1。
14.4 AMI与B6ZS
- AMI用正负交替脉冲表示1;
- AMI的长串0会造成同步问题;
- B6ZS用规定的违例码组替换连续6个0;
- B6ZS中的违例是有意插入的,不是普通传输错误。
14.5 曼彻斯特与差分曼彻斯特
- 曼彻斯特根据位中跳变方向判断数据;
- 差分曼彻斯特根据位开始处是否跳变判断数据;
- 两者位中间都必须有跳变;
- 两者都具有自同步能力。
14.6 MLT-3的“3”
- 表示正、零、负三个电平;
- 不表示3 bit;
- 不表示每个码元有8种状态;
- 输入0保持,输入1按状态序列跳变。
14.7 4B/5B不是线路电平码
- 4B/5B是块编码;
- 它把4 bit转换为5 bit码组;
- 还需要配合NRZ-I或其他线路编码;
- 它的主要作用是保证足够的信号跳变。
14.8 4D-PAM5中的“4D”和“5”
- 4D表示4个线对共同构成四维符号;
- 5表示每个线对使用5种电平;
- 不是4个电平,也不是每码元传输5 bit。
15. 复习要点
- 数据编码需要综合考虑速率、带宽、线路质量、同步和成本;
- 单极性码抗噪声能力较弱,且不能自同步;
- 极性码使用正负电平,抗干扰能力优于单极性码;
- AMI使用正、零、负三个电平,1的极性交替,0为零电平;
- AMI具有违例检测能力,但长串0会失去同步;
- B6ZS使用特殊码组替换连续6个0;
- 归零码每个码元内回到零电平,具有自同步能力;
- 双相码每位中间都有跳变;
- NRZ-I中1表示翻转,0表示保持;
- 曼彻斯特编码的位中跳变同时表示数据和时钟;
- 差分曼彻斯特的位中跳变只用于时钟,位开始处的跳变表示数据;
- 曼彻斯特用于传统以太网,差分曼彻斯特用于令牌环网;
- 多电平编码可以提高频带利用率,但对噪声更加敏感;
- MLT-3使用三个电平,0保持,1按状态序列变化;
- 100BASE-TX使用MLT-3等编码机制;
- 4B/5B将4 bit映射为5 bit,有效数据比例为80%;
- 100BASE-FX使用4B/5B与NRZ-I;
- 8B/6T将8 bit映射为6个三元符号,用于100BASE-T4;
- 4D-PAM5使用4个线对和5种电平,用于1000BASE-T;
- 1000BASE-T每个线对125 MBaud、250 Mbit/s,4对合计1 Gbit/s。
一句话总结:简单编码成本低但同步能力有限,双相编码同步可靠但占用带宽较大,多电平和块编码则通过更复杂的信号设计提高频带利用率和高速传输能力。
相关条目
参考资料
- 《网络规划设计师教程(第3版)》第1章“计算机网络基础”,第1.3.2节“数据编码”。
数据编码 线路编码 单极性码 极性码 AMI B6ZS 归零码 NRZ 曼彻斯特编码 差分曼彻斯特 MLT3 4B5B 8B6T 4DPAM5 以太网 软考 网络规划设计师 :::