ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

概率整形64QAM链路GMI指标计算与仿真实践全解析

概率整形64QAM链路GMI指标计算与仿真实践全解析 概率整形这个词在光通信和高速有线传输的圈子里被讨论了好几年了但真正把它从论文公式搬到仿真代码里跑通一条完整的64QAM链路并输出GMI指标中间还是有相当多坑的。这篇算是把我在这个方向上折腾过的东西整理出来从“为什么要在64QAM星座图上做概率整形”讲起一直讲到GMI指标怎么算、怎么归一化、怎么排查异常力求让你拿到就能照着复现。适合正在做概率整形方向研究、或者在做高速调制格式评估的工程师和研究生参考。1. 概率整形与64QAM为什么要给星座点“区别对待”1.1 从等概率调制到概率整形一次思路转变传统QAM调制的思路很简单64QAM星座图上有64个点每个点出现的概率相等每个符号携带6比特信息。这种等概率方案实现方便做Gray映射、做硬判决都很顺但它离香农极限其实有相当一段距离。问题出在哪里出在高阶QAM星座中外侧星座点能量高而AWGN信道下最优输入分布恰恰应该让低能量符号出现得更频繁。等概率调制相当于强制让低能量和高能量的星座点“平均出力”高能量点的“性价比”是低的。概率整形Probabilistic ShapingPS的核心动作就是把发射符号的概率分布重新分配内部星座点给更高概率外部星座点给较低概率整体呈现出从中心向边缘递减的分布。这样平均发射功率降下来了在同样的信噪比条件下能传输的信息量反而上去了。这种增益叫整形增益不用动星座图几何结构也不用改接收机结构纯靠改发射端的概率分布就能拿到这是它吸引人的最大原因。要注意概率整形和几何整形是两条不同的路线。几何整形是调整星座点的坐标位置让星座图变成非均匀的网格概率整形则保持星座点位置不动只动概率。两者可以复合但实际系统中先成熟落地的是概率整形因为它和现有的软判决FEC、比特交织编码调制BICM结构兼容性好。1.2 64QAM星座图等概率时的“均匀浪费”64QAM每符号传6比特星座点分布在I/Q平面的规则网格上。从能量角度看64个点的能量分成几档中心附近4个点能量最低最外层32个点能量较高四角上的4个点能量最高。等概率发射时平均符号能量是全部64个点能量的简单算术平均而最优概率分布下平均能量可以下降大约0.5到1.5 dB具体数值与整形强度、目标速率有关。这个dB数在光通信里相当可观——它等于可以多跑一段距离或者多用几个dB的OSNR余量。那64QAM是不是整形收益最大的格式其实不是。DVB-S2X里的 APSK 格式配合概率整形也有不错表现但64QAM胜在成熟、配套工具多、研究资料充分适合作为理解概率整形和GMI的入门调制格式。而且64QAM的星座点数足够多整形后概率分布的变化对星座图视觉形态的影响非常明显方便直观观察整形效果。我实际跑下来的感受是先用64QAM把链路和指标摸透再往高阶如256QAM迁移能把很多共性问题的调试成本大幅压缩。2. 核心指标GMI为什么不用传统互信息2.1 广义互信息的定义与计算在概率整形系统的评估中指标选择直接决定你看到的结果有没有意义。传统的互信息Mutual InformationMI计算的是接收符号与发射符号之间的信息量它假设接收端能做符号级的最优判决。但实际系统里迭代解码依赖的是比特级的软信息也就是每个比特的对数似然比LLR解码器看到的不是“某个符号”而是“某个比特的置信度”。符号级互信息和比特级解码之间存在一个gap这个gap在高阶QAM、多电平调制下不可忽略。GMIGeneralized Mutual Information广义互信息就是为了贴合比特级BICM解码场景提出的。它的基本计算思路是把每个符号解映射为m个比特64QAM对应m6每个比特独立计算其携带的互信息然后求和得到每符号的GMI。计算时先要拿到所有接收符号y和对应的发射比特标签映射然后计算每个比特位的LLRL_i log( P(b_i0|y) / P(b_i1|y) )接着统计该比特位的互信息GMI总公式可以写成GMI m - E[ log2(1 exp( -L_i · (1-2b_i) )) ]这里b_i是该比特位的取值0或1期望对全部符号和所有比特位取平均。实际代码里通常是对每个比特位分别计算后累加得到的数值单位是bit/symbol。为了让它在不同调制格式间可比常把它除以每符号比特数m转换为GMI/bit记为bit/bit或bit/channel use per bit。2.2 GMI与MI在64QAM系统中的差距我在同一套64QAM仿真链路上分别算MI和GMI一个很直观的现象是中等信噪比区间内GMI曲线始终压在MI曲线下方。这个差距不是误差而是BICM结构固有的比特级损失。64QAM有6个比特位每个比特位的可靠性不同。Gray映射下相邻星座点只差1个比特比特位的错误相关性被设计得比较低这已经让GMI和MI的差距尽量缩小了。但高阶调制里仍然有残余gap尤其在低信噪比、高整形强度的场景里这个gap会被放大。这就带出一个工程判断如果你在评估的是端到端净编码增益或系统容量用MI会偏乐观如果评估对象是“配上FEC后能跑多少”GMI更贴近真实解码器。实际系统里FEC解码器性能最直接的信号是解码前误码率pre-FEC BER但GMI的价值在于它不需要指定具体FEC类型就可以预估解码门限而且对系统优化方向的指导性比BER强——它告诉你每个比特位的信息瓶颈在哪里。我在项目里通常是MI、GMI、pre-FEC BER三个指标一起输出但以GMI为主指标来调节整形参数。只有GMI提升而BER没变差时才确定系统确实从整形中受益了。2.3 GMI计算流程中的关键参数归一化问题是第一次跑GMI最容易踩的坑。GMI受LLR计算尺度影响如果LLR没归一化GMI的绝对值会严重偏离理论范围。64QAM下每符号GMI的理论上限是6 bit/symbol可实际代码里常因为LLR的底数取错、软判决度量少加了对数底数转换输出数值不是超过6就是明显偏低。做归一化的目的是让GMI与信息速率可比典型做法是把LLR统一用自然对数计算后再转log2底。还有一个关键参数是信道SNR的标定方式。GMI计算用的LLR依赖于接收端估计的噪声方差如果仿真中噪声方差估计偏了即使星座眼图正常GMI曲线也会在低SNR段异常。我建议把接收端理想信道估计和实际估计两套都跑至少在验证阶段先把GMI的绝对数值校准到理论可接受的范围内。3. 概率整形方案设计与实操3.1 概率分布设计从Maxwell-Boltzmann分布说起概率整形第一步是确定目标概率分布。绝大多数仿真和产品化方案用的是Maxwell-BoltzmannMB分布其定义是P(x_i) exp(-ν · |x_i|²) / Σ exp(-ν · |x_j|²)其中ν是整形因子|x_i|²是第i个星座点的能量。ν0时所有星座点等概率退化标准QAMν增大低能量点概率显著上升。取ν的过程其实是一个“速率-能量权衡”的搜索过程给定目标整形熵即有效速率用二分法找到满足熵条件的ν。MB分布为什么流行一是在AWGN信道下它接近最优输入分布二是只用一个参数就能控制整形强度方便做参数扫描。但它不是所有场景最优——比如在强非线性信道下MB分布对外层星座点概率压低得不够可能会让非线性损伤变大。光通信里还有一种替代思路叫“几何整形概率整形联合优化”复杂度高一些但更贴合光纤非线性场景。实操时我不建议直接拿连续MB公式产生概率再硬量化到符号序列。更稳的做法是给定ν之后计算出64个概率值归一化后直接作为目标分布再交给概率分布匹配器去生成符号序列。这个过程加一步概率熵的计算H -Σ P(x) log2 P(x)算出来的熵就是整形后每符号携带的实际信息比特数。比如64QAM整形后熵从6降到4.5那符号速率不变时等效比特速率就变成4.5×RsFEC的开销要先和这个速率匹配。3.2 CCS分布匹配器实现要点有了目标分布下一步就是把均匀分布的随机比特流映射成符合目标分布的符号序列。工程中常用Constant Composition Distribution MatcherCCS方案。CCS的命名本身说明了原理它生成一段固定长度的符号序列序列中的各符号出现次数精确等于目标分布的比例。比如每100个符号里有8个是最外角点、40个是内部点这个“成分比例”不随机波动是恒定不变的。CCS实现分两级前半段是振幅选择后半段是符号映射。第一步先把输入比特流通过算术编码或查表方式映射成“振幅序列”保证振幅分布符合MB分布。第二步是把振幅序列加上符号位拼成完整星座点这个过程要配合星座标签映射保证每个振幅对应正确的一组符号标签。CCS的核心复杂度在前半段的映射表设计。一个CCS块的输入比特数怎么定假设块长n_sym目标分布中每种符号的数量k_i已知那么这一段块能承载的有效组合数量是N_comb n_sym! / Π k_i!对应的输入比特数k_bit floor(log2 N_comb)编码效率是k_bit / n_sym。这个值应该约等于整形后的熵H。我建议在实现时做一个自适应选择输入比特块长度在目标熵附近动态调整称为shell mapping让效率和实现复杂度之间取平衡。实际过程中最烦的坑是“分布匹配器输出序列的长度不固定”问题。接收端在做软解调时需要知道每个符号对应哪个比特标签块长不定会导致对齐失败。工程上通常固定块长用一个标志位或者帧结构来保证收发同步。仿真阶段可以直接忽略这个问题但做成系统样机时必须处理。3.3 星座映射与标签方案选择概率整形和星座标签bit labeling的关系极其密切。64QAM标准情况下用Gray映射但做了概率整形后振幅分布非均匀传统的Gray映射不一定仍然是最优的。原因在于整形后高能量点出现概率低低能量点概率高比特位的差错特性发生变化部分比特位变得比另外的更可靠。对标签映射做优化是概率整形系统中一个容易被忽视的增益来源。一种做法是保留Gray映射不变优点是实现简单另一种做法是采用所谓的“容错映射”比如Guessing Random Additive Noise Decoding对应的映射在整形分布下做比特位可靠性均衡。如果只是做学术仿真对比建议保留Gray作为baseline再尝试一种优化映射对比GMI差异。我做过一个64QAM整形场景ν设得比较大时Gray映射的GMI反而比一个“次优”但比特位均衡的映射低。原因是Gray映射下某个比特位在外部星座点出错概率极高而外部点被整形压低后这个比特位逐渐“空转”信息承载效率下降。整体GMI因此受损。另一点是和符号映射联合优化时的符号能量权重问题。64QAM星座点能量差异很大外层与内层能量比可以达到几十倍。概率整形和标签优化联合迭代时要设置合适的终止条件避免陷入只看平均能量不看瞬时能量的局部最优。3.4 仿真参数配置参考我把一套能稳定输出概率整形64QAM GMI曲线的仿真参数放这里直接参照可以少走弯路。参数典型取值说明调制格式64QAM6 bit/symbol星座坐标按标准单位能量归一化整形因子ν0.01~0.2按目标熵选择ν越大整形越强目标熵H3.5~5.5 bit/symbol对应不同整形速率配合FEC开销CCS块长512~2048符号块长越长越接近理论熵但复杂度上升上采样倍数2~4倍符号率为脉冲成形留频谱空间脉冲成形RRC滚降系数0.05~0.2滚降越低频谱效率越高但对均衡要求高信道模型AWGN或单跨光纤SSFM初学先用AWGN验证算法正确性接收机匹配滤波理想信道估计验证阶段不开自适应均衡GMI统计符号数≥10万个符号符号太少GMI抖动大曲线不平滑注意符号速率和比特速率的换算符号速率Rs不变时整形后有效比特速率 H × Rs。举例Rs50Gbaud、H5.5时净比特率是275Gbps而不是300Gbps。FEC的开销要与H匹配否则速率配置会出现矛盾。4. GMI指标输出的完整流程4.1 仿真链路搭建与关键模块跑概率整形64QAM GMI的完整链路我的搭建顺序是从后往前先打通“均匀64QAM GMI计算”确认GMI计算代码本身没问题再加入概率整形。这个“先基线后整形”的顺序救过我很多次——如果一上来就带PS出了问题时你根本分不清是整形分布写错了还是GMI算错了。链路发射端模块顺序如下数据源产生均匀随机比特流CCS分布匹配输出整形后的星座符号序列符号序列映射为IQ基带信号上采样后经过RRC脉冲成形加信道损伤AWGN恒定噪声或光纤SSFM匹配滤波接收采样后做解映射计算64点星座的LLR输入GMI计算模块这里第7步解映射有两条路径一个是“全概率软解调”——对64个星座点逐个计算距离和概率另一个是“max-log近似”——只取最近的两个星座点计算LLR近似值。max-log计算量小但GMI会有损失实测在64QAM概率整形场景下损失在0.02~0.08 bit左右。验证阶段一定要用全概率形式量产优化时再评估能否用近似。LLR的具体计算公式以PAM一维为例L(b) max(log Σ_{x:b0}exp(-|y-x|²/(2σ²))) - max(log Σ_{x:b1}exp(-|y-x|²/(2σ²)))QAM信号在I/Q两路正交时可以拆成两路独立计算LLR再合并。64QAM的两个维度各承载8个星座点每维度3个比特这样计算量从64个点降到两个8点一维搜索速度快而且实现简单。4.2 GMI计算与归一化实操GMI计算的python核心可以很简洁但细节决定成败。我的计算流程分四步第一步把发射端每个符号的6个比特标签b和接收端软解调输出的LLR值L对齐保存。这里对齐操作看似简单实际特别容易出错特别是经过RRC滤波、色散补偿等模块后发射符号和接收符号Index不一致错位一个符号会导致GMI完全错误。建议在发射序列里周期插入已知导频符号用于对齐。第二步按比特位分组计算每个比特位的平均互信息。公式是GMI_i 1 - E[ log2(1 exp(-L_i·(1-2b_i))) ]第三步将6个比特位的结果累加GMI_total Σ GMI_i得到的数值是每符号GMI单位bit/symbol。第四步归一化。如果后续要对比不同调制格式或者转换成频谱效率除以每符号比特数得到GMI/bitGMI_per_bit GMI_total / 6还有一个容易被问到的操作细节能不能直接对接收符号做k-means聚类后再算GMI我的建议是验证阶段不要因为聚类会把信道损伤“吸收”掉导致GMI虚高。等系统方案定型、噪声特性摸清后再做符合实际接收机行为的简化才有意义。整个计算必须基于幅度归一化的星座图。我在仿真时把所有信号功率归一化到1星座点坐标也对应归一化。否则GSMGeometry Shaping坐标不同时GMI可比性就差。4.3 整形增益如何量化整形成果最终要转化成可评估的增益数字。最常用的量化方式有两种一是在目标GMI下比较所需SNR的提升二是在相同SNR下比较GMI数值的提升。以GMI4 bit/symbol为目标均匀64QAM达到这个GMI需要的SNR约为18 dB具体数值与滚降、脉冲形状有关整形到熵为4的64QAM可能只需要16.5 dB这1.5 dB就是整形增益。另一种做法是固定SNR17 dB比较GMI均匀时GMI约3.2 bit/symbol整形后可能到4.1提升了0.9 bit/symbol。两种表达方式都常见文献里报告时建议把SNR定义成每符号能量除以噪声功率密度即Es/N0否则别人无法复现对比。另外一个隐含变量是外信息转移EXIT或者FEC解码门限。概率整形通常会牺牲一部分发射端冗余换取接收端增益如果FEC是低码率比如1/2整形增益会比配高码率时小因为低码率FEC本来就把系统推向容量极限整形发挥空间被压缩。对FEC的配合理解到位是评估整形增益不虚高的前提。5. 常见问题与排查技巧实录5.1 常见问题速查表以下问题是我在多个概率整形64QAM项目中反复遇到的高频问题整理成速查表每次出数据异常先对着查一遍。现象可能原因排查与修复GMI数值超过6 bit/symbolLLR底数错误或归一化有误检查log底数确保LLR以自然对数计算后正确换算GMI在低SNR段掉到负值发射符号与接收符号未对齐用导频符号校准偏移避免跨符号错位MI提升明显但GMI几乎不变概率整形没有配合标签映射优化尝试替换标签映射方案观察各比特位GMI变化星座图整形效果可见但GMI反而降低整形强度过大速率损失超过增益降低ν重新做熵-信噪比扫描不同块长CCS匹配效率差异大块长太短导致分布离散化严重块长至少512符号理想是2048以上不同SNR下GMI曲线交叉接收端噪声估计未随SNR更新确保噪声方差在每个SNR点重新估计加入了RRC滚降后GMI整体下降符号间干扰引入相关性确认匹配滤波系数正确必要时加均衡器与理论MB分布计算的GMI差距大CCS序列概率量化间隔选择不当检查CCS输出分布与目标分布的KL散度有个容易被忽略的点是“星座标签与CCS的兼容性”。CCS产生的是振幅序列振幅序列映射到星座点时必须留下足够的符号位空间给标签映射。如果CCS输出比特数量与星座点总数不匹配GMI计算会直接错乱。我建议看一眼CCS输出每个符号的信息熵是否和目标熵吻合误差不超过0.01 bit为佳。5.2 实测中容易忽略的细节这里分享几个不跑几遍数据发现不了的经验。第一个经验是符号数要跑够。GMI是小偏差统计量尤其在高信噪比段方差比较大。我在对比两个整形参数下的GMI差距时先跑1万符号发现差异只有0.03 bit觉得很可疑后来加到50万符号差异稳定在0.11 bit。小样本下结论不可靠统计符号数少于10万任何0.05 bit以内的结论都别下。第二个经验是眼图与GMI不一定同步。有一次我在系统中观察到星座图非常“漂亮”但GMI数值离理论值差0.15 bit。排查半天发现我做了发端整形但没有在接收端LLR计算里考虑非均匀先验概率。软解调时仍然默认所有星座点等概率——这是“整形发送、未整形接收”的典型错误。GMI计算中的LLR必须更新为先验概率加权的版本否则整个整形成果无从体现。公式上只需要在概率求和前乘以对应的P(x)。第三个经验是信道模型越复杂GMI对系统实现精度越敏感。AWGN信道下GMI曲线相对平滑但换到SSFM光纤信道时相同参数下GMI抖动明显增大。原因是光纤非线性引入了快速时间变化。此时GMI统计必须分块统计而不是整体平均——分块的GMI离散度可以反映非线性损伤的时间动态这对系统优化非常有价值。第四个经验是关于仿真和实验的GMI差异。实验室里拿到的GMI通常比仿真低0.2~0.4 bit/symbol原因是实验里有发射机带宽限制、DAC量化噪声、时钟恢复残留误差等非理想因素。如果实验和仿真差距超过0.5别急着怀疑仿真链路先检查接收机前端有没有带外噪声泄露进来。5.3 复盘概率整形64QAM系统的完整调参路线把上面的经验串起来我在一个新项目里调概率整形64QAM GMI参数的路线是固定的第一步固定ν0也就是均匀64QAM跑一条完整基线GMI曲线确保代码、链路、统计方式都正确。第二步固定一个中等整形强度ν0.05跑目标熵附近的GMI确认整形成效方向正确GMI提升或者同GMI下SNR降低。第三步扫描ν从0.01到0.2算出每个ν对应的熵和GMI曲线选择目标速率下增益最大的ν。第四步对最优ν附近的参数做标签映射和块长优化观察GMI微小变动。第五步加入FEC模型看GMI提升是否转化为有效比特速率提升。这条路线看起来逻辑清晰但每一步都可能反复。尤其第三步的扫描不是所有ν都会单调带来增益ν太小整形效果不够ν太大速率损失过多中间有个平台期。平台期内GMI差距不大这时选择较低整形强度会更稳妥因为对信道失配的鲁棒性更好。我个人在实际调试里还有一个体会GMI作为优化目标时整形强度不是越大越好而是要结合FEC开销、目标净速率、信道非线性综合决定。很多初学者拿着概率整形文章里的“提升1.2 dB”就直接套最大整形强度结果在稍高阶的链路里反而丢失性能。概率整形是好工具但它是系统工程中的一环得和其他模块协同单点优化很容易得不偿失。如果后续想把这套方案往实用化推进可以考虑从静态整形改为自适应整形——根据信道状态在线调整MB分布的ν参数。这个方向我在仿真里做过原型验证实现上只需要在发射端加一个查表反馈环路但对GMI增益的稳定性要求会比现在高一个数量级。有精力的同行可以从这里开始往前探我个人认为这是概率整形从论文走向产品的关键一步。
返回列表