seegongsik
CM · 噪声与信息

信道容量与香农

无论把码设计得多么巧妙,一条信道能无差错承载的比特率都有上限。本单元学习香农的结论:这个上限只由带宽和 SNR 两样东西决定;还要学习带宽与功率如何相互交换。

这个信道能承载目标速率吗

曲线是把容量 C/B = log₂(1 + SNR) 随 SNR 画出来的,曲线下方的阴影就是真正能达到的区域。用滑块提高 SNR,标示当前位置的竖线会向右移动;曲线升到虚线所示的目标速率之上时为金色,停在下方时为红色。低于目标速率,意味着用任何码都无法以那个速率传送。

信噪比 SNRSNR = 3.0 dB
目标速率是每 1 赫兹 4 比特,SNR 要超过 15(约 11.8 dB)才够得着。曲线是对数形的,所以提高 SNR,容量也只会慢慢上升。
当前 SNR 的容量与目标
C/B = 1.58 < 4
容量不足

足够巧妙就能无限快吗

既然噪声会让比特翻转,那么把同一个比特多发几遍,或者加上巧妙的编码,就能减少差错。那么,只要把码设计得足够精巧,是不是任何有噪信道都能想多快就多快、想多准就多准地传输呢?1948 年香农给出的答案出人意料:不能,有一个无法逾越的上限。不过在这个上限之下,差错可以任意接近 0。

香农公式

上限的值只用一行就能写出:C = B log₂(1 + SNR)。其中 C 是每 1 秒能无差错传送的最大比特数,B 是带宽,SNR 是信噪比。式中既没有调制方式,也没有码的种类,所以信道容量只由带宽和 SNR 两个数决定。要传的速率 Rb 小于 C 时,用合适的码就能做到任意可靠;大于 C 时,用什么办法都避免不了差错。

观察C = B log₂(1 + SNR)
容量只由带宽与 SNR 确定。
选择Rb ? C
只有速率低于 C 时,才能做到任意可靠的传输。

权衡——带宽与功率

提高容量的办法有两个:加宽带宽,或者增大信号功率来提高 SNR。但两者的效果大不相同。在 SNR 不变的前提下,带宽以乘法的形式放在式子前面,加宽一倍容量就翻一倍;而 SNR 在对数里面,想多得 1 比特,大约要把 SNR 翻一倍。增加功率很快就收益递减,所以功率宝贵时就加宽频带,频带宝贵时就投入功率。不过,若功率固定而只加宽频带,噪声会随频带成正比增加,SNR 随之下降;因此频带无论加宽到多宽,传送每个比特所需的能量都有一个无法突破的最小值。

填空η = C / ? = log₂(1 + SNR)
每 1 赫兹的效率为 log₂(1 + SNR)。
自己来B → 2B : C → ?
带宽加倍则容量加倍(SNR 不变)。

回到第一屏

SNR 低时,容量曲线压在目标速率下方,那个速率用任何码都传不了,呈红色。提高 SNR 后,曲线慢慢升起,越过目标变成了金色;因为曲线是对数形的,每升高一格都需要越来越大的 SNR。要记住的只有一点:无差错通信的绝对上限是只由带宽和 SNR 决定的 C = B log₂(1 + SNR),其下全都可行,其上全都不可能。

信道容量 C = B log₂(1 + SNR) 是一条信道在差错可以任意小的条件下能传送的最大比特率。它与调制和编码无关,只由带宽 B 和 SNR 决定。速率低于 C 时,用合适的码可以可靠传送;高于 C 时则不可能。要提高容量,可以加大带宽(线性)或功率/SNR(对数),二者可以相互交换。

下一单元

香农保证了在 C 之下差错可以接近 0,却没有说怎么做到。最后一个单元讲的就是这个方法:差错编码。按照规则给要发送的比特附加多余的比特,即使噪声翻转了几个,接收机也能借这些多余比特察觉偏差并加以纠正。从一个奇偶校验位出发,一直讲到检错和纠错的原理。