扩频通信系统仿真实验报告

重庆交通大学信息科学与工程学院

综合性设计性实验报告

专        业:       通信工程专业10      

学        号:                     

姓        名:                      

实验所属课程:      移动通信原理与应用       

实验室(中心):       软件与通信实验中心       

指 导 教 师 :                        

  

20##年3月


一、题目

扩频通信系统仿真实验

二、仿真要求

扩频通信系统的多用户数据传输

①传输的数据随机产生,要求采用频带传输(BPSK调制);

②扩频码要求采用周期为63(或127)的m序列;

③仿真从基站发送数据到三个不同的用户,各不同用户分别进行数据接收;

④设计三种不同的功率延迟分布,从基站到达三个不同的用户分别经过多径衰落(路径数分别为2,3,4);

⑤三个用户接收端分别解出各自的数据并与发送前的数据进行差错比较。

三、仿真方案详细设计

通信系统的总体框图如下

 

发射机原理图

接收机原理

 

由上图可知,整个设计由发送端、信道和接收机组成。

其中发射端主要完成m序列的产生,随机0,1序列的产生。然后利用m序列对产生的随机序列进行扩频,然后再用cos(wt)对其进行调制。

信道主要模拟信号的多径传输,在这个信道中一共有三个用户的数据进行传输,用户一经过了2径衰落,用户二经过了3径衰落,用户三经过了4径衰落。

接收端接收到的信号是几路多径信号的加噪后的叠加,首先要完成信号的解扩,然后再解调,滤波,抽样判决最后分别与原始信号比较并统计误码率

现对主要功能部分进行详细描述

1.扩频码(m序列)的产生

 扩频码为伪随机序列,本实验采用自相关特性好,互相关特性较差的M序列,因为有三路用户,故选取带有6位移位寄存器,周期为63的m序列。其对应的二进制序列分别为:1000011,1100111,1101101.以1000011为例,其具体的寄存器结构图如下所示:初始化各寄存器单元内容为1

 

产生m序列的matlab程序如下

v     function c=genMseq(b)

v                                              N=length(b)-1;

v         D=ones(1,N);

v         A=b(N:-1:1);

v         c=[];

v         for i=1:2^N-1

v                                                 c1=rem(sum(D.*A),2);

v              c=[c,D(N)];

v              D=[c1,D(1:N-1)];

v        end

v        c=c*2-1;                       %变为1,-1的序列

v    End

2、扩频

扩频的主要思想是每一位数据位都扩展成长度为m序列长的信息,其具体做法是将数据信息中的‘1’用m序列代替,而对于‘-1’用-m序列代替,这样对每一个数据位都进行扩展就实现了对原始数据的扩频。其结构框图如下

                                  

 


Signal                               扩频码

                           

M序列

其仿真代码如下:

function ssignal=dsss(signal,c)

signal=signal*2-1;

ssignal=[];

for i=1:length(signal)

ssignal=[ssignal,signal(i)*c];

end

end

3、多径信道的仿真

function multiS=channels(modusignal,snr,k)

%模拟多径衰落

len=length(modusignal);

x1=randn(1,len);

y1=randn(1,len);

r1=abs(x1+j*y1).*modusignal;

r1=[zeros(1,5),r1(1:length(modusignal)-5)];

x2=randn(1,len);

y2=randn(1,len);

r2=abs(x2+j*y2).*modusignal;

r2=[zeros(1,8),r2(1:length(modusignal)-8)];

x3=randn(1,len);

y3=randn(1,len);

r3=abs(x3+j*y3).*modusignal;

r3=[zeros(1,10),r3(1:length(modusignal)-10)];

if k==2

    multiS=modusignal+r1;

else if k==3

        multiS=modusignal+r1+r2;

    else if k==4

            multiS=modusignal+r1+r2+r3;

        end

    end

end

multiS=awgn(multiS,snr);

4、接收端解扩

在假定扩频码与接收信号同步的情况下, 可对接收信号进行解扩, 其解扩的过程与扩频的过程一样, 也是利用扩频码与接收信号进行相乘即可。其原理图如下:

解扩代码如下:

v  function dessignal=dedsss(receiveSignal,c,chipRate,fs)

v      L=fs/chipRate;

v      c1=[];

v      for i=1:length(c)

v          c1=[c1,c(i)*ones(1,L)];

v      end

v      dessignal=[];

v      for i=1:length(c1):length(receiveSignal)

v     dessignal=[dessignal,reciveSignal(i:i+length(c1)-1).*c1];

v      end

v  end

