伪随机序列生成与跳频扩频系统详解
1. 伪随机(PN)序列生成
PN序列是由 1 和 0 组成的码序列,其自相关特性与白噪声相似。目前,最广为人知的二进制 PN 码序列是最大长度移位寄存器序列,简称 m 序列。
-
m 序列的生成 :m 序列长度为 $L = 2^m - 1$ 比特,由具有线性反馈的 m 级移位寄存器生成,该序列周期为 L,每个周期包含 $2^{m - 1}$ 个 1 和 $2^{m - 1} - 1$ 个 0。表 1 列出了生成最大长度序列的移位寄存器连接方式。
| m | 连接到模 2 加法器的级 | m | 连接到模 2 加法器的级 | m | 连接到模 2 加法器的级 |
| — | — | — | — | — | — |
| 2 | 1, 2 | 13 | 1, 10, 11, 13 | 24 | 1, 18, 23, 24 |
| 3 | 1, 3 | 14 | 1, 5, 9, 14 | 25 | 1, 23 |
| 4 | 1, 4 | 15 | 1, 15 | 26 | 1, 21, 25, 26 |
| 5 | 1, 4 | 16 | 1, 5, 14, 16 | 27 | 1, 23, 26, 27 |
| 6 | 1, 6 | 17 | 1, 15 | 28 | 1, 26 |
| 7 | 1, 7 | 18 | 1, 12 | 29 | 1, 28 |
| 8 | 1, 5, 6, 7 | 19 | 1, 15, 18, 19 | 30 | 1, 8, 29, 30 |
| 9 | 1, 6 | 20 | 1, 18 | 31 | 1, 29 |
| 10 | 1, 8 | 21 | 1, 20 | 32 | 1, 11, 31, 32 |
| 11 | 1, 10 | 22 | 1, 22 | 33 | 1, 21 |
| 12 | 1, 7, 9, 12 | 23 | 1, 19 | 34 | 1, 8, 33, 34 | -
双极性序列 :在直接序列(DS)扩频应用中,元素为 {0, 1} 的二进制序列会被映射为元素为 {-1, 1} 的相应二进制序列,我们将元素为 {-1, 1} 的等效序列 ${ C_n }$ 称为双极性序列。
-
自相关函数 :周期性 PN 序列的一个重要特性是其自相关函数,通常根据双极性序列 ${ C_n }$ 定义为:
$R_c(m) = \sum_{n = 1}^{L} C_n C_{n + m}$,其中 L 是序列的周期。由于序列 ${ c_n }$ 周期为 L,自相关序列 ${ R_c ( m ) }$ 也具有周期 L。理想情况下,PN 序列的自相关函数应具有与白噪声相似的相关特性,即对于 ${ C_n }$,理想的自相关序列为 $R_c ( 0 ) = L$,且当 $1 \leq m \leq L - 1$ 时,$R_c ( m ) = 0$。对于 m 序列,自相关序列为:
$R_c(m) = \begin{cases} L, & m = 0 \ -1, & 1 \leq m \leq L - 1 \end{cases}$
对于长 m 序列,$R_c ( m )$ 的非峰值相对于峰值 $R_c(0)$ 的大小(即比值 $R_c(m)/R_c(0) = -1/L$)很小,从实际角度看无关紧要。因此,从自相关函数的角度来看,m 序列非常接近理想的 PN 序列。
2. 示例问题:低截获概率(LPI)信号检测
一个 LPI 信号由 10 级移位寄存器生成的 m 序列进行二进制调制产生($L = 1023$),因此每个信息比特的码片数为 1023。移位寄存器的输出被映射为双极性序列:
$C_k = \begin{cases} 1, & \text{如果移位寄存器输出为 1} \ -1, & \text{如果移位寄存器输出为 0} \end{cases}$
传输的码片序列受到加性高斯白噪声(AWGN)的干扰,因此在码片匹配滤波器输出端的接收信号序列为:
$r_k = s c_k + n_k$,$k = 1, 2, … , 1023$
其中二进制数据比特 s 对于整个序列 $0 \leq k \leq 1023$ 要么为 +1 要么为 -1。
- 步骤 1 :生成 m 序列 ${ c_k }$ 并验证公式 (12.3.2) 是否满足。
- 步骤 2 :使用步骤 1 中生成的 m 序列构造接收信号序列 ${ r_k }$,并在高斯噪声样本方差 $\sigma^2 = 10$ 时,绘制 $k = 1, 2, … , 1023$ 的序列图。判断传输信号序列 $X_k = s c_k$,$1 \leq k \leq 1023$ 是否能在 ${ r_k }$ 中辨别出来。
-
步骤 3
:计算 ${ r_k }$ 与 ${ c_k }$ 的互相关并绘制结果:
$Y_n = \sum_{k = 1}^{n} r_k c_k$,$n = 1, 2, … , 1023$
对该相关器输出的结果进行评论。
以下是该问题的 MATLAB 脚本:
% MATLAB script for Illustrative Problem 9.5
N = 1000; % Number of samples
M = 50; % Length of the autocorrelation function
p = [0.9 0.99]; % Pole positions
w = 1/sqrt(2)*(randn(1,N) + 1i*randn(1,N)); % AWGN sequence
% Preallocation for speed:
c = zeros(length(p),N);
Rx = zeros(length(p),M+1);
Sx = zeros(length(p),M+1);
for i = 1:length(p)
for n = 3:N
c(i,n) = 2*p(i)*c(n-1) - power(p(i),2)*c(n-2) + power((1-p(i)),2)*w(n);
end
% Calculation of autocorrelations and power spectra:
Rx(i,:) = Rx_est(c(i,:),M);
Sx(i,:)=fftshift(abs(fft(Rx(i,:))));
end
% Plot the results:
subplot(3,2,1)
plot(real(c(1,:)))
axis([0 N -max(abs(real(c(1,:)))) max(abs(real(c(1,:))))])
title(' \it { p} = 0 • 9 ')
xlabel(' \it { n} ')
ylabel(' \it { c _ { nr} } ')
subplot(3,2,2)
plot(real(c(2,:)))
axis([0 N -max(abs(real(c(2,:)))) max(abs(real(c(2,:))))])
title(' \it { p} = 0 • 9 9 ')
xlabel(' \i t{n} ')
ylabel(' \it{ c_ {nr}} ')
subplot(3,2,3)
plot(imag(c(1,:)))
axis([0 N -max(abs(imag(c(1,:)))) max(abs(imag(c(1,:))))])
title(' \it { p} = 0 • 9 ')
xlabel(' \i t{n} ')
ylabel(' \i t{c_{ni}} ')
subplot(3,2,4)
plot(imag(c(2,:)))
axis([0 N -max(abs(imag(c(2,:)))) max(abs(imag(c(2,:))))])
title(' \it { p} = 0 • 9 9 ')
xlabel(' \i t{n} ')
ylabel(' \i t{c_{ni}} ')
subplot(3,2,5)
plot(abs(c(1,:)))
axis([0 N 0 max(abs(c(1,:)))])
title(' \it { p} = 0 . 9 ')
xlabel(' \i t{n} ')
ylabel(' \it { I c _ n I } ')
subplot(3,2,6)
plot(abs(c(2,:)))
axis([0 N 0 max(abs(c(2,:)))])
title(' \it { p} = 0 • 9 9 ')
xlabel(' \i t{n} ')
ylabel(' \it { I c _ n I } ')
figure
subplot(2,2,1)
plot(abs(Rx(1,:)))
axis([0 M 0 max(abs(Rx(1,:)))])
title(' \it { p} = 0 • 9 ')
xlabel(' \it { n} '); ylabel(' \it { IR_ { c }( n) I } ')
subplot(2,2,2)
plot(abs(Rx(2,:)))
title(' \it { p} = 0 • 9 9 ')
xlabel(' \i t{n} '); ylabel(' \it{ IR_ { c}( n) I}')
axis([0 M 0 max(abs(Rx(2,:)))])
subplot(2,2,3)
plot(Sx(1,:))
title(' \it { p} = 0 • 9 ')
xlabel(' \it{f} '); ylabel(' \i t{S_ { c} ( f)} ')
axis([0 M 0 max(abs(Sx(1,:)))])
subplot(2,2,4)
plot(Sx(2,:))
title(' \it { p} = O • 9 9 ')
xlabel(' \it { f} '); ylabel(' \it { s _ { c} ( f ) } ')
axis([0 M 0 max(abs(Sx(2,:)))])
3. 互相关特性与其他 PN 序列
在某些应用中,PN 序列的互相关特性与自相关特性同样重要。例如,在码分多址(CDMA)中,每个用户会被分配一个特定的 PN 序列。理想情况下,用户之间的 PN 序列应相互正交,以使一个用户受到其他用户传输的干扰水平为零。然而,实际中不同用户使用的 PN 序列会表现出一定的相关性。
- m 序列的互相关 :一对相同周期的 m 序列之间的周期性互相关函数可能会有相对较大的峰值。表 2 列出了 3 ≤ m ≤ 12 时,一对 m 序列之间周期性互相关的峰值幅度 $R_{max}$,以及长度为 $L = 2^m - 1$ 的 m 序列的数量。我们可以观察到,长度为 L 的 m 序列数量随 m 迅速增加,并且对于大多数序列,互相关函数的峰值幅度 $R_{max}$ 占自相关函数峰值的很大比例。因此,m 序列不适合用于 CDMA 通信系统。虽然可以选择 m 序列的一个小子集,使其互相关峰值比 $R_{max}$ 相对较小,但该集合中的序列数量通常太少,无法满足 CDMA 应用的需求。
| m | L = 2^m - 1 | m 序列数量 | m 序列 $R_{max}$ | m 序列 $R_{max}/R(0)$ | Gold 序列 $R_{max}$ | Gold 序列 $R_{max}/R(0)$ |
|---|---|---|---|---|---|---|
| 3 | 7 | 2 | 5 | 0.71 | 5 | 0.71 |
| 4 | 15 | 2 | 9 | 0.60 | 9 | 0.60 |
| 5 | 31 | 6 | 11 | 0.35 | 9 | 0.29 |
| 6 | 63 | 6 | 23 | 0.36 | 17 | 0.27 |
| 7 | 127 | 18 | 41 | 0.32 | 17 | 0.13 |
| 8 | 255 | 16 | 95 | 0.37 | 33 | 0.13 |
| 9 | 511 | 48 | 113 | 0.22 | 33 | 0.06 |
| 10 | 1023 | 60 | 383 | 0.37 | 65 | 0.06 |
| 11 | 2047 | 176 | 287 | 0.14 | 65 | 0.03 |
| 12 | 4095 | 144 | 1407 | 0.34 | 129 | 0.03 |
-
Gold 序列 :Gold(1967,1968)开发了生成具有比 m 序列更好周期性互相关特性的 PN 序列的方法。Gold 序列是通过取一对特别选择的 m 序列(称为优选 m 序列),并对其中一个序列相对于另一个序列的 L 个循环移位版本中的每一个进行模 2 求和而构造的,这样就生成了 L 个 Gold 序列。对于大 L 且 m 为奇数时,任意一对 Gold 序列之间互相关函数的最大值为 $R_{max} = \sqrt{2L}$;对于 m 为偶数时,$R_{max} = \sqrt{L}$。
-
Kasami 序列 :Kasami(1966)描述了一种通过对 m 序列进行抽取来构造 PN 序列的方法。在 Kasami 的构造方法中,选择 m 序列的每 $(2^{m/2} + 1)$ 个比特。与 Gold 序列相比,这种构造方法产生的 PN 序列集合较小,但其最大互相关值为 $R_{max} = \sqrt{L}$。
-
与 Welch 下界的比较 :将 Gold 序列和 Kasami 序列的互相关函数峰值与 Welch(1974)给出的已知下界进行比较很有趣。对于一组周期为 L 的 N 个序列,它们最大互相关的 Welch 下界为:
$R_{max} \geq \sqrt{\frac{(N - 1)L}{N}}$,对于大的 L 和 N 值,可近似为 $R_{max} \geq \sqrt{L}$。因此,我们可以观察到 Kasami 序列满足下界,因此它们是最优的。另一方面,m 为奇数的 Gold 序列 $R_{max} = \sqrt{2L}$,因此它们略次优。
4. 示例问题:Gold 序列生成
生成由图中所示的两个移位寄存器输出进行模 2 求和得到的 $L = 31$ 个 Gold 序列。
以下是执行此计算的 MATLAB 脚本:
% MATLAB script for Illustrative Problem 12.6.
echo on
% First determine the maximal length shift-register sequences.
% Assume the initial shift-register content as "00001 ".
connections1=[1 0 1 0 0];
connections2=[1 1 1 0 1];
sequence1 = ss_mlsrs(connections1);
sequence2 = ss_mlsrs(connections2);
% Cyclically shift the second sequence and add it to the first one.
L = 2^length(connections1) - 1;
for shift_amount = 0:L - 1
temp = [sequence2(shift_amount + 1:L) sequence2(1:shift_amount)];
gold_seq(shift_amount + 1,:) = (sequence1 + temp) - floor((sequence1 + temp)./2).*2;
end
echo on
% Find the max value of the cross-correlation for these sequences.
max_cross_corr = 0;
for i = 1:L - 1
for j = i + 1:L
% equivalent sequences
c1 = 2*gold_seq(i,:) - 1;
c2 = 2*gold_seq(j,:) - 1;
for m = 0:L - 1
shifted_c2 = [c2(m + 1:L) c2(1:m)];
corr = abs(sum(c1.*shifted_c2));
end
end
end
if (corr > max_cross_corr)
max_cross_corr = corr;
end
echo off
% Note that max_cross_correlation turns out to be 9 in this example.
function [seq] = ss_mlsrs(connections)
% [seq] = ss_mlsrs(connections)
% SS_MLSRS generates the maximal length shift-register sequence when the
% shift-register connections are given as input to the function. A "zero"
% means not connected, whereas a "one" represents a connection.
m = length(connections);
L = 2^m - 1; % length of the shift register sequence requested
registers = [zeros(1,m - 1) 1]; % initial register contents
seq(1) = registers(m); % first element of the sequence
for i = 2:L
new_reg_cont(1) = connections(1)*seq(i - 1);
for j = 2:m
new_reg_cont(j) = registers(j - 1) + connections(j)*seq(i - 1);
end
registers = new_reg_cont;
seq(i) = registers(m);
end
end
生成的 31 个序列如表 3 所示,这些序列的互相关最大值为 $R_{max} = 9$。
| 序号 | Gold 序列 |
|---|---|
| 1 | 0111000010000110010010111100000 |
| 2 | 0101101110001000001001000110001 |
| 3 | 0000110110010100111110110010011 |
| 4 | 1010000110101101010001011010111 |
| 5 | 1111100111011110001110001011110 |
| 6 | 0100100100111000110000101001100 |
| 7 | 0010100011110101001101101101001 |
| 8 | 1110101101101110110111100100011 |
| 9 | 0110110001011001000011110110110 |
| 10 | 0110001000110110101011010011101 |
| 11 | 0111111011101001111010011001011 |
| 12 | 0100011101010111011000001100111 |
| 13 | 0011010000101010011100100111111 |
| 14 | 1101001011010000010101110001111 |
| 15 | 0001111100100100000111011101110 |
| 16 | 1000010011001100100010000101101 |
| 17 | 1011001100011101101000110101010 |
| 18 | 1101110010111111111101010100100 |
| 19 | 0000001111111011010110010111000 |
| 20 | 1011110101110010000000010000001 |
| 21 | 1100000001100000101100011110010 |
| 22 | 0011101001000101110100000010100 |
| 23 | 1100111000001111000100111011001 |
| 24 | 0010011010011010100101001000010 |
| 25 | 1111011110110001100110101110101 |
| 26 | 0101010111100111100001100011010 |
| 27 | 0001000101001011101111111000101 |
| 28 | 1001100000010011110011001111011 |
| 29 | 1000101010100011001010100000110 |
| 30 | 1010111111000010111001111111100 |
| 31 | 1110010100000001011111000001000 |
5. 跳频(FH)扩频系统
在跳频(FH)扩频中,可用的信道带宽 W 被细分为大量不重叠的频率时隙。在任何信令间隔内,传输信号会占用一个或多个可用的频率时隙。每个信令间隔内频率时隙的选择是根据 PN 发生器的输出伪随机进行的。
- 系统框图 :FH 扩频系统的发射机和接收机框图如下:
graph LR
A[信息序列] --> B[编码器]
C[PN 序列发生器] --> D[混频器]
B --> E[FSK 调制器]
E --> D
D --> F[频率合成器]
F --> G[信道]
H[PN 序列发生器] --> I[频率合成器]
G --> J[混频器]
I --> J
J --> K[FSK 解调器]
K --> L[解码器]
L --> M[输出]
N[时间同步器] --> H
调制方式可以是二进制或 M 元频移键控(MFSK)。例如,如果采用二进制 FSK,调制器会根据传输的 0 或 1 选择两个频率之一,如 $f_0$ 或 $f_1$。得到的二进制 FSK 信号会根据 PN 发生器的输出序列进行频率平移,该序列用于选择由频率合成器合成的频率 $f_c$,这个频率平移后的信号会通过信道传输。例如,从 PN 发生器取 m 位,我们可以指定 $2^m - 1$ 种可能的载波频率。
-
接收机操作 :在接收机端,有一个与接收信号同步的相同 PN 序列发生器,用于控制频率合成器的输出。因此,发射机引入的伪随机频率平移会在解调器处通过将合成器输出与接收信号混合来消除,然后通过 FSK 解调器对所得信号进行解调。通常从接收信号中提取用于保持 PN 序列发生器与 FH 接收信号同步的信号。
-
调制选择 :虽然二进制相移键控(PSK)调制通常比二进制 FSK 性能更好,但在跳频模式中合成频率以及信号在宽带宽上从一个频率跳转到另一个频率的传播过程中,很难保持相位相干性。因此,FH 扩频系统通常采用具有非相干解调的 FSK 调制。
-
跳频速率 :跳频速率 $R_h$ 可以选择等于符号速率、低于符号速率或高于符号速率。如果 $R_h$ 等于或低于符号速率,FH 系统称为慢跳系统;如果 $R_h$ 高于符号速率(即每个符号有多次跳变),FH 系统称为快跳系统。这里我们只考虑跳频速率等于符号速率的情况。
6. FH 信号的误码概率
考虑一个使用二进制 FSK 传输数字信息的 FH 系统,跳频速率为每比特 1 跳,解调和解码是非相干的。
-
AWGN 信道或宽带干扰 :在加性高斯白噪声(AWGN)信道中,这样一个系统的误码概率为:
$p_b = \frac{1}{2}e^{-\frac{E_b}{2N_0}}$。如果干扰是覆盖整个 FH 带宽 W 的具有平坦频谱的宽带信号或干扰器,同样的结果适用。在这种情况下,$N_0$ 被替换为 $N_0 + J_0$,其中 $J_0$ 是干扰的频谱密度。与直接序列(DS)扩频系统一样,每比特能量 $E_b$ 可以表示为 $E_b = P_s T_b = \frac{P_s}{R}$,其中 $P_s$ 是平均信号功率,R 是比特率。类似地,$J_0 = \frac{P_1}{W}$,其中 $P_1$ 是宽带干扰的平均功率,W 是可用信道带宽。因此,假设 $J_0 \gg N_0$,我们可以将信噪比(SNR)表示为:
$\frac{E_b}{J_0} = \frac{W/R}{P_1/P_s}$,其中 $W / R$ 是处理增益,$P_1 / P_s$ 是 FH 扩频信号的干扰容限。 -
部分带干扰 :慢跳 FH 扩频系统特别容易受到部分带干扰的影响,这种干扰可能来自故意干扰或 FH CDMA 系统。假设部分带干扰被建模为一个零均值高斯随机过程,其在总带宽 W 的一部分上具有平坦的功率谱密度,在其余频率带上为零。在功率谱密度非零的区域,其值为 $S_1(f) = \frac{J_0}{\alpha}$,其中 $0 < \alpha \leq 1$。换句话说,干扰平均功率 $P_1$ 被假设为常数,$\alpha$ 是干扰占用的频率带的比例。
假设部分带干扰来自一个干扰器,该干扰器选择 $\alpha$ 以优化对通信系统的影响。在具有二进制 FSK 调制和非相干检测的未编码慢跳系统中,传输频率在频率带 W 中以均匀概率选择。因此,接收信号被干扰的概率为 $\alpha$,不被干扰的概率为 $1 - \alpha$。当被干扰时,误码概率为 $\frac{1}{2} \exp ( - \frac{\alpha P_b}{2})$,当不被干扰时,假设信号检测无误差,其中 $P_b = \frac{E_b}{J_0}$。因此,平均误码概率为:
$P_e(\alpha) = \alpha \frac{1}{2} \exp ( - \frac{\alpha P_b}{2}) + (1 - \alpha) \times 0 = \frac{\alpha}{2} \exp ( - \frac{\alpha P_b}{2})$
干扰器通过选择 $\alpha$ 来最大化误码概率。通过对 $P_e(\alpha)$ 求导并求解使 $P_e(\alpha)$ 最大化的 $\alpha$ 值,我们发现干扰器的最佳选择是:
$\alpha^* = \begin{cases} \frac{2}{P_b}, & P_b > 2 \ 1, & P_b \leq 2 \end{cases}$
对应的最坏情况下部分带干扰器的误码概率为:
$P_b = \begin{cases} \frac{1}{eP_b}, & P_b > 2 \ \frac{1}{2}e^{-\frac{P_b}{2}}, & P_b \leq 2 \end{cases}$
7. 示例问题:FH 系统仿真
通过蒙特卡罗仿真,演示一个采用二进制 FSK 并受到最坏情况部分带干扰的 FH 数字通信系统的性能。
- 仿真模型 :系统模型如下:
graph LR
A[均匀随机数发生器(RNG)] --> B[二进制 FSK 调制器]
C[均匀 RNG] --> D{是否干扰}
D -- 是 --> E[高斯 RNG]
D -- 否 --> F[无干扰]
B --> G[检测器]
E --> G
F --> G
G --> H[比较决策]
H --> I[输出]
J[误差计数器] --> H
一个均匀随机数发生器(RNG)用于生成二进制信息序列,作为 FSK 调制器的输入。FSK 调制器的输出以概率 $\alpha$ 受到加性高斯噪声的干扰,另一个均匀 RNG 用于确定何时加性高斯噪声会干扰信号,何时不会。在存在噪声的情况下,假设传输的是 0,检测器的输入为:
$r_1 = ( - \sqrt{E_b} \cos \phi + n_c)^2 + ( \sqrt{E_b} \sin \phi + n_s)^2$
$r_2 = n_c^2 + n_s^2$
其中 $\phi$ 表示信道相移,$n_{1c}$,$n_{1s}$,$n_{2c}$,$n_{2s}$ 表示加性噪声分量。在没有噪声的情况下,$r_2 = 0$,因此检测器不会出现误差。每个噪声分量的方差为 $\sigma^2 = \frac{\alpha J_0}{2}$,其中 $\alpha$ 由上述公式给出。为了简单起见,我们可以设 $\phi = 0$ 并将 $J_0$ 归一化为 1。那么 $P_b = \frac{E_b}{J_0} = E_b$。由于 $\sigma^2 = \frac{J_0}{2\alpha}$ 且 $\alpha = \frac{2}{P_b}$,可以得出,在存在部分带干扰的情况下,$\sigma^2 = \frac{E_b}{4}$ 且 $\alpha = \frac{2}{E_b}$,其中 $E_b$ 限制为 $E_b \geq 2$。
- MATLAB 脚本 :
% MATLAB script for Illustrative Problem 12.7.
echo on
rho_b1 = 0:5:35;
rho_b2 = 0:0.1:35;
for i = 1:length(rho_b1)
smld_err_prb(i) = ss_pe96(rho_b1(i));
end
echo on
for i = 1:length(rho_b2)
temp = 10^(rho_b2(i)/10);
if (temp > 2)
theo_err_rate(i) = 1/(exp(1)*temp);
else
theo_err_rate(i) = (1/2)*exp(-temp/2);
end
end
echo on
% Plotting commands follow.
function [p] = ss_Pe96(rho_in_dB)
rho = 10^(rho_in_dB/10);
Eb = rho;
if (rho > 2)
alpha = 2/rho;
else
alpha = 1;
end
sgma = sqrt(1/(2*alpha));
N = 10000;
% generation of the data sequence
for i = 1:N
temp = rand;
if (temp < 0.5)
data(i) = 1;
else
data(i) = 0;
end
end
% Find the received signals.
for i = 1:N
if (data(i) == 0)
r1c(i) = sqrt(Eb);
r1s(i) = 0;
r2c(i) = 0;
r2s(i) = 0;
else
r1c(i) = 0;
r1s(i) = 0;
r2c(i) = sqrt(Eb);
r2s(i) = 0;
end
if (rand < alpha)
r1c(i) = r1c(i) + gngauss(sgma);
r1s(i) = r1s(i) + gngauss(sgma);
r2c(i) = r2c(i) + gngauss(sgma);
r2s(i) = r2s(i) + gngauss(sgma);
end
end
% Make the decisions and count the number of errors made.
num_oLerr = 0;
for i = 1:N
r1 = r1c(i)^2 + r1s(i)^2;
r2 = r2c(i)^2 + r2s(i)^2;
if (r1 > r2)
decis = 0;
else
decis = 1;
end
if (decis ~= data(i))
num_oLerr = num_oLerr + 1;
end
end
p = num_oLerr/N;
end
8. 使用信号分集克服部分带干扰
受到部分带干扰的 FH 系统性能非常差。例如,为了使系统达到 $10^{-6}$ 的误码概率,在存在最坏情况干扰时,检测器所需的 SNR 几乎为 60 dB。相比之下,在没有部分带干扰的情况下,AWGN 中所需的 SNR 约为 10 dB。因此,由于部分带干扰的存在,SNR 的损失约为 50 dB,这是过高的。
- 双分集系统 :减少部分带干扰对 FH 扩频系统影响的方法是通过信号分集,即相同的信息比特在多个频率跳变上传输,多个传输的信号在检测器输入处进行加权和组合。具体来说,假设每个信息比特在两个连续的频率跳变上传输,得到的系统称为双分集系统。在这种情况下,假设传输的是 0,组合器的两个输入要么都受到干扰,要么其中一个传输信号受到干扰,要么两个传输信号都不受干扰。
组合器假设知道干扰的水平,从而形成组合决策变量:
$x = w_1 r_{11} + w_2 r_{12}$
$y = w_1 r_{21} + w_2 r_{22}$
其中 $r_{11}$,$r_{21}$ 是第一个传输信号的平方律器件的两个输出,$r_{12}$,$r_{22}$ 是第二个传输信号的平方律器件的输出。权重 $w_1$ 和 $w_2$ 设置为 $\frac{1}{\sigma^2}$,其中 $\sigma^2$ 是加性噪声加干扰的方差。因此,当 $\sigma^2$ 很大(即存在干扰时),放置在接收信号上的权重很小;当 $\sigma^2$ 很小时(即没有干扰时),放置在接收信号上的权重很大。因此,组合器会降低受到干扰的接收信号分量的权重。
组合器的两个分量 $x$ 和 $y$ 被馈送到检测器,检测器选择较大的信号分量作为决策结果。
-
误码概率
:具有双分集的 FH 信号的性能现在主要由两个信号传输都受到干扰的情况决定。然而,这种事件的概率与 $\alpha^2$ 成正比,明显小于 $\alpha$。因此,最坏情况部分带干扰下的误码概率具有以下形式:
$P_b = \frac{K_2}{P_b^2}$,其中 $K_2$ 是一个常数,$P_b = \frac{E_b}{J_0}$。在这种情况下,双分集的误码概率与 SNR 的平方成反比。换句话说,SNR 增加 10 倍(10 dB)会导致误码概率降低 100 倍。因此,通过双分集,在约 30 dB 的 SNR 下可以实现 $10^{-6}$ 的误码概率,而无分集时需要 60 dB(大 1000 倍)。
更一般地,如果每个信息比特在 D 个频率跳变上传输(D 是分集阶数),误码概率具有以下形式:
$P_b = \frac{K_D}{P_b^D}$,其中 $K_D$ 是一个常数。
由于上述信号分集是一种简单的编码形式(重复编码),因此不奇怪的是,我们可以使用最小汉明距离等于 D 的码,并对平方律器件的输出进行软判决解码,而不是将每个信息比特重复传输 D 次。
9. 示例问题:FH 系统中的分集
重复示例问题中考虑的 FH 系统的蒙特卡罗仿真,但现在采用双分集。
在没有干扰的情况下,组合器中使用的权重设置为 $w = 10$,对应于 $\sigma^{-2} = 0.1$,这可能是加性高斯噪声水平的典型值。另一方面,当存在干扰时,权重设置为 $w = \frac{1}{\sigma^2} = \frac{2}{E}$,其中 E 限制为 $E \geq 4$。每跳的 SNR 为 E,两跳中每个信息比特的总能量为 $E_b = 2E$。因此,误码概率作为 $\frac{E_b}{J_0}$ 的函数进行绘制。
以下是仿真程序的 MATLAB 脚本:
% MATLAB script for Illustrative Problem 12.8.
echo on
rho_b = 0:2:24;
for i = 1:length(rho_b)
smld_err_prb(i) = ss_Pe97(rho_b(i));
end
echo on
% Plotting commands follow.
function [p] = ss_Pe97(rho_in_dB)
rho = 10^(rho_in_dB/10);
Eb = rho;
E = Eb/2;
if (rho > 2)
alpha = 2/rho;
else
alpha = 1;
end
if (E > 1)
sgma = sqrt(E/2);
else
sgma = sqrt(1/2);
end
N = 10000;
% generation of the data sequence
for i = 1:N
temp = rand;
if (temp < 0.5)
data(i) = 1;
else
data(i) = 0;
end
end
% Find the transmitted signals.
for i = 1:N
if (data(i) == 0)
tr11c(i) = sqrt(E);
tr12c(i) = sqrt(E);
tr11s(i) = 0;
tr12s(i) = 0;
tr21c(i) = 0;
tr22c(i) = 0;
tr21s(i) = 0;
tr22s(i) = 0;
else
tr11c(i) = 0;
tr12c(i) = 0;
tr11s(i) = 0;
tr12s(i) = 0;
tr21c(i) = sqrt(E);
tr22c(i) = sqrt(E);
tr21s(i) = 0;
tr22s(i) = 0;
end
end
% Find the received signals, make the decisions, and count the number of errors made.
num_oLerr = 0;
for i = 1:N
if (rand < alpha)
jamming1 = 1;
else
jamming1 = 0;
end
if (rand < alpha)
jamming2 = 1;
else
jamming2 = 0;
end
if (jamming1 == 1)
r11c = tr11c(i) + gngauss(sgma);
r21c = tr21c(i) + gngauss(sgma);
else
r11c = tr11c(i);
r21c = tr21c(i);
end
r11s = tr11s(i);
r21s = tr21s(i);
if (jamming2 == 1)
r12c = tr12c(i) + gngauss(sgma);
r22c = tr22c(i) + gngauss(sgma);
else
r12c = tr12c(i);
r22c = tr22c(i);
end
r12s = tr12s(i);
r22s = tr22s(i);
if (jamming1 == 1)
w1 = 1/sgma^2;
else
w1 = 10;
end
if (jamming2 == 1)
w2 = 1/sgma^2;
else
w2 = 10;
end
r11 = r11c^2 + r11s^2;
r12 = r12c^2 + r12s^2;
r21 = r21c^2 + r21s^2;
r22 = r22c^2 + r22s^2;
x = w1*r11 + w2*r12;
y = w1*r21 + w2*r22;
if (x > y)
decis = 0;
else
decis = 1;
end
if (decis ~= data(i))
num_oLerr = num_oLerr + 1;
end
end
p = num_oLerr/N;
end
综上所述,PN 序列的生成和特性在扩频通信系统中起着关键作用,而跳频扩频系统在应对干扰方面有其独特的机制和挑战,通过信号分集等技术可以有效提高系统性能。希望本文能帮助你更好地理解这些复杂的通信概念和技术。
伪随机序列生成与跳频扩频系统详解
9. 示例问题:FH 系统中的分集(续)
在前面的讨论中,我们提到了采用双分集来改善受到部分带干扰的 FH 系统性能。接下来,我们详细解读这个示例问题中涉及的具体步骤和原理。
首先,回顾一下仿真的基本设置。我们使用蒙特卡罗方法来模拟一个采用二进制 FSK 且受到最坏情况部分带干扰的 FH 系统,现在加入了双分集技术。
- 参数设置 :
-
rho_b = 0:2:24:设置了不同的信噪比(SNR)值,以 dB 为单位,步长为 2 dB,范围从 0 dB 到 24 dB。 -
N = 10000:定义了传输的比特数,用于统计误码率。 -
数据序列生成 :
for i = 1:N
temp = rand;
if (temp < 0.5)
data(i) = 1;
else
data(i) = 0;
end
end
通过随机数生成器生成二进制信息序列,每个比特以 0.5 的概率为 0 或 1。
-
信号传输与干扰处理
:
对于每个信息比特,它会在两个连续的频率跳变上传输。假设传输的是 0,我们有:
if (data(i) == 0)
tr11c(i) = sqrt(E);
tr12c(i) = sqrt(E);
tr11s(i) = 0;
tr12s(i) = 0;
tr21c(i) = 0;
tr22c(i) = 0;
tr21s(i) = 0;
tr22s(i) = 0;
else
tr11c(i) = 0;
tr12c(i) = 0;
tr11s(i) = 0;
tr12s(i) = 0;
tr21c(i) = sqrt(E);
tr22c(i) = sqrt(E);
tr21s(i) = 0;
tr22s(i) = 0;
end
这里
E
是每跳的能量,根据传输的比特值确定两个跳变上的信号分量。
接下来,判断是否受到干扰:
if (rand < alpha)
jamming1 = 1;
else
jamming1 = 0;
end
if (rand < alpha)
jamming2 = 1;
else
jamming2 = 0;
end
alpha
是干扰占用频率带的比例,根据随机数与
alpha
的比较结果确定每一跳是否受到干扰。
如果受到干扰,就给信号分量添加高斯噪声:
if (jamming1 == 1)
r11c = tr11c(i) + gngauss(sgma);
r21c = tr21c(i) + gngauss(sgma);
else
r11c = tr11c(i);
r21c = tr21c(i);
end
r11s = tr11s(i);
r21s = tr21s(i);
if (jamming2 == 1)
r12c = tr12c(i) + gngauss(sgma);
r22c = tr22c(i) + gngauss(sgma);
else
r12c = tr12c(i);
r22c = tr22c(i);
end
r12s = tr12s(i);
r22s = tr22s(i);
sgma
是噪声的标准差,根据
alpha
和
E
计算得到。
-
决策变量计算与判决
:
根据干扰情况设置权重:
if (jamming1 == 1)
w1 = 1/sgma^2;
else
w1 = 10;
end
if (jamming2 == 1)
w2 = 1/sgma^2;
else
w2 = 10;
end
计算中间决策变量:
r11 = r11c^2 + r11s^2;
r12 = r12c^2 + r12s^2;
r21 = r21c^2 + r21s^2;
r22 = r22c^2 + r22s^2;
最终得到组合决策变量:
x = w1*r11 + w2*r12;
y = w1*r21 + w2*r22;
根据
x
和
y
的大小进行判决:
if (x > y)
decis = 0;
else
decis = 1;
end
- 误码统计 :
if (decis ~= data(i))
num_oLerr = num_oLerr + 1;
end
统计误码的数量,最后计算误码率
p = num_oLerr/N
。
通过这样的仿真,我们可以观察到双分集技术如何改善 FH 系统在部分带干扰下的性能。从结果来看,双分集系统能够显著降低误码率,减少对高 SNR 的依赖。
10. 不同 PN 序列的综合比较
为了更清晰地了解不同 PN 序列(m 序列、Gold 序列、Kasami 序列)的特点,我们对它们进行综合比较。
| 序列类型 | 生成方式 | 自相关特性 | 互相关特性 | 适用场景 |
|---|---|---|---|---|
| m 序列 | 由具有线性反馈的 m 级移位寄存器生成,长度 $L = 2^m - 1$ | 自相关序列在 $m = 0$ 时为 $L$,$1 \leq m \leq L - 1$ 时为 -1,接近理想 PN 序列 | 一对相同周期的 m 序列之间周期性互相关函数可能有较大峰值,不适合 CDMA 系统 | 对互相关要求不高的场景 |
| Gold 序列 | 取一对优选 m 序列,对其中一个序列相对于另一个序列的 L 个循环移位版本进行模 2 求和 | 与 m 序列类似 | 对于大 L 且 m 为奇数时,$R_{max} = \sqrt{2L}$;m 为偶数时,$R_{max} = \sqrt{L}$,互相关特性优于 m 序列 | CDMA 等多用户通信系统 |
| Kasami 序列 | 对 m 序列进行抽取,选择每 $(2^{m/2} + 1)$ 个比特 | 与 m 序列类似 | 最大互相关值为 $R_{max} = \sqrt{L}$,满足 Welch 下界,是最优的 | 对互相关性能要求较高的场景 |
从这个表格中,我们可以直观地看到不同序列在生成方式、自相关和互相关特性以及适用场景上的差异。在实际应用中,我们可以根据具体的需求选择合适的 PN 序列。
11. 跳频扩频系统的性能总结
跳频扩频系统在通信领域有着重要的应用,但也面临着部分带干扰等挑战。下面我们总结一下跳频扩频系统在不同情况下的性能表现。
-
无干扰情况 :在没有部分带干扰的情况下,采用二进制 FSK 调制的 FH 系统在 AWGN 信道中的误码概率为 $p_b = \frac{1}{2}e^{-\frac{E_b}{2N_0}}$。此时,系统性能主要取决于信噪比 $E_b/N_0$,所需的 SNR 相对较低,例如达到 $10^{-6}$ 的误码概率时,SNR 约为 10 dB。
-
部分带干扰情况 :慢跳 FH 系统容易受到部分带干扰的影响。干扰器通过选择合适的干扰比例 $\alpha$ 来最大化误码概率。在最坏情况部分带干扰下,误码概率与 SNR 的关系为:
$P_b = \begin{cases} \frac{1}{eP_b}, & P_b > 2 \ \frac{1}{2}e^{-\frac{P_b}{2}}, & P_b \leq 2 \end{cases}$
此时,为了达到相同的误码率,所需的 SNR 大幅增加,例如达到 $10^{-6}$ 的误码概率时,SNR 几乎为 60 dB。 -
信号分集改善情况 :通过采用信号分集技术,如双分集或更高阶的分集,可以显著改善系统在部分带干扰下的性能。以双分集系统为例,误码概率与 SNR 的平方成反比,即 $P_b = \frac{K_2}{P_b^2}$。这意味着 SNR 增加 10 倍(10 dB),误码概率降低 100 倍。采用双分集后,达到 $10^{-6}$ 的误码概率所需的 SNR 约为 30 dB。
通过这些总结,我们可以清晰地看到跳频扩频系统在不同干扰条件下的性能变化,以及信号分集技术的重要性。
12. 未来发展趋势与展望
随着通信技术的不断发展,伪随机序列生成和跳频扩频系统也将面临新的挑战和机遇。
-
更高阶的分集技术 :虽然双分集已经能够显著改善系统性能,但未来可能会研究更高阶的分集技术,进一步降低误码率,提高系统在复杂干扰环境下的可靠性。
-
新型 PN 序列的研究 :不断探索具有更好自相关和互相关特性的新型 PN 序列,以满足日益增长的多用户通信需求,如 5G 及未来通信系统中的大规模机器通信和超可靠低延迟通信。
-
与其他技术的融合 :跳频扩频系统可能会与其他通信技术(如编码技术、多天线技术)相结合,形成更强大的通信系统,提高频谱效率和抗干扰能力。
-
智能化干扰应对 :利用人工智能和机器学习技术,使跳频扩频系统能够实时感知干扰环境,自动调整跳频策略和参数,实现更智能的干扰应对。
总之,伪随机序列生成和跳频扩频系统在未来通信领域有着广阔的发展前景,我们需要不断研究和创新,以适应不断变化的通信需求和干扰环境。
通过本文的详细介绍,我们对伪随机序列的生成、特性,以及跳频扩频系统的工作原理、性能和应对干扰的方法有了更深入的了解。希望这些知识能够帮助你在实际的通信工程中更好地应用和优化这些技术。
超级会员免费看

被折叠的 条评论
为什么被折叠?



