SCMA稀疏码多址接入全解析:从原理到MPA检测与工程实践
2026/9/18 19:57:20 网站建设 项目流程

做无线通信物理层这些年,从4G的OFDMA一路看到5G的极化码和波形方案,再到6G的候选技术储备,多址接入始终是绕不开的核心问题。SCMA(Sparse Code Multiple Access,稀疏码多址接入)是这几年被反复提及的非正交多址方案,名字听起来高深,拆开看其实就三件事:稀疏、码本、多用户叠加。这篇文章我想用最直接的话把SCMA讲清楚,包括它是怎么从LDS-CDMA一路演进过来的、过载率150%到底怎么算、码本怎么生成、接收机MPA检测在跑什么、以及我实测中踩过的坑。无论你是刚接触物理层的新人,还是想快速评估SCMA是否适合自己项目的老手,这篇都能让你在短时间内建立完整的认知框架。

先说清楚它解决了什么问题。传统正交多址,比如LTE用的OFDMA,用户之间在时频资源上是严格正交的,一个资源块最多只能给一个用户用。用户数量一多,资源就不够分。SCMA允许用户在同一个资源块上叠加传输,靠码本区分彼此,从而在相同资源下接入更多用户。这个思路在5G的mMTC场景、6G的星地融合通信里都有很强的应用价值。

1. SCMA出现的理由:正交多址的资源瓶颈

1.1 正交多址的资源分配模式

要理解SCMA,先得明白传统正交多址是怎么工作的。OFDMA把时频资源划分成一个个资源块(Resource Block),每个用户分配互不重叠的资源块。这样做的好处是接收端不需要太复杂的检测算法,用户间不会互相干扰,每个资源块上解调自己的信号就行。坏处也明显——资源利用率的天花板就定死了。

比如系统有4个资源块,最多只能同时服务4个用户。第5个用户来了就得排队,或者等前面的用户传输结束。在物联网场景里,海量终端可能只传输很小的数据包(比如传感器上报温度),但每个终端都要占一块资源,这就造成了极大的资源浪费。

我见过不少做系统级仿真的人抱怨:mMTC场景下接入用户数动不动要支持每平方公里百万级,靠正交多址根本不可能完成。正交多址本质上是"一人一坑"的资源分配模式,坑就那么多,人多了只能排队。要突破这个瓶颈,只能从多址方式本身下手。

1.2 非正交多址的破局思路

非正交多址(NOMA)的核心思想是允许用户在同一资源块上叠加传输,用功率域或码域的差异来区分用户。这样资源分配从"排他性占用"变成"共享性叠加",理论上可以支持超额接入。

NOMA家族里有两个主要分支。一是功率域NOMA,在发送端给不同用户分配不同功率,接收端用SIC(串行干扰消除)逐级解调。这个概念相对简单,LTE-A的讨论中已经出现过,但SIC对功率差敏感,信道条件不好时误差传播会比较严重。二是码域NOMA,代表方案包括SCMA、LDS-CDMA(低密度扩频)、MUSA(多用户共享接入)等。这些方案在发送端通过码本或扩频序列区分用户,接收端用迭代检测算法分离用户信号。

码域NOMA在过载能力、频谱效率方面通常优于功率域方案,这也是SCMA被华为等公司重点推进的原因之一。华为早在4G时代就开始了SCMA的评估工作,后续在5G标准讨论中也多次提出相关提案,虽然5G最终没有把SCMA纳入标准,但这项技术在6G研究中依然是热门候选。

1.3 SCMA在NOMA家族中的位置

说到SCMA和LDS-CDMA的区别,很多人容易混淆。简单说,LDS-CDMA是先做传统调制(比如QPSK),再用稀疏扩频序列做扩频;SCMA则把调制和扩频合并成一步——直接让比特映射到高维稀疏复数码字上。这个合并是SCMA的关键改进,它避免了LDS中扩频带来的成形增益损失。

