引入

移动通信中的复用

对于蜂窝网络,单个基站覆盖的区域叫 “小区(cell)”。

为了提高频率资源的利用率,会把多个小区组成 “复用簇”,不同簇可以重复用同一组频率 —— 这就是 “频率复用”。常见的复用模式有 12 小区、7 小区、4 小区、3 小区簇,下图是7小区复用的例子。

image-20251125204351652

对于这样的频分复用,相邻小区不能用同一组频率,否则会产生严重干扰。

而码分复用可以“用不同的扩频码给信号‘贴标签’,接收端只认自己对应的‘标签’”,以此在同一频率上同时传输多个用户的信号。

下面将介绍直序扩频以及直序扩频的码分复用。

扩频通信简介

有三种基本的扩频方式:

  • 跳频扩频(Frequency-hopping speread spectrum)
  • 直接序列扩频(Direct-sequence spread spectrum)
  • 啁啾扩频/线性调频扩频(Chirp Spread Spectrum)

参考笔记扩频通信简介 | 風,其中直序扩频在本课中有所涵盖,以课程笔记为准。

直序扩频(Direct Sequence Spread-Spectrum Communications )

直序扩频简介

直接序列扩频使用扩频码(又称扩频序列、PN信号),直接对基带信号进行频域扩宽。如下图就是一个对双极性信号扩频调制的例子。绿色的是频率更高的扩频码,由扩频序列产生器产生。将基带信号与扩频码相异或,即可得到扩频信号。解调时,在本振信号相干后,再使用同样的扩频信号相干(这个过程称为解扩),即可恢复基带信号。

img

直序扩频的系统框图如下图所示:

img

一个完整的扩频、解扩过程如下图所示:

image-20240115000300778

为何称其为扩频呢?因为扩频序列的频率比原始序列高许多。对于原始数据,它是一个窄带信号,如下图红色。而扩频序列是一个能量不集中,且频谱范围很大的信号,如下图绿色。二者在时域相乘等于在频域的卷积,但由于扩频码的能量在频带内太低了,所以卷积之后跟它本身没什么两样(下图中最下面一个)。

image-20240117192815452

直序扩频的扩频增益/扩频因子

扩频增益(Processing Gain)也被称为扩频率(Spreading Ratio)或扩频因子( Spreading Factor)。它被定义为:比特的周期/码片的周期。

上式中,$T_b$是基带数据的周期,$T_c$是码片的周期;$r_c$是码片的速率,$r_b$是基带数据的速率。

直接序列扩频下的码分多址

不同用户采用不同的扩频序列,而这个扩频序列恰好就充当了码分多址里面地址码的作用。对某一个用户来说,他的接收机只能解扩对应扩频序列的信号,而其他用户的信号因为扩频序列不同,无法解扩。所以虽然看起来直扩通信每个用户看似占用频率很宽,但由于是共享不是独享,所以频谱利用率也很高的

image-20240115004032089

在真实的应用场景中,每个用户都会被分配一个唯一的扩频序列$c(t)$,不同用户间的扩频序列正交。因此当扩频序列不对时,其他序列的信号无法解扩,在当前$T_b$周期内的积分是0,不会相互影响。

举个例子,现在有两个用户,他们都使用双极性信号,0使用+1,1使用-1:

  • 第一个用户使用扩频码[0 0 1 1]传输bit 0(+1)。它传输的信号就是$s_1=(+1)\times(+1, +1, -1, -1)=(+1, +1, -1, -1)$
  • 第二个用户使用扩频码[0 1 1 0]传输bit 1(+1)。它传输的信号就是$s_1=(-1)\times(+1, -1, -1, +1)=(-1, +1, +1, -1)$

他们传输的信号叠加在一起,就是$s=s_1+s_2=[0,+2,0,-2]$

  • 对于第一个用户的接收机。使用扩频码解扩得到:$r\times(w_1)^T=[0,+2,0,-2]\times[+1, +1, -1, -1]^T=+4$,正数,解码为0。
  • 对于第二个用户的接收机。使用扩频码解扩得到:$r\times(w_1)^T=[0,+2,0,-2]\times[+1, -1, -1, +1]^T=+4$,正数,解码为1。

一般来说,有两种扩频方式:

  • 全周期扩展(Full-period spreading:):处理增益(PG)= 扩展码的长度

    部分周期扩展(Partial-period spreading):处理增益(PG)< 扩展码的长度