5、调制与解调

本文采用的是BPSK调制解调方式。发送端将扩频后的信号s乘上载波cos(2*πft)即完成了调制,接收端再乘以载波cos(2*πft)做相干解调,必须保证接收端乘以的载波与发送端的载波是相干的才能很好的解调,最后再经过一个低通滤波器滤除相乘过程中产生的高频成分即完成了解调。

四、仿真结果及结论

原信号和扩频之后的信号


图1

原信号频谱与扩频后信号频谱

图2


第一个用户信号经过扩频,调制之后的信号以及三个用户信号分别经过2径,3径,4径信道后的叠加信号之和如下图所示


图3

第一个原始用户信号与其经过接收端解扩,解调,抽样判决之后的最终信号的比较如下

图4


第二个原始用户信号与其经过接收端解扩,解调,抽样判决之后的最终信号的比较如下


图5

第三个原始用户信号与其经过接收端解扩,解调,抽样判决之后的最终信号的比较如下


实验结果分析

图6

扩频通信的理论基础为香农公式:C=Blog(1+S/N)

由公式可知,我们可以用牺牲带宽的办法来换取较低的信噪比,增加系统的抗干扰能力。直接序列扩频,是直接利用具有高码率的扩频码序列在发送端扩展信号的频谱,而在接收端,用相同的扩频码序列进行解扩,把展宽的扩频信号还原成原始的信息,是一种数字调制方法。

由图2可知,信号经过扩频后信号的频谱被展宽了,并且频谱功率降低了,这使得扩频通信系统具有较强的抗干扰能力,且具有很强的隐蔽性和抗侦查,抗窃听的能力。这种能力随着扩频增益的增大而增大。扩频增益的提高就需要提高扩频码m序列的位数了。

因为m序列具有良好的自相关特性和互相关特性,正是这两大特性使得在接收端可以很好的进行扩频码的同步,以及多路用户的区分,从而具有很好的抗多径干扰能力。

图三的上半部分为用户1的信号,下半部分为三个用户经过叠加的信号,由图可知,三个信号叠加过后有点儿像一个信号上面叠加了一些噪声。

A用户经过的是两径信道,B用户经过的是三径信道,C用户经过的是四径信道,所以在接收端A用户的误码率最低,其次是B用户,最后是C用户。本实验没有进行扩频码的同步,所以效果不是那么地好。

由图四、五、六可知接收端还是能比较好的恢复出原信号的。说明了扩频通信还是具有较好的抗干扰能力的。

五、总结与体会

     通过本次实验,我对直接序列扩频的原理有了一个更加全面的认识,对扩频系统在通信过程中的作用有了深刻的理解,特别是扩频通信抗多径衰落的能力在本实验中得到了很好的体现。

     在实验过程中也遇到了一些问题,中途连滤波器的设计也是拿出以前写过的代码重读了一遍然后参照那个写的。感觉到知识具有很强的遗忘性,那我们在今后的学习中要经常温习学过的东西,这样不仅能巩固知识还能学到新的东西,正所谓温故而知新嘛。

      MATLAB确实是一个很好的模拟软件,它能够让人很直观的理解通信的过程。

我深知实验中还是存在着很大的不足的,比如说由于时间关系没有在接收端进行扩频码序列的跟踪同步,使得系统的抗多径效果不是特别明显,在接下来的时间里,我会继续努力的,最后感谢李老师的辛苦教学。

六、主要仿真代码


主程序代码如下:

%主函数

function main()

clc;

clear;

close all;

N=100;

%扩频部分

sscPara1=[1 0 0 0 0 1 1];

sscPara2=[1 1 0 0 1 1 1];

sscPara3=[1 1 0 1 1 0 1];

c1=genMseq(sscPara1);

c2=genMseq(sscPara2);

c3=genMseq(sscPara3);

[modusignal1,dataRate,fc,fs,ssignal1,chipRate,data1]=transmitters(c1,N);

data=[];

for i=1:1/(8*63):length(data1)

    data=[data,2*data1(fix(i))-1];

end

figure;

subplot(2,1,1);

n=1:1/(8*63):length(data1);

plot(n,data);

ssignal=[];

for i=1:1/8:length(ssignal1)

   ssignal=[ssignal,ssignal1(fix(i))];

end

subplot(2,1,2);

l=1:1/8:length(ssignal1);

plot(l,ssignal);

N1=length(data);

figure;subplot(2,1,1);

sff1=-fix(N1/2):1:(fix(N1/2));

plot(sff1,fftshift(abs(fft(data))));

