文章目录
1 直接序列扩频抗干扰性能仿真
1.1干扰信号建模
1.1.1 单音干扰
单音干扰信号在某个频点上发射,是一个单频连续正弦波形。时域表达式如下
J
(
t
)
=
2
P
J
cos
(
2
π
f
J
t
+
θ
J
)
θ
J
(
˜
0
,
2
π
)
J(t) = \sqrt {2{P_J}} \cos (2\pi {f_J}t + {\theta _J}){\rm{ }}{\theta _J}\~(0,2\pi )
J(t)=2PJcos(2πfJt+θJ)θJ(˜0,2π)
其中, P J P_J PJ为干扰信号功率, f J f_J fJ为干扰信号频率, θ J \theta _J θJ 为干扰信号相位且服从均匀分布。
1.1.2 宽带噪声干扰
宽带噪声干扰是将高斯白噪声通过一个宽带滤波器,得到在每一个宽带范围内的阻塞噪声。设白噪声
ε
(
t
)
N
˜
(
0
,
P
J
/
2
W
I
)
\varepsilon (t)\~N(0,{P_J}/2{W_I})
ε(t)N˜(0,PJ/2WI),其中
P
J
P_J
PJ是干扰功率,
W
I
W_I
WI低通滤波器的截止频率。则宽带噪声干扰可以表示为
n
(
t
)
=
ε
(
t
)
⊗
h
(
t
)
n(t) = \varepsilon (t) \otimes h(t)
n(t)=ε(t)⊗h(t),滤波器的频域表达式为
H
(
j
2
π
f
)
=
{
1
,
∣
f
∣
≤
W
I
0
,
o
t
h
e
r
w
i
s
e
H(j2\pi f) = \left\{ \begin{aligned} &1,|f| \le {W_I}\\ & 0,otherwise \end{aligned} \right.
H(j2πf)={1,∣f∣≤WI0,otherwise
1.1.3 窄带噪声干扰
与宽带噪声干扰产生方法类似,将白噪声通过一个窄带滤波器,得到瞄准某一个窄带范围的阻塞信号。窄带滤波器的频域表达式为
H
(
j
2
π
f
)
=
{
1
,
∣
f
−
f
J
∣
≤
W
I
2
0
,
o
t
h
e
r
w
i
s
e
H(j2\pi f) = \left\{ \begin{aligned} & 1,{\rm{ }}|f - {f_J}| \le {{{W_I}} \over 2} \\ &0,{\rm{ }}otherwise \end{aligned} \right.
H(j2πf)=⎩
⎨
⎧1,∣f−fJ∣≤2WI0,otherwise
f
J
f_J
fJ表示瞄准频率。
1.2 抗干扰性能仿真
1.2.1收发结构框图
发射部分,采用DS-BPSK扩频。
接收部分,发射信号叠加噪声和干扰,得到接收信号,分别进行载波恢复、匹配滤波、解扩、解调,恢复出传输的信息符号。
这里为方便分析,假设接收机已完成载波同步、码同步,仅关注干扰信号对解调和符号判决的影响。信道模型为AWGN信道。
1.2.2 数值仿真实验
设置3种干扰样式、4种干扰信号,分别为干扰频率为载频频率的单音干扰1,干扰频率为载频频率叠加1个10 KHz频偏的单音干扰2,瞄准载频频率、阻塞带宽为1 MHz的窄带噪声干扰,以及0~80MHz的宽带噪声干扰。具体参数如下表所示。
表 2 1 DS-BPSK直扩系统抗干扰性能仿真参数表
采样频率 | 160 MHz |
载波频率 | 70 MHz |
数据速率 | 20 KHz |
扩频因子 | 100 |
滚降系数 | 0.5 |
仿真时间 | 10 ms |
单音干扰1频率 | 70 MHz |
单音干扰2频率 | 70.01 MHz |
窄带噪声干扰瞄准频率 | 70 MHz |
窄带噪声干扰阻塞带宽 | 1 MHz |
宽带噪声干扰截止频率 | 80 MHz |
接收机低通滤波器截止频率 | 20 MHz |
固定干信比为20 dB,假设接收机没有噪声。得到4种干扰信号下的接收信号与解扩信号频谱图如下。(1)对于单音干扰1,瞄准频率为载频频率,因此在干信比为20 dB时对解扩信号没有影响。(2)对于单音干扰2,瞄准频率为载频频率叠加10 KHz的频偏,因此解扩后部分能量带入到解扩信号,产生干扰。(3)对于窄带噪声干扰,在扩频带宽上起到阻塞作用,相当于将扩频信号淹没在强噪声中。(4)对于宽带噪声干扰,由于干扰功率平均在整个阻塞带宽上,相比窄带干扰阻塞效果差。
设置不同干信比进行蒙特卡洛数值仿真实验,得到在4种干扰信号下的DS-BPSK误码率随干信比变化曲线如图所示。由图可知,DS-BPSK对抗单音干扰1效果最好。其次,DS-BPSK对抗单音干扰2效果最差,这主要是因为同样干信比下单音干扰能量最为集中,干扰信号解扩后参与能量还会带入到解扩信号中瞄准频点处,造成干扰。宽带噪声干扰比窄带噪声干扰对误码率影响更小,这是由于干扰功率均匀分布在阻塞带宽上,有效阻塞频带范围内宽带噪声干扰的功率低于窄带阻塞干扰。
2 代码
2.1 不同干扰信号生成
% produce the jamming signal
function y =f_produce_jam(JSRdB,Ps,JamType,t)
JSR = 10^(JSRdB/10);
PJ = Ps*JSR;
switch JamType
case 1
y = f_single_jam(PJ,t);
case 2
y = f_multi_jam(PJ,t);
case 3
y = f_narrowbandnoise_jam(PJ,t);
case 4
y = f_broadbandnoise_jam(PJ,t);
end
% produce a fragment of single sinusoid jam
function y = f_single_jam(PJ,t)
fs = 70e6+10e3;
y = sqrt(2*PJ)*cos(2*pi*fs*t)';
% produce a fragment of multiple sinusoid jam
function y=f_multi_jam(PJ,t)
Q = 10; % number of multiple sinusoid
fs0 = 65e6; % start freq
deltafs = 1e6; % step freq
fs = fs0:deltafs:fs0+(Q-1)*deltafs; % produce same-distance fs
theta = 2*pi*rand(1,Q);% random phase
xx = sqrt(2*PJ/Q)*cos(2*pi*fs'*t+theta'*ones(1,length(t)));% cos
y = sum(xx);
y = y';
% multi frequency Sinusoids jam with random phase
end
% produce a fragment of narrow band noise
function y=f_narrowbandnoise_jam(PJ,t)
y = wgn(length(t),1,10); % white noise
% bandpass filter
WI = 1e6; % window of narrow band
FJ = 70e6;% jamming frequency center
Fs = 160e6;% sampling frequence
fl_kaiser = [FJ-WI/2 FJ-WI/4 FJ+WI/4 FJ+WI/2];
fl_mag = [0 1 0];
fl_dev = [0.05 0.05 0.05];
[fl_n_kaiser,fl_wn,fl_beta,fl_ftype]=kaiserord(fl_kaiser,fl_mag,fl_dev,Fs);
h= fir1(fl_n_kaiser,fl_wn,fl_ftype,kaiser(fl_n_kaiser+1,fl_beta));
y = filter(h,1,y);% the result of filter in time domain
y = sqrt(PJ)/sqrt(var(y))*y;
end
function y=f_broadbandnoise_jam(PJ,t)
Fs = 160e6; % Sampling frequency
noise = wgn(length(t),1,10); % white noise
% bandpass filter
WI = 70e6; % window of broad band
fl_kaiser = [WI WI+5e6];
fl_mag = [1 0];
fl_dev = [0.05 0.01];
[fl_n_kaiser,fl_wn,fl_beta,fl_ftype]=kaiserord(fl_kaiser,fl_mag,fl_dev,Fs);
h= fir1(fl_n_kaiser,fl_wn,fl_ftype,kaiser(fl_n_kaiser+1,fl_beta));
y = filter(h,1,noise);% the result of filter in time domain
y = sqrt(PJ)/sqrt(var(y))*y;
end
2.2. 不同干扰信号下的误码性能
function errorNum = DSBPSK_tranceiver_jamming(EbN0dB,JSRdB,JamType)
%---------------------------扩频系统参数设置-------------------------------%
fs = 160e6; %采样频率/Hz >2倍中频频率
ts = 1/fs; %采样周期/s
rb = 20000; %扩频前的数据速率/bit/s 20k
SF = 100; %扩频倍数
Rb = rb*SF; %扩频后的码片速率/Mc/s
Tsum = 10; %仿真时间/ms
bits_num = rb*Tsum/1000;
real_fc = 70e6; %载波频率/Hz
phi = pi/4; %载波相位/rad
% EbN0dB = 100;
SNRdB = EbN0dB - 10*log10(0.5*fs/rb);%仿真信噪比/dB
% JSRdB = 25;% 干信比/dB
% JamType = 1;% 干扰类型 1-单音 2-多音 3-窄带 4-宽带
%% 发射机部分
%----------------------------m 序列产生模块---------------------------------%
%产生m序列
load Coef.mat
n = floor(log2(500))+2;%m序列的长度
fx = (de2bi(base2dec(Coef.Ci(n-2),8),n+1,2));
fx = fliplr(fx(1:end-1));
reg = [zeros(1,n-1) 1]; %移位寄存器的初始状态
mseq = zeros(n,1);
mseq(1)= reg(n);
N = 2^(n-1)-1;
for i = 2:N
regTemp = zeros(1,n);
regTemp(1)= mod(sum(fx.*reg),2);
for j = 2:n
regTemp(j)= reg(j-1);
end
reg = regTemp; %移位后的寄存器
mseq(i) = reg(n); %新的寄存器输出
end
mseq = 1-2*mseq(1:SF);% 1->-1 0->1
mseq_rp = reshape(repmat(mseq',bits_num,1)',bits_num*SF,1);
%------------------------------BPSK编码-----------------------------------%
bits = randi(2,bits_num,1); %仿真比特数据 0 1
CFdata = 2*bits-3;%bpsk 调制 2->1 1->-1
%-------------------------------扩频:1 扩 SF--------------------------------%
CFdata_os = reshape(repmat(CFdata',SF,1),length(CFdata)*SF,1);
DS_data = CFdata_os' .* mseq_rp';
US = fs/Rb;
num_sampled = length(DS_data)*US;
DS_data_US = zeros(1,num_sampled);
DS_data_US(1:US:end) = DS_data;
h = rcosdesign(0.5,10,US,'sqrt');
DS_data_US_rcos = filter(h,1,DS_data_US);
%% 信道部分
% RF 中频 信道部分,只仿真到中频,不考虑射频部分
t = (0:num_sampled-1)*ts;
carrier_samp = cos(2*pi*real_fc*t+phi); % 发射机生成中频载波
TxSig = DS_data_US_rcos.*carrier_samp; % 扩频信号与中频载波相乘
% 产生干扰
Ps = var(TxSig(1:length(t)/2));% 信号功率
JamSig = f_produce_jam(JSRdB,Ps,JamType,t);
% 接收信号 = 干扰+噪声+原始信号
RxSig = awgn(TxSig,SNRdB,'measured'); % AWGN信道噪声
RxSigJam = RxSig + JamSig';
%% 接收机
%-------------------------------中频->基带--------------------------------%
data_rec_IF = RxSigJam.*carrier_samp;% 载波恢复
data_rec_bb = lowpass(data_rec_IF,0.1*Rb,fs);% 低通滤波
data_rec_bb = data_rec_bb - mean(data_rec_bb);
data_rec_MF_bb = filter(h,1,data_rec_bb);% 匹配滤波
DeS_data_DS = data_rec_MF_bb(1:US:end); % 降采样
DeS_data_DS = [DeS_data_DS(11:end),DeS_data_DS(1:10)];
%-------------------------------解扩:SF 解扩--------------------------------%
Inte = zeros(bits_num,1);
for i = 1:bits_num
Inte(i) = (DeS_data_DS((i-1)*SF+1:i*SF)*mseq);
end
%-------------------------------解调--------------------------------%
bits_rec = sign(Inte);% 符号判决
errorNum = length(find(bits_rec - CFdata ~=0)); % 误码个数
% end