做通信的人,几乎每天都会跟“符号”和“状态数”这两个词打交道。读眼图、看星座图、算带宽、调调制方式,绕来绕去都绕不开一个基本问题:一个符号到底能带多少比特?为什么QPSK是4个状态,8PSK是8个状态,16QAM偏偏是16个状态?这背后的“状态数”决定了频谱效率、抗噪声能力,是整个数字通信系统里最基础却最容易被忽略的一对关系。
这篇文章想把符号与状态数的关系彻底讲透。不仅讲公式,更要讲公式背后的工程直觉。适合刚接触通信原理的在校学生,也适合做基带算法、射频链路、协议开发的工程师——当你需要从原理层面理解系统参数,或者要给一个“为什么选16QAM而不是QPSK”的争议下结论时,翻一翻会有用。
1. 先把概念说清楚:符号是什么,状态数又是什么
1.1 比特、符号、码元,这三个词别再混着用
比特是信息量的最小单位,取值只有0或1。符号(Symbol)是在信道上传输的物理波形单元,一个符号可以对应一个或多个比特。很多教材里又把符号叫“码元”,英文都是Symbol,翻译不同而已。
通信系统关心的“状态数”,通常就是指M元调制里的M。2PSK的M=2,QPSK的M=4,8PSK的M=8,16QAM的M=16。每个符号携带的比特数等于log2(M),所以M越大,一个符号装下的信息就越多。这个关系是通信原理里最核心、最基础的一条,也最容易在公式里把底数和真数搞错。
我见过不少入门不久的同学,算16QAM的符号比特数时直接写“16比特”,其实16QAM一个符号只带4个比特,因为2^4=16。这个换算要是搞错了,后面符号速率、频带利用率、误码率全都会跟着错。
1.2 状态数到底指什么
状态在星座图上就是一个个点,在眼图上就是一个电平台阶,在频率上就是一组正交波形。以PSK为例,BPSK只有两个相位:0和π,对应两个状态。QPSK把相位细分成四个:0、π/2、π、3π/2,对应4个状态。16QAM则在I/Q平面上摆了16个点,幅相都有变化。
状态数的本质,是告诉我“这个调制格式能在同等信号功率下区分多少种不同的合法波形”。区分得越多,每个符号承载的比特越多,但接收端判断起来也越困难。
这里的关键是“合法”两个字。不是随便画个点就算状态,状态之间必须有足够的距离,让判决器在噪声干扰下还能可靠区分。换句话说,状态数是可区分波形数,不是可生成波形数。一个点无论离得多近,只要理论上有区别,就能算一个状态,但如果近到噪声一冲就判错,那工程上它就不具备实际意义。
1.3 一拍一比特和一拍多比特
如果一次调制只发一个比特,那就是2状态调制,符号速率等于比特速率。当状态数变成4,一个符号能携带2个比特,符号速率只需要比特速率的一半。有人会问:这样不是赚了吗?对,带宽就省下来了。
省下来的带宽可以给更多用户,或者在同一带宽里把比特速率提上去。但代价是每个符号承载更多比特以后,星座图上相邻点之间的距离变小,同样的噪声条件下更容易判错。
所以“状态数”从来不是一个可以无限增大的参数,它是一个需要在带宽和误码率之间权衡的工程决策。理解了这一点,后面看自适应调制、看频谱效率、看链路预算,都会顺很多。
2. 为什么要引入多个状态:带宽与频谱效率的算账
2.1 奈奎斯特第一准则下的硬约束
无码间串扰条件下,一个信道的极限符号速率是奈奎斯特速率。如果基带单边带宽是B,理论上最高符号速率为2B Baud(实信号)。这个约束来自奈奎斯特第一准则,是整个脉冲成形的理论根基。
既然符号速率的上限被信道带宽锁死,那要在同样带宽里提高信息速率,就只有一个办法:提高每个符号携带的比特数,也就是增大M,让一个符号对应更多的状态数。
可以说,一切多进制调制都是从这个约束里“逼”出来的。信号带宽是物理资源,像地皮;符号速率是楼层数,受规划限制不能随便加;状态数是每个房间住几个人,加人就得多隔出房间,但房间越小,住得越挤,越容易串门。
2.2 频谱效率的公式与实例
频谱效率的定义是单位带宽内能传的比特率:
η = Rb / B
把Rb拆开:Rb = Rs × log2(M),所以:
η = (Rs × log2(M)) / B
如果系统工作在奈奎斯特极限,Rs = 2B(基带实信号),那η的理论上限就是2log2(M) bit/s/Hz。实际中由于有滚降,会打折扣。
工程上通常用占用的射频带宽来算,即B_rf = Rs(1+α),其中α是滚降系数。这样频谱效率就变成:
η = log2(M) / (1+α)
这个式子看着简单,但特别容易踩坑的是带宽口径问题。双边带带宽、单边带带宽、复基带带宽,网上资料口径不统一,算出来结果差一倍。我的建议是:不管用哪套口径,先把“这个B到底指什么”写清楚,再用公式,否则项目评审的时候被问一句“你这带宽是双边还是单边”就露怯了。
举两个实际数字。α=0.25时,QPSK的频谱效率是2/1.25=1.6 bit/s/Hz,16QAM是4/1.25=3.2 bit/s/Hz,64QAM是6/1.25=4.8 bit/s/Hz。同样10MHz带宽,理论上QPSK能传16Mbps,16QAM能传32Mbps,64QAM能传48Mbps。这差距全部来自状态数的增加。
2.3 带宽不变,容量翻番的秘密
从2状态变4状态,每个符号的比特数从1变2。同样是100M Baud的符号速率,比特速率从100Mbps变200Mbps。
这个“翻番”不是靠提高符号速率,而是靠增加状态数。理解这一点,就能解释为什么移动通信里天线的调制阶数一直在往上涨:调制阶数升高,峰值速率随之升高,前提是链路质量足够好。
我实测过一个场景:在同一个信道带宽下,把调制方式从QPSK切到16QAM,频谱仪上看到的信号占用带宽几乎没变,但吞吐量翻了一倍。直观感受就是“同样的管子,流了双倍的水”,代价是接收端的解调裕量明显变紧张。
3. 状态数不是越多越好:误码率与信噪比的博弈
3.1 星座图上状态间的距离,决定抗噪能力
16QAM的16个点,在同样平均功率下,相邻点之间的距离比QPSK的4个点要小。对于同样功率的星座,M越大,点与点之间的欧氏距离越小,抗噪声能力越差。
以PSK为例,相邻两个状态之间的相位差是2π/M。M=2时差180度,M=4时差90度,M=8时差45度。相位差越小,受相位噪声和热噪声影响就越容易串到隔壁状态。做WiFi的人可能深有体会:信道一差,MCS从10掉到5,其实就是从1024QAM一路跌到QPSK,状态数减少,抗噪能力增强,链路才能保住。
这里有个很重要的概念:状态数增加,一般意味着对信噪比的要求增加。这不是“实现不够好”的问题,而是信息论给出的基本代价。你要用更密的星座去装更多比特,就要用更高的信噪比去“撑开”这些点之间的距离。
3.2 算一笔误码率的账
在高斯白噪声信道下,BPSK的理论误码率为:
Pe = Q(√(2Eb/N0))
QPSK由两个正交的BPSK构成,理论误码率与BPSK近似相同,但要注意它每个符号带2比特,所以同样Eb/N0下“看起来”更划算。8PSK比QPSK大约差2.4dB,16QAM比QPSK大约差4dB左右。这里的“差”指的是:要达到同样误码率,高阶调制需要更高的Eb/N0。
举例来说,要求误码率1e-3,QPSK大约需要Eb/N0在6.8dB附近,16QAM大约在10.5dB附近。实际系统中还有编码增益、信道估计误差、硬件损伤,所以差距往往比理论值更大。我测过一套端到端链路,理论差4dB的两种调制,实测差到5.5dB,主要亏在功放非线性和载波恢复残留误差上。
3.3 工程上到底怎么选状态数
工程上选调制方式不是选“最大M”,而是选“在可用信噪比下能可靠工作的最大M”。链路预算、信道估计误差、信噪比余量,都会影响选择。
自适应调制编码(AMC)就是根据信道质量动态调整M的典型应用。信道好就用高阶,信道差就退到低阶。移动通信里的CQI、WiFi里的MCS,本质上都是同一件事:让系统在保证可靠性的前提下,尽可能多地利用状态数。
我的经验是:做方案时不要卡着理论门限选调制方式,留出至少3dB余量,否则温度变化、天线驻波、邻道干扰一上来,系统就崩了。宁可把状态数调低一档,也别让误码率贴着红线跑。
4. 从公式到系统:符号速率、比特速率与滚降系数的联动
4.1 三者关系与单位换算
核心公式就一条:
Rs = Rb / log2(M)
注意这里的Rb是信息比特率,不是编码后的比特率。如果系统里有FEC编码,一般用编码后的符号速率来计算带宽需求,因为信道里跑的是编码后的比特。
举个例子,一个系统要做20Mbps的信息速率,采用QPSK(M=4),那么符号速率就是20M/2=10M Baud。如果先做了3/4码率的编码,那么信道比特率变成20M/(3/4)=26.67Mbps,符号速率就是13.33M Baud。很多人做带宽估算时忘了算编码开销,结果射频带宽留小了,项目后期改设计非常痛苦。
4.2 滚降因子对带宽的实际影响
有滚降时,射频双边带带宽是:
B_rf = Rs(1+α)
α越小,带宽越窄,但时域波形拖尾越长,对定时抖动、非线性失真更敏感。α越大,带宽越宽,波形更“胖”,工程上更容易实现,但频谱效率下降。
卫星通信里经常用α=0.1甚至0.05,因为带宽资源极度宝贵,但代价是实现复杂度高、对同步精度要求苛刻。地面蜂窝网一般取0.22左右,WiFi也有类似取值。做设备选型时,α不是一个可以随便填的参数,它直接决定信道滤波器的阶数和时延。
我踩过一个坑:给某系统做链路预算时,把α按0.2算,结果合作单位实际用的是0.25,最后频谱占用超了10%,只能连夜改滤波器参数。所以项目一开始就要把滚降系数写进接口文档,不能默认“大家都按0.2”。
4.3 一个完整的参数设计实例
需求:比特速率20Mbps,误码率目标1e-6,可用射频带宽10MHz。
第一步算符号速率。QPSK(M=4),每个符号2比特,Rs=20M/2=10M Baud。按α=0.25算,占用带宽B=10M×1.25=12.5MHz,超过10MHz,不可行。
第二步换8PSK(M=8),每个符号3比特,Rs=20M/3≈6.67M Baud。占用带宽B=6.67M×1.25≈8.33MHz,满足带宽约束。
第三步查误码率需求。8PSK要满足1e-6误码率,理论上需要的Eb/N0比QPSK高约2.4dB。如果链路预算里还有3dB余量,那8PSK可用;如果余量只有1dB,就得回到QPSK并降低信息速率,或者提高编码冗余。
这个例子完整展示了状态数的选型流程:先看带宽约束,再看信噪比约束。两个约束都过了,才能定方案。
5. 常见问题与排查技巧实录
5.1 符号速率和波特率到底是不是一回事
很多人在概念上卡住:符号速率、码元速率、波特率,到底是三个东西还是一个东西?
答案是:一回事,只是叫法不同。波特率(Baud rate)就是符号速率,一个符号对应一个波特,单位是Baud。在M进制下,波特率等于比特率除以log2(M)。只有在2状态(二进制)调制时,波特率才恰好等于比特率。
我在评审时经常发现有人写的方案里“波特率”和“比特率”混用,导致系统容量估算翻倍出错。建议所有文档里统一注明公式:Rb = Rs × log2(M),不要只写“速率”。
5.2 为什么示波器上看不到那么多种状态
眼图上看到的电平台阶数量对应的是幅度维度的状态数。比如PAM-4有4个电平,眼图上有3个“眼睛”。但QPSK是纯相位调制,幅度恒定,在示波器上只看到恒包络,看不到多个电平。要看到完整的符号状态,必须用星座图,也就是矢量分析仪或者信号分析仪的星座图模式。
这是一个很经典的误判场景:有人拿示波器测QPSK信号,看到“包络平坦”就以为没调制上,其实调制好好的,只是没选对观察工具。做射频链路测试,示波器、频谱仪、信号分析仪各管一摊,别指望一件仪器看全所有维度。
5.3 误码率测量中的常见坑
误码率测试最容易栽的坑有三个。
第一,仪器里设置的“符号数”和“比特数”对不上。测8PSK时,如果仪表默认按QPSK解调,误码率会全是错码。必须先确认调制方式、符号速率、滚降系数全部匹配。
第二,参考星座图没有归一化。星座图上如果参考点功率和实测点功率不一致,EVM会虚高。测量时先把归一化基准设为RMS,再看各仪表的对比结论才有意义。
第三,忘了加匹配滤波器。发射端成型滤波和接收端匹配滤波是一对,漏掉任何一侧,带外噪声都会灌进解调器,测出来的EVM比理论差一大截。排查时先看基带滤波器的滚降系数是不是两边一致。
我个人在测试中最深的体会是:每改一次调制阶数,都要回到“状态数—符号速率—带宽—误码率”这个闭环里重新过一遍,别只盯着数据速率。状态数是入口,带宽和信噪比是约束,任何一个环节脱节,系统设计都会在实测阶段现原形。
最后分享一个小技巧:做星座图对比测试时,把两台仪表的参考点都设为相同的归一化标准,比如平均功率1.0,再去比对EVM和相位误差。这样不同仪器、不同品牌之间的数据才有可比性,项目评审时也能少很多争论。这个内容如果后面有机会,可以再往高阶方向补一篇:从单载波QAM到OFDM子载波上的符号映射,状态数这个底层逻辑其实完全一致。