基于MATLAB/Simulink的CDMA系统设计与仿真

本文详细介绍了如何使用Simulink平台构建一个四用户CDMA通信系统,包括发射端的信号模拟、伪随机序列生成、扩频调制,以及接收端的解扩、信号还原和性能仿真。通过对不同用户检测方法的比较,展示了系统在误码率方面的性能。
摘要由CSDN通过智能技术生成

目录

1.整体结构

2.发射端

3.接收端 

4.性能仿真


1.整体结构

       利用Simulink平台,模拟了一个小区内四个用户的码元发送,扩频,接收,解扩,判决的CDMA通信基本过程,仿真基本流程如图1所示:

       在每一个仿真步长(1秒)内,每个用户发送一个信息码元,4个用户则对应发送4个用户信息码元,然后用4个P=31的m序列分别对这4个用户的信息码元进行扩频(相乘)处理,然后合路相加并加入高斯白噪声。在接收端用和发送端相同的4个m序列分别对信息码元进行解扩(相乘)处理,最后进行积分,判决,完成了对这4个用户的信息码元的恢复,即对于这4个用户中的每一个用户,一个仿真步长(1秒)内完成了一个信息码元的恢复,若要发送5000个码元,仿真时间设置为5000秒即可,这是传统单用户检测的情况。

2.发射端

         利用MATLAB2007b来,应此对于SIMULINK模块必须用该版本的MATLAB才能打开。其中发送端的基本结构如下:

·用户发送的信号的模拟

       为了便于观察和数据的对比,我采用发送常数信号1来作为用户的发送信号,打开SIMULINK,添加Constant模块,来模拟用户,其具体的参数设置如下:

图3 CONSTANT模块参数设置

 ·伪随机序列的产生

      在扩频调制中,我通常运用PN码来进行信号的扩频处理,这里运用Embedded MATLAB Function block编写了一个m序列发生器模块,模块有一个输入,一个输出,,输出为一个P=31的m序列。

PN码的产生,实际上就是利用移位寄存器来实现伪随机序列,其MATLAB核心代码如下:

for i= 2:L

    newregisters(1:len-1) = registers(2:len);

    newregisters(len) = mod(sum(coefficients.*registers'),2);

    registers=newregisters;

    a(i)=registers(1);

end

利用这个模块,我们就可以参身周期为31的伪随机序列了。

·扩频调制设计

所谓扩频调制,就是信号和PN码进行相乘,我们只要利用SIMULINK的乘法模块就可以了。

图 一路用户的扩频调制过程

·信号和路设计

    重复以上的步骤,我们可以得到4个用户的扩频调制,然后我们将4路信号进行合路。并加入一个Random Number模块,生成均值是0,方差为1的高斯正态分布随机信号做为噪声。其中Random Number模块的参数设置如下:

图 噪声模块的参数设置

3.接收端 

系统接收端的具体结构如下:

图 系统的接收图 

·解扩模块设计

    解扩模块的就是扩频调制的逆运算,应此我们只要再次利用PN码来对信号相乘,得到解扩信号就可以了。

·信号还原模块设计

    将得到的信号进行符号判决,就可以还原发送的信号了,符号判决模块的设置如下:

至此,我们完成利用SIMULINK设计了最基本的CDMA系统了。

4.性能仿真

    上节我们介绍了利用SIMULINK建立一个简单的四用户的CDMA系统,下面我们利用MATLAB对系统的性能进行仿真。来验证系统的正确性。

    下面我们主要来分析一下整个系统的代码部分:

N=31;                                                  %伪随机序列的阶数

R=(ones(UserNumber)+(N-1)*eye(UserNumber))/N;  %相关系数矩阵

b=2*randint(UserNumber,inflength)-1;             %用户信息矩阵

coefficients=[1 0 1 0 0];                          %PN码生成系数

mseq=mseries(coefficients);                        %有生成系数产生随机序列

mseq=mseq(1:UserNumber,1:N);

    以上代码主要功能是,产生PN码作为信号的扩频码,从而产生用于信号检测的扩频信号。

     %产生噪声

n1=Pn*normrnd(0,1,1,inflength*N);

n=zeros(UserNumber,inflength);

for j=1:inflength

   ntemp=n1(1,((j-1)*N+1):j*N);

   n(:,j)=(mseq*ntemp')/N;

end

    这个代码的主要作用就是产生检测信号用的噪声,将噪声添加到四个用户信号的合成信号中。

    A=diag(a);

    y=R*A*b+n;                                         %传统的单用户检测

    ydec=inv(R)*y;                                    %线性解相关多用户检测

    ymmse=inv(R+sigma^2*inv(A))*y;                 %最小均方误差多用户检测

    for i=1:UserNumber

    ylen(i)=length(find(sign(real(y(i,:)))-b(i,:))); 

    ydeclen(i)=length(find(sign(real(ydec(i,:)))-b(i,:)));

    ymmselen(i)=length(find(sign(real(ymmse(i,:)))-b(i,:)));

    BER_y(i)=ylen(i)/inflength;

    BER_ydec(i)=ydeclen(i)/inflength;

    BER_ymmse(i)=ymmselen(i)/inflength;

    end
A01-02

    以上代码我们主要用到了三种检测方式,1.传统的单用户检测;2.线性解相关多用户检测;3.最小均方误差多用户检测。

         通过将前后发送和接收信号的对比,我们利用普通用户信号检测的方法进行对比,可以得到如下的对比结果:

图 误码率

    可见在连续发送的相同数据的情况下,接收端的正确率也是比较高的,从而验证了SIMULNIK建立的模型的正确性。

 

       测试传码5000个情况下10个用户的误码率是一个比较传统单用户检测,线性解相关多用户检测,最小均方误差多用户检测之间的误码率性能的程序,运行本程序首先出现一个对话框,等待输入相应的仿真参数,如图所示:

图 仿真界面

       其中第一行为用户数,第二行为用户信息码元个数,第三行为各个用户对应的信号功率,第四行为噪声功率,第五行为要观察的用户,默认值如图中所示。设置用户信号功率依次为1,2,3,4是由于用户距离基站的远近不同,故信号功率有差别,用此来模拟远近效应。信噪比的计算拿第一个用户作为基准,当噪声功率设置为10时,信噪比s/n=20lg(1/10)=-20dB。第五行设置为1表示要观察第一个用户,信号功率较大的用户的误码率明显低于信号功率较小的用户。

基于MATLAB的CDMA通信系统仿真-基于MATLAB的CDMA通信系统仿真.rar CDMA通信系统MATLAB仿真 摘 要:在简要介绍MATLAB语言的基础上,对使用MATLAB语言仿真的CDMA通信系统进行描述。关键词:仿真;码分多址;扩频 1 仿真语言矩阵实验室(MATLAB:Matrix Laboratory)是一种以矩阵运算为基础的交互式的程序语言。与其它计算机语言相比,具有简洁和智能化程度高的特点,而且适应科技专业人员的思维方式和书写习惯,因而用其编程和调试,可以大大提高工作的效率。 目前MATLAB已经成为国际上最流行的软件之一,除了可提供传统的交互式的编程方法之外,还能提供丰富可靠的矩阵运算、图形绘制、数据处理、图像处理和方便的Windows编程工具等。因而出现了各种以MATLAB为基础的工具箱,应用于自动控制、图像信号处理、生物医学工程、语音处理、信号分析、时序分析与建模、优化设计等广泛的领域,表现出了一般高级语言难以比拟的优势。较为常见的MATLAB工具箱有:控制系统工具箱、系统辩识工具箱、多变量频率设计工具箱、分析与综合工具箱、神经网络工具箱、最优化工具箱、信号处理工具箱、模糊推理系统工具箱,以及通信工具箱等。在MATLAB通信工具箱中有SLMULINK仿真模块和MATLAB函数,形成一个运算函数和仿真模块的集合体,用来进行通信领域的研究、开发、系统设计仿真通信工具箱中的模块可供直接使用,并允许修改,使用起来十分方便,因而完全可以满足使用者设计和运算的需要。 MATLAB通信工具箱中的系统仿真,分为用SIMULINK模块框图进行仿真和用MATLAB函数进行的仿真两种。在用SIMULINK模块框图的仿真中,每个模块,在每个时间步长上执行一次,就是说,所有的模块在每个时间步长上同时执行。这种仿真被称为时间流的仿真。而在用MATLAB函数的仿真中,函数按照数据流的顺序依次执行,意味着所处理的数据,首先要经过一个运算阶段,然后再激活下一个阶段,这种仿真被称为数据流仿真。某些特定的应用会要求采用两种仿真方式中的一种,但无论是哪种,仿真的结果是相同的。 下面即对使用M-ATLAB语言仿真CDMA通信系统进行描述。 2 仿真框图 CDMA是指在各发送端使用不相同、相互(准)正交的地址码调制所传送的信息,而在接收端在利用码型的(准)正交性,通过相关检测,从混合信号中选出相应的信号的一种技术。实现CDMA的理论基础是扩频通信,即在发送端将待发送的数据用伪随机码进行调制,实现频谱扩展,然后进行传输,而在接收端则采用同样的编码进行解扩及相关处理,恢复原始的数据信息。扩频通信有直接序列(DS)、跳频(FH)、线性调频(chirp)、跳时(TH)等方式。采用扩频通信的优点很多,如抗干扰、抗噪声、抗多径衰落的能力强,能在低功率谱密度下工作,保密性好,可多址复用和任意选址及进行高度测量等等。因此,扩频通信作为新型的通信技术,已引起人们的特别关注,得到了迅速的发展和广泛的应用。以美国Quacomm公司为首推出的IS-95CDMA移动通信系统,以W-CDMA、CDMA2000、TD-SCD-MA为主流的第三代移动通信系统的标准化建设等,不仅确立了CDMA系统在移动通信中的稳固地位,也把扩频CDMA系统的研究、应用和发展推向了新的阶段。 本文讨论的CDMA通信系统仿真,采用的是直扩方式,信息调制采用的是DPSK调制方式,伪随机码采用的是31位GOLD序列,仿真框图如图1所示。 matlab_dsp.JPG 更多内容,请看附件!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值