以BPSK系统为例看DSSS

系统建模与性能分析

一个BPSK系统,经过码字是$c(t)$的扩频码扩频,信道传输,再解码的系统框图如下。

image-20251125213338223

首先,原始基带信号$b(t)$(双极性码)与扩频码$c(t)$相乘,变成扩频后的双极性码。再与$A\sin(2\pi f_ct +\theta)$的正弦信号相干,调制出DSSS-BPSK信号$s(t)$。

经过噪声为$n(t)$的信道传输后,接收端为:

第一步:解扩

由于扩频码是双极性码($\pm 1$),所以 $c^2(t) = 1$。 令解扩后的信号为 $w(t)$:

此时,信号部分的扩频码已被消除,恢复为窄带BPSK信号;而噪声 $n(t)$ 被扩频码 $c(t)$ 扩展,但由于 $n(t)$ 是高斯白噪声,乘以 $\pm 1$ 后其统计特性不变,仍视为高斯白噪声。

第二步:解调(乘以相干载波) 信号 $w(t)$ 进入解调器,与恢复的载波 $\sin(2\pi f_c t + \theta)$ 相乘。

信号 $y(t)$ 送入积分器,积分时间为一个比特周期 $T_b$。 判决变量 $z_i$ 为:

解调后的信号分量

可以将积分分为信号分量 $S_{out}$ 和噪声分量 $N_{out}$ 两部分。

由于 $2f_c$ 是高频分量,在积分周期 $T_b$ 内(假设 $f_c \gg 1/T_b$),$\cos$ 项的积分为 0。 且在 $0 \to T_b$ 期间,信息码 $b(t)$ 为常数(假设为 $+1$ 或 $-1$)。

原始信号功率为 $P = \frac{A^2}{2}$,则比特能量 $E_b = P \cdot T_b = \frac{A^2 T_b}{2}$。 由此可得 $A = \sqrt{\frac{2E_b}{T_b}}$。 代入 $S_{out}$:

解调后的噪声分量

因此最终的抽样统计量满足$z(T)\sim N(\pm\sqrt{\frac{E_b T_b}{2}},\frac{N_0T_b}{4})$。误码率为:

直序扩频码

我们希望扩频序列:

  • 自相关函数在零时延处有一个很大的峰值,而在非零时延处尽可能小(接近零),以减少多径效应和ISI。
  • 很小的互相关特性(不同扩频序列间干扰小)。互相关性越大,多用户干扰(Multiple User Interference MAI)越大。因为码片不完全正交,非同一码片的信号在周期内积分不为0。
  • 有尽可能多的码(序列个数,就是不重复的码长度)

通常来说,自相关性和互相关性不可兼得。一个码片如果自相关性很强,则互相关性多半也很强;如果自相关性很弱,则互相关性多半也很弱。

下面是常见的扩频序列

WH Codes

如何生成

WH 码是通过 哈达玛矩阵(Hadamard Matrix) 递归生成的。

哈达玛矩阵是一种 “0-1 矩阵”,通过递推公式生成。初始矩阵:(\boldsymbol{H}_0 = [0])(1 阶矩阵)。高阶矩阵为:

((\overline{\boldsymbol{H}}_{n-1})是(\boldsymbol{H}_{n-1})的 “反码”:0 变 1,1 变 0)

举个例子,初始矩阵是$\boldsymbol{H}_0 = [0]$,那么:

生成哈达玛矩阵后,把矩阵里的0 映射成 + 1,1 映射成 - 1,每一行就对应一个 WH 码。这个映射规则是为了保证在计算其相关性时,模2乘法和XOR操作等价。

如果将0映射成-1,1映射成+1

(\boldsymbol{H}_3)是 8 阶矩阵(因为(n=3)时,矩阵大小是(2^3=8)),把它的每一行 “0→+1、1→-1”,就能得到 8 个长度为 8 的 WH 码。同理,如果需要m个WH码,则使矩阵大小是$2^n\geq m$即可。

WH码的特点

码长规则:WH 码的长度一定是(2^k)((k≥1)的整数),比如 2、4、8、16 等。

码的数量:长度为(2^k)的 WH 码,总共有(2^k)个(因为哈达玛矩阵是方阵,行数 = 列数)。