title('扩频前信号频谱');

N2=length(ssignal);

subplot(2,1,2);

sff2=-fix(N2/2):1:(fix(N2/2));

plot(sff2,fftshift(abs(fft(ssignal))));

title('扩频后信号频谱');

t=1:length(modusignal1);

figure;subplot(2,1,1);

plot(t,modusignal1);

[modusignal2,dataRate,fc,fs,ssignal2,chipRate,data2]=transmitters(c2,N);

[modusignal3,dataRate,fc,fs,ssignal3,chipRate,data3]=transmitters(c3,N);

modusignal1=channels(modusignal1,2);

t=1:length(modusignal1);

subplot(2,1,2);

plot(t,modusignal1);

modusignal2=channels(modusignal1,3);

modusignal3=channels(modusignal1,4);

modusignal=modusignal1+modusignal2+modusignal3;

BER1=[];BER2=[];BER3=[];

for snr=-10:2:10

    wr1=0; wr2=0; wr3=0;

    for i=1:10

receiveSignal=awgn(modusignal,snr);

[d1]=receiver(receiveSignal,dataRate,chipRate,fc,fs,c1);

[d2]=receiver(receiveSignal,dataRate,chipRate,fc,fs,c2);

[d3]=receiver(receiveSignal,dataRate,chipRate,fc,fs,c3);

wr1=wr1+sum(d1~=data1)/100;

wr2=wr2+sum(d2~=data2)/100;

wr3=wr3+sum(d3~=data3)/100;

    end

    wr1=wr1/11;

    wr2=wr2/11;

    wr3=wr3/11;

BER1=[BER1,wr1];

BER2=[BER2,wr2];

BER3=[BER3,wr3];

end

BER1

BER2

BER3

figure;

subplot(2,1,1);

n=1:1/8:length(data);

plot(n,data);

n=1:1/8:length(d1);

da1=[];

for i=1:1/8:length(d1)

    da1=[da1,d1(fix(i))];

end

subplot(2,1,2);

plot(n,da1);

figure;

n=0:1:10;

semilogy(n,BER1,'*r');

hold on

semilogy(n,BER2,'*y');

hold on

semilogy(n,BER3,'*b');

%解扩实现

function dessignal=dedsss(receiveSignal,c,chipRate,fs)

    L=fs/chipRate;

    c1=[];

    for i=1:length(c)

        c1=[c1,c(i)*ones(1,L)];

    end

    dessignal=[];

    for i=1:length(c1):length(receiveSignal)

dessignal=[dessignal,receiveSignal(i:i+length(c1)-1).*c1];

    end

end

%接收端信号解调

function  [demoSignal,b]=demodu(dessignal,dataRate,fc,fs)

t=linspace(0,1/dataRate,fs/dataRate);

carrier=cos(2*pi*fc*t);

demoSignal=[];

for i=1:length(carrier):length(dessignal)

demoSignal=[demoSignal,carrier.*dessignal(i:i+length(carrier)-1)];

end

  load lowpas;

l=fix((length(lowpas))/2);

demoSignal=[demoSignal,zeros(1,l)];

b=filter(lowpas,1,demoSignal);

b=b(l+1:end);

    panjue=[];

for i=1:length(demoSignal)/length(carrier)

    if demoSignal((i-1)*length(carrier)+3)>=0

        panjue=[panjue,1];

    else

        panjue=[panjue,0];

    end

end

b=panjue;

end

 

第二篇:基于MATLAB的扩频通信系统仿真研究

基于MATLAB的扩频通信系统仿真研究

摘要 本文阐述了扩展频谱通信技术的理论基础和实现方法,利用MATLAB提供的可视化工具Simulink建立了扩频通信系统仿真模型,详细讲述了各模块的设计,并指出了仿真建模中要注意的问题。在给定仿真条件下,运行了仿真程序,得到了预期的仿真结果。同时,利用建立的仿真系统,研究了扩频增益与输出端信噪比的关系,结果表明,在相同误码率下,增大扩频增益,可以提高系统输出端的信噪比,从而提高通信系统的抗干扰能力。

关键词 扩频通信, 信噪比, 误码率, 扩频增益 

Simulation of the Spread Spectrum Communication System

Based on MATLAB

