当前位置:文档之家› 数字信号处理课设--二进制扩频通信系统

数字信号处理课设--二进制扩频通信系统

一.引言扩频通信,即扩展频谱通信(Spread Spectrum Communication),它与光纤通信,卫星通信,一同被誉为进入信息时代的三大高技术通信传输方式。

扩频通信技术自50 年代中期美国军方便开始研究,一直为军事通信所独占,广泛应用于军事通信、电子对抗以及导航、测量等各个领域。

直到80年代初才被应用于民用通信领域。

为了满足日益增长的民用通信容量的需求和有效地利用频谱资源,各国都纷纷提出在数字峰窝移动通信、卫星移动通信和未来的个人通信中采用扩频技术,扩频技术现已广泛应用于蜂窝电话、无绳电话、微波通信、无线数据通信、遥测、监控、报警等系统中。

二.概述序列扩频系统(DS,Direct Sequence)又称为序列调制系统或伪噪声系统(PN 系统),简称为直扩系统,是目前应用较为广泛的一种扩展频谱系统。

直扩系统是将要发送的信息用伪随机(PN)序列扩展到一个很宽的频带上去,在接收端,用与发送端扩展用的相同的伪随机序列对接收到的扩频信号进行相关处理,恢复出原来的信息。

干扰信号由于与伪随机序列不相关,在接收端被扩展,使落入信号频带内的干扰信号功率大大降低,从而提高了系统的输出信噪(干)比,达到抗干扰的目的。

一种典型的扩展频谱系统如图1 所示。

图 1 典型扩展频谱系统框图它主要由原始信息、信源编译码、信道编译码(差错控制)、载波调制与解调、扩频调制与解扩频和信道六大部分组成。

信源编码的目的是去掉信息的冗余度,压缩信源的数码率,提高信道的传输效率。

差错控制的目的是增加信息在信道传输中的冗余度,使其具有检错或纠错能力,提高信道传输质量。

调制部分是为使经信道编码后的符号能在适当的频段传输,如微波频段,短波频段等。

扩频调制和解扩是为了某种目的而进行的信号频谱展宽和还原技术。

与传统通信系统不同的是,在信道中传输的是一个宽带的低谱密度的信号。

数字信号的频带传输与模拟通信相似,要使某一数字信号在带限信道中传输,就必须用数字信号对载波进行调制。

对于大多数的数字传输系统来说,由于数字基带信号往往具有丰富的低频成分,而实际的通信信道又具有带通特性,因此,必须用数字信号来调制某一较高频率的正弦或脉冲载波,使已调信号能通过带限信道传输。

这种用基带数字信号控制高频载波,把基带数字信号变换为频带数字信号的过程称为数字调制。

那么,已调信号通过信道传输到接收端,在接受端通过解调器把频带数字信号还原成基带数字信号,这种数字信号的反变换称为数字解调。

通常,我们把数字调制与解调合起来称为数字调制,把包括调制和解调过程的传输系统叫做数字信号的频带传输系统。

三.MATLAB中扩频通信系统介绍扩展频谱通信技术1,理论基础扩频通信的基本理论是根据信息论中的Shannon公式.即C=Bl092(1+S/N) (1)式中:c 为系统的信道容量(bit/s):B为系统信道带宽(Hz);S为信号的平均功率;N为噪声功率。

Shannon公式表明了一个系统信道无误差地传输信息的能力跟存在于信道中的信噪比(sin)以及用于传输信息的系统信道带宽(B)之间的关系。

该公式说明了两个最重要的概念:一个是在一定的信道容量的条件下,可以用减少发送信号功率、增加信道带宽的办法达到提高信道容量的要求:一个是可以采用减少带宽而增加信号功率的办法来达到。

扩频增益是扩频通信的重要参数,它反应了扩频通信系统抗干扰能力的强弱.其定义为接收机相关器输出信噪比和接收机相关器输入信噪比之比,即式中,S;和So分别为接收机相关器输入、输出端信号功率;N;和No分别为相关器的输入、输出端干扰功率;Rs为伪随机码的信息速率,&为基带信号的信息速率;B。

为频谱扩展后的信号带宽,Bd频谱扩展前的信号带宽。

2,实现方法扩频通信与一般的通信系统相比,主要是在发射端增加了扩频调制。

而在接收端增加了扩频解调的过程,扩频通信按其工作方式不同主要分为直接序列扩频系统、跳频扩频系统、跳时扩频系统、线性调频系统和混合调频系统。

现以直接序列扩频系统为例说明扩万方数据仿真技术频通信的实现方法。

图1为直接序列扩频系统的原理框图四.通过MATLAB编程实现二进制扩频通信系统1 实现步骤1.编写程序生成调制器模块,将已生成的二进制数字1映射为M个连续+1的序列和将一个二进制数字0映射为M个连续-1的序列。

由此,M个连续+1代表一个矩形脉冲的采样形式。

2.编写程序生成噪声发生器,它产生一个范围在(-a,a)上均匀分布数的序列,每一个噪声样本被加到对应的信号样本上。

3.编写程序生成解调器模块,将来自信道接收到的这个M个受到噪声污损的序列+1或-1相加。

4.检测器将解调器的输出与零做比较,如果输出大于0就判决为1,如果输出小于0就判决为0。

如果检测器的输出与从发射器传送的比特不一致,就被计数器计为1个差错。

➢提高部分1.调制器的输出乘上一个M位的伪随机序列(用随机数发生器产生等概的±1序列),解调器输入乘以同一个伪随机序列。

传输信道受到加性噪声和一个单频正弦噪声的干扰。

假定正弦噪声幅度大于M。

2.用和不用伪随机序列执行该仿真系统,对不同M值(如M=50,100,500,1000)测量差错率,并比较不同系统的效果。

2程序仿真1 直接序列扩频通信系统仿真第一步,先采用较少的码元数搭建直扩系统,编写程序生成调制器模块设信源信息码的总长度为20,每个信息码内含50个采样点。

通过sign,rand 函数,把20个(0,1)区间内的随机数变成20个只用“1”与“-1”表示的信息码,而后再通过一个循环,对每一个信息码采样50次,共生成1000个采样点,然后得到了调制后的波形。

m=50;code_length=20; %信息码元个数N=1:code_lengthrand('seed',0);x=sign(rand(1,code_length)-0.5); %信息码%产生在-1到=+1之间的随机数for i=1:20s((1+(i-1)*m):i*m)=x(i); %每个信息码元内含m 个采样点end生成的信息码的波形图如图所示。

第二步,编写程序生成噪声发生器先要产生载波,一个载波周期内含50个采样点,经过20次循环,生产1000个对载波的采样点,然后与噪声noise 对应点相加,就得到了加燥后的波形。

a=1noise=(rand(1,m*code_length)-0.5)*a*2; tran=noise+s;code l ength*m幅度code l ength*m幅度第三步,编写程序生成解调器解调相当于调制的逆过程, 将来自信道接收到的这个M 个受到噪声污损的序列+1或-1相加进行解调。

程序如下: for i=1:20d(i)=sign(sum(tran((1+(i-1)*m):i*m))); end第四步,检测器将解调器的输出与零做比较如果输出大于0就判决为1,如果输出小于0就判决为0。

for i=1:20 if (d(i)<0) z(i)=0; elsez(i)=1; end encode l ength幅度第五步,计算误码率利用函数调用,进行误码率计算,如果检测器的输出与从发射器传送的比特不一致,就被计数器计为1个差错。

count=0; for i=1:20 if(x(i)~=d(i)) count=count+1; end endrate=count/code_length; %figure(5) %stem(rate);-------------------------------- clear all;close all;clc; m=50;code_length=20; for a=0:50rate(a+1)=jct(m,20,a); endcode l ength幅度2加随机序列后序列进行扩频通信系统仿真第一步,搭建扩频系统,编写程序生成加伪随机序列调制器设信源信息码的总长度为20,每个信息码内含8个采样点。

通过sign ,rand 函数,把20个(0,1)区间内的随机数变成20个只用“1”与“-1”表示的信息码,而后再通过一个循环,对每一个信息码采样8次,共生成160个采样点,调制器的输出乘上一个M 位的伪随机序列(用随机数发生器产生等概的±1序列) 程序如下: m=8;code_length=20; %信息码元个数 N=1:code_length; rand('seed',0);x=sign(rand(1,code_length)-0.5); %信息码%产生在-1到=+1之间的随机数 for i=1:20s((1+(i-1)*m):i*m)=x(i); %每个信息码元内含m 个采样点 %调制x_code=sign(rand(1,m)-0.5); %把0,1 序列码变换为-1,1 调制码w_code((1+(i-1)*m):i*m)=s((1+(i-1)*m):i*m).*x_code; %每个伪码码元内含8 个采样点 end0.050.10.150.20.250.30.350.4错误率a误码率第二步,搭建扩频系统,编写程序生成加伪随机序列解制器解调器输入乘以同一个伪随机序列。

传输信道受到加性噪声和一个单频正弦噪声的干扰。

假定正弦噪声幅度大于M 。

%加sin 噪声t=0:m*code_length-1; p=(m+1)*sin(4*pi/m*t); a=1;noise=(rand(1,m*code_length)-0.5)*2*a;%噪声调幅干扰receive=w_code+noise+p;%加性噪声和一个单频正弦噪声的干扰 %解调 for i=1:20d(i)=sign(sum(receive((1+(i-1)*m):i*m).* x_code));% 解调器输入乘以同一个伪随机序列 endcode l ength*m幅度第三步,用和不用伪随机序列执行该仿真系统利用函数调用,进行误码率计算,如果输出与从发射器传送的比特不一致,就被计数器计为1个差错。

对不同M 值测量差错率,并比较不同系统的效果。

%检波 for i=1:20 if (d(i)<0) z(i)=-1; elsez(i)=1; end endcount=0; for i=1:20 if x(i)~=z(i)% 如果检测器的输出与从发射器传送的比特不一致,就被计数器计为1个差错。

count=count+1; end endrate=count/code_length;%求误码率 -------------------------- %对函数进行调用clear all;close all;clc; a=100;for m=1:1000;rate(m)=tgt(m,20,a); rate1(m)=jct(m,20,a);020406080100120140160加伪随机序列解制code l ength*m幅度endfigure(1) subplot(211) plot(rate1);title('不加伪随机序列执行仿真系统') xlabel('m');ylabel('误码率'); subplot(212) plot(rate)title('加伪随机序列执行仿真系统') xlabel('m');ylabel('误码率');分析:经过比较可以看出加伪随机序列后生成的误码率相对于不加伪随机序列要小,且变化幅度小,所以加伪随机码序列稳定010*******40050060070080090010000.50.60.70.80.9不加伪随机序列执行仿真系统m误码率100200300400500600700800900100000.20.40.60.8加伪随机序列执行仿真系统m误码率3程序1)基础题function rate=jct(m,code_length,a)% clear all;close all;clc;% m=50;% code_length=20; %信息码元个数% N=1:code_length;rand('seed',0);x=sign(rand(1,code_length)-0.5); %信息码%产生在-1到=+1之间的随机数for i=1:20s((1+(i-1)*m):i*m)=x(i); %每个信息码元内含m 个采样点end% figure(1);% stem(s);% title('调制器')% xlabel('code_length*m');ylabel('幅度');%加噪声%a=1noise=(rand(1,m*code_length)-0.5)*a*2;tran=noise+s;% figure(2)% stem(tran);% title('噪声发生器')% xlabel('code_length*m');ylabel('幅度');%解调for i=1:20d(i)=sign(sum(tran((1+(i-1)*m):i*m)));end% figure(3)% stem(d);% title('解调器')% xlabel('code_length');ylabel('幅度');%第四步for i=1:20if (d(i)<0)z(i)=0;elsez(i)=1;endend% figure(4) % stem(z);% title('检测器')% xlabel('code_length');ylabel('幅度'); count=0; for i=1:20 if(x(i)~=z(i)) count=count+1; end endrate=count/code_length; %figure(5) %stem(rate);-------------------------------- clear all;close all;clc; m=50;code_length=20; for a=0:50rate(a+1)=jct(m,20,a); endfigure(1) plot(rate); title('错误率')xlabel('a');ylabel('误码率');截图:code l ength*m幅度code l ength*m幅度改变a 值 M=502)提高题function rate=tgt(m,20,a) %clear all;close all;clc; %产生伪随机码 % m=8;% code_length=20; %信息码元个数 % N=1:code_length; rand('seed',0);x=sign(rand(1,code_length)-0.5); %信息码%产生在-1到=+1之间的随机数 for i=1:20s((1+(i-1)*m):i*m)=x(i); %每个信息码元内含m 个采样点 %调制code l ength幅度code l ength幅度错误率a误码率x_code=sign(rand(1,m)-0.5); %把0,1 序列码变换为-1,1 调制码w_code((1+(i-1)*m):i*m)=s((1+(i-1)*m):i*m).*x_code; %每个伪码码元内含8 个采样点end% figure(1)% stem(w_code);% title('加伪随机序列调制')% xlabel('code_length*m');ylabel('幅度');%加sin噪声t=0:m*code_length-1;p=(m+1)*sin(pi/20*t);a=1;noise=(rand(1,m*code_length)-0.5)*2*a;%噪声调幅干扰receive=w_code+noise+p;%解调for i=1:20d(i)=sign(sum(receive((1+(i-1)*m):i*m).* x_code));end% figure(2)c=s.*receive;% stem(c);% title('加伪随机序列解制')% xlabel('code_length*m');ylabel('幅度');for i=1:20if (d(i)<0)z(i)=-1;elsez(i)=1;endendcount=0;for i=1:20if x(i)~=z(i)count=count+1;endendrate=count/code_length;;--------------------------clear all;close all;clc;a=100;for m=1:1000;rate(m)=tgt(m,20,a);rate1(m)=jct(m,20,a);endfigure(1) subplot(211) plot(rate1);title('不加伪随机序列执行仿真系统') xlabel('m');ylabel('误码率'); subplot(212) plot(rate);title('加伪随机序列执行仿真系统') xlabel('m');ylabel('误码率');截图:一题截图:二题截图:code l ength*m幅度加伪随机序列解制code l ength*m幅度0.50.60.70.80.9不加伪随机序列执行仿真系统m误码率00.20.40.60.8加伪随机序列执行仿真系统m误码率五分析:总体思路:要进行误码率的计算,需要分两步进行,即抽样和判决。

相关主题