编码、时钟与噪声
复习
- 尝试连接两台计算机:两台计算机通信的最小目标,是让一端的 0 和 1 在另一端被可靠区分
- 信号与传输介质:比特可借助电、光或无线电波传播,介质各有取舍
- 带宽、时延与吞吐量:它们描述不同维度的“快”
TL;DR
- 编码规定比特怎样变成信号变化
- 接收方需要时钟或信号中的节奏来决定何时采样
- 噪声会使信号被误判,因此编码要留出辨别余地
正文
我们已经能把信号送出去,也知道它要花多久、能走多快。现在回到一个更基本的问题:接收方究竟怎样从一个连续波形里,把 0 和 1 一个不差地读出来?
一直不变,反而读不出来
先设想一个糟糕的情况:发送端连续很久保持高电压。接收方看着这根线,怎么知道这到底是一个很长很长的 1,还是许多个接在一起的 1?它甚至无法判断“一个比特什么时候结束、下一个什么时候开始”。
所以,编码不仅要规定 0 和 1 长什么样,还常常要提供足够的跳变,让接收方借着这些变化来校准自己的时钟。这就是时钟恢复:接收方的节拍,可以从信号本身的节奏里“听”出来。
在合适的时刻采样
接收端在每个比特的合适时刻采样,再依据一个阈值判断信号更像 0 还是 1。这里的“阈值”就像一条及格线,高于它算 1,低于它算 0。
可现实很骨感:噪声会让信号上下抖动,本来及格的可能被压到线下,本来是 0 的也可能被抬上去。于是编码要尽量把 0 和 1 对应的信号状态“拉开距离”,让判断有足够的余地;加入时钟信息,也能降低风险。
但也要接受一个事实:真实世界不可能完全没有误差。 我们能做的是把出错的概率压得足够低,而不是追求绝对为零。后面讲校验时,我们还会回到这个话题。
比特流终于能被持续读出了。可接收方还不知道:这一长串里,哪一段才是一条完整的消息。
思考题 1
为什么一长串完全不变化的信号会让同步变困难?
思考题 2
如果把 0 和 1 对应的电压差距调得更大,误判会更少,但代价是什么?
小结
知识点
- 编码同时服务于数据表示和时钟恢复
- 接收方在合适的时刻采样,并按阈值判定
- 噪声使通信必须考虑误判,需要留出辨别余地
参考资料
- Wikipedia(zh):线路码:把比特映射为信号变化的编码方式
- Wikipedia(zh):时钟恢复:从信号中提取接收方所需节拍
思考题答案(仅供参考)
思考题 1
接收方缺少可用于校准节奏的变化,自己的采样时刻会逐渐漂移,越来越难判断每一位的边界。有了跳变,接收方才能不断“对表”。
思考题 2
代价是更高的信号电平差异需要更大的摆幅,也就更费电、对器件要求更高,并且更容易受某些物理限制。把距离拉大能提高容错,但电源、发热和成本都会随之上升,所以实际设计总是在容错和代价之间取平衡。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