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

更新时间:2024-07-01 03:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一.引言

扩频通信,即扩展频谱通信(Spread Spectrum Communication),它与光纤通信,卫星通信,一同被誉为进入信息时代的三大高技术通信传输方式。扩频通信技术自50 年代中期美国军方便开始研究,一直为军事通信所独占,广泛应用于军事通信、电子对抗以及导航、测量等各个领域。直到80年代初才被应用于民用通信领域。为了满足日益增长的民用通信容量的需求和有效地利用频谱资源,各国都纷纷提出在数字峰窝移动通信、卫星移动通信和未来的个人通信中采用扩频技术,扩频技术现已广泛应用于蜂窝电话、无绳电话、微波通信、无线数据通信、遥测、监控、报警等系统中。

二.概述

序列扩频系统(DS,Direct Sequence)又称为序列调制系统或伪噪声系统(PN 系统),简称为直扩系统,是目前应用较为广泛的一种扩展频谱系统。直扩系统是将要发送的信息用伪随机(PN)序列扩展到一个很宽的频带上去,在接收端,用与发送端扩展用的相同的伪随机序列对接收到的扩频信号进行相关处理,恢复出原来的信息。干扰信号由于与伪随机序列不相关,在接收端被扩展,使落入信号频带内的干扰信号功率大大降低,从而提高了系统的输出信噪(干)比,达到抗干扰的目的。一种典型的扩展频谱系统如图1 所示。

图 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为直接序列扩频系统的原理框图

2

四.通过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_length rand('seed',0);

x=sign(rand(1,code_length)-0.5); %信息码%产生在-1到=+1之间的随机数 for i=1:20

s((1+(i-1)*m):i*m)=x(i); %每个信息码元内含m 个采样点

3

end

生成的信息码的波形图如图所示。

调制器10.80.60.40.2幅度0-0.2-0.4-0.6-0.8-10100200300400500600codelength*m7008009001000

第二步,编写程序生成噪声发生器

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

a=1

noise=(rand(1,m*code_length)-0.5)*a*2; tran=noise+s;

噪声发生器21.510.5幅度0-0.5-1-1.5-20100200300400500600codelength*m70080090010004

第三步,编写程序生成解调器

解调相当于调制的逆过程, 将来自信道接收到的这个M个受到噪声污损的序列+1或-1相加进行解调。 程序如下:

for i=1:20

d(i)=sign(sum(tran((1+(i-1)*m):i*m))); end

解调器10.80.60.40.2幅度0-0.2-0.4-0.6-0.8-1024681012codelength14161820

第四步,检测器将解调器的输出与零做比较

如果输出大于0就判决为1,如果输出小于0就判决为0。 for i=1:20 if (d(i)<0) z(i)=0; else z(i)=1; end en

5

检波器10.90.80.70.6幅度0.50.40.30.20.10024681012codelength14161820

第五步,计算误码率

利用函数调用,进行误码率计算,如果检测器的输出与从发射器传送的比特不一致,就被计数器计为1个差错。 count=0; for i=1:20

if(x(i)~=d(i)) count=count+1; end

end

rate=count/code_length; %figure(5)

%stem(rate);

-------------------------------- clear all;close all;clc; m=50;

code_length=20; for a=0:50

rate(a+1)=jct(m,20,a); end

6

错误率0.40.350.30.25误码率0.20.150.10.0500102030a405060

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:20

s((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 个采样点 end

7

加伪随机序列调制10.80.60.40.2幅度0-0.2-0.4-0.6-0.8-1020406080100codelength*m120140160

第二步,搭建扩频系统,编写程序生成加伪随机序列解制器

解调器输入乘以同一个伪随机序列。传输信道受到加性噪声和一个单频正弦噪声的干扰。假定正弦噪声幅度大于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:20

d(i)=sign(sum(receive((1+(i-1)*m):i*m).* x_code));% 解调器输入乘以同一个伪随机序列 end

8

加伪随机序列解制15105幅度0-5-10-15020406080100codelength*m120140160

第三步,用和不用伪随机序列执行该仿真系统

利用函数调用,进行误码率计算,如果输出与从发射器传送的比特不一致,就被计数器计为1个差错。对不同M值测量差错率,并比较不同系统的效果。 %检波 for i=1:20 if (d(i)<0) z(i)=-1; else z(i)=1; end end

count=0; for i=1:20 if x(i)~=z(i)

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

end

rate=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);

9

end

figure(1) subplot(211) plot(rate1);

title('不加伪随机序列执行仿真系统') xlabel('m');ylabel('误码率'); subplot(212) plot(rate)

title('加伪随机序列执行仿真系统') xlabel('m');ylabel('误码率');

不加伪随机序列执行仿真系统0.90.8误码率0.70.60.50100200300500600700m加伪随机序列执行仿真系统40080090010000.80.6误码率0.40.200100200300400500m6007008009001000

分析:经过比较可以看出加伪随机序列后生成的误码率相对于不加伪随机序列要小,且变化幅度小,所以加伪随机码序列稳定

10

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:20

s((1+(i-1)*m):i*m)=x(i); %每个信息码元内含m 个采样点 end

% figure(1); % stem(s);

% title('调制器')

% xlabel('code_length*m');ylabel('幅度'); %加噪声

%a=1

noise=(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:20

d(i)=sign(sum(tran((1+(i-1)*m):i*m))); end

% figure(3) % stem(d); % title('解调器')

% xlabel('code_length');ylabel('幅度'); %第四步 for i=1:20

if (d(i)<0) z(i)=0; else z(i)=1; end end

11

% figure(4) % stem(z);

% title('检测器')

% xlabel('code_length');ylabel('幅度'); count=0; for i=1:20

if(x(i)~=z(i))

count=count+1; end end

rate=count/code_length; %figure(5) %stem(rate);

-------------------------------- clear all;close all;clc; m=50;

code_length=20; for a=0:50

rate(a+1)=jct(m,20,a); end

figure(1) plot(rate);

title('错误率')

xlabel('a');ylabel('误码率');

截图:

调制器10.80.60.40.2度幅0-0.2-0.4-0.6-0.8-101002003004005006007008009001000codelength*m噪声发生器21.510.5度幅0-0.5-1-1.5-201002003004005006007008009001000codelength*m 12

解调器10.80.60.40.2幅度检波器10.90.80.70.6幅度0-0.2-0.4-0.6-0.8-1024681012codelength141618200.50.40.30.20.10024681012codelength14161820

错误率0.40.350.30.25误码率0.20.150.10.0500102030a405060

改变a值 M=50

2)提高题

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:20

s((1+(i-1)*m):i*m)=x(i); %每个信息码元内含m 个采样点 %调制

13

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:20

d(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:20 if (d(i)<0) z(i)=-1; else

z(i)=1; end end

count=0; for i=1:20 if x(i)~=z(i) count=count+1; end end

rate=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);

14

end

figure(1) subplot(211) plot(rate1);

title('不加伪随机序列执行仿真系统') xlabel('m');ylabel('误码率'); subplot(212) plot(rate);

title('加伪随机序列执行仿真系统') xlabel('m');ylabel('误码率');

截图:

一题截图:

加伪随机序列调制10.80.60.40.2幅度加伪随机序列解制15105幅度0-0.2-0.4-0.6-0.8-1020406080100codelength*m1201401600-5-10-15020406080100codelength*m120140160

二题截图:

不加伪随机序列执行仿真系统0.90.8误码率0.70.60.50100200300500600700m加伪随机序列执行仿真系统40080090010000.80.6误码率0.40.200100200300400500m6007008009001000

15

五 分析:

总体思路:要进行误码率的计算,需要分两步进行,即抽样和判决。假设信源信息码长度为M,每个信息码包含N 个采样点数,则,先从第一个信息码的N 个采样点中,随机抽取i 个,判断是否全为1,或全为-1,这样就确定了此信息码为1 还是-1;以同样的方法对输出的信息码再做一次,最后将两个信息码的判断结果进行比较,不同就记录下来,进行累加,相同则进行下一次循环。M 个循环后,把累加和的结果除以M,就得到本系统的误码率了。仿真程序:假设信息码长为 50,每个信息码包含8 个采样点数,则用rand 函数,随机的从的第i 个信息码中抽取10 个采样点,从而判断此第i个信源信息码是1 还是-1;同样用此方法,判断第i个解调出的信息码是1 还是-1,然后把二者进行比较,相同则开始第i+1 次循环,不同就进行累加,结果放在n 中,M 次循环后计算n/M,结果err 就是本系统的误码率。

六 结论:

随着社会通信事业的迅猛发展,扩展频谱技术的应用大有潜力可以挖掘,尤其在民用中的地位也越来越显著。值得一提的是,它可以应用于较恶劣的环境,其前景十分诱人。本文是基于扩频系统的原理,主要针对的是直扩系统,进行了matlab 的仿真以及加入噪声和干扰的仿真。

七 课设总结

在这次的课设中我们主要是运用了rand,sign函数,在对这些函数有了 一定的了解。通过这次课设,我学习了二进制数字扩频通信系统构成原理,并用MATLAB编程实现加性噪声信道上的二进制数字扩频通信系统性能分析,加深对二进制数字扩频通信系统的理解。

16

参考文献:

【1】.吴志强 扩频通信的基本原理和特定 农村电气化 2000(9)

【2】.吴明捷,谢祖容,徐丽洁 扩频系统抗干扰性能分析 辽宁工程技术大学学报(自然科学版) 2001(6)

【3】.吴明捷,周小正,马景兰 扩展频谱通信系统处理增益的分析 石油化工高等学校学报 2001(9)

【4】.孙鹏勇 直接序列扩频通信系统处理增益的分析 辽宁工程技术大学学报 20000(4)

【5】.高丙坤,阎胜玉,袁静,朴晓光,姚鹏举 直接序列扩频通信系统误码率的仿真分析 大庆石油学院学报 2002(6)

【7】.曾兴雯,刘乃安,孙献璞 《扩展频谱通信及其多址技术》 西安电子科技大学出版社

【8】.王立宁,乐光新,詹菲 《MATLAB 与通信仿真》 人民邮电大学

17

本文来源:https://www.bwwdw.com/article/5wy.html

Top