直流分量:第 1 行(全 0 行)对应的 WH 码是 “全 + 1”,所以有恒定的直流分量。

互相关特性(同步场景):同步时,不同 WH 码的互相关值为 0(这是 “正交性” 的核心体现)。比如两个不同的 WH 码,同步对齐时,逐位相乘求和的结果是 0,所以能完全区分用户。

举个例子,取$H_2$的3 4行。$[+1,+1,-1,-1]\times[+1,-1,-1,+1]^T=1-1+1-1=0$

异步场景互相关性的问题:如果码之间不同步(有时间偏移),互相关值就不是 0 了(会产生干扰)。

自相关特性:WH 码的自相关特性不好(自相关函数在时间轴上有多个峰值,非0时移下峰值依旧很大),这会影响多径干扰的抑制和同步性能。

HW码的局限性与PN码

WH 码虽然是 “完美正交” 的,但有两个明显缺点:

  • 安全性差:生成规则是固定的,容易被预测;
  • 同步 / 自相关差:自相关特性不好,难同步、难抑制多径干扰。

所以需要另一类码:伪噪声(PN)码(也叫伪随机码)。典型 PN 码就是M序列

Maximal-Length Sequence (m-sequence)

PN码的特性

PN 码不是完全正交的,但可以设计成 “近似正交”—— 不同 PN 码的互相关值很小(不是 0,但足够小)。

安全性好:看起来像随机噪声,但只有合法用户知道生成规则,能精确复制。

自相关特性好:自相关在 “0 时移” 时峰值很大,“非 0 时移” 时数值很小,这对同步、多径干扰抑制很友好。

PN 码中最常用的是 “二进制最长线性移位寄存器序列”,简称m 序列。它是通过移位寄存器生成的、周期最长的二进制序列,兼具 “伪随机性” 和 “良好的相关特性”,是 CDMA 系统中常用的扩频码之一。

m序列的生成方法

m序列又称最长线性反馈移位寄存器序列,它是由多级移位寄存器通过线性反馈(就是下图这些摩尔加的抽头)产生的最长的码序列

对于m级的移位寄存器发生器所能产生的最大长度的码序列为$2^m-1$位(不能是全0状态,因为一旦去了全0状态就无法游动到其他状态)。例如下图这个例子,这就是一个4级的m序列生成器。

image-20251126002611282

首先我们从全1状态开始游动:

  • 在全1状态时,$x_4\oplus x_1=0$,因此次态是0 1 1 1。
  • 在0 1 1 1是,$x_4\oplus x_1=1$,因此次态是1 0 1 1
  • 如此往复,一直游动到重复,得到下表:
序列编号 移位寄存器状态 反馈结果 序列编号 移位寄存器状态 反馈结果
1 1, 1, 1, 1 0 9 1, 0, 0, 1 0
2 0, 1, 1, 1 1 10 0, 1, 0, 0 0
3 1, 0, 1, 1 0 11 0, 0, 1, 0 0
4 0, 1, 0, 1 1 12 0, 0, 0, 1 1
5 1, 0, 1, 0 1 13 1, 0, 0, 0 1
6 1, 1, 0, 1 0 14 1, 1, 0, 0 1
7 0, 1, 1, 0 0 15 1, 1, 1, 0 1
8 0, 0, 1, 1 1 重复1 1, 1, 1, 1 0

可以看到,这个4度的计算器总共产生了15个不同的码片。

在实际设计中,这个shift register的结构可以用下表这样的二进制多项式来表示。

image-20251126004533725

以使用$m=3$时,1011的例子来看:m=3代表现在有3个移位寄存器。1011代表这个寄存器的反馈回路与第一条,第三条,第四条边相连。如下图:

image-20251126005105622

m-sequence的性质

周期特性:一个m 级移位寄存器的m 序列周期(一个完整序列重复的长度)是:(2^m - 1)

平衡特性(近似均匀):一个周期内,“1” 的数量与“0”的数量近似相等。1有$2^{m-1}$个,0有$2^{m-1}-1$个。这代表它具有一定的随机噪声的特性(随机噪声1和0的数量相等)。

游程特性(Runs):“游程” 是指连续相同的二进制位(比如 “111” 是长度 3 的 1 游程,“00” 是长度 2 的 0 游程)m 序列的游程满足:长度为 1 的游程占(\frac{1}{2});长度为 2 的游程占(\frac{1}{4}),以此类推(最小为1);最后有 1 个长度为 m 的游程(最长游程);