打个比方。LDS的做法是先做一份菜(调制),然后加很多水稀释(扩频),最后端上桌。SCMA则直接把食材(比特)做成一道浓缩汤,每道汤都有自己的秘方(码本),上桌后味道依然浓郁。SCMA比LDS在相同频谱效率下有更好的性能,原因就在这里。

从系统角度看,SCMA和功率域NOMA并不冲突,甚至可以在一个系统里配合使用——某些用户组内用SCMA,组间用功率区分。实际项目中做多址方案选型时,需要综合考虑过载率需求、接收机复杂度、信道估计开销等因素。SCMA的强项是高过载场景,代价是接收机复杂度高于正交多址,这个trade-off要心里有数。

2. 核心原理拆解:从LDS到SCMA的演进逻辑

2.1 稀疏扩频:LDS-CDMA打下的基础

LDS-CDMA(Low Density Signature-CDMA,低密度扩频码分多址)是SCMA的直接前身。它的思路是:给每个用户分配一个低密度扩频序列,所谓低密度,就是指这个序列中的非零元素很少。

传统CDMA中,扩频序列通常在所有资源上都非零,比如Walsh码。所有用户叠加后,接收端要解调某个用户需要知道所有用户的扩频序列并做相关运算。当用户数很多时,这个运算量会爆炸。LDS引入"稀疏"概念后,每个用户只在少数几个资源块上有非零分量,这相当于人为制造了一个稀疏的用户-资源映射关系,接收端的检测复杂度随之大幅下降。

这里有个很重要的知识点:稀疏性不只为了省计算量,更是为了让多用户检测算法(比如MPA)能利用因子图结构做消息传递。如果每个用户在所有资源块上都是非零的,因子图会变成一个全连接图,消息传递算法会退化成暴力穷举,复杂度不可接受。可以这么理解:稀疏性是在用微小的性能损失,换取接收机复杂度的指数级下降。

2.2 SCMA的两步走:高维调制加稀疏扩频

SCMA对LDS的改进可以描述为"两步并一步"。在LDS中,数据的处理链路是:比特映射到调制符号(比如QPSK符号),然后乘上稀疏扩频序列。SCMA改变了这个流程,直接设计一组稀疏码本,码本中的每个码字本身就是承载比特信息的K维复数向量。

这里K是资源块的数量,一个码字就是用户在K个资源块上的发送信号。由于采用稀疏结构,每个码字只在其中的N个资源块上有非零值(N远小于K)。码字集合的大小由调制阶数决定,比如M=4的码本,每个码字承载2比特信息,对应4个不同的码字。

这种设计带来的好处是:多维调制天然具备"星座成形增益"。传统QAM调制映射的是一维或二维符号,而SCMA的码字分布在更高维空间中,相同能量下可以构造出更大的最小欧氏距离。反映在误码率曲线上,就是同样的信噪比下,SCMA的误码率更低。

2.3 码本与资源块的对应关系

SCMA系统通常用一个因子图来描述用户和资源块的关系。假设系统有J个用户、K个资源块,因子图就包含J个变量节点(用户)和K个资源节点(资源块)。如果用户j在资源块k上有非零发送,则两者之间有一条边。

举个经典配置:K=4个资源块,J=6个用户,每个码字的非零元素个数N=2。这种情况下,每个资源块上叠加的用户数d_f=3。也就是说,每个资源块上会有3个用户的信号叠加在一起,接收机需要从混叠信号中分离出3个用户的数据。

这个结构非常规律:每个用户占用2个资源块,每个资源块承载3个用户,整个系统过载率150%。这种规律性不是巧合,而是精心设计的。可以这样直观理解:4个资源块相当于4条车道,6个用户相当于6辆车,每辆车只需要占用2条车道就能完成传输,所以每条车道上会有3辆车同时通过,彼此之间靠不同的码本区分。

设计系统时,N和K的比值决定了资源占用密度,d_f决定了接收机检测的叠加用户数。d_f越大,系统频谱效率越高,但接收机复杂度也越高。实际工程中,d_f一般控制在3到4之间比较合理,再高的话MPA检测的复杂度会涨得很快。

