数字通信链路原理与实测:从采样到EVM的工程笔记
数字通信这块,我刚入行的时候踩过一个大坑:在实验室里对着误码仪上那个永远降不下去的百分比调了整整两天,最后发现不是发射功率不够,也不是天线没对准,而是我压根没理解数字通信系统里每一个环节都在跟概率博弈这件事。后来我把整个链路的原理、参数、实测方法一条条记成了笔记,今天这篇就相当于把这些笔记重新整理了一遍,希望能让正在啃原理或是刚接手射频测试的读者少走点冤枉路。
这篇内容适合三类人:一是通信专业的在读学生,想把课本里的采样定理、星座图、OFDM这些概念落到实际信号上;二是刚转行做无线通信测试的工程师,需要在信号源和频谱仪上看懂“EVM超标”“误码率下不去”到底怪谁;三是做嵌入式或软件无线电的开发者,想搞清楚为什么明明算法没问题,空中一跑就出各种鬼问题。
1. 先把链路画出来:数字通信到底在“通”什么
1.1 一条典型链路上藏着哪些环节
数字通信和模拟通信最大的区别,在于我们传输的不再是一个连续变化的电压或频率,而是一串离散的比特。这串比特从信源出来之后,要经历信源编码、信道编码、交织、调制、脉冲成形、上变频,然后经过天线和空气,接收端再做下变频、匹配滤波、同步、解调、译码,最后才还原出原始比特。任何一个环节处理得不干净,最终都会以误码率的形式体现在接收端。
我见过很多初学者只盯着“调制”和“解调”这两个环节,觉得只要星座图映射对了,误码率就应该很低。但实际链路里,真正决定系统性能下限的往往是脉冲成形是不是匹配、接收端采样点有没有落在最佳位置、载波频偏有没有被纠正这些看起来不起眼的细节。数字通信整个系统就像一条流水线,任何一个工位偷懒,成品质量都会打折扣。
1.2 笔记里最想提醒的一句话:每个环节都在“丢概率”
课本里经常用误码率(BER)来衡量系统性能,误码率的本质是一个概率:发送一个比特,接收端判错的概率有多大。香农告诉我们,在带宽和信噪比确定的情况下,这个概率有一个理论极限,任何工程手段都突破不了。但工程上绝大多数情况是离这个极限还差得很远,问题出在链路里的各种非理想因素。
比如说,接收机噪声系数差一点,等效信噪比就掉几个dB;本振相位噪声太大,星座点就转圈;发射机非线性太强,星座点就向内压缩。这些都是概率上的“损耗”,每一笔都得记在系统预算账上。所以我做笔记的习惯是:每一个模块除了记算法和公式,还额外记一笔它的非理想因素会吃掉多少信噪比,这样出问题时能快速定位。
2. 采样与量化:ADC位数每多1bit,信噪比就多6dB
2.1 采样率不是越高越好
奈奎斯特采样定理告诉我们,要无失真地重建一个最高频率为f的信号,采样率至少需要2f。但工程上几乎没有人卡着2倍去选采样率,一是因为抗混叠滤波器做不到那么陡峭的砖墙截止,二是因为接收端后续的定时同步和匹配滤波需要对采样点做插值,采样率过低会让插值性能急剧恶化。
我自己的经验是,如果是零中频接收机,采样率一般取符号速率的4到8倍比较稳;如果是低中频或超外差结构,那还要额外考虑镜像抑制和抗混叠滤波的过渡带宽度。当时我做一个符号速率1Msps的系统,开始图省事只用了2.5Msps采样率,结果定时同步环路怎么调都抖动很大,把采样率提到4Msps之后问题一下就消失了。这个教训说明:采样率多出来的那部分,不是浪费,是给同步和滤波留的操作空间。
2.2 量化位数与SNDR这笔账
ADC的量化噪声在小信号输入时差不多可以建模成均匀分布的噪声,量化信噪比的理论值约等于6.02N+1.76dB,其中N是有效位数。也就是说,位数每多1bit,信噪比就多约6dB,这就是标题里那句“6dB账”的来历。
但注意这里说的是有效位数,不是标称位数。很多ADC在数据手册上的ENOB(有效位数)会明显低于标称位数,因为它在实际工作频率下有失真、有噪声,那些高位的bit可能大部分都是无效位。所以做链路预算时,我习惯先看ENOB而不是bit数,再用SNDR去估算接收机能达到的底噪。
另外还有一个容易忽略的问题:量化噪底是相对满幅输入而言的。如果输入信号电平太低,ADC的量化噪声占比就会上升,等效信噪比下降;如果输入信号太接近满幅,削波失真又会带来大量互调分量。工程上通常把输入信号峰值控制在满幅以下1dB到3dB,这个区间叫“回退”,回退多少需要结合信号的峰均比来定。
2.3 一个关于输入电平的实测教训
有次排查一个接收链路EVM偏大的问题,一开始怀疑是LNA不够好,换了好几颗低噪声放大器,EVM纹丝不动。后来用频谱仪看ADC输入端的信号电平,才发现电平比正常值低了将近10dB,ADC实际等效位数被浪费了一大截。把增益链调整到合理区间后,EVM直接从6%降到了2%,效果立竿见影。
这个坑非常典型:很多人觉得ADC位数高就一定好,但在信号幅度没有充分利用的情况下,高位数ADC和高位数但小信号输入其实效果差不多。看接收机性能,一定要从天线口一路看到ADC输出,每一级增益分配都要算清楚,尤其注意最后一级的AGC是不是真的把信号顶到了合适的电平。
3. IQ调制与星座图:用复数信号去理解射频才知道问题出在哪
3.1 为什么数字调制天然是复数的
带通信号在数学上可以用两路正交载波的线性组合来表示,一路叫I路(同相分量),一路叫Q路(正交分量)。所谓IQ调制,就是把基带复数信号的实部放到I路、虚部放到Q路,再分别乘上正交的本地载波后相加。这样做的好处是,任意调制方式(PSK、QAM、APSK)都可以统一成复数符号的映射,而且频谱利用率更高。
理解这一点之后,很多射频现象就变得直观了。比如你在频谱仪上看到的镜像分量,本质就是IQ两路的幅度和相位不平衡造成的。比如你在星座图上看到的某个特定方向的挤压,往往可以对应到I路或Q路链路里某一处增益异常。所以别把星座图当成一个炫酷的可视化工具,它是定位射频损伤最强的诊断手段之一。
3.2 星座图的“展开度”和“弧形”对应什么损伤
星座图上每个符号的落点不是理想点,而是被各种噪声和干扰推离理想位置的一簇点。如果这些点均匀地围绕理想点散布,多半是加性白噪声在主导;如果点的分布呈现一条弧线,尤其是高阶调制时外圈符号出现明显的“弯曲”,那大概率是本振相位噪声在起作用;如果点簇沿着某个方向被拉长,往往是I/Q不平衡;如果整体星座点向中心收缩,通常是发射机末级功率放大器在大信号下出现了压缩。
判断损伤来源的时候我有个小技巧:先看问题是对所有调制阶数都出现,还是只在高阶调制时出现。只在高阶时出现,说明多半是相位噪声、EVM底限这类跟信噪比相关的问题;对所有阶数都出现且点簇有明显形变,那就要回头查I/Q链路和本振。
3.3 不同调制阶数对EVM的要求完全不同
EVM是误差矢量幅度,简单说就是实测星座点偏离理想星座点的距离,用符号点平均幅度做归一化,换算成百分比或dB。它把接收机里各种损伤(相位噪声、IQ失衡、非线性、噪声)统一成一个指标,是数字通信接收机最常用的质量度量。
不同调制方式的EVM门限相差很大。举个例子,QPSK对EVM的要求相对宽松,16QAM适中,而256QAM或更高阶的调制就对EVM提出了极其苛刻的要求。下面这张表是我平时测试时常用的参考值,实际项目里还要按协议预留余量:
| 调制方式 | 典型EVM门限(RMS) | 约等于信噪比要求 |
|---|---|---|
| QPSK | 约17% | 约15dB |
| 16QAM | 约12% | 约20dB |
| 64QAM | 约8% | 约25dB |
| 256QAM | 约3.5% | 约30dB |
这张表的意思是,如果你的系统目标是跑256QAM,链路里每一个模块带来的EVM劣化都得控制到1%甚至更低的量级,才有希望在整体上留出足够裕量。
4. 脉冲成形与匹配滤波:收发两端是怎么“对账”的
4.1 带宽和码间串扰,是一对明码标价的矛盾
数字信号如果不做任何处理直接发送,它的频谱是很宽的,会严重干扰相邻信道。脉冲成形(也叫基带成形)的目的,就是在保证不产生码间串扰的前提下,把信号的频谱压缩到需要的带宽里。但频谱压缩不是免费的,代价是时域波形的“拖尾”变长,这就引出了码间串扰的问题。
码间串扰就像一个排队场景:你前面那个人说话太大声、尾音拖得太长,结果你听不清自己应该听到的那句话。脉冲成形的核心,就是设计一个在采样点上能做到“互不干扰”的波形,让相邻符号在最佳采样时刻恰好为零,这样接收端在正确的时间点采样时,就能把符号“干净”地抠出来。
4.2 根升余弦滤波器为什么成对使用
升余弦滤波器(RC)本身能在采样点提供零码间串扰,但工程上我们通常不直接在发端用RC,而是把整个成形和匹配滤波拆成两半,收发各用一个根升余弦滤波器(RRC)。总响应等于两个RRC的卷积,恰好等于一个RC,于是接收端在正确采样时刻同样没有码间串扰。同时,接收端的RRC又是匹配滤波器,能让接收信噪比最大化。
很多初学者在这里绕不过来,以为发射端用一个RC就够了。但要知道,接收端如果不用匹配滤波器,信噪比会白白损失;而如果接收端再用一个RC,总响应就不再是零码间串扰了。RRC成对使用,是既兼顾信噪比又兼顾零码间串扰的标准做法。
4.3 滚降系数的选择其实是个工程妥协
滚降系数α决定信号占用带宽和时域波形拖尾的速度。α越大,带宽越宽,但拖尾衰减越快;α越小,带宽越窄,但拖尾衰减越慢,对定时误差越敏感。
实际系统里α的取值很讲究:LTE和5G NR里数据信道常用0.22或更小的值,WCDMA和很多卫星系统用0.22到0.35之间。我做过一个低功耗物联网收发机,当时为了把占用带宽压进窄带许可范围,选了α=0.15,结果定时同步要调得很精细,稍微有点采样钟漂移,误码率就开始抬头。后来改成0.2,带宽微增一点,但同步余量明显改善。这种“省带宽还是省同步余量”的取舍,必须结合你系统的实际同步能力来决定,不能只看频谱图。
5. 信道编码与交织:冗余不是浪费,是给比特上保险
5.1 为什么不能用“多发几遍”代替编码
最朴素也不可靠的抗差错方法,是把每个比特重复发三遍,接收端用多数表决的方式还原。这种重复码确实能降低误码率,但开销实在太大了。信道编码的核心思想,是用更聪明的冗余方式,用较少的额外比特换来远超重复码的性能,这个额外的性能收益就叫编码增益。
拿卷积码、Turbo码、LDPC码这些现代编码来说,在误码率10^-3到10^-6区间,它们比不编码时通常能带来好几个dB的增益。这意味着在同样的发射功率和带宽下,编解码之后能让链路多跑出更远的距离或更高速率。
5.2 从卷积码到LDPC/Polar,编码增益从哪来
编码增益的来源,从直觉上可以这样理解:编码在发送比特之间引入了约束关系,接收端译码时不是独立判断每个比特,而是利用整个码字的结构,把所有比特的接收信息综合起来做最大似然或迭代判决。这样一来,少量比特的判决错误会被其他比特的信息“拉回来”。
早期的卷积码加维特比译码,在约束长度不大时复杂度已经很高。后来Turbo码通过两个卷积码的并行级联和迭代译码,接近了香农限很多;LDPC码则用稀疏校验矩阵和置信传播迭代算法,在码长较长时性能也很接近香农限,而且并行度高,硬件实现相对友好;Polar码则在5G里因为短码表现好、编解码复杂度可控而占了重要位置。做工程选型时不用纠结谁最先进,关键看码长、码率、延迟和实现复杂度这几个维度。
5.3 交织是和突发差错打交道的关键
信道编码对付的是随机差错,但无线信道里很多干扰是突发性的,一个干扰脉冲打过来能连续吞掉好几个甚至几十个比特。如果这些错误比特连在一起,超过编码的纠错能力,译码就失败了。
交织的作用就是把编码后本来相邻的比特分散到不同的时间或频率位置上,让接收端在去交织之后,突发错误变成分散的随机错误,回到编码能处理的范围内。这个过程可以类比成上车时把行李打散放到不同车厢,就算某一节车厢发生事故,行李也只会损失一部分,不至于全部报废。所以交织不产生冗余,只改变差错的分布,但它和编码配合起来才能实现“抗突发加抗随机”的完整覆盖。
我在做笔记的时候经常会想,为什么很多教材把交织一笔带过,实际系统里它其实非常重要。尤其是在有衰落或者脉冲干扰的无线信道里,没有交织的编码方案,性能会瞬间崩掉好几个dB。
6. OFDM与同步:多载波系统最容易翻车的三个细节
6.1 循环前缀到底该怎么选
OFDM把宽带信道分成许多窄带子载波,每个子载波上传输低速数据,整体速率却可以很高。但多径信道会让不同路径的信号先后到达,造成符号之间的干扰。循环前缀(CP)就是把每个OFDM符号的尾部复制一份贴到前面,用来吸收多径时延扩展。
CP长度选择是个典型的折中:必须大于信道的最大时延扩展,否则多径干扰会直接漏进FFT窗口;但CP本身不传有用数据,拉得太长会浪费开销。LTE的常规CP在15kHz子载波间隔下大约4.7微秒,能覆盖大多数城市和乡村宏蜂窝场景;如果信道时延扩展更大,比如某些山区或超远覆盖场景,就需要用更长的扩展CP。5G NR里子载波间隔可变,CP长度也随之缩放,这就很灵活。
6.2 载波频偏为什么让星座图“转圈”
OFDM对载波频偏特别敏感,因为频偏会让子载波之间失去正交性,产生子载波间干扰(ICI)。直观表现就是星座图上所有符号点沿着一个固定方向旋转,而且越靠近星座外圈旋转越明显。
要解决这个问题,接收机通常需要在时域先做粗频偏估计,用一个或多个重复的前导结构估算出频率误差,然后送到数字混频器逐一校正。在实际硬件里,晶振频偏如果达到几十ppm,配合较高的射频载波频率,基带频偏会很可观,粗同步那一环如果不做好,后面所有星座图判断都会是歪的。这也是为什么协议里几乎都设计了前导、导频或同步序列作为频偏估计的锚点。
6.3 符号定时偏移会带来什么
符号定时偏移指的是接收端FFT窗口没有对齐到OFDM符号的理想起始位置。如果偏移落在CP范围内,只会带来一个相位旋转,接收机可以通过导频信道估计把相位补偿掉;但如果偏移超出了CP,就会同时引入符号间干扰和子载波间干扰,这时候光做相位补偿已经救不回来了。
由于这个特性,OFDM接收机的定时同步容忍度比单载波系统要高一些,前提是偏差在CP范围内。工程上要做的就是把定时估计精度控制在CP长度以内,同时留一点余量来对抗信道时延扩展的波动。我见过某些实现图省事,定时估计结果偶尔偏出CP好几个采样点,结果EVM在部分时刻明显恶化,后来在定时环路上加了一个滞回滤波才稳住。
7. 把笔记变成实测:信号源、频谱仪和星座图
7.1 一次完整的搭建步骤
笔记记了一堆,最终还是要回到仪器和信号上验证。我的常用流程是这样的:
- 用矢量信号源生成一个已知调制方式的基带信号,比如QPSK或16QAM,设置好符号速率、脉冲成形滚降系数和功率。
- 信号源上变频到目标射频频点,经过线缆或天线进入接收设备。
- 接收端先用频谱仪看频谱,确认信号带宽、中心频点和带外杂散是否正常。
- 然后用矢量信号分析仪(VSA)解调,观察星座图、EVM、频率误差和IQ不平衡这几个关键指标。
- 如果走完整收发链路,就再把发射端和接收端的参考时钟同步好,否则频偏和采样钟偏差会掩盖真正的问题。
这套流程看起来简单,但每一步都有坑,下面两条是我踩过之后印象最深的。
7.2 测EVM时那些会骗你的细节
测EVM的时候,矢量信号分析仪里有几个设置直接影响结果:一是参考波形的建立方式,是用已知的调制参数直接用标准符号点做参考,还是测量数据再做判决;二是均衡器是否开启,很多仪表默认会把信道响应均衡掉,这会把信道失真带来的EVM隐藏掉;三是测量带宽要设对,如果带宽设小了,信号被截断,EVM看起来很漂亮但那是假象。
有一次我测一个OFDM发射机,EVM始终在2%左右,看起来已经很好了。后来关掉仪表里的信道均衡功能再测,EVM马上跳到8%左右,才暴露出发端滤波器在频带边缘有几dB的凹陷。这个教训提醒我:用EVM衡量发射机质量时,一定要先搞清楚仪表里开了哪些“修复开关”,否则你测的可能不是发射机的真实水平。
7.3 误码率测试的“口径”问题
误码率看起来是个简单数字,但问清楚“算的是什么比特”非常关键。有的报告里统计的是信道编码前、也就是解码后的原始比特误码率;有的统计的是解码后的信息比特误码率;还有的干脆给的是误帧率。三者之间不能直接比较,尤其在近编码门限附近,误码率和误帧率能差出几个数量级。
我的做法是在测试记录里固定写清楚三个东西:调制方式、码率、统计口径。做接收机灵敏度测试时,通常以误块率或误帧率到达某个门限(比如1%)作为灵敏度判据,而不是直接用误码率。这么做是因为系统最终的可用性是由丢块比例决定的,单纯看比特误码率可能由于交织和解码的作用而显得很好,但上层协议已经把整个块都扔掉了。
最后再分享一条实践体会
如果让我把数字通信所有的笔记浓缩成一句话,大概会是:永远从信号链路整体的角度去理解问题,而不是孤立地盯着某一个模块。采样率低可以怪ADC,EVM超标可以怪本振,但真正让系统崩溃的往往是模块之间互相牵连的次生效应。实际项目里,把链路预算算清楚、把测试口径统一好、把仪表里的隐藏选项摸透,这三件事做好了,至少能少走我当年那一半弯路。