
做SC-FDE系统时很多人把重心放在帧结构、编码调制上往往把信道那一截当成“一个需要估计的传递函数”就翻过去了。我最早接触单载波频域均衡是在一个宽带无线传输项目里那会儿最大的感受是信道不是纸面上那条平滑的幅频曲线而是每一轮仿真、每一场外场测试里都在跟你较劲的东西。SC-FDE的性能上限很大程度上不是由你在均衡器里写了多少行代码决定的而是由你对信道理解的深度决定的。这篇就把SC-FDE链路中和信道相关的那些事捋一遍信道参数怎么算、估计怎么搭、均衡怎么选以及实测中那些一踩一个准的坑。适合正在做SC-FDE物理层开发、或者在OFDM和单载波之间做技术选型的同学参考。1. SC-FDE链路里“信道”为什么是第一个要较真的环节1.1 单载波加频域均衡的运行逻辑SC-FDE的全称是Single-Carrier Frequency-Domain Equalization单载波频域均衡。发射端是普通的单载波调制数据按块发送块与块之间插入循环前缀CP或者独特字UW。接收端先把每个块做FFT变换到频域对每个频点的信道响应做补偿然后再IFFT回到时域做判决。这套结构和OFDM相比最大的差异在于是“先发射、后均衡”不在发射端给每个子载波分配功率。换句话说OFDM是把宽带信道切成一堆窄带子信道每个子信道近似平坦SC-FDE则是把整个宽带信道的扭曲先全部吃进来再在接收端用一个频域滤波器把它捋直。带来的直接好处是峰均比低。单载波信号的包络起伏比OFDM小得多对发射机功放的线性度要求宽松不少同样的功放能打出更高的输出功率。这也是很多宽带系统宁可牺牲一点频域调度的灵活性也要选SC-FDE的原因。但代价也在这里。信道对OFDM的影响是每个子载波独立看得到的均衡几乎是“一抽头一个系数”信道对SC-FDE的影响是先作用在整块信号上接收端必须对整个块的频域响应有足够准确的估计才能把信号质量救回来。用我项目里导师某次说的一句话OFDM的信道估计错了最多坏几个子载波SC-FDE的信道估计错了整块时域符号都可能废掉。1.2 时域均衡为什么撑不住宽带信道理论上多径信道引起的码间干扰ISI也可以用时域均衡器解决抽头足够多、更新足够快信道再扭曲也能逆回来。但这里有两个现实约束把时域均衡按死了。第一个是复杂度。假设信道时延扩展是1微秒符号速率是100 MBd那么ISI范围是100个符号量级。线性时域均衡器至少要覆盖两倍多径长度也就是两百多个抽头每个抽头还要做复数乘加运算符号率一高每秒几百亿次乘加FPGA和DSP都吃不消。第二个是收敛性。时域自适应均衡器要靠LMS或者RLS算法迭代收敛遇到深度频率选择性衰落的信道收敛速度慢而且容易卡在局部最优。宽带信道通常有几十个甚至上百个独立衰落频点时域均衡器的抽头系数空间维度太高实际系统很难稳定收敛。SC-FDE把均衡放到频域后时域的卷积运算变成了频域的逐点相乘。一个1024点的块均衡只需要1024个频点复乘信号块本身还是一次IFFT就回时域整个复杂度从时域均衡的非线性增长降到了块FFT加逐点复乘的量级工程上完全可控。这是SC-FDE能在宽带场景站住脚的根本原因。1.3 块结构与信道参数之间的物理约束SC-FDE的块长、CP长度都不是拍脑袋定的它们和信道本身的参数存在硬约束。CP或者UW的作用是吸收多径时延让接收端能在一个“循环卷积”的框架里处理信号。接收端将FFT窗口内的信号当作待均衡块只有多径时延扩展小于CP长度上一块对下一块的干扰IBI才不会混进待均衡块里。工程上一般留至少两倍到四倍余量因为除了多径还要给收发滤波器群时延、定时偏差留冗余。块长则决定了频域均衡的频率分辨率。块周期越长FFT点数相对越高频域上能区分的最小间隔越小均衡器也就越精细。但块周期变长又会让信号更容易受到时变信道的影响块内信道不再是时不变的。所以块长本质上是“频域分辨率”和“时域平稳性”之间的折中。具体怎么算下一节展开。我对这块的建议是在做系统方案时先别急着定FFT长度把目标信道的时延扩展、多普勒参数测清楚或者查清楚再倒推块结构和CP这个顺序不能反。2. 三个最影响SC-FDE性能的信道参数时延扩展、多普勒、频域起伏2.1 时延扩展决定频率选择性也决定CP与均衡分工信道多径的时延扩展记为 \(\tau_{max}\)它直接决定信道的相干带宽近似为[ B_{coh} \approx \frac{1}{\tau_{max}} ]相干带宽的意思是在这个频率范围之内信道响应可以认为基本平坦超过这个范围不同频点开始出现明显不同的衰落。信号带宽和相干带宽的比值决定了频率选择性的强弱。举个例子。设信号带宽200 MHz多径时延扩展500 ns那么相干带宽大约2 MHz。信号带宽是相干带宽的一百倍说明频域上有大约一百个相对独立的衰落区域均衡器必须逐点补偿才能把这些起伏压平。时延扩展还决定CP长度。CP是要覆盖多径的时延扩展500 nsCP至少500 ns按25%开销来算块周期就是2微秒FFT点数在200 MBd符号率下是400点量级实际取512或1024都合理。注意CP大小改的是块周期直接和开销挂钩CP越大有效吞吐越低。所以时延扩展不仅是信道特征还直接参与调制效率和开销之间的预算。工程上经常犯的错是只看了相干带宽却没算CP开销。一个多径很重的信道如果硬要把开销压到10%CP可能不够长IBI一旦进来均衡器再准也补不回来因为均衡器的逆滤波模型从基础上就不成立了。2.2 多普勒扩展与块内时变的容忍度移动信道一定有多普勒。最大多普勒频移由移动速度和载频决定[ f_d \frac{v \cdot f_c}{c} ]比如载频3.5 GHz移动速度120 km/h最大多普勒大约389 Hz。信道的相干时间约为[ T_{coh} \approx \frac{0.423}{f_d} ]代入就是约1.1 ms。SC-FDE要求“在一个块内信道可以近似看成时不变”也就是块周期要远小于相干时间。许多资料建议块周期小于相干时间的十分之一甚至几十分之一。刚才那个例子里1.1 ms的相干时间对应的是百微秒量级的块周期上限和SC-FDE常见的微秒级块周期相比余量非常大。所以对步行、低速车载这些场景块内时不变的假设很容易满足。真正紧张的是高速场景。载频6 GHz速度500 km/h时最大多普勒约2.78 kHz相干时间约0.15 ms。如果块周期做到20微秒已经占相干时间的百分之十几块内信道变化不能再忽视。这时候信道估计就不能只在每块头部做一次而是需要跨块跟踪、符号级插值甚至要考虑均衡器本身对时变信道的敏感性。实际项目里我一般会用仿真先扫一遍“固定信道估计更新间隔”下的性能曲线看哪个更新周期开始出现底板效应。这个操作很便宜但能帮你直观感受多普勒对SC-FDE的杀伤力。2.3 深衰落频点的“分贝账”宽带信道在频域上出现凹坑是常态深度可达20到30 dB以上。ZC序列或训练符号在某个频点上被信道衰减到极低水平接收端看到的信噪比自然就差。接下来就涉及到均衡策略。如果用迫零均衡频点增益等于信道响应的倒数深衰落频点会被巨大增益放大。信号本身也随信道被衰减了所以这个放大救回了信号分量但噪声同样被放大。如果该频点底噪本来就高均衡后这一小段频带的噪声会显著抬高经过IFFT回到时域之后噪声会扩散到整个块导致所有符号的判决质量一起变差。这就是SC-FDE里典型的“噪声增强”。这种频域深衰落的分布间隔本质上由时延扩展决定。多径越分散相干带宽越窄频域出现深衰落的概率越高凹坑也越密集。设计均衡器时必须先做一次信道功率谱的摸底统计深衰落频点的数量、深度和带宽占比再决定是用MMSE压增益放大还是给估计出的信道响应本身做平滑避免把个别异常频点当成真实的信道凹陷。我在某个系统里见过一次性能异常接收端明明测到信道估计挺准误码率却总下不去。后来把均衡前后频域SNR打出来才发现某个窄带凹坑深度超过30 dBZM式均衡把这个点的噪声放大了上百倍整个时域符号噪声地板被抬高了将近10 dB。这就是典型的只看了平均SNR、没看频域SNR分布。3. 信道估计怎么搭训练块设计、LS估计与双维插值3.1 训练块选UW还是普通训练序列SC-FDE的信道估计需要在接收端已知一段信号。常见做法有两种一种是块与块之间插入已知训练符号另一种是用独特字UW作为块的固定前缀或后缀。UW在频域上有非常好的特性。如果选的序列FFT后幅度恒定比如Chu序列或者ZC序列那么接收端提取UW后进行FFT得到的频域数据本身就是“已知常数乘以信道响应加噪声”的形式做信道估计时不需要额外做除法来消除训练序列的频域调制。这对估计准确度和实现简化都有帮助。普通训练序列则需要发射端和接收端都预存频域参考值估计时每个频点都要做一次复数除法。实现也不复杂但对参考值的存储和同步要求更细一点。实际选择时还有一个维度UW同时承担了CP的物理作用。UW放在数据块前面既能吸收多径时延避免块间干扰又能作为已知序列供信道估计使用相当于一个开销做了两件事。很多SC-FDE系统偏爱UW就是这个原因。需要注意UW的功率是平均分配的但CP部分的数据如果也是训练序列那么每块的额外开销也要被计入功率谱。系统预算里要把这部分开销放到整个帧的容量计算中别只盯着数据符号在看。3.2 LS估计的实现细节与噪声平滑以UW为例信道估计的核心很直接。发射端知道UW序列的频域参考U(k)接收端从每个块的UW位置提取时域样本做FFT得到Y(k)。由于发射信号是已知的频域上有[ Y(k) U(k) \cdot H(k) N(k) ]如果UW序列被设计成频域幅度恒定可以事先算好U^*(k)/|U(k)|^2作为匹配参考向量那么LS估计在一次复数乘加里完成[ \hat{H}_{LS}(k) Y(k) \cdot \frac{U^*(k)}{|U(k)|^2} ]这个估计的问题在于噪声没有被压制。每个频点的噪声方差如果统一那么LS估计给出的信道增益误差就是噪声和信号功率之比在每一频点上的体现。深衰落频点处信号功率低估计误差占比大。噪声平滑的手段主要有几种。一是时域窗平滑对\hat{H}_{LS}(k)做IFFT得到时域冲激响应然后只用多径时延范围内的抽头超出部分直接置零再做FFT回去。这个操作本质上是把信道冲激响应限制在一个物理合理的时延范围内能显著降低噪声。多径时延上限就是CP长度所以窗口长度直接取CP对应的采样点数即可。二是多个块之间取平均。信道在短时间内变化不大时相邻几个块的LS估计按块平均可以降低噪声方差平均块数为N时噪声功率大约降为原来的1/N。但平均次数受多普勒限制块间信道若已在变平均反而会让估计变糊。这里要做一个权衡。我在实际实现时习惯先把时域窗平滑做掉再做块间平均顺序不能反过来。如果先跨块平均信道时变的小变化会被抹平最后再做时域窗压缩时多出来的残余误差并不会被有效滤除。3.3 插值策略跨块跟踪与频域细化的平衡如果信道在帧内缓慢变化而估计只在每块的最前面做一次那么块之间的信道老化会成为问题。工程上常用的是“块级估计加符号级插值”。简单说每个块估计出一个信道响应向量两个相邻块之间可以通过线性或者样条插值把信道响应推进到一个更细的时间尺度上。频域插值则要小心。如果导频符号在频域上不是每个点都有比如跳频放置的导频那么LS估计本身是在一个稀疏网格上做的需要用插值把信道补全到所有频点。这里线性插值在频率选择性剧烈的信道下误差很大更适合用基于DFT的插值也就是先IFFT到时域、补零、再FFT回频域这相当于做了一次带限插值只在多径时延范围内保留能量效果比线性插值稳得多。多普勒高的情况下跨块插值的时间间隔要缩小。此时可以把一个块拆成多个带导频的子段或者让信道估计不只在块头做而是块头和块中同时做前后两段估计结果做交叉验证。这样做的代价是导频开销上升但能保证时变信道下的均衡系数不落后于信道变化。关于插值我有一个比较深刻的教训早期项目里偷懒用了线性频域插值仿真跑出来性能还行一到实测的严重多径环境就露馅。换成基于DFT的插值后同等条件下误码率下降了近一个数量级。原因是实测的强反射径造成的频域凹坑位置比较刁钻线性插值在凹坑两侧拉出的斜线根本无法还原真实的深衰落谷底。4. 频域均衡器的选择ZF、MMSE到判决反馈的工程博弈4.1 ZF的简单与代价迫零均衡器ZF的设计思路很朴素信道在频域上是什么样均衡器就用它的倒数去乘[ W_{ZF}(k) \frac{1}{\hat{H}(k)} ]这样做的结果是把信道引起的幅度和相位失真完全补偿掉理想情况下均衡后的频域响应是全通的。实现也简单一次复数除法就完事。但问题是前面提到的噪声增强。当某个频点的|\hat{H}(k)|非常小ZF增益非常大那个频点上的噪声被同步放大。放大后的噪声经过IFFT在时域上散开会污染所有符号。Zy均衡在低SNR场合尤其致命因为噪声功率本来就高再一放大信噪比常常不升反降。所以ZF只在信道质量很好、且深衰落频点较少的时候才有接近MMSE的表现。我在做样机验证时一般把ZF当作“上界参考”用看看信道均衡的理论极限在哪里实际工作点不轻易放在ZF上。4.2 MMSE和它需要的SNR信息最小均方误差均衡器MMSE的目标不是把信道完全“捋直”而是在信号失真和噪声放大之间找最优折中。频域系数写成[ W_{MMSE}(k) \frac{\hat{H}^*(k)}{|\hat{H}(k)|^2 \frac{\sigma_n^2}{\sigma_s^2}} ]其中\sigma_n^2/\sigma_s^2是噪声方差与信号平均功率之比可以理解成每个频点上的平均噪声SNR倒数。分母里多出的这一项让均衡器在信道质量好的频点近似于ZF在深衰落频点上自动压低增益不去强行补偿从而避免放大噪声。实际工程里不能直接得到每个频点的精确SNR一般用一个在整个频带内恒定的\alpha 1/SNR_{avg}替代逐频点值。这个近似在频域SNR分布不极端时效果很好。要注意的是如果\alpha取得过大均衡器会趋向于“什么都不做”深衰落频点的信号扭曲依然留着如果取得过小又退化成ZF。所以SNR估计的准确性直接关系到MMSE的成败。最稳的做法是先从接收信号里估一个噪声功率基准再结合自动增益控制AGC后信号功率算出一个第一轮粗SNR把MMSE先用起来等解码后有了信号估计再迭代修正。这里我可以给一个具体的数值感受。某次仿真里信道有一个-20 dB的深衰落频点ZF把这个频点的增益做到20 dB噪声底被整体抬高约6 dBMMSE则把该频点的均衡增益限制到8 dB左右整体SNR损失压到2 dB以内。差异非常直观。4.3 判决反馈均衡在SC-FDE中的位置线性均衡器在信道严重畸变时性能有限于是有了判决反馈均衡DFE的思路。在SC-FDE的框架下DFE通常表现为“频域线性均衡加时域反馈”的混合结构前面先用MMSE之类的线性均衡把大块ISI清掉判决之后再把判决误差或者残余ISI反馈回去做第二次抵消。工程价值在于SC-FDE的线性均衡会留下一些非线性信号分量比如深衰落频点经过MMSE后残留的失真。这些分量在时域上表现为对多径位置的残余干扰反馈结构可以针对性地消除。但DFE最怕的是判决错误传播。一旦判决出错反馈的是错误符号不但没抵消残余干扰反而引入新的错误。因此DFE一般要配合比较可靠的外码级纠错或者在信噪比足够高的区间才启用。我的经验是在SNR大于门限值之后DFE可以把误码率再压下一个量级但在门限附近反而可能比纯线性均衡还差所以建议做成“可旁路”的自适应判断当前SNR是否达到启用条件。均衡器的选择本质上是一个“噪声增强、残余失真、实现复杂度、判决可靠性”四者的权衡。没有哪个方案在所有信道上都最好工程做法是准备两套配置按信道的频域SNR统计结果动态切换。5. 实测与仿真中关于信道的几个高频翻车点5.1 CP不够长时的边界恶化怎么排查很多人在仿真里把信道时延扩展做得比CP短一截跑得一切正常一到实测多径稍微重一点就崩。现象是误码率曲线出现一个奇怪的地板SNR提高误码率却不下降或者只在部分块内出错。这个问题的本质是IBI。CP不够长时上一块的尾部残留会卷到当前块FFT窗口里频域均衡器不知道这段额外干扰是信号还是噪声只能把它当噪声处理。但因为它是上一块数据的副本功率并不小所以会让均衡后的SNR严重变差。排查方法很直接把接收信号按块对齐后直接看每个块FFT窗口前面延长一段区域的能量分布。如果CP之后紧接着的数据区开头有明显的上一块能量尾巴说明CP不足。另一种办法是把CP长度在仿真里刻意加长如果误码率明显改善基本可以锁定IBI。解决方向有三个加长CP、缩短数据块或者在接收端做重叠保留overlap-save处理。重叠保留方案在SC-FDE里常用的原因之一就是它能容忍一部分IBI把FFT窗口和有效数据窗口错开从而在CP不足的条件下维持住性能。代价是接收端要丢弃一部分输出采样吞吐有小幅损失。5.2 插值间隔和估计算法不匹配信道估计做频域细化时容易踩的坑是插值间隔和信道的相干带宽对不上。假如信道相干带宽是2 MHz而训练序列在频域上的放置间隔折算出来是5 MHz那么稀疏网格本身就漏掉了信道的快速变化后级插值无论用什么算法都补不出真实信道。这不是插值算法的问题是采集密度不够。判断方法也简单把估计出的信道响应做一次频域自相关看它的相关带宽是否接近理论上的相干带宽。如果估计结果的相干带宽明显偏宽说明估计结果太“光滑”大概率是插值或者平滑把细节抹掉了。正确的流程应该是先用信道的时延扩展倒推需要多密的频域导频再计算导频开销是否可接受。如果开销不允许退而求其次应该接受一定的估计误差并在均衡器里通过MMSE的\alpha参数做补偿而不是为了让估计“看起来密”而硬插。5.3 噪声方差估计与MMSE失配MMSE的\alpha如果和实际SNR差得远均衡器的行为会跑偏。这个失配在仿真里常常被忽略因为仿真底噪是已知的直接按真实SNR配置。实测不一样AGC、I/Q不平衡、远端干扰都会让噪声功率偏离理论值。后果在误码率曲线上的表现很有意思\alpha偏大时均衡器几乎不补偿信号扭曲误码率在高SNR区仍然偏高\alpha偏小时深衰落频点噪声被放大出现噪声地板。我建议在接收机里单独做一个噪声估计模块不依赖整个链路的SNR判断。常见的做法是抽出接收信号中的空闲频段或者保护频带计算该区域的频谱功率因为它不受信号调制影响能比较干净地代表底噪水平。还有一种办法是用训练序列的接收数据和重构信号之间的残差来估计噪声。残差法在信道估计准确时很准但要注意避免“用带误差的信道估计去估噪声”这种相互纠缠。实测中我在样机里遇到过\alpha差6 dB就把误码率抬高一倍的情况后来加了自适应\alpha扫描每几帧更新一次问题就消失了。所以不要轻视这一项MMSE的增益全靠这个参数支棱起来。5.4 仿真信道模型与实测环境的差距最后说仿真和实测之间老生常谈却又绕不开的差距。很多项目前期用经典多径模型比如典型城市、丘陵之类做设计这些模型参数固定频域统计特性相对温和。到了真实环境多径的间距、增益、角度分布都会变而且可能存在大动态范围的直达波和多径反射信道响应的频域凹坑比模型里深得多、位置也刁钻得多。应对办法是提前做“过重力测试”在仿真时故意把某几径的增益加大、时延放宽或者在频域上人为压出20 dB的凹坑看均衡器和信道估计能不能扛住。这比只在标准模型下验证稳健性有效得多。我在某个宽带传输项目里就吃过这个亏。仿真阶段所有指标都好看一到外场固定接收机放在墙角附近多径反射严重且直达波被部分遮挡频域选择性比模型参数预测的强一倍不止整个链路余量瞬间清零。后来把信道模型换成直视径弱、反射径多的极端场景才算把系统的真实底牌摸清楚。另外实测里还要关注天线和收发滤波器的群时延。它们不影响信道本身的物理特性但会在信道估计时被当成信道的一部分。如果这部分在发射端和接收端已经确定可以在估计结果里预先扣除避免均衡器去补偿收发机自身的失真导致均衡器承受多余的负担。最后一些实操体会SC-FDE的信道处理整体上是一个“先建立物理直觉再选择算法最后用各种极端场景验证”的过程。我个人的习惯是每次拿到新信道参数先手算相干带宽、相干时间、CP需求这三个数再去看均衡方案。这个习惯帮我省掉了大量调试时间因为大部分性能问题都能追溯到某个参数没对齐。还有一个小技巧调均衡器的时候不要只盯平均MSE或者平均误码率要画出均衡前后频域SNR的分布图。这个图能一眼看出哪个频点被增益放大过头、哪个频点根本没被救回来。平均指标太容易骗人频域分布才是SC-FDE信道处理的真正面诊报告。SC-FDE这套技术看着不如OFDM“花哨”但在宽带、高功率效率、复杂信道环境下它的工程优势非常扎实。信道部分永远是它最需要耐心的地方值得花时间扎进去。