2.4 用例子说明6用户4资源的叠加过程

这个例子值得展开一下。6个用户分别拥有自己的码本,码本包含M=4个码字,每个码字是4维向量,向量中有2个分量是非零的。发送时,用户根据自己的比特选择码字,然后在4个资源块上同时发送。

用户1的码字在第1、2个资源块上非零,用户2的码字在第1、3个资源块上非零,用户3的码字在第1、4个资源块上非零,以此类推。每个资源块上收到的信号是3个用户信号的和再加噪声。接收端知道所有用户的码本,用MPA算法在因子图上迭代更新,逐步逼近每个用户的最优解。

我在实际仿真中用这个配置跑过链路级性能,在AWGN信道下,SCMA与OFDMA对比,过载率150%还能维持可接受的误码率。这说明SCMA确实能用更少的资源承载更多的用户,代价是接收端需要额外的处理能力。这个特性非常适合上行海量接入的场景——终端发射功率可以很小,因为接收端基站侧有足够算力去做多用户检测。

3. 过载率、码本设计与关键参数

3.1 过载率怎么算:150%是怎么来的

过载率是SCMA最核心的系统参数,定义是用户数J与资源块数K的比值,用公式表示为:λ = (J / K) × 100%。

以经典的6用户4资源块配置为例,λ = 6/4 = 150%。这表明系统承载的用户数比资源块数多了一半,这就是"过载"的含义。作为对比,OFDMA的过载率最高100%,因为每个资源块只服务一个用户。

过载率直接决定了系统能接入多少用户。在mMTC场景中,终端数量庞大但每个终端的数据量很小,提升过载率是增加系统容量的直接手段。SCMA通过码本设计和稀疏结构,可以在过载率150%甚至200%的情况下保持可接受的检测性能。

关于过载率的设计有个基本原则:过载率越高,系统容量越大,但多用户干扰越强,接收机检测难度越大。仿真时建议从150%起步,先验证码本和检测算法是否正常工作,再逐步提高过载率观察性能变化。

需要注意的是,过载率的提高并非无代价。用户数增加意味着每个资源块上的叠加用户数d_f增加,MPA检测中每个资源节点的可能状态组合数会以指数速度增长。实际项目中需要综合评估过载率、误码率性能和接收机复杂度三者之间的关系。

3.2 母码本生成流程

码本设计是SCMA系统中技术含量最高的环节,也是决定系统性能上限的关键。一个SCMA码本包含J个用户的码本,每个用户的码本包含M个码字。这些码本不是随便生成的随机矩阵,必须经过精心设计。

典型的母码本生成流程分为几步。第一步,从多维复星座开始。选一个基础星座(比如QPSK或8PSK),然后通过维度扩展和旋转构造高维星座。旋转的目的是增大不同码字之间的距离,提升抗干扰能力。

第二步,对基础星座进行稀疏化处理。将高维星座映射到低维稀疏向量空间,只保留N个非零维度。这里的核心是保证稀疏结构的一致性,使所有用户遵循相同的稀疏模式但落在不同的维组合上。

第三步,通过相位扰动生成不同用户的码本。用户1用母码本,用户2的码字在母码本基础上做相位旋转或维度置换,用户3再做另一种变换。这样做的目的是保证用户间码字的互相关性尽可能小,减少多用户检测时的互相干扰。

我实际测试过不同的码本生成策略,一个直观结论是:码本设计的好坏,直接决定了MPA检测能否收敛到正确结果。码本质量差时,即使信噪比很高,误码率也会有明显平台。这和LDPC码的校验矩阵设计不好导致纠错性能变差,道理是相通的。

3.3 设计准则:为什么要看最小距离和成形增益

SCMA码本设计的目标函数通常围绕两个关键指标展开:最小欧氏距离和成形增益。

最小欧氏距离决定了系统在高信噪比下的误码性能。不同用户的码字叠加后,接收端需要通过距离来判断最可能的发送组合。如果最小距离过小,噪声稍微大一点就会导致判决错误。设计码本时,通常需要对所有可能的码字组合做距离谱分析,尽量增大最小距离,同时避免距离分布过于集中。

成形增益是一个稍微抽象的概念。多维星座在高维空间中可以更好地逼近高斯分布的形状,这种逼近带来的增益就是成形增益。相比传统二维QAM星座,高维星座在相同平均功率下可以容纳更多的有效符号,或者在相同符号数下降低平均功率需求。SCMA天然使用高维码字,这个过程相当于同时完成了调制和编码的一部分功能。

设计工具方面,业界常用MATLAB结合优化工具箱做码本搜索。基本流程是初始化一组随机码本,然后通过迭代优化(比如梯度下降或粒子群算法)最大化目标函数。这个过程计算量大,通常需要离线完成。实际项目中我更推荐先用现成的公开码本做系统仿真验证,等整体链路跑通了再针对特定场景优化码本。一上来就搞码本优化,很容易陷进去出不来。

4. 收发机实现与MPA检测

4.1 发射机端做什么

SCMA发射机的工作可以分为两个层面看待:物理资源映射和比特到码字的映射。发射机的输入是每个用户的比特流,经过信道编码后,按每log2(M)比特一组分割。每组比特直接查表选取对应的码字,然后把码字的非零分量映射到对应资源块上发送。

整个发射机实现非常简洁,没有传统的调制映射加扩频的级联结构,也没有复杂的层映射过程。查表操作可以在硬件上用ROM实现,时延很低。这对终端功耗控制很友好,因为发送端复杂度远低于接收端。

需要注意的一个细节是功率分配。虽然SCMA主要依靠码域区分用户,但不同用户在不同资源块上的功率分配也会影响检测性能。一般来说,各用户采用相同功率即可,个别场景下可以做简单的功率偏置来进一步降低干扰。我在仿真中发现,功率分配对SCMA性能的影响弱于码本设计,所以工程上通常不做复杂的功率优化。

4.2 因子图和MPA:消息传递在稀疏图上怎么跑

接收端的核心是多用户检测。SCMA使用MPA(Message Passing Algorithm,消息传递算法)在因子图上做迭代检测。MPA的本质是在图上做置信度传播,近似计算每个用户码字的最大后验概率。

具体来说,算法在两类节点之间传递消息。资源节点收到来自叠加用户和噪声的观测信号,根据码本计算每个用户每个可能码字的似然概率;变量节点收集来自多个资源节点的概率信息,归一化后反馈给资源节点。如此反复迭代,直到消息趋于稳定,最后对每个变量节点做硬判决。

整个过程可以类比成一个多人在噪杂环境中确认信息的场景:你是其中一桌的顾客(用户),服务员(资源节点)在不同桌之间传话,你根据其他桌传过来的信息不断修正自己对当前问题的判断,几轮之后信息逐渐清晰,最终确定正确答案。MPA的巧妙之处在于利用了稀疏图结构,每条消息的计算只涉及部分节点,而不是全局搜索。

MPA的复杂度由因子图结构决定。在6用户4资源、d_f=3的配置下,每个资源节点的状态组合数为M的3次方,也就是M=4时有64种组合需要计算。相比最优最大似然检测需要遍历所有J个用户的联合状态(M的6次方即4096种组合),MPA的复杂度下降了2个数量级。这是SCMA能实用化的最重要原因。

4.3 复杂度控制与迭代设置

MPA的迭代次数是复杂度与性能之间最直接的折中点。迭代次数太少,消息没有充分传播,误码率性能差;迭代次数太多,计算量白白浪费,性能提升微乎其微。

从我的实测经验看,在6用户4资源的配置下,迭代6次基本能达到收敛。5次以内性能有明显提升空间,但超过8次后误码率几乎不再下降。所以工程上建议把迭代次数设为5到8之间,具体数值根据信道条件和码本质量调整。

除了迭代次数,还有几种常见的复杂度优化手段。一是线性近似MPA(Max-Log MPA),把概率计算中的指数和对数运算简化为最大值运算,损失一点性能换取硬件实现的大幅简化。二是基于信道可靠度提前终止迭代,当所有变量节点的置信度都超过某个阈值时提前结束。三是并行化设计,每个资源节点的计算相互独立,在FPGA或GPU上可以高度并行化。

硬件实现时还需要注意定点化问题。概率值在迭代过程中可能出现动态范围过大的情况,需要做归一化处理,防止数值溢出或下溢。我在FPGA上实现MPA时,一开始直接用浮点仿真参数做定点转换,结果性能掉了接近0.5dB,后来改成在每次迭代后增加归一化步骤才恢复正常。这个细节很容易被忽略,但在真正做产品时必须处理。

5. 仿真验证与实战心得

5.1 链路仿真搭建要点

搭建SCMA链路仿真并不复杂,但对细节要求很高。最小可行的仿真系统包括:随机比特生成、用户分组、码本映射、信道叠加、加噪、MPA检测、解调和误码率统计。

信道模型可以从AWGN信道开始,再逐步扩展到衰落信道。我建议新手先跑通AWGN下的完整链路,确认码本和MPA实现正确,再切换到瑞利衰落信道。如果在AWGN下误码率就跟不上理论预期,那问题大概率出在码本映射或者MPA实现上,不要急着换复杂信道模型。

衰落信道下需要注意信道估计的影响。SCMA接收端需要知道每个用户在每个资源块上的信道系数才能正确计算似然概率。实际系统中需要通过导频做信道估计,导频开销和信道估计误差会直接影响SCMA性能。仿真时先假设理想的信道估计,评估出性能上界,再引入信道估计模块观察性能损失,这样便于定位性能瓶颈。

仿真中还有一个容易出错的地方是功率归一化。SCMA的用户信号在资源块上叠加,每个资源块上的总功率可能高于单用户功率。如果不做功率归一化,仿真结果会有明显的偏差。正确做法是在发送端对每个用户的码字功率归一化,接收端根据实际叠加功率计算噪声方差。

5.2 常见坑和排查:误码平台、码本不收敛、信道估计

先说误码平台。误码平台是指误码率曲线随着信噪比增加而趋于平缓,不再下降的现象。SCMA中出现误码平台通常有三个原因:码本设计不好导致部分码字距离太小;MPA迭代次数不足导致检测结果没收敛;或者接收端似然概率计算中存在数值问题。排查时先增加迭代次数,排除迭代不足的因素,再做码本距离谱分析,确认最小距离是否达到合理水平。

再说码本不收敛。这里的"不收敛"指MPA在迭代过程中消息振荡或发散。主要原因通常是码本中不同用户的码字之间相关性太高,导致因子图上存在较强的环路干扰。稀疏因子图中不可避免地存在环路,环长度越短,消息传递越容易发散。解决思路是优化码本设计,增加用户间码字的正交性,或者在MPA中引入阻尼因子,减缓消息更新的步长,帮助算法稳定下来。

信道估计误差对SCMA的影响比正交多址更明显。这是因为MPA的似然计算需要精确的信道系数做匹配滤波,信道误差会直接污染概率值。实测经验是,信道估计的归一化均方误差在5%以内时,SCMA性能损失可控制在0.2dB以内;超过10%后性能会显著恶化。对于高过载场景,建议提高导频密度或者采用迭代信道估计与检测的方案,才能保证实际系统性能。

另外还有一点值得提:SCMA链路仿真对随机种子很敏感。由于码本和信道的随机性,单次仿真的误码率波动可能比较大。我一般的做法是每个信噪比点至少统计1000个误码样本,或者保持至少100000个发送比特的统计量,这样才能得到平滑可靠的性能曲线。

5.3 性能对比:和LDS、OFDMA放在一起看

评估SCMA的实战性能,最直观的方式是跟其他多址方案做对比仿真。我常用的对比对象是OFDMA(正交基线)和LDS-CDMA(前代码域方案),对比指标包括误码率、频谱效率和接收机复杂度。

同等的频谱效率下,SCMA相比LDS-CDMA在BER性能上约有2dB的增益,这个增益主要来自二维调制到多维调制的映射优化。与OFDMA对比更复杂,需要在相同的资源块数量下比较:OFDMA在100%负载下性能很好,但没有过载能力;SCMA在150%负载下增加了一半用户接入,性能损失通常在1到2dB以内。

接收机复杂度上,OFDMA的检测最简单,每个资源块只需做单用户检测;LDS-CDMA接收端也需要类似MPA的算法;SCMA的MPA复杂度略高,但换取的是更好的性能。实际选型时,如果系统负载低于100%,OFDMA仍然是性价比最高的方案;只有当用户接入数明显超过资源数,或者需要海量连接能力时,SCMA的优势才真正体现出来。

这里我做的对比表供参考:

方案过载能力接收机复杂度BER性能典型场景
OFDMA无(≤100%)最优eMBB
LDS-CDMA支持(约150%)一般早期mMTC研究
SCMA支持(150%-200%)中高优于LDS海量连接、6G候选

6. 从5G到6G,SCMA能用在哪儿

6.1 三大场景下的匹配度分析

SCMA的核心优势是高过载能力,这个特性决定了它的应用场景。在5G定义的三大场景中,mMTC对SCMA的适配度最高,因为海量终端接入正是SCMA的强项。传感器网络、智能电表、物流标签这类应用传输的数据量小、频次低,但终端数量巨大,用SCMA可以在有限的时频资源内接入更多终端,减少调度开销。

URLLC场景也值得关注。SCMA的免调度传输特性很关键,终端可以在不需要基站动态调度的情况下直接发送数据,通过码本标识终端身份。这缩短了接入时延,对低时延高可靠通信有天然优势。uRLLC中SCMA需要解决的问题是可靠性,这类场景对误码率要求非常高,SCMA需要通过更精细的码本设计和更强的信道编码来保障。

eMBB场景下SCMA的应用相对受限,因为大流量场景要求极高的频谱效率,而SCMA的频谱效率和多用户干扰之间存在trade-off。但这并不代表eMBB完全不需要SCMA,在一些边缘频谱或异构网络中,SCMA仍可作为补充手段。

6.2 卫星通信、物联网和AI辅助方向

卫星通信是SCMA一个很有潜力的应用方向。星地链路传播时延大,地面基站那种快速反馈调度方式在卫星场景下很难实现。SCMA支持免调度接入,终端盲发数据、靠码本区分用户,这对高轨卫星通信来说很有吸引力。我看到的一些6G星地融合提案中,SCMA类方案是候选中非常重要的一个分支。

AI辅助的SCMA接收机也值得留意。传统MPA算法依赖精确的噪声方差估计和信道状态信息,在复杂场景下性能受限。这几年有研究把深度学习引入SCMA检测,用神经网络替代或辅助MPA。实测数据显示,数据驱动的检测器在信道估计不完美时反而有更好的鲁棒性,这对工程实践有启发意义。

还有其他方向,比如SCMA与大规模MIMO结合、SCMA与LDPC码联合迭代检测、SCMA在非授权频段的免调度应用等等。每个方向都有人在探索,这说明SCMA作为一项底层多址技术,它的价值并没有因为5G标准未采用而消失,反而在6G的讨论中被持续关注和推进。

我在实际项目中一个比较深的体会是,SCMA并不适合所有场景,它的价值在合适的场景下会被放大,在不匹配的场景下则显得鸡肋。做技术选型时,一定要先问自己三个问题:系统需要多高的过载率?接收机预算多少算力?信道条件能否支撑可靠的信道估计?这三个问题想清楚了,SCMA适不适用心中自然有数。这套方法,比单纯追新求热要实用得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询