Abstract: The theory base and realizing methods of the spread spectrum communication technology was presented in this study. The simulation model of the spread spectrum communication system was built by using SIMULINK, which is provided by MATLAB. In addition, each module of the simulation model was introduced in detail,and pointed out the problems that must be pay attention to in the system simulation. On the basis of the designed simulation conditions, the simulation program was run and the anticipant results were gained. Moreover, the relationship between the spread spectrum gain and the fan-out error rate was also studied by use of the simulation system. The results showed that on the base of the same error rate, if the spread spectrum gain was enlarged, the Signal-to-Noise of the system fan-out would be enhanced and the anti-jamming capability of the communication system would also be enhanced.

Keywords: spread spectrum communication, Signal-to-Noise, error rate, spread spectrum gain

1 引言

扩展频谱通信(简称扩频通信)与光纤通信、卫星通信,一同被誉为进入信息时代的三大高技术通信传输方式,它是指发送的信息被展宽到一个很宽的频带上,在接收端通过相关接收,将信号恢复到信息带宽的一种系统。采用扩频信号进行通信的优越性在于用扩展频谱的方法可以换取信噪比上的好处,即接收机输出的信噪比相对于输入的信噪比有很大改善,从而提高了系统的抗干扰能力。本文根据扩频通信的原理,利用MATALB提供的可视化仿真工具Simulink建立了扩频通信系统仿真模型,研究了扩频通信的特性和扩频增益与输出端信噪比的关系,目的是为以扩频通信为基础的现代通信的研究和设计提供依据。

2 扩展频谱通信技术

2.1 理论基础

扩频通信的基本理论是根据信息论中的Shannon公式,即

                             (1)

式中:C为系统的信道容量(bit/s);B为系统信道带宽(Hz);S为信号的平均功率;N为噪声功率。

Shannon公式表明了一个系统信道无误差地传输信息的能力跟存在于信道中的信噪比(S/N)以及用于传输信息的系统信道带宽(B)之间的关系。该公式说明了两个最重要的概念:一个是在一定的信道容量的条件下,可以用减少发送信号功率、增加信道带宽的办法达到提高信道容量的要求;一个是可以采用减少带宽而增加信号功率的办法来达到。

扩频增益是扩频通信的重要参数,它反应了扩频通信系统抗干扰能力的强弱,其定义为接收机相关器输出信噪比和接收机相关器输入信噪比之比,即

                 (2)

式中,Si和S0分别为接收机相关器输入、输出端信号功率;Ni和N0分别为相关器的输入、输出端干扰功率;Rs为伪随机码的信息速率,Rd为基带信号的信息速率;Bs为频谱扩展后的信号带宽,Bd频谱扩展前的信号带宽。

2.2 实现方法

扩频通信与一般的通信系统相比,主要是在发射端增加了扩频调制,而在接收端增加了扩频解调的过程,扩频通信按其工作方式不同主要分为直接序列扩频系统、跳频扩频系统、跳时扩频系统、线性调频系统和混合调频系统。现以直接序列扩频系统为例说明扩频通信的实现方法。图1为直接序列扩频系统的原理框图。

              

图1 直接序列扩频系统原理图

由直扩序列扩频系统原理图可以看出,在发射端,信源输出的信号与伪随机码产生器产生的伪随机码进行模2加,产生一速率与伪随机码速率相同的扩频序列,然后再用扩频序列去调制载波,这样得到已扩频调制的射频信号。在接收端,接收到的扩频信号经高放和混频后,用与发射端同步的伪随机序列对扩频调制信号进行相关解扩,将信号的频带恢复为信息序列的频带,然后进行解调,恢复出所传输的信息。

3 系统仿真模型的建立

3.1 Simulik简介

MATLAB最初是Mathworks公司推出的一种数学应用软件,经过多年的发展,开发了包括通信系统在内的多个工具箱,从而成为目前科学研究和工程应用最流行的软件包之一。Simulink是MATLAB中的一种可视化仿真工具,是实现动态系统建模、仿真和分析的一个集成环境,广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。它包括一个复杂的由接受器、信号源、线性和非线性组件以及连接件组成的模块库,用户也可以根据需要定制或者创建自己的模块。Simulink的主要特点在于使用户可以通过简单的鼠标操作和拷贝等命令建立起直观的系统框图模型,用户可以很随意地改变模型中的参数,并可以马上看到改变参数后的结果,从而达到方便、快捷地建模和仿真的目的。

3.2 模型建立及主要模块设计

基于MATLAB /Simulink所建立的扩频通信系统的仿真模型,能够反映扩频通信系统的动态工作过程,可进行波形观察、频谱分析和性能分析等,同时能根据研究和设计的需要扩展仿真模型,实现以扩频通信为基础的现代通信的模拟仿真,为系统的研究和设计提供强有力的平台。图2为基于MATLAB/Simulink的扩频通信系统仿真模型。

