Skip to content

CDMA码分多址

2026 大纲 三(五)1 信道划分介质访问控制中的 CDM(码分复用)。⚠️ 本篇文件在 physical/ 目录下,但大纲把"信道划分"归在数据链路层的介质访问控制里,内容归属以这条为准。四种复用方式的横向对比在《信道复用技术》。

一、时间不切、频率也不切,怎么还能分开

上一节说 FDM 切频率、TDM 切时间,两者都好理解——两路信号在某一维上根本不重叠,分开是自然的。CDM 反直觉的地方在于:所有站在同一时间、用同一频带发送,信号在信道上直接叠加成一团,接收端却还能把某一个站的数据原样捞出来。

它切的是第三个维度:信号空间里的方向。每个站分到一个 m码片序列(每个码片取 +1 或 −1,m 通常取 2 的幂),把它看成 m 维空间的一个向量;任意两个站的码片序列互相正交。正交的向量之间做内积得零,这就是"叠在一起还能分开"的全部依据。

基本设定只有三条,缺一不可:

  • 每个站有唯一的 m 位码片序列,两两正交
  • 发比特 1 → 发 +Si,发比特 0 → 发反码 Si,不发送 → 全 0 序列
  • 🔴 所有站发送的码片序列必须在同一时刻开始(工程上靠全球定位系统提供统一时基)。码片不对齐,正交性就不成立,整套解码机制立刻失效——同步是个隐含前提,不是可有可无的实现细节

信道上的信号是线性叠加:P=diSi,其中 di{+1,1,0}

发 0 为什么不能就发全 0? 因为若"发 0"就是全 0 序列,它与"没有数据"的内积都是 0,接收端完全无法区分这个站是发了 0 还是根本没说话;而一串数据里 0 通常占一半,那就等于这个站有一半时间从信道上消失了。用反码才把三种状态映射到 +1/1/0 三个互不相同的值上。

二、内积为什么能"提取"出目标站

三条向量性质先立住:

1mSiSi=1,1mSiSj=0 (ij),1mSi(Si)=1

第一条是自动成立的:每一项都是 (±1)2=1,与序列长什么样无关。第二条才是要靠挑选保证的:逐位乘积里恰好一半 +1、一半 −1,总和才为零。第三条是第一条取负。

接收端想知道站 i 发了什么,只需计算接收信号与站 i 码片序列的规格化内积。把它展开:

1mPSi=d11mS1Si=0++di1mSiSi=1++dN1mSNSi=0=di

所有其他站的信号都被过滤掉了(它们的相关项都是 0),只剩下目标站发送的那一项。这就是"同时同频发送还能分开"的全部机制:正交性负责消掉别人,自内积为 1 负责把自己原样留下。能这么展开的前提是内积对加法线性。

由此还得到一个最好用的自查点:规格化内积的结果只可能是 +110 三个值之一(分别对应发 1、发 0、未发送)。算出 0.5、2、−1.5 这类数,一定是算错了,或者题给的序列本就不正交。

另一个方向也要留意:叠加信号 P 的分量可以是任意整数N 个站活跃时每个分量是 N±1(或 0)之和,取值范围 [N,+N]。看到 3+2 不要以为算错——但绝对值超过活跃站数 N 才是真算错了

三、怎么自己造一组正交码片序列

考试给的码片序列是现成的,但"能自己造"才说明真懂了"正交"这个约束有多紧——随便写两条 ±1 序列几乎必然不正交。

构造方法是 Walsh(沃尔什)矩阵的递归构造:把当前矩阵复制到左上、右上、左下三块,右下块取反。

H1=[+1],H2n=[HnHnHnHn],H4=[+1+1+1+1+11+11+1+111+111+1]

H4 的四行就是四个互相正交的 4 位码片序列——真题里给的那几组码片,基本都是它的行

右下角取反为什么就能保证正交? 取任意两行:若它们同在上半部或同在下半部,正交性由 Hn 内部的正交性递归保证;若一行在上半、一行在下半,则左半段的逐位乘积之和与右半段的逐位乘积之和大小相等、符号相反(因为右下块整体取了反),相加正好抵消为 0。

由 Walsh 矩阵还直接得出一条上限:站数上限 = 码片长度 mm 位码片是 m 维空间的向量,互相正交的向量最多只有 m 个。想加站只能加长码片,而码片一长带宽代价就跟着涨。

四、解码的固定流程

第一步最容易被跳过:接收序列往往不止一个数据位。给的序列长度是 m 的几倍,就有几个数据位,必须先按 m 切段,一段一段地算。

三条实操建议:列表格逐位算,不要在脑子里连乘 8 次(表格三行:PSi、乘积);结果只能是 +1/1/0,出现别的值立刻回查、不要接着往下算;算完做反向叠加验算,十几秒就能挡掉绝大多数符号错误。

算例一:多个数据位,m=4

三个站 A (1,1,1,1)、B (1,1,1,1)、C (1,1,1,1) 共享链路,C 从链路上收到

(2,0,2,0,  0,2,0,2,  0,2,0,2)

问 C 收到 A 发送的数据是什么。

第一步:切段。 序列长 12,m=4,所以是 12/4=3 个数据位。切成 (2,0,2,0)(0,2,0,2)(0,2,0,2)

第二步:逐段与 SA=(1,1,1,1) 求规格化内积。

数据位这一段逐位乘 SA 后求和÷4结论
第 1 位(2,0,2,0)2+0+2+0=4+11
第 2 位(0,2,0,2)02+02=410
第 3 位(0,2,0,2)0+2+0+2=4+11

A 发送的是 101。三个结果都落在 {+1,1,0} 里,自查通过。

顺带看一眼分量的合法范围:这些段里出现了 ±2,说明每个时刻有 2 个站在发(3 个站里有 1 个没发或者两两抵消),|Pk|N 成立。

算例二:m=8,四个站一次判完

码片序列 A (1,1,1,+1,+1,1,+1,+1)、B (1,1,+1,1,+1,+1,+1,1)、C (1,+1,1,+1,+1,+1,1,1)、D (1,+1,1,1,1,1,+1,1);接收端收到 P=(1,+1,3,+1,1,3,+1,+1)(长度正好 8,只有一个数据位)。

逐位乘积12345678求和di结论
P−1+1−3+1−1−3+1+1
×SA+1−1+3+1−1+3+1+18+1A 发送了 1
×SB+1−1−3−1−1−3+1−1−8−1B 发送了 0
×SC+1+1+3+1−1−3−1−100C 没有发送
×SD+1+1+3−1+1+3+1−18+1D 发送了 1

反向验算(这一步必做):把结果重新叠加,看能不能还原 P

+SA=(1,1,1,+1,+1,1,+1,+1)SB=(+1,+1,1,+1,1,1,1,+1)0=(0,0,0,0,0,0,0,0)+SD=(1,+1,1,1,1,1,+1,1)

逐位相加得 (1,+1,3,+1,1,3,+1,+1)=P ✓。这一步只花十几秒,却能挡住绝大多数符号错误。

算例三:反过来构造叠加信号

三个站用 H4 的前三行:A (+1,+1,+1,+1)、B (+1,1,+1,1)、C (+1,+1,1,1);某一位时间内 A 发 0、B 不发、C 发 1。

先把数据翻译成各站实际发出的向量:SA=(1,1,1,1)0=(0,0,0,0)+SC=(+1,+1,1,1);逐位相加得

P=(0,0,2,2)

拿 A 验一下:dA=14[0+0+(2)+(2)]=1,确实是"A 发送了 0" ✓。

交互可视化

加载可视化中...

五、扩频换来了什么

CDMA 不切时间、不切频率,代价全部落在带宽上:每个数据比特被扩成 m 个码片,故码片速率 =m× 数据率、占用带宽 =m× 原始信号带宽。这就是它又叫"扩频通信"的原因。

m 位码片只支持 m 个站,所以"带宽 × 站数"与不复用时持平——CDMA 不凭空产生容量。它换来的是另外四样:

CDMA 的实际好处原因
抗窄带干扰窄带干扰源在解扩时被乘上码片序列,能量摊到 m 倍宽的频带上,落进接收带内的部分只剩 1/m
保密性好不知道码片序列的人,收到的只是一团看不出结构的噪声
无需协调即可接入不像 TDM 要分配时隙、FDM 要分配频段,新站只要拿到一个未被占用的正交序列就能直接发
软容量站数略微超过 m 时不是硬性拒绝,而是各站信噪比逐渐下降——这是频分/时分做不到的

最后分清两个名字:CDM 是复用技术(在编码维度上复用一条信道),CDMA 是把它用于多个站点接入时的说法(Multiple Access = 多址)。强调"多个站接入"就用 CDMA。

本节小结

  1. CDMA 靠正交性分离信号:所有站同时同频发送,每站一个 m±1 码片序列且两两正交,并且必须同步开始——不对齐则正交性失效、整套机制崩溃。发 1 → +S,发 0 → S,不发 → 全 0;用反码而不是全 0,是为了让"发 0"与"不发"落在两个不同的内积值上。
  2. 接收就是一次规格化内积 di=1mPSi:内积对加法线性,其余各项按正交性归零,只剩 di结果只可能是 +1/1/0,这是最好用的自查点;叠加信号分量的合法范围是 [N,+N]
  3. 正交序列可由 Walsh 矩阵递归构造,右下块取反保证跨半部两行左右两段内积等值反号;由此得出站数上限 = 码片长度 m。代价是扩频——带宽扩大 m 倍,"带宽 × 站数"与不复用持平,换来的是抗窄带干扰、保密性、免协调接入与软容量,不是凭空多出来的容量。

考点速记

本节在真题里被考过的形式只有一种,但它是物理层唯一一道纯计算的"死题",动作固定、不出意外:

给各站码片序列与某站收到的叠加序列,问某个站发送的数据是什么(cn-2014-37)。四步:

  1. 先按码片长度 m 切段。接收序列长度是 m 的几倍,就有几个数据位。这一步最容易漏——题面给 12 个数、码片长 4,那是 3 个数据位而不是一个。
  2. 对每一段,与目标站的码片序列逐位相乘再求和
  3. 除以 m,得到 +1(发 1)、1(发 0)或 0(未发送)。
  4. 自查:结果不是这三个值之一就一定算错了。

题面问的是"C 收到 A 发送的数据",用的就是 SA——接收方是谁不影响算法,用哪个站的码片序列取决于你想解出谁的数据

易错接收序列要先按 m 切段。 把 12 个数当成一个数据位去算,会得到一个不在 {+1,1,0} 里的数,而这时往往已经来不及回头了。

易错"发 0"发的是反码 S,不是全 0 序列。 全 0 表示这个站没有发送。三种状态对应三个不同的内积值,混起来就分不出"发了 0"和"没说话"。

易错规格化内积要除以 m 忘了除会得到 ±m,虽然符号对但不符合自查条件;如果题目问的是"内积值"而不是"数据",这一步的差别就直接决定对错。

易错叠加信号的分量可以是 ±2±3,那是多个站信号相加的结果,不是码片序列本身。只有绝对值超过活跃站数才说明算错。

易错同步是隐含前提。 凡选项里说"CDMA 各站不需要同步"或"码片序列不必对齐",一律错——不对齐则正交性不成立。

教材出处
  • 谢希仁《计算机网络》(第 8 版)p60(式 2-3):给出码片序列正交性的定义式与举例——"例如,向量 S(1 1 1 +1 +1 1 +1 +1),同时设向量 T(1 1 +1 1 +1 +1 +1 1),这相当于 T 站的码片序列为 00101110。将向量 ST 的各分量值代入 (2-3) 式就可看出这两个码片序列是正交的。不仅如此,向量 S 和各站码片反码的向量的内积也是 0";本篇"0 记作 −1、1 记作 +1"的书写约定即出自此处。
  • 同书 p61(式 2-4 及 2.4.3 节正文):给出"任何一个码片向量和该码片向量自己的规格化内积都是 1"的推导 1mSS=1mSi2=1m(±1)2=1,以及"一个码片向量和该码片反码的向量的规格化内积值是 −1"。同页给出发送规则:"每一个站所发送的是数据比特和本站的码片序列的乘积,因而是本站的码片序列(相当于发送比特 1)和该码片序列的二进制反码(相当于发送比特 0)的组合序列,或什么也不发送(相当于没有数据发送)";并明确了本篇强调的同步前提——"我们还假定所有的站所发送的码片序列都是同步的,即所有的码片序列都在同一个时刻开始。利用全球定位系统 GPS 就不难做到这点"。
  • 同书 p61 还给出了内积解码为何有效的原始论证:"X 站使用它得到的码片向量 S 与接收到的未知信号进行求内积的运算……根据叠加原理……求内积得到的结果是:所有其他站的信号都被过滤掉(其内积的相关项都是 0),而只剩下 S 站发送的信号。当 S 站发送比特 1 时,在 X 站计算内积的结果是 +1,当 S 站发送比特 0 时,内积的结果是 −1";并以 STx 为例说明"相加的 8 项中的 +1 和 −1 各占一半,因此总和一定是零"——本篇"逐位乘积恰好一半 +1 一半 −1"的解释即据此。
  • 同书 p61(图 2-20 及正文):给出扩频的量化关系——"设 CDMA 将每一个码元扩展为 8 个码片",可与本篇"码片速率 = m × 数据率、带宽扩大 m 倍"相互印证。

相关知识

信道复用技术(FDM/TDM/WDM/CDM)通信基础(信道/信号/调制)ALOHA 协议无线局域网

真题练习

相关真题(1题)