image-20251126005749658

移位特性(shift):对 m 序列做循环移位(比如把序列开头的几位移到末尾),得到的新序列,等价于 “用另一组初始寄存器状态生成的同一个 m 序列”。

移位&相加特性(shift&add):将一个 m 序列和它的任意移位版本做 “模 2 加”,结果仍是这个 m 序列的另一个移位版本。例如上面的例子,1, 1, 1, 1是第一个码(移位0次),1, 0, 0, 1是移位8次后的码,他们的模2加等于0,1,1,0,是移位6次后的码。

自相关与互相关

周期自相关函数(\phi(k))定义为:(衡量序列和它移位 k 后的序列的相似度)(注:$c_i$是已经被映射成$\pm1$的码字)

归一化自相关函数(R(k)):(R(k) = \frac{1}{N} \phi(k))

m 序列的自相关是 “冲激型” 的:

连续形式的自相关函数$R(\tau)$有:

image-20251126011740972

m 序列的自相关接近 “理想冲激”,和随机白噪声的自相关特性几乎一致 —— 这是人工生成序列中最好的周期自相关特性。这个特性让 m 序列特别适合同步(比如通信中的帧同步、码同步)。

m 序列的互相关特性很差(不同 m 序列之间的互相关值不是 0,还有很多高峰值),因此不能直接用作 CDMA 的扩频码(否则会产生严重的多址干扰)。

Gold Code/Sequence

如何生成

m 序列有个大问题:不同 m 序列之间的互相关值很大,没法直接用来做 CDMA 的扩频码(会产生严重干扰)。而 Gold 码(Gold 序列)就是为了解决这个问题 —— 它能生成大量序列,同时互相关值被限制在很小的范围内,适合 CDMA 多用户通信。

Gold序列将两个m序列作为优选对(一对特殊的 m 序列),把两个m序列的输出结果进行摩尔加。

image-20240115011757069

优选对的定义:这对 m 序列的互相关值只有 3 种可能:(\phi_{xy}(k) = -1,\ -t(m),\ t(m)-2)。其中(t(m) = 1 + 2^{\lfloor (m+2)/2 \rfloor})((\lfloor x \rfloor)是向下取整)。

举个例子:m=5 时,(t(5)=1+2^{\lfloor7/2\rfloor}=1+2^3=9),所以这对 m 序列的互相关值只能是 - 1、-9、7。

注意:不是所有m序列都有优选对,比如 m=4、8、12、16 时,不存在 m 序列的优选对,所以这些长度没法构造 Gold 码。

对于优选对$x$和$y$,因为x和y的周期是(N=2^m-1),所以 Gold 码的总数是:(N + 2 = 2^m -1 + 2 = 2^m + 1)。

特性

同一集合内的 Gold 码,互相关值和 “生成它们的优选对” 的互相关值一致,只有 3 种:(-1,\ -t(m),\ t(m)-2)。

而且随着 m 增大,最大互相关值(t(m)/N)会趋近于 0((N=2^m-1)是周期)—— 这意味着 “用户越多、码越长,互相关干扰越小”,很适合 CDMA。

Gold 码的自相关特性不如 m 序列:m 序列的自相关是 “1(0 移位)、-1/N(非 0 移位)”,而 Gold 码的非 0 移位自相关值会有 3 种(和互相关一样)。

这是一个 “权衡”:Gold 码用 “稍差的自相关”,换来了 “大量序列 + 良好的互相关”,更适合多用户场景。

以长度 7(m=3,(N=2^3-1=7))的 Gold 码为例:

优选对:

  • m-seq1:[-1 +1 +1 -1 +1 -1 -1]
  • m-seq2:[+1 -1 -1 -1 +1 -1 +1]

生成的 Gold 序列:[-1 -1 -1 +1 +1 +1 -1]

  • 其与移位1次的序列([-1, -1, -1, -1, +1, +1, +1])自相关为:

  • 其与移位2次的序列([+1,−1,−1,−1,−1,+1,+1])自相关为:

  • 其与移位3次的序列([+1,+1,−1,−1,−1,−1,+1])自相关为:

这个序列的$m=7$,$t(7) = 1 + 2^{\lfloor (7+2)/2 \rfloor}=17$

CDMA无线系统

在现实环境中增强DS-CDMA的性能