资源描述
《扩频通信原理》课程设计汇报
题目:直接扩频系统仿真
班级:0110910和0110911
姓名: 詹晓丹(210432)
姜 微(210503)
张建华(210336)
指导老师:李兆玉
1. 课程设计目标
(1) 了解、掌握直接扩频通信系统组成、工作原理;
(2) 了解、熟悉扩频调制、解调、解扩方法,并分析其性能;
(3) 学习、掌握Matlab相关编程知识并用其实现仿真直接扩频通信系统;
2. 课程设计试验原理
直接扩频通信系统工作原理:
直接序列扩频,就是直接用高码率扩频码序列在发端去扩展信号频谱,在收端用相同扩频码去解扩,把展宽扩频信号还原成原始基带信号。
在发端输入信息和扩频码发生器产生伪随机码序列(这里使用是m序列)进行波形相乘,得到复合信号,实现信号频谱展宽,展宽后信号再调制射频载波发送出去。因为采取平衡调制能够提升系统抗侦波能力,所以直接序列扩频调制通常全部采取二相平衡调制方法。通常扩频调制时一个信息码包含一个周期伪码,用扩频后复合信号对载波进行二相相移监控(BPSK)调制,当gt从“0”变成“1”或从“1”变到“0”时,载波相位发生180度相移。 接收端本振信号和发射端射频载波相差一个中频,接收端收到宽带射频信号和本振信号混频、低频滤波后得到中频信号,然后和当地产生和发端相同而且同时扩频码序列进行波形相乘,实现相关解扩,再经信息解调,恢复出原始信号。
3. 建立模型描述
(1) 直接扩频通信系统组成框图:
(2) 直接扩频通信系统波形图:
4. 模块功效分析
(1) 直扩系统调制功效模块:(全部包含模块框图和不一样调制、解调方法介绍、分析)
(a) 扩频调制模块
用扩频码发生器产生一个伪随机码 pn(这里用是m序列),和信源信息码序列xt相乘,实现频谱展宽
(b) BPSK调制模块
调制方法能够有二相相移监控BPSK、四相相移键控QPSK、偏移四相相移监控OQPSK、最小频移监控MSK。QPSK调制目标是节省频谱,但在扩频系统中有时候带宽利用并不是最关键;OQPSK优点就是调制信号相位改变没有倒π现象;MSK调制信号时能够避免相位突变,因为以上调制方法实现比较复杂,所以我们选择扩频系统中最常见BPSK调制方法。
(2) 直扩系统解调功效模块:
(a) BPSK解调模块
在常规数字通信中,解调能够用锁相环解调器、平方环解调器、科斯塔斯环解调器。在直扩系统中,通常扩频调制方法是用抑制载波双平衡调制来产生BPSK信号,而对于BPSK信号,不管是绝对相移还是差分相移。其载波分量全部被抑制了几十分贝,而且直扩信号谱密度全部很低,而大气噪声及接收机内部噪声又很大,有用信号常淹没在噪声中,所以用通常锁相环难以提取载波。而平方环即使便于载波提取,但环路工作在二倍频后频率上,工作频率高,环路稳定性较差。我们选择是科斯塔斯环,因为它突出优点是能够解调移相键控信号和抑制了载波信号,且环路工作频率和输入信号载波频率完全相同。
(b) 扩频解调模块
解扩方法有相关解扩、直接式相关器解扩、外差式相关器解扩、序列匹配滤波器解扩。直接式相关器优点是结构简单,缺点是对干扰信号有直通和码速率泄露现象外差式相关器抗干扰能力较低;因为相关解扩在性能上很好,在接收端产生当地pn’码,能够用科斯塔斯环实现和发端pn码正确同时。
5. 模块源代码及调试过程
(1)直扩系统调制模块
(a)信息码生成模块
code_length=20; %信息码元个数
N=1:code_length;
rand('seed',0);
x=sign(rand(1,code_length)-0.5); %信息码从0、1序列变成-1、1序列
x1=rectpulse(x,800);%每个码元内采样800个点
plot(x1);
axis([0 16000 -1.5 1.5]);
title('信源信息码序列');
grid on;
生成信息码波形图
(b)伪随机码生成模块
function y = mgen(g,state,N)
%输入 g:m序列生成多项式(10进制输入)
%state:寄存器初始状态(10进制输入)
%N:输出序列长度
figure(1)
g=19;state=8;N=;
gen = dec2bin(g)-48;
M = length(gen);
curState = dec2bin(state,M-1) - 48;
for k =1:N
y(k) = curState(M-1);
a = rem(sum( gen(2:end).*curState),2);
curState = [a curState(1:M-2)];
end
x_code=sign(y-0.5);
pn=rectpulse(x_code,8);%每个伪码元内采样8个点
plot(pn);
axis([0 600 -1.5 1.5]);
title('伪随机码序列');
grid on;
生成伪随机码波形图
(c)扩频调制模块
gt=x1.*pn;
plot(gt);
axis([0 1000 -1.5 1.5]);
title('复合码序列');
grid on;
生成复合码波形图
(d)BPSK调制模块
%用BPSK调制
fs=20e6;
f0=30e6;
for i=1:
AI=2;
dt=fs/f0;
n=0:dt/7:dt; %一个载波周期内采样8个点
cI=AI*cos(2*pi*f0*n/fs);
x_bpsk((1+(i-1)*8):i*8)=gt((1+(i-1)*8):i*8).*cI
end
plot(x_bpsk);
axis([0 200 -2.5 2.5]);
title('BPSK调制后波形');
grid on;
生成BPSK调制后波形图
(2)加噪模块
sigma=0.1;
nt=sigma*randn(1,20);
nt1=rectpulse(nt,800);
gt1=gt+nt1;
fs=20e6;
f0=30e6;
for i=1:
AI=2;
dt=fs/f0;
n=0:dt/7:dt; %一个载波周期内采样8个点
cI=AI*cos(2*pi*f0*n/fs);
x_bpsk1((1+(i-1)*8):i*8)=gt1((1+(i-1)*8):i*8).*cI
end
plot(x_bpsk1);
axis([0 200 -2.5 2.5]);
title('加噪后已调波波形');
grid on;
生成加噪后已调波波形图
(3)直扩系统解调模块
(a)BPSK解调模块
AI=1;
dt=fs/f0;
n=0:dt/7:dt; %一个载波周期内采样八个点
cI=AI*cos(2*pi*f0*n/fs);
for i=1:
s((1+(i-1)*8):i*8)= x_bpsk1((1+(i-1)*8):i*8).*cI;
end
plot(s);
axis([0 200 -2.5 2.5]);
title('解调后波形');
grid on;
生成BPSK解调后波形图
(b)解扩模块
%相关解扩
jk_code=s.*pn;
%低通滤波
wn=5/1000000; %截止频率wn=fn/(fs/2),这里fn为扩频码带宽5M
b=fir1(16,wn);
H=freqz(b,1,16000);
xx=filter(b,1,jk_code);
plot(xx);
axis([0 16000 -1.5 1.5]);
title('解扩并滤波后波形');
grid on;
生成解扩后波形图
6. 调试分析及结论
(1) 调试分析
(a)信源信息码和收端恢复出波形比较
(b)频谱分析
(2) 调制过程中出现问题及处理方法:
1) 在调试程序中出现“undefined function or variable ‘mgen’”,以后检测是子函数调用格式出现错误,经更正后得以修改;
2) 复合码产生程序中,出现“vector must be the same lengths ”,后检测得出原因是信息码和伪随机码长度不相同时不能直接相乘;
3) 因为所加噪声为高斯白噪声,是用randn函数产生,含有随机性,所以不一样时刻加噪了已调波含有不一样波形;
(3) 结论
经过调试分析及研究,我们发觉直扩系统含有较多特点,将其利用于通信系统能发挥其很大优势。
首先,直扩系统含有很高处理增益,所以直扩系统含有抗宽带干扰、抗多频干扰及单频干扰能力;
其次,直扩信号功率谱密度低,含有隐蔽性和低截获概率,从而抗截获能力强,另外功率污染少;
第三,直扩伪随机序列伪随机性和密钥量含有保密性,即系统本身含有加密能力;
第四,利用直扩伪随机序列码型正交性,可组成直扩码分多址系统;
第五,利用直扩信号相关接收,含有抗多径干扰能力;
第六,利用直扩信号可实现正确测距定位。
7. 心得体会
经过这次直接扩频系统仿真试验,我们加深了对扩频理论知识了解。知道了直接扩频系统原理所在,而且经过分析,自己应用MATLAB实现了直接扩频系统仿真,掌握了一定软件仿真能力。经过频谱分析,更使我们了解到了直接扩频抗干扰性能。在实践过程中,我们小组也碰到了部分问题,不过我们经过讨论和查阅资料,处理了难题。同时,也激发了我们对扩频这门课程学习主动性。在此次直接扩频系统仿真试验中,我们收获颇丰,记忆深刻,并全方面培养了我们能力。
8. 参考文件
刘焕淋.扩展频谱通信[M].北京:北京邮电大学出版社,
田日才.扩频通信[M].北京:清华大学出版社,
曾一凡,李晖.扩频通信原理[M].北京:机械工业出版社,
附件一:
程序源代码
function y = mgen(g,state,N)
%输入 g:m序列生成多项式(10进制输入)
%state:寄存器初始状态(10进制输入)
%N:输出序列长度
figure(1)
g=19;state=8;N=;
gen = dec2bin(g)-48;
M = length(gen);
curState = dec2bin(state,M-1) - 48;
for k =1:N
y(k) = curState(M-1);
a = rem(sum( gen(2:end).*curState),2);
curState = [a curState(1:M-2)];
end
x_code=sign(y-0.5);
pn=rectpulse(x_code,8);%每个伪码元内采样8个点
plot(pn);
axis([0 600 -1.5 1.5]);
title('伪随机码序列');
grid on;
figure(2)
code_length=20; %信息码元个数
N=1:code_length;
rand('seed',0);
x=sign(rand(1,code_length)-0.5); %信息码从0、1序列变成-1、1序列
x1=rectpulse(x,800);%每个码元内采样800个点
plot(x1);
axis([0 16000 -1.5 1.5]);
title('信源信息码序列');
grid on;
figure(3)
gt=x1.*pn;
plot(gt);
axis([0 1000 -1.5 1.5]);
title('复合码序列');
grid on;
figure(4);
%用BPSK调制
fs=20e6;
f0=30e6;
for i=1:
AI=2;
dt=fs/f0;
n=0:dt/7:dt; %一个载波周期内采样8个点
cI=AI*cos(2*pi*f0*n/fs);
x_bpsk((1+(i-1)*8):i*8)=gt((1+(i-1)*8):i*8).*cI
end
plot(x_bpsk);
axis([0 200 -2.5 2.5]);
title('BPSK调制后波形');
grid on;
figure(5)
sigma=0.1;
nt=sigma*randn(1,20);
nt1=rectpulse(nt,800);
gt1=gt+nt1;
fs=20e6;
f0=30e6;
for i=1:
AI=2;
dt=fs/f0;
n=0:dt/7:dt; %一个载波周期内采样8个点
cI=AI*cos(2*pi*f0*n/fs);
x_bpsk1((1+(i-1)*8):i*8)=gt1((1+(i-1)*8):i*8).*cI
end
plot(x_bpsk1);
axis([0 200 -2.5 2.5]);
title('加噪后已调波波形');
grid on;
figure(6)
%解调
AI=1;
dt=fs/f0;
n=0:dt/7:dt; %一个载波周期内采样八个点
cI=AI*cos(2*pi*f0*n/fs);
for i=1:
s((1+(i-1)*8):i*8)= x_bpsk1((1+(i-1)*8):i*8).*cI;
end
plot(s);
axis([0 200 -2.5 2.5]);
title('解调后波形');
grid on;
figure(7)
%相关解扩
jk_code=s.*pn;
%低通滤波
wn=5/1000000; %截止频率wn=fn/(fs/2),这里fn为扩频码带宽5M
b=fir1(16,wn);
H=freqz(b,1,16000);
xx=filter(b,1,jk_code);
plot(xx);
axis([0 16000 -1.5 1.5]);
title('解扩并滤波后波形');
grid on;
%信源信息码和收端恢复出波形比较
figure(8)
subplot(2,1,1);
plot(x1);
axis([0 16000 -1.5 1.5]);
title('信源信息码序列');
grid on;
subplot(2,1,2);
plot(xx);
axis([0 16000 -1.5 1.5]);
title('收端接收到波形');
grid on;
%频谱图
figure(9);
T=1;
N=20;
N_sample=800;
df=1/(N*T);
f=-(N*N_sample/2)*df+df:df:(N*N_sample/2)*df;
subplot(2,2,1);
plot(f,abs(fftshift(fft(x1))));
axis([-100 100 0 ]);
title('信源信息码序列频谱图');
grid on;
T=1;
N=;
N_sample=8;
df=1/(N*T);
f=-(N*N_sample/2)*df+df:df:(N*N_sample/2)*df;
subplot(2,2,2);
plot(f,abs(fftshift(fft(pn))));
axis([-4 4 0 4000]);
title('伪随机码序列频谱图');
grid on;
T=1;
N=;
N_sample=8;
df=1/(N*T);
f=-(N*N_sample/2)*df+df:df:(N*N_sample/2)*df;
subplot(2,2,3);
plot(f,abs(fftshift(fft(gt))));
axis([-4 4 0 ]);
title('扩频码序列频谱图');
grid on;
T=1;
N=;
N_sample=8;
df=1/(N*T);
f=-(N*N_sample/2)*df+df:df:(N*N_sample/2)*df;
subplot(2,2,4);
plot(f,abs(fftshift(fft(x_bpsk))));
axis([-4 4 0 ]);
title('bpsk已调波频谱图');
grid on;
figure(10);
T=1;
N=;
N_sample=8;
df=1/(N*T);
f=-(N*N_sample/2)*df+df:df:(N*N_sample/2)*df;
subplot(2,2,1);
plot(f,abs(fftshift(fft(x_bpsk1))));
axis([-4 4 0 ]);
title('加噪已调波频谱图');
grid on;
T=1;
N=;
N_sample=8;
df=1/(N*T);
f=-(N*N_sample/2)*df+df:df:(N*N_sample/2)*df;
subplot(2,2,2);
plot(f,abs(fftshift(fft(s))));
axis([-4 4 0 ]);
title('解调后频谱图');
grid on;
T=1;
N=20;
N_sample=800;
df=1/(N*T);
f=-(N*N_sample/2)*df+df:df:(N*N_sample/2)*df;
subplot(2,2,3);
plot(f,abs(fftshift(fft(xx))));
axis([-100 100 0 ]);
title('解扩后收端恢复出信号频谱图');
grid on;
展开阅读全文