信道容量与香农
这个信道能承载目标速率吗
曲线是把容量 C/B = log₂(1 + SNR) 随 SNR 画出来的,曲线下方的阴影就是真正能达到的区域。用滑块提高 SNR,标示当前位置的竖线会向右移动;曲线升到虚线所示的目标速率之上时为金色,停在下方时为红色。低于目标速率,意味着用任何码都无法以那个速率传送。
足够巧妙就能无限快吗
既然噪声会让比特翻转,那么把同一个比特多发几遍,或者加上巧妙的编码,就能减少差错。那么,只要把码设计得足够精巧,是不是任何有噪信道都能想多快就多快、想多准就多准地传输呢?1948 年香农给出的答案出人意料:不能,有一个无法逾越的上限。不过在这个上限之下,差错可以任意接近 0。
香农公式
上限的值只用一行就能写出:C = B log₂(1 + SNR)。其中 C 是每 1 秒能无差错传送的最大比特数,B 是带宽,SNR 是信噪比。式中既没有调制方式,也没有码的种类,所以信道容量只由带宽和 SNR 两个数决定。要传的速率 Rb 小于 C 时,用合适的码就能做到任意可靠;大于 C 时,用什么办法都避免不了差错。
权衡——带宽与功率
提高容量的办法有两个:加宽带宽,或者增大信号功率来提高 SNR。但两者的效果大不相同。在 SNR 不变的前提下,带宽以乘法的形式放在式子前面,加宽一倍容量就翻一倍;而 SNR 在对数里面,想多得 1 比特,大约要把 SNR 翻一倍。增加功率很快就收益递减,所以功率宝贵时就加宽频带,频带宝贵时就投入功率。不过,若功率固定而只加宽频带,噪声会随频带成正比增加,SNR 随之下降;因此频带无论加宽到多宽,传送每个比特所需的能量都有一个无法突破的最小值。
回到第一屏
SNR 低时,容量曲线压在目标速率下方,那个速率用任何码都传不了,呈红色。提高 SNR 后,曲线慢慢升起,越过目标变成了金色;因为曲线是对数形的,每升高一格都需要越来越大的 SNR。要记住的只有一点:无差错通信的绝对上限是只由带宽和 SNR 决定的 C = B log₂(1 + SNR),其下全都可行,其上全都不可能。
下一单元
香农保证了在 C 之下差错可以接近 0,却没有说怎么做到。最后一个单元讲的就是这个方法:差错编码。按照规则给要发送的比特附加多余的比特,即使噪声翻转了几个,接收机也能借这些多余比特察觉偏差并加以纠正。从一个奇偶校验位出发,一直讲到检错和纠错的原理。