图2 系统仿真模型

信源:随机整数发生器(Random Integer generator)作为仿真系统的信源,随机整数发生器产生二进制随机信号,采样时间、初始状态可自由设置,从而满足扩频通信系统所需信源的要求。

扩频与解扩:PN序列生成器模块(PN Sequence Generator)作为伪随机码产生器,扩频过程通过信息码与PN码进行双极性变换后相乘加以实现。解扩过程与扩频过程相同,即将接收的信号用PN码进行第二次扩频处理。

调制与解调:使用二相相移键控PSK方式进行调制、解调。调制由正弦载波与双极性扩频码直接相乘实现,采用相干解调法进行解调。

信道:传输信道为加性高斯白噪声信道。在加性高斯白噪声信道模块中,可进行信号功率和信噪比的设置。

误码计算:误码计算由误码仪实现,误码仪在通信系统中的主要任务是评估传输系统的误码率,它具有两个输入端口:第一个端口(Tx)接收发送方的输入信号,第二个端口(Rx)接收接收方的输入信号。

3.3 几点说明

在Simulink中,没有单独实现统计的计数器模块,需要自行创建,计数模型的设计如图3。在计数模型中,用与信源和伪随机码同频的脉冲模块分别实现码元同步和切普同步,利用加法器的累加功能,实现每个码元的相关峰值统计。

图3 计数模型实现框图

在扩频通信建模中,扩频与解扩使用的PN码以及调制和解调所使用的载波必须保持同步,因此要注意伪随机码模块和载波模块的参数设置。

在误码率计算中,接收到的信号,由于经过扩频解扩、调制解调、相关统计等处理,会存在一个延迟,在误码仪模块的对话框中要设置一个合适的延迟。

4 仿真结果分析

4.1 仿真系统运行情况分析

在给出下列仿真的条件下,观察仿真运行情况。信息速率20b/s,幅度为1;伪随机序列采用10级,传输速率为200b/s的m序列;载波频率10KHz;信号功率为1W,信噪比30dB;仿真时间设为2s。在这样的仿真条件下,理论上可获得10倍的扩频增益。图4是系统扩频解扩的仿真结果。上图为信源,中图为扩频码,下图为信宿。从图4可见,信源和信宿相同,误码率为0,基于MATLAB/Simulink所设计的仿真系统满足扩频通信系统的软件仿真要求。

图4 系统扩频解扩的仿真结果

4.2 扩频增益与输出端信噪比的关系

设置信息速率和伪随机序列传输速率,在扩频增益10和50的情况下,不断改变信噪比的大小,从而得到扩频增益、误码率和信噪比的关系如图5。从图5可以看到,在相同误码率下,扩频增益越大,输出端信噪比越大,并且随着系统要求的提高,增大扩频增益,输出端信噪比会得到更大的好处。

图5 不同扩频增益下误码率仿真曲线

5 结论

扩频通信以其较强的抗干扰、抗衰落、抗多径性能而成为第三代通信的核心技术,本文阐述了扩频通信的理论基础和实现方法,利用MATLAB提供的可视化工具箱Simulink建立了扩频通信系统仿真模型,详细讲述了各模块的设计,并给出了仿真建模中需注意的问题。在给定仿真条件下,运行了仿真系统,验证了所建仿真模型的正确性。通过仿真研究了扩频增益和输出端信噪比的关系,结果表明,在相同误码率下,增大扩频增益,可以提高系统输出端的信噪比,从而提高系统的抗干扰能力。本文作者创新点:通过MATLAB/Simulink建立的仿真平台,研究了扩频增益与误码率、信噪比之间的关系,为以扩频通信为基础的卫星信号设计提供依据。

参考文献:

1    曾兴雯,刘乃安,孙献璞。扩展频谱通信及其多址技术[M]。西安:西安电子科技大学出版社,2004。

2    徐明远,邵玉斌。MATLAB仿真在通信与电子工程中的应用[M]。西安:西安电子科技大学出版社,2005。

3         李建新,刘乃安,刘继平。现代通信系统分析与仿真-MATALAB通信工具箱[M]。西安:西安电子科技大学出版社,2001。

4    徐明伟,李茜,汤伟。基于MATLAB串口通信的数据采集系统的设计。微计算机信息,2005,21(8-1),89-90。

5    郭海燕,毕红军。MATLAB在伪随机码的生成及仿真中的应用。计算机仿真,21(3),2004.3。

 
相关推荐