2026/10/23 3:29:06

符号与状态数:从log2(M)看数字调制的速率、带宽与误码率

符号与状态数:从log2(M)看数字调制的速率、带宽与误码率 做通信系统设计的人大概都经历过这样的时刻明明把码元速率和比特率的换算看了好几遍真要用的时候还是会卡在一个符号到底带几个比特上。BPSK一个符号一个比特QPSK两个比特8PSK三个比特16QAM四个比特——这个序列谁都能背下来但一旦要反过来推或者要解释为什么是log2(M)脑子又开始绕。符号与状态数的关系本质上是用多少个可区分的波形去代表多少种信息状态的问题。它决定系统的传输效率也决定抗噪声能力还牵动带宽、功率、硬件实现一整条链。这篇把这条线从头捋一遍该推导的推导该算账的算账。刚学通信原理的人可以用它打通概念做工程的人可以直接拿去对照速率换算和调制选型。1. 为什么符号和状态数总是一起出现1.1 一道最常见的入门题一个符号到底能带多少比特先看一道几乎是通信原理标配的题已知系统码元速率10M Baud采用8PSK求数据速率。答案是8PSK有8个状态每符号携带log2(8)3个比特数据速率就是10M×330Mbps。但每次把这道题摆出来总能看到几种典型错误有人把8PSK当成8个比特来算算出80Mbps有人不知道Baud指的是符号速率还有人把8个状态理解成8个电平。这道题的背后就是符号与状态数的核心关系。所谓符号在数字通信里指一个固定时长的基本波形单元也叫码元状态数M指这个系统一共能产生多少种不同且可区分的波形。状态数越多每个符号能携带的比特越多——这就是数字调制的出发点。先把这个大框架装上后面所有的公式和工程结论都是在这个框架上长出来的。1.2 码元到底是什么从比特流到波形的映射初学者很容易把比特和符号混为一谈因为我们习惯的计算机世界里1和0就是最小单位。但通信信道里跑的是物理波形不是抽象的数字。要让比特流传出去得先把每k个比特分成一组再给这一组分配一个对应的波形。BPSK的做法是把0映射为相位0的余弦波、1映射为相位π的余弦波一共两种波形M2。QPSK把比特流按两位一组切00、01、10、11分别映射到四个相位0、π/2、π、3π/2M4。接收端只要量出相位就能反查回两位比特。16QAM则把4个比特一组映射到16个不同的幅度相位组合M16。这个映射关系有一个必然约束k个比特的排列数是2^k种想一一对应不混淆状态数就必须是M2^k。反过来就是klog2(M)。这个公式不是人为规定的巧合而是信息编码的自然底线。你往一个符号里塞的比特越多需要准备的可区分波形就越多准备不出来接收端必然把不同的比特组合搞混。所以判断一个系统的潜力第一眼就看它的状态数。1.3 常见调制方式的状态数与载荷速查把最常见的调制方式列一张表关系一目了然调制方式状态数M每符号比特数k典型场景BPSK21低信噪比链路、深空通信QPSK42卫星通信、蜂窝控制信道8PSK83卫星广播16QAM164蜂窝数据、局域高速64QAM646蜂窝/局域无线高速档256QAM2568短距超高吞吐无线这张表记住一个规律就够状态数每翻一倍每个符号多带1个比特。很多人把精力花在背QPSK是2比特、16QAM是4比特这种结论上其实更应该理解背后的原因——2个比特正好4种排列4个状态一一对应4个比特正好16种排列16个状态一一对应。这个一一对应正是符号与状态数关系的全部内涵。2. 符号携带比特数为什么是log2(M)推导与速算2.1 信息量视角这是信息论给的硬约束除了排列组合的直觉还可以从信息量定义推一遍。信息论认为一个符号能携带的最大信息量取决于接收端能区分多少种不同状态。假设M个状态等概率出现每个状态的自信息量就是log2(M)比特因此单符号携带的信息量上限就是log2(M)。等概率这个前提值得多说一句。如果星座图上某些点出现概率更高单符号平均信息量会低于log2(M)这时实际速率和log2(M)×Rs会差一截。现代光通信里有人专门做概率整形故意把星座点分布调成非等概率靠这个差值去逼近香农限。但对传统调制来说比特经过映射后基本等概率落在各星座点所以每符号log2(M)比特是个非常实用的工程近似。反向看这个约束更有意思。如果规定每符号必须传k个比特那至少需要M2^k个状态。k2至少4个状态k4至少16个状态。状态不够就没有足够波形区分比特组合接收端一定混淆这是绕不过去的硬约束。理解了这一点就理解了为什么高阶调制总是和更大的星座绑定出现。2.2 公式链速率、时长和状态的三角关系把符号和状态数绑在一起的公式有三条建议当成一组记符号速率 Rs 1/TsTs为符号时长比特速率 Rb Rs × log2(M)因此 Rb log2(M) / Ts。三条完全等价差别只在提问角度。给符号速率求比特速率用第二条给比特速率反推符号速率除一下给定符号时长求速率用第三条。我自己做速率规划时习惯先把它化成符号率乘一个整数比特的形式再做量纲检查这样不容易漏乘log2(M)。提示这三个量里只有Ts是物理上可以直接用示波器量出来的Rs和Rb都是推算量。实际调试时优先确认Ts再往上推速率顺序比较不容易乱。2.3 三个计算演示从不同已知条件出发只看公式没实感做三道题就通了。第一题符号速率10M Baud16QAM求数据速率。16QAM的M16log2(M)4Rb10M×440Mbps。同样每秒1000万个符号16QAM比QPSK多传一倍比特因为它每符号多带2个比特。第二题目标比特速率100Mbps用64QAM求符号速率和符号时长。64QAM每符号6比特Rs100M/6≈16.67M BaudTs≈60ns。如果硬件每秒只能发1600万个符号又要跑到100Mbps以上那64QAM已经是门槛往上是256QAM。第三题示波器量出符号时长0.1μs用QPSK求比特速率。Rs1/0.1μs10M BaudQPSK每符号2比特Rb20Mbps。这个方向最贴近工程你实际测到的往往是波形时长而不是抽象比特率。三题做完做题时留个自检习惯——算完确认比特率是不是某个整数×符号率。如果每符号比特数算出个小数多半是状态数取错了。3. 状态数如何变成带宽效率奈奎斯特与频谱效率3.1 奈奎斯特准则为什么带宽只跟符号速率挂钩搞懂了符号带多少比特下一个问题是这些符号占多少带宽这里有个通信原理里绕不开的结论——奈奎斯特第一准则低通信道单边带宽为W时无码间串扰的最高符号速率是2W。注意限制定的是符号速率不是比特速率。这个结论的物理直觉符号速率决定波形切换的快慢切换越快频谱必然越宽状态数只改变每个波形的含义不改变切换快慢。所以带宽吃的是符号速率的量和状态数没有直接关系。同样是10M Baud的符号流BPSK和64QAM占的带宽几乎一样后者比特率却是前者的6倍。举个直观的例子要传30Mbpsα0.2时BPSK需要30M Baud占用带宽36MHzQPSK只需15M Baud占18MHz16QAM只要7.5M Baud占9MHz。同一个数据速率把状态数从2提到16频谱占用缩到四分之一。这正是高阶调制免费获得频谱效率的原因——只要信噪比撑得住。3.2 滚降系数决定实际占用带宽理想低通对应的sinc脉冲在物理上无法实现实际系统用升余弦滚降滤波器。带通情况下升余弦滤波的占用带宽是符号速率的(1α)倍α是滚降系数0到1之间。α越小带宽越紧但滤波器越难做、定时同步越敏感α越大带宽浪费越多波形更圆润工程上更容易稳定。实际系统α大多取0.1到0.35。举个数符号速率10M Baudα0.2占用带宽12MHzα0.35则要13.5MHz。想在同一频段塞更多载波就把α压小代价是收发滤波器都要做陡、做贵。这里要提醒一句很多人在这一步把符号速率和比特速率混着代进公式算出个离谱的带宽其实公式里只出现Rs比特率只通过log2(M)参与频谱效率的换算。3.3 频谱效率每Hz能传几个比特把状态数和带宽合并就得到工程里极其常用的频谱效率ηη Rb / B Rs·log2(M) / [Rs(1α)] log2(M)/(1α)公式说明频谱效率只跟每符号比特数k和滚降系数α有关与符号速率本身无关。同一套滤波设计下想提高η唯一的路是把k做大也就是增大状态数M。这正是高阶调制的根本价值。调制方式k理想ηα0实际ηα0.2BPSK11.000.83QPSK22.001.678PSK33.002.5016QAM44.003.3364QAM66.005.00256QAM88.006.67这张表回答了为什么现代系统拼命往64QAM、256QAM甚至1024QAM上堆——无线带宽寸土寸金传统单载波方式下频谱效率直接由状态数决定。但表里的数字不会无限上涨因为下一节的主角要出场了信噪比。4. 状态数翻倍的代价误码率与信噪比的成本账4.1 星座图上发生了什么判决域越来越小看星座图最直观。BPSK两个点放在实轴两端QPSK四个点分布在四象限16QAM是4×4方阵256QAM是16×16的密集方阵。接收端把带噪声的信号投影到星座图看落在哪个星点的判决域里。噪声让接收点在理想星点附近随机抖动抖出了领地边界就会判错。打个比方判决域就像停车位星点是车位线噪声是停车时的误差。车位越窄倒车入库越容易刮蹭。保持总发射功率不变时状态数越多星点之间的最小距离越小判决域也越窄。16QAM相邻点比QPSK近得多64QAM又比16QAM密得多同样的噪声幅度误判概率自然随M上升。一句话状态数买的是频谱效率付账的是误码率。4.2 要多花多少dB一张成本账工程上最关心从低阶换高阶要保持误码率不变信噪比得多给多少以无编码、理想相干解调、误码率约1e-6为例需要的Eb/N0大致是QPSK约10.5dB8PSK约14dB16QAM约14.5dB64QAM约19dB256QAM约23~24dB。换算成直观话就是QPSK→8PSK大约多3.5~5dB看误码率目标理论上限趋近5.3dBQPSK→16QAM大约多4dB16QAM→64QAM大约多4.5dB64QAM→256QAM大约多5dB工程口诀是每增加1比特/符号大约多花2~3dB高阶时更接近3dB。原因从误码率公式也能看出QAM误码率里关键的参数带着(M-1)在分母上M一大信噪比必须按比例补上去。拿QPSK和16QAM比4→16看起来只差一个档次实际上需要约4dB的代价16→64、64→256每一跳都在4~5dB。这意味着如果链路余量只有6dB你想从QPSK直接跳到256QAM信噪比是不够的。这套数是在AWGN、无编码的理想条件下算的。实际系统加了信道编码之后绝对门限会整体下移但状态数越高、需要信噪比越多的相对关系完全不变做链路预算时仍然按这个框架评估。4.3 物理链路里的两个隐形压榨机除了白噪声这个基本代价工程上还有两个因素会让高阶调制更快崩溃教科书讲得少实测却非常明显。第一个是相位噪声。本地振荡器的相位抖动会让整个星座图模糊、旋转。QPSK四个点离得远相位噪声稍微大点也没事256QAM的星点密到一定程度外圈点随便转一点就能跨到内圈点的判决域。我曾测过一些低成本射频前端的方案256QAM的实测灵敏度比理论值差超过2dB定位到最后就是相位噪声贡献的。所以工程上评估一块射频板能不能上高阶调制必看两个指标相位噪声和误差矢量幅度EVM。EVM不够低调制阶数再高也只是写在纸面上。第二个是功放非线性。QAM是幅度相位联合调制信号包络起伏很大功放压缩区的非线性会把外圈星点向内压造成系统性变形。PSK是恒包络没有这个问题这也是卫星通信至今大量使用QPSK的原因之一——功放可以安心工作在饱和点附近效率高。做系统设计时如果链路里有一段性能不太宽裕的射频段宁愿牺牲频谱效率也要守住误码率别只看星座图画得漂亮。5. 工程里的状态数选择从固定调制到动态切换5.1 链路余量选择状态数的坐标系现在把前面的知识串起来。给定信道可用带宽B、目标速率Rb、接收端信噪比设计者实际要回答的就是一个问题选多大的M让频谱效率和误码率同时达标。决策逻辑分三步先按带宽和速率算所需频谱效率ηRb/B查表反推至少用几阶调制再用链路预算估算接收端实际信噪比看该阶调制在目标误码率下够不够不够就提高发射功率、压缩滚降系数或者降低目标速率。这里的关键是链路余量——实际信噪比减去该调制方式所需信噪比之后多出来的部分。余量20dB放心用64QAM余量只有10dB大概率只能待在QPSK这一档。5.2 现代系统都在做的按信道好坏动态切换状态数正因为状态数直接决定系统在什么信噪比下能工作几乎所有现代无线系统都把换调制做成了常态。蜂窝网络里离基站近的用户信道好系统动态分到64QAM、256QAM吃到高吞吐到了小区边缘信噪比掉下来就自动退到QPSK保住连接不断。无线局域网的速率自适应同理从BPSK到1024QAM有十几档速率每档对应一个调制阶数和编码率组合终端按实时信道质量切换。工程上落地这件事靠的是一张张调制编码方案MCS表。表里把状态数、编码率、频谱效率、最低解调门限捆绑成档位系统根据信道质量指示去查表选档。信道变好就往上跳一档变差就往下退两档原则只有一个让实际信噪比始终待在所选档位的余量区间里。做过这类系统的人都会有个体会状态数的价值不在于越高越好而在于给了系统一个调节旋钮让频谱效率和可靠性在不同信道条件下动态平衡。5.3 一个速率规划小例子20MHz带宽怎么选状态数用一个小例子把决策流程走完。假设有20MHz带宽α0.2目标数据速率不低于60Mbps接收端信噪比约24dB目标误码率1e-6。第一步算频谱效率η≥60M/20M3 bps/Hz。查表α0.2时8PSK只有2.516QAM有3.33所以至少需要16QAM。第二步看信噪比16QAM在1e-6附近需要的信噪比Es/N0口径约20.5dBEb/N0约14.5dB加上每符号4比特的6dB24dB还余3.5dB可行如果信道能稳定给到30dB就可以直接考虑64QAM把速率推到100Mbps上下。反过来如果接收端只有15dB就只能降到QPSK档速率掉到33Mbps左右。这个例子看起来很朴素但它就是绝大多数链路预算工作的样子。状态数不是一个可以拍脑袋选的好看数字它是速率、带宽、功率、误码率四条线交汇出的交点。把交点的坐标搞清楚再决定用几阶调制才叫工程判断。6. 新手最容易踩的四个概念坑6.1 把Baud当成比特率Baud波特是符号速率的单位不是比特速率。这个错源远流长因为早期调制解调器是二进制的一个符号恰好一个比特Baud和bps数值相等于是口语里波特率被很多人当成比特率用了几十年。多进制调制普及后两者分道扬镳2400 Baud的QPSK比特率4800bps2400 Baud的16QAM比特率9600bps。判断有没有用错很简单只要不是二进制调制波特率数字必然小于比特率数字比值正好是每符号比特数。听到这条链路的波特率是100Mbps这种话直接可以断定对方把概念搞混了。写文档时我更倾向用符号速率这个词能少引出一堆误解。6.2 把QAM状态数当成单轴电平数这是我见过最多人犯的错。16QAM的16是二维星座图上的16个点不是一根轴上16个电平。16QAM其实是4×4I路4个电平Q路4个电平两路组合才有16个状态。64QAM是8×8256QAM是16×16。错误的来源多半是教材先讲PAM4PAM确实是一根轴上4个电平、对应2比特但它只有一个维度。QAM是两路正交载波各自调幅再叠加两个维度都有电平总状态数是两维电平数的乘积。做仿真时在这个地方想当然星座图就会和比特映射对不上查半天都找不到原因。6.3 Es和Eb的换算遗漏每符号能量Es与每比特能量Eb之间差一个log2(M)因子EsEb×log2(M)。做仿真时很多人从教科书抄来一个误码率公式心里默认用的是Eb/N0代码里却按Es/N0加噪声这一来就差了3dB、6dB甚至更多仿真曲线和理论曲线永远平行错开。我自己的习惯是先确认公式用的是Es还是Eb再看仿真加的是哪个中间老老实实乘除log2(M)。16QAM差4倍正好6dB64QAM差6倍约7.78dB。这一项漏掉曲线对不上还是小事更麻烦的是你会怀疑算法实现有问题把时间浪费在根本不存在的bug上。6.4 以为状态数可以无限往上加最后一个坑是认知上的。既然状态数越多频谱效率越高那一路加到65536QAM行不行理论上可以实际上很快到头。状态数增加所需信噪比飞速增长而信道和硬件能提供的信噪比是有限的。香农公式CB·log2(1SNR)给出了绝对天花板任何调制都超不过给定信噪比下的信道容量。高阶调制只是往天花板靠近的手段越靠近每一小步的代价越大。256QAM已经是很多商用系统的常态上限1024QAM只在极短距离、极高信噪比的场景出现再往上星点间距小到硬件精度撑不住误码率先崩速率归零。我在实际项目里养成了一个习惯拿到不管什么系统的指标先问三个数——调制阶数、目标误码率、信噪比余量。这三个数一出来整个系统的工作点基本就清楚了之后查滤波器、看EVM、估编码增益都是顺着这条主线走。对刚开始学通信原理的人我的建议是先别急着背那些星座图和公式把符号与状态数这条线从头推一遍想通了再看自适应调制、MCS表、链路预算你会发现自己突然能读懂以前觉得天书一样的系统指标了。