当你想将数据从一台计算机传输到另一台计算机时,你的数据(二进制形式)将首先进入 NIC(网络接口卡) 数据将被编码(例如使用定时器时钟滴答)并通过电子信号在网络上发送。
曼彻斯特编码的一个例子:
101110011001 // data
101010101010 // timer tick on network
000100110011 // result using XOR
为什么网卡不直接传输二进制数据,而是要先进行编码呢?
答案1
因为使用曼彻斯特编码有一个很好的优点,即自计时(更低的错误率和更可靠的传输)。
这是因为,不是查看 +5 伏到 0 伏来编码一位,而是根据传输的方向来编码一位。
通常,在传输之前,您需要先同步时钟。由于这种编码,曼彻斯特编码不需要这样做。
答案2
使用编码(例如您提到的曼彻斯特编码)至少有三个(可能更多)原因,当传输数字信息:
- 数据和时钟被组合成一个信号。如果时钟没有随数据一起发送,那么接收器就不知道何时样本信号以提取数字值。即使发射器和接收器以某种方式完美同步,也必须考虑传输介质的无限小延迟。另一种选择是将数据线与时钟线一起使用,但这会使电线数量加倍。与使用更多电线和更笨重的连接器相比,将电缆和收发器带宽要求(或功能)加倍(或减半,取决于观点)更便宜、更可靠。
- 一长串的零(零)不再看起来像是死线或断开的线。一长串的 1 不再看起来像是卡住了。
- 编码信号具有更均衡能量分布,即电压随时间平均应趋向于零。电路板上的逻辑信号使用 0 伏表示逻辑零,使用正电压(旧 TTL 为 5 伏,现代逻辑为 3.3 伏或更低)表示逻辑一。只有全零的数据逻辑才会具有零能量分布;任何其他数据模式始终具有大于零的平均电压水平和特征磁场。但由于曼彻斯特等编码使用正电压电平和负电压电平,传输信号产生的磁场要小得多,因为它们往往会相互抵消。这样,电线就可以在电缆中捆得更紧密,但彼此之间的干扰却更少。(即使是像 RS/EIA-232 这样的慢速传输方案也会使用正负电压来平衡能量分布。可能小于 0.5 米且在外壳内的板对板连接只会使用正电压。)
答案3
要完全了解使用曼彻斯特编码的原因,必须注意以下几点:
- 时钟信号
- 同步信号
- 编码
之后,原因是:“需要一种方法,让接收器能够明确地确定每个比特的开始、结束或中间,而无需参考外部时钟
最后,要实现这一点,曼彻斯特编码是方法之一。
答案4
基本上,曼彻斯特代码比许多其他类型的代码更受使用,因为它是自同步的。
当数据不变时,如果存在一串 0 或 1,则其他类型的同步可能会丢失。曼彻斯特码不存在此问题,因为只要存在数据,信号电平就会发生变化。
曼彻斯特编码的唯一问题是,您需要将数据速率的频率加倍,因为 8 位数据被转换为 16 位数据。因此,如果您需要 5K 的数据速率,则需要 10K 的波特率。
附录我希望该链接是允许的,但以防万一,请转到 Maxim 网站并搜索用于无线电通信的曼彻斯特数据编码。 http://www.maximintegrated.com/en/app-notes/index.mvp/id/3435 这应该有助于任何人理解这种编码的优点。