1. 从一个多人同时说话的饭局说起第一次接触码分多址CDMA这个概念是在一个技术分享会上。当时主讲人问了一个问题如果一间屋子里有十个人同时说话你怎么保证自己能听清其中某一个人的内容答案听起来有点反直觉——不是让他们轮流说也不是让他们小声说而是让每个人用不同的语言说。只要你的耳朵接收端懂得其中一种语言就能从嘈杂的声浪里把那个人的话过滤出来其他人的声音虽然物理上确实进了你的耳朵但会被当成背景噪声处理掉。这个类比几乎就是CDMA的核心思想。它的全称是Code Division Multiple Access中文叫码分多址。要理解它得先知道多址是什么意思——多个用户如何共享同一段频谱资源。通信领域解决这个问题有几条经典路线频分多址FDMA是把频段切成一条条窄带每人分一条时分多址TDMA是把时间切成一个个时隙每人轮流用而码分多址走的是第三条路——所有人同时同频说话靠码来区分彼此。这篇文章想做的事情很明确把CDMA从考试名词变成你能给别人讲明白的东西。我会从它要解决的根本问题讲起拆开正交码、扩频、解扩这些关键机制再聊聊它在实际系统里怎么落地、有哪些容易踩的坑。不管你是通信专业的学生、刚入行的工程师还是纯粹好奇为什么手机信号能这么多人共用的普通读者都能从里面拿到对自己有用的东西。我尽量不用公式堆砌但该讲清楚的原理一个都不会省。2. 为什么需要码来分家多址技术的根本矛盾2.1 频谱是有限的用户是无限的通信系统最底层的矛盾说白了就一句话能用的频谱资源是有限的但想同时打电话、刷视频的人越来越多。一段频谱就像一条高速公路车道数量固定可上路的车年年增长。多址技术就是交通调度方案——怎么让尽可能多的车同时跑还不至于堵死。FDMA的思路最直白把路分成几条车道每条车道只允许一辆车跑。优点是简单缺点是车道利用率低一辆车占一条道浪费严重。TDMA稍微聪明一点所有车共用一条道但规定好谁先跑谁后跑按时间片轮转。问题是时间片切得再细总有个切换开销而且一旦某个用户没数据要发那个时隙就空着浪费了。CDMA的野心更大它想让所有车同时挤在同一条道上跑还不撞车。这听起来像天方夜谭但数学上确实能做到——前提是每辆车发出的信号都经过一种特殊的编码让它们在接收端可以被区分开。这个编码就是码分多址里的码。2.2 正交性CDMA能成立的数学地基CDMA能工作的根本前提是正交这个概念。两个信号正交用最通俗的话说就是它们互不干扰你算你的我算我的乘在一起积分结果为零。打个比方。假设有两个向量一个指向正东一个指向正北。你把正东方向的向量投影到正北方向上投影长度是零——因为它们垂直。正交码就是信号世界里的垂直向量。如果用户A用码A用户B用码B而码A和码B正交那么接收端拿码A去乘接收到的混合信号时用户B的信号会被积分为零只剩下用户A的内容。这里有个关键点很多人一开始会绕进去正交性是在接收端解扩时才体现出来的在传输过程中所有用户的信号是实实在在叠加在一起的物理上就是混着的。接收端之所以能分离是因为它手里握着与发送端匹配的码。这就像你在一堆同时播放的歌曲里只跟着某一首的节拍打拍子其他歌的节拍对不上自然就被忽略了。2.3 扩频把窄带信号摊薄到宽频带上CDMA还有一个绕不开的概念叫扩频。原始的用户数据带宽通常很窄比如语音信号只有几kHz。CDMA会用一个高速率的码序列去乘这个窄带信号结果就是信号的能量被摊薄到一个宽得多的频带上。为什么要这么做两个原因。第一摊薄之后信号功率谱密度变得很低看起来像噪声不容易被截获也不容易干扰别的窄带系统。第二宽频带意味着更强的抗窄带干扰能力——如果某个频点被干扰了损失的能量占比很小整体信号还能恢复。这里可以用一个生活化的类比一勺糖放进一杯水很甜同样一勺糖放进一浴缸水几乎尝不出甜味。扩频就是把糖信号能量摊到浴缸宽频带里。接收端解扩时相当于把浴缸里的糖重新浓缩回一勺甜味又回来了。而干扰信号因为码不匹配不会被浓缩始终是淡淡的背景。3. 拆开CDMA的收发链路从比特到空中接口3.1 发送端数据是怎么被编码上去的发送端的流程可以拆成几步来看。第一步是信源编码把语音或数据变成比特流。第二步是信道编码加纠错码提高抗干扰能力。第三步才是CDMA的核心动作——扩频调制。具体操作是把每个数据比特与一个高速率的伪随机码序列通常叫PN码或扩频码相乘。如果数据比特是1码序列原样输出如果是-1码序列取反输出。这个相乘在数字域就是异或或者符号翻转实现起来很简单。结果就是一个原本只占一个比特时间的符号被展开成了几十甚至几百个码片chip。码片速率远高于数据速率这个比值就叫扩频因子。每个用户分配到的码序列必须不同而且理想情况下要两两正交。在实际系统里常用Walsh码来做信道区分用PN码来做小区区分。Walsh码在同步条件下严格正交这是它被选中的重要原因。3.2 空中接口所有信号叠加在一起所有用户的扩频信号在同一个频段上同时发射空中接口上看到的就是它们的线性叠加。这时候如果你拿频谱仪去看看到的是一片类似噪声的宽频谱根本分不出有几个用户。这也是CDMA被称为软容量系统的原因——用户数不是硬性切分的而是随着干扰增加逐渐劣化。这里有个容易被忽略的细节CDMA系统里每个用户的信号对其他用户来说都是干扰。用户越多叠加的干扰越大信噪比越低。所以CDMA的容量不是无限的它有一个干扰受限的上限。工程上常说的呼吸效应就是指这个——小区里用户多了覆盖范围会收缩用户少了覆盖又会扩张。这个特性在规划网络时特别重要后面会展开讲。3.3 接收端解扩与判决接收端的动作和发送端对称。它拿本地生成的、与目标用户完全相同的码序列去乘接收到的混合信号。因为正交性其他用户的信号在这一步被积分为零理想情况下目标用户的信号则被浓缩回窄带。解扩之后信号重新变成窄带再经过解调、信道解码还原出原始比特。整个过程的关键在于码的同步——接收端本地码必须和发送端码在时间上对齐哪怕错开一个码片正交性就会被破坏解扩增益大幅下降。所以CDMA系统里同步和捕获是非常核心的技术模块实际实现中会用到匹配滤波、滑动相关等方法来搜索码相位。3.4 一个简化例子两个用户怎么共存假设用户A的码是[1, 1]用户B的码是[1, -1]这两个码正交对应位置相乘再相加1×1 1×(-1) 0。A要发比特1B要发比特-1。A扩频后是[1, 1]B扩频后是[-1, 1]因为B的比特是-1码取反。空中叠加得到[0, 2]。接收端要解A拿A的码[1, 1]去乘[0, 2]得到[0, 2]相加得2判决为正A的比特是1正确。要解B拿B的码[1, -1]去乘[0, 2]得到[0, -2]相加得-2判决为负B的比特是-1正确。这个例子虽然极度简化但它把CDMA最核心的机制完整展示了一遍正交码、叠加传输、相关解扩、符号判决。理解了这个小例子后面所有复杂系统都是在这个骨架上加细节。4. 工程落地时绕不开的几个硬骨头4.1 远近效应为什么功率控制是CDMA的命门CDMA系统里最要命的问题叫远近效应。设想一个基站用户A离得很近用户B离得很远。如果两人发射功率相同基站收到的A信号会远强于B信号。因为CDMA里所有信号共享同一频段A的强信号会淹没B的弱信号导致B无法解调。解决方法是功率控制。基站要不断测量每个用户的接收功率然后发指令让近的用户降低发射功率远的用户提高发射功率目标是让所有用户到达基站的功率大致相等。这个过程要快要准要闭环。实际系统里功率控制分内环和外环内环每秒调整上千次对抗快衰落外环根据误帧率调整目标信噪比保证通信质量。功率控制做不好CDMA系统直接崩盘。这也是为什么CDMA比FDMA、TDMA复杂得多的根本原因——它把资源分配的难题从静态切分变成了动态博弈。4.2 码资源规划Walsh码不是无限的Walsh码的长度决定了正交码的数量。长度为N的Walsh码最多有N个相互正交的码。这意味着一个小区里能同时使用的正交信道数是有限的。实际系统中一部分码要留给导频、同步、寻呼等公共信道剩下的才能分配给业务信道。更麻烦的是Walsh码的正交性只在同步条件下成立。如果多径传播导致不同路径的信号到达时间不同正交性就会被破坏产生多址干扰。工程上会用RAKE接收机来合并多径信号把不同路径的能量收集起来同时尽量恢复正交性。RAKE接收机是CDMA系统里的标志性技术它的名字来源于它像耙子一样耙起多径信号。4.3 呼吸效应与网络规划前面提到的呼吸效应在网络规划阶段必须认真对待。因为CDMA的覆盖和容量是耦合的——用户多了干扰大了边缘用户可能就掉线了。规划时不能只算能覆盖多远还要算在目标用户密度下覆盖会收缩到多少。实际工程中会用链路预算来估算覆盖用蒙特卡洛仿真来评估容量。规划人员要留足够的余量还要设计好切换策略让用户在小区间平滑迁移避免某个小区过载。这些工作比FDMA/TDMA网络的规划要复杂得多因为变量之间是相互影响的。4.4 同步与定时码相位错了就全错了CDMA接收端必须精确知道发送端码序列的相位。搜索这个相位的过程叫码捕获跟踪它的过程叫码跟踪。捕获通常用滑动相关器或者匹配滤波器在不确定的相位范围内搜索峰值。跟踪则用延迟锁定环DLL不断微调本地码相位保持对齐。如果同步失败解扩增益就没了信号直接淹没在噪声里。所以同步模块的设计直接决定了系统能不能用。实际系统中还会用导频信道辅助同步——导频是不带数据的纯码序列接收端拿它来估计信道和同步大大降低了捕获难度。5. 从理论到系统CDMA在真实网络里的样子5.1 蜂窝网络中的码规划在蜂窝网络里CDMA的码分成几层。最外层是扰码用来区分不同小区或不同基站。同一小区内用Walsh码区分不同用户和信道。扰码通常用长PN序列不同小区用不同的相位偏移这样即使相邻小区用相同的Walsh码也不会互相干扰因为扰码不同。这种分层设计很巧妙Walsh码负责小区内的正交扰码负责小区间的随机化。规划时工程师要确保相邻小区的扰码相关性足够低同时Walsh码的分配要避免冲突。这比单纯规划频率或时隙要复杂因为码资源是二维的——既有正交维度又有随机维度。5.2 软切换CDMA特有的优势CDMA系统支持软切换这是它相比硬切换的一大优势。硬切换是先断后连用户从一个基站切换到另一个时先断开旧连接再建立新连接中间有个短暂中断。软切换是先连后断用户同时与两个或多个基站保持连接直到确认新连接稳定了才断开旧的。软切换能实现是因为CDMA里相邻小区可以用相同的频段用户设备可以同时接收多个基站的信号并合并。这大大降低了掉线率也改善了切换时的通话质量。但软切换也带来资源开销——切换期间多个基站同时为一个用户服务占用了更多码资源和功率。所以软切换的比例需要控制不能滥用。5.3 容量与干扰的权衡CDMA的容量公式简化版大致是容量与扩频因子成正比与目标信噪比成反比再乘以一个与干扰相关的因子。这个公式告诉我们几个重要结论第一提高扩频因子能增加容量但受限于带宽第二降低目标信噪比能增加容量但会牺牲质量第三干扰越小容量越大。实际运营中运营商会在容量和质量之间找平衡点。比如在话务密集区可能会适当降低语音编码速率牺牲一点音质来换取更多用户。这种灵活性是CDMA的一大特点也是它被选为3G核心技术的理由之一。6. 实操中容易踩的坑与排查思路6.1 功率控制参数配错导致接入失败我见过一个案例某测试网络里用户频繁接入失败但信号强度显示正常。排查后发现是功率控制的初始发射功率设得太低用户发起接入时基站收不到。CDMA的接入过程是开环功率控制——用户根据接收到的导频强度估算路损然后设定初始发射功率。如果这个估算偏差太大或者参数配错接入就会失败。排查这类问题第一步是看接入信道的发射功率配置第二步是核对开环功率控制的参数公式第三步是用信令跟踪看基站有没有收到接入前缀。很多时候问题不在射频而在参数表里。6.2 多径环境下的解调性能下降在密集城区多径效应严重CDMA的解调性能会明显下降。RAKE接收机虽然能合并多径但如果多径时延扩展超过了搜索窗口或者径数太多导致合并效率低性能就会劣化。这时候需要调整RAKE接收机的搜索窗口和指峰分配策略。实操中会用信道探测仪先测多径分布再根据实测结果配置接收机参数。如果多径时延扩展特别大可能还要考虑用均衡器辅助。这个坑在室内分布系统里尤其常见因为室内反射多多径复杂。6.3 码资源耗尽引发的拥塞Walsh码数量有限如果业务信道分配不当可能出现码资源耗尽但功率还有余量的情况。这时候新用户无法接入但系统看起来功率没满。排查时要同时看码资源和功率资源的使用率不能只看一个指标。优化方法是做码资源的分级管理把高速业务和低速业务分开避免一个高速用户占用过多码资源。另外可以启用码资源的动态分配根据业务需求实时调整。6.4 邻区干扰导致的容量下降CDMA系统里邻区干扰是容量下降的主要原因之一。如果邻区规划不当比如扰码相关性高或者切换参数配错导致用户长时间停留在干扰大的小区容量就会受影响。排查时要做干扰矩阵分析看哪些小区的干扰贡献最大。优化手段包括调整天线下倾角、优化切换门限、重新规划扰码。这些工作往往需要路测数据支撑单靠后台数据不够。7. 我对CDMA的一点个人理解CDMA这套东西刚接触时觉得它反直觉——所有人同时同频说话居然还能分得开。但把正交性、扩频、功率控制这几个概念串起来之后会发现它的逻辑其实很自洽用数学上的正交性换取资源分配的灵活性用功率控制来维持这种正交性在实际信道里的有效性用软切换和RAKE接收来对抗无线环境的恶意。它不像FDMA那样分得清清楚楚也不像TDMA那样排得整整齐齐它更像一个动态平衡的系统所有用户互相制约也互相成就。这种设计哲学在通信领域影响深远后来的OFDM、MIMO里都能看到它的影子。如果你正在学CDMA我的建议是别一上来就啃公式。先把这个多人同时说话的模型在脑子里建起来然后拿两个正交码手算一遍扩频和解扩再去看功率控制和RAKE接收会发现顺畅很多。公式是描述工具不是理解起点。真正理解了机制公式只是把你说清楚的东西写下来而已。