基于Matlab的CDMA多用户通信系统的仿真分析

合集下载

CDMA通信系统仿真(附带完整程序)

CDMA通信系统仿真(附带完整程序)

扩频通信仿真1.设计思想为了研究CDMA 通信系统的多址干扰,实验利用Matlab 提供的m语言编写了m文件来建立CDMA 通信系统仿真模型,详细讲述各模块的设计及参数设置,并对仿真结果进行分析。

结果表明,多址干扰是CDMA 系统的固有干扰,当同时通信的用户数增多时,多址干扰电平增大,导致系统的误码率也增大。

因此,多址干扰是CDMA 通信系统本身存在的自我干扰,它限制了蜂窝系统的通信容量。

实验讨论的CDMA通信系统的仿真,采用的是直扩方式,信息没有经过调制,伪随机码采用的是63位GOLD序列,仿真框图如图1所示。

本课程的目的是熟悉CDMA通信系统的构架,了解m序列和gold码的软件实现, 以及用gold序列实现扩频和解扩,最后了解整个系统的误比特率与哪些因素有关。

2.程序设计流程图Gold码程序流程图M码程序流程图主程序流程图3.仿真环境本文讨论的CDMA通信系统的仿真是用MATLAB7.0模拟实现的,即数据流仿真模式,用MATLAB编程来实现对CDMA系统的模拟。

仿真实验中选择了一组长度为63的gold码序列作为扩频序列,并假设在理想功率控制下,即接收到的所有用户的信号能量相等。

整个仿真系统实现过程如下:1) 信源采用randint函数产生的+1、-1来代替实际的数字信号。

实际的数字信号应该是模拟信号(如语音信号) 经量化和压缩编码得到的二进制信号,其特点是二值性和随机性。

信源速率设置为10b/s。

2) 扩频与解扩利用自编的m函数和gold函数,产生gold码伪随机序列来达到扩频和多址接入效果。

扩频的运算是信息流与gold码相乘或模二加的过程。

解扩的过程与扩频过程完全相同,即将接收的信号用gold 码进行第二次扩频处理。

要求使用的gold 码与发送端扩频用gold 码不仅码字相同,而且相位相同。

否则会使有用信号自身相互抵消。

解扩处理将信号压缩到信号频带内,由宽带信号恢复为窄带信号。

同时将干扰信号扩展,降低干扰信号的谱密度,使之进入到信息频带内的功率下降,从而使系统获得处理增益,提高系统的抗干扰能力。

-基于MATLAB的多用户CDMA通信系统设计与仿真

-基于MATLAB的多用户CDMA通信系统设计与仿真

设计题目:基于MATLAB的多用户CDMA通信系统设计与仿真摘要随着科技的不断发展以及人们生活水平的不断提高,人们对于移动通信的需求不断增长,本文设计了目前流行的CDMA系统,可实现数字信号的扩频解扩与调制解制。

本文设计的系统分为单用户通信和多用户通信,二者所用的调制方式不完全相同。

以单用户为例,在系统的信源处产生一个数字信号序列,然后对其进行WALSH 码扩频,再对扩频码进行调制,然后在信道中加入噪声,最后实现解扩和解调。

在本文的最后还对整个CDMA系统进行了优化,设计了其外观界面,将调制方式和原理框图联系到一起,很好的实现了整个CDMA系统的仿真。

关键词:CDMA;扩频;PSK;QPSK;仿真;ABSTRACTWith the continuous development of science and technology and people's standard of living continues to improve, the demamd of mobile communication for people grows continuously, This paper describes the design of the current epidemic of CDMA systems, digital signal spread spectrum modulation and dispreading system solutions. This paper describes the design of the system which is divided into single-user and multi-user communication communication. Two kinds of modulation used in the different ways. A single-user example, the source of the system creats a Department of digital signal sequence, and the system achieve its spread spectrum with WALSH code,then modulates the code of spread spectrum, then joined the channel noise,in the end, peforms the solution to expand and demodulation. At last,in this paper the entire CDMA system optimized design of the interface appearance,makes Modulation and block diagram linked together, achieves good of the whole CDMA System Simulation.Keywords:CDMA; Spread spectrum; PSK;QPSK ; Simulation目录1 绪论 (11.1CDMA发展史 (11.2CDMA的优点及应用前景 (21.3论文结构及课题研究内容 (52 CDMA系统的总体设计思路 (7 2.1系统总体设计结构 (72.2系统的实现原理 (73 系统的相关原理及设计过程 (10 3.1MATLAB简介及仿真方法 (10 3.1.1 MATLAB介绍 (103.1.2 仿真方法论 (133.2扩频技术及其仿真实现 (15 3.2.1扩频技术简介 (163.2.2 扩频的仿真实现 (183.3PSK调制解调与仿真实现 (21 3.3.1 PSK调制解调原理 (213.3.2 PSK的仿真实现 (223.4QPSK调制解调及仿真实现 (24 3.4.1 QPSK调制解调原理 (253.4.2 QPSK的仿真实现 (263.5多用户CDMA通信 (303.5.1 DPSK调制解调原理 (303.5.1 多用户DPSK仿真实现 (314 外观界面设计 (344.1GUI (344.1.1 GUI和GUIDE (344.1.2 使用GUIDE创建GUI界面 (364.2主题界面设计流程 (384.2.1 仿真原理图的设计 (384.2.2 系统界面设计流程 (394.3回调函数 (404.3.1 回调函数原型 (404.3.2 回调函数编程实现各界面互联 (415 总结与展望 (435.1系统不足与改进 (435.2系统升级及展望 (43致谢.............................................. 错误!未定义书签。

实验五-CDMA原理的matlab仿真

实验五-CDMA原理的matlab仿真

实验二 CDMA 原理的程序仿真实验目的:了解3G 移动通信网中关键技术CDMA 的实现原理 掌握matlab 编程,实现CDMA 原理仿真实验要求:掌握CDMA 原理掌握matlab 语言对于码分复用技术仿真的功能实验场景: 现有8个用户,通过信令两两建立连接通道,分别为发送方A 、B 、C 、D ,对应的接收方为A ’、B ’、C ’、D ’,A 和A ’的通信内容为-1,B 和B ’的通信内容为-1,C 和C ’的通信内容为1,D 和D ’的通信内容为1。

系统内具备以下条件:A 和A ’通信的正交码为H1: 1 1 1 1B 和B ’通信的正交码为H2: 1 -1 1 -1C 和C ’通信的正交码为H3: 1 1 -1 -1D 和D ’通信的正交码为H4: 1 -1 -1 1H1~H4具有正交性,比如[1 1 1 1]和[1 -1 1 -1]向量乘一下,为0,每两个不同的向量都这样,只有本身相乘是有值的。

发送过程信道ABC D-1-111相乘-1,-1,-1,-1, 1, 1, 1 1 1 1 1码 数据 1 -1 1 -1 1 1 -1 -11 -1 -1 1-1,-1,-1,--1,-1,-1,-1,-1, 1, -1,1, -1, 11, 1, 1, 1 1,1, 1,1,-1,-11, 1, 1, 1 1,-1,1,-1,-1,10,0,-4,0扩展相加每一个人对接收到的数据用自己的码进行译码,得到不同的结果,和发送的数据相同。

也就是说拥有不同的码,即使在同频率下相互干扰,信号叠加在一起,也能正确的得到各自想要的信息,这样很多人的都可以使用相同的频率,大大增加了通信容量实验参考知识: (1) 哈达马正交矩阵 方法为:hadamard(n)例如:运行hadamard(4),得到4*4矩阵:[ 1 1 1 1; 1 -1 1 -1; 1 -1 -1; 1 -1 -1 1](2) 整体代码 %发送部分d_o = round(rand(1,4))';d = 2*d_o - 1; %发送数据a->a': -1, b->b': -1 ...%正交码阵H =[ 1 1 1 1; 1 -1 1 -1; 1 1 -1 -1; 1 -1 -1 1 ] H = hadamard(4);d_t = repmat(d,1,4); %扩展数据 c_t = H.*d_t; %对应相乘 c = sum(c_t); %形成码字 %接收部分c_r = repmat(c,4,1).*H; %码字 e = mean(c_r,2); %接受数据figure(1) %显示发送和接受数据,比较是否相同 subplot(2,1,1); stem(d); subplot(2,1,2); stem(e);任务: (1) 修改发送数据,运行程序,观察发送数据和接受数据是否相同;给出过程。

基于MATLAB的WCDMA扩频通信系统的仿真设计与分析

基于MATLAB的WCDMA扩频通信系统的仿真设计与分析

基于MATLAB的WCDMA扩频通信系统的仿真设计与分析学院:通信工程学院专业:电子与通信工程姓名:李小瑜学号:1501120442摘要在当今信息快速传递的时代,在频带资源有限的情况下仍要求更高的通信功能和通信资源,而扩频通信技术应用频谱展宽原理使频带利用率大大提高。

随着通信技术的不断发展,第三代移动通信系统已经趋于成熟,扩频通信技术正是其中的关键技术,使得第三代移动通信具有很好的频谱效率和更大系统容量等优点。

本文首先对扩频通信技术的理论基础、基本原理及其优点进行了简单的介绍,然后对WCDMA系统的基本原理以及扩频技术在WCDMA中的应用进行了简单论述,最后通过Simulink对WCDMA扩频通信系统进行了仿真模型的建立并对仿真结果进行了比较分析,实现了信号的扩频、解扩、加扰、解扰、调制、解调等部分。

关键词:扩频WCDMA Simulink 仿真1. 扩频通信技术1.1 扩频通信技术的发展扩频通信技术最先主要应用于军事通信、电子对抗以及导航、测量等各个领域,直到80年代初才被应用于民用通信领域。

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

1.2 扩频通信系统的分类扩频通信按其工作方式的不同,可分为直接序列扩频(DS),跳频(FH),跳时(TH),以及它们的组合方式,如:FH/DS,TH/DS,FH/TH等。

不同的扩频技术,其抗干扰机理和对不同干扰的抵抗能力是不同的。

在民用中应用较为广泛的是直接序列扩频系统和跳频扩频系统。

下面主要对这两种扩频技术进行简单介绍。

(1)直接序列扩频系统直接序列扩频是直接利用具有高码率的扩频码系列采用各种调制方式在发端与扩展信号的频谱,而在收端,用相同的扩频码序去进行解码,把扩展宽的扩频信号还原成原始的信息。

基于MATLAB的CDMA系统RAKE接收机仿真分析

基于MATLAB的CDMA系统RAKE接收机仿真分析

基于MATLAB的CDMA系统RAKE接收机仿真分析CDMA(Code Division Multiple Access)是一种广泛应用于移动通信系统中的多址技术,其中RAKE接收机是一种常用于CDMA系统中的接收机。

在这篇文章中,我们将讨论基于MATLAB的CDMA系统中RAKE接收机的仿真分析。

首先,我们要理解什么是CDMA系统和RAKE接收机。

CDMA系统是一种用于无线通信的多址技术,它允许多个用户同时在相同频带上进行通信,通过使用不同的扩频码将用户之间的通信进行区分。

CDMA系统具有很好的抗干扰性能和较高的频谱利用率,因此被广泛使用于移动通信领域。

RAKE接收机是一种用于CDMA系统中信号接收的技术,它通过采用多个接收分支来接收和合并从不同路径到达的信号,以提高接收信号的质量。

RAKE接收机通常使用一个或多个强旗手路径来提取信号的多径分支,然后将这些分支合并以获得更好的信号质量。

现在,我们将讨论如何使用MATLAB进行CDMA系统中RAKE接收机的仿真分析。

首先,我们需要定义CDMA系统的参数。

这些参数包括扩频码、码片持续时间、符号持续时间、发射功率等。

我们可以使用MATLAB中的变量来定义这些参数。

接下来,我们需要生成CDMA系统中的发送信号。

我们可以使用MATLAB中的随机函数生成多个用户的发送信号,并使用对应的扩频码将其展开。

然后,我们可以将这些发送信号叠加在一起,并将它们传输到信道中。

然后,我们需要建立CDMA系统的信道模型。

在仿真中,我们可以使用MATLAB中的函数来模拟信道的特性,如多径传播和噪声。

我们可以使用瑞利衰落信道模型来模拟多径传播,并将高斯白噪声添加到接收信号中。

接着,我们可以实现RAKE接收机。

在MATLAB中,我们可以使用函数或自定义算法来实现RAKE接收机的功能。

首先,我们需要将接收信号传输到RAKE接收机中的各个分支。

然后,我们可以使用相关器来检测这些分支中的信号,并选择最强的分支作为接收信号的输出。

基于Matlab的CDMA通信系统下行信道的仿真

基于Matlab的CDMA通信系统下行信道的仿真

基于Matlab的CDMA通信系统下行信道的仿真网络财富 Intemet fortune Network World网络天地是网络行为虽然要讲道德,但是大家都不在意,便对自己放松了要求。

三是将网络作为失范行为的先进工具,也能意识到此种行为是不妥的,但却认为难以识破,可以逍遥法外。

四是存在一定的心理问题或精神疾患,无法正确认识和控制自己的网络行为,认识不到网络失范行为的严重后果。

表现在实际中,就是重技术轻伦理,重过程轻后果,重宣泄而轻他人,由此而产生网络行为的“道德感弱化”的现象。

有的大学生因好奇心和好胜心强,炫耀网络技术而导致网络伦理道德失范的行为。

3、高校教育管理工作存在误区一方面,在教育环节上,普遍重视学生网络技能的培养,而相对忽视网络法规、网络道德、网络行为规范方面的教育。

在“计算机基础课程”、“思想道德修养与法律基础”等基础课程中,普遍缺乏网络法规和网络道德方面的教育内容,对大学生的网络行为缺少有效地教育和引导。

另一方面,在管理环节上,缺乏规范化的学生网络行为管理制度,部分高校学生管理者的观念和方式比较陈旧,对学生的网络行为管理重视不够。

四、防范大学生网络伦理道德失范的对策现在的大学生德、智都没有缺失,不能让他们迷失于网络科技。

我们当从技术、伦理道德教育和自律培育等方面防范网络伦理道德的失范行为发生。

1、从技术上加强网络管理和监控,实现对不道德行为的规范首先要建立完善的网络管理和监控体制,实现对大学生道德行为的日常管理和监控的制度化;其次要建设“谁主管,谁负责”的责任体制,建立校园监管机制;再次要运用社会力量,共同实现对大学生网络的管理和监控。

加强网络技术研究,防止网络不道德行为的发生,可以通过防火墙技术中报告、监控、报警和登录到网络逻辑链路等方式把对网络和主机的冲突减少到最低限度。

运用数据加密技术防止重要信息的泄露。

运用掌上指纹扫描仪等现代化技术实现用户的登录。

通过网络通信协议增加网络安全功能,从而有效的防止利用病毒进行网络道德破坏行为的发生。

基于matlab的simulink的cdma系统多用户仿真要点

基于matlab的simulink的cdma系统多用户仿真要点

通信系统原理综设实验报告基于Matlab的CDMA系统的仿真设计教师评语:关键字:cdma,matlab,simulink,多用户检测,滤波器,抽样判决器希望你们都能理解这个系统,并且完善它,免费提供给下届师弟师妹。

老师真心坑爹。

Matlab2011,百度网盘mdl文件下载地址:一、引言CDMA是指在各发送端使用不相同、相互(准)正交的地址码调制所传送的信息,而在接收端在利用码型的(准)正交性,通过相关检测,从混合信号中选出相应的信号的一种技术。

实现CDMA的理论基础是扩频通信,即在发送端将待发送的数据用伪随机码进行调制,实现频谱扩展,然后进行传输,而在接收端则采用同样的编码进行解扩及相关处理,恢复原始的数据信息。

该实验系统通过对多用户下的DS-CDMA系统进行仿真设计,说明DS-CDMA通信系统的基本实现方式,实现PSK调制与解调,加入信道噪声,并实现多用户检测。

在增加用户的情况下,分别检测系统的误码率。

二、系统框图及分析图1DS-CDMA利用不同的地址码(PN序列)区分用户,地址码与用户数据(信码)相乘后得到扩频信号,经信道传输后,在接受端与本地地址码进行相关检测后,从中将地址码与本地地址码一致的用户数据选出,把不一致的用户除掉。

从而实现了利用正交地址码序列区分用户,体现了码分多址的通信方式。

三、系统具体实现及分析1、扩频设计1.1 基本原理扩频通信技术是一种信息传输方式,其信号所占有的频带宽度远大于所传信息必需的最小带宽;频带的扩展是通过一个独立的码序列来完成,用编码及调制的方法来实现的,与所传信息数据无关;在接收端则用同样的码进行相关同步接收、解扩及恢复所传信息数据。

(1)扩频通信的理论基础①香农公式②公式分析A、在给定的传输速率C不变的条件下,频带宽度W和信噪比S/N是可以互换的。

即可通过增加频带宽度的方法,在较低的信噪比情况下,传输信息。

B、扩展频谱换取信噪比要求的降低,正是扩频通信的重要特点,并由此为扩频通信的应用奠定了基础。

基于MATLAB的CDMA系统仿真

基于MATLAB的CDMA系统仿真

基于MATLAB的CDMA系统仿真姓名:班级:学号:指导老师:日期:作业要求1.分析附录的源程序,逐行给出中文注释,并分析仿真结果。

2.按照下列框图设计一个CDMA系统,并进行仿真。

1.分析附录的源程序,逐行给出中文注释,并分析仿真结果。

%main_IS95_forward.m%此函数用于IS-95前向链路系统的仿真,包括扩%频调制,匹配滤波,RAKE接收等相关通信模块。

%仿真环境: 加性高斯白噪声信道.%数据速率= 9600 KBps%clear allclose allclcdisp('--------------start-------------------');global Zi Zq Zs show R Gi Gqclear j;show = 0; %控制程序运行中的显示SD = 0; % 选择软/硬判决接收%-------------------主要的仿真参数设置------------------BitRate = 9600; %比特率ChipRate = 1228800; %码片速率N = 184; %源数据数MFType = 1; % 匹配滤波器类型--升余弦R = 5;%+++++++++++++++++++Viterbi生成多项式++++++++++++++++++G_Vit = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];%Viterbi生成多项式矩阵K = size(G_Vit, 2); %列数L = size(G_Vit, 1); %行数%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++++++Walsh矩阵++++++++++++++++++++++++ WLen = 64; %walsh码的长度Walsh = reshape([1;0]*ones(1, WLen/2), WLen , 1); %32个1 0行%Walsh = zeros(WLen ,1);%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++扩频调制PN码的生成多项式++++++++++++++%Gi = [ 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1]';%Gq = [ 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1]';Gi_ind = [15, 13, 9, 8, 7, 5, 0]'; %i路PN码生成多项式参数Gq_ind = [15, 12, 11, 10, 6, 5, 4, 3, 0]'; %q路PN码生成多项式参数Gi = zeros(16, 1); %16×1的0矩阵Gi(16-Gi_ind) = ones(size(Gi_ind));%根据Gi_ind配置i路PN码生成多项式Zi = [zeros(length(Gi)-1, 1); 1];% I路信道PN码生成器的初始状态Gq = zeros(16, 1); %16×1的0矩阵Gq(16-Gq_ind) = ones(size(Gq_ind)); %根据Gq_ind配置q路PN码生成多项式Zq = [zeros(length(Gq)-1, 1); 1];% Q路信道PN码生成器的初始状态%++++++++++++++++++++++++++++++++++++++++++++++++++++++%+++++++++++++++++++扰码生成多项式++++++++++++++++++++++Gs_ind = [42, 35, 33, 31, 27, 26, 25, 22, 21, 19, 18, 17, 16, 10, 7, 6, 5, 3, 2, 1, 0]'; Gs = zeros(43, 1); %43×1的0矩阵Gs(43-Gs_ind) = ones(size(Gs_ind)); %根据Gs_ind配置扰码生成多项式Zs = [zeros(length(Gs)-1, 1); 1];% 长序列生成器的初始状态%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++++++AWGN信道++++++++++++++++++++++++ EbEc = 10*log10(ChipRate/BitRate);%处理增益EbEcVit = 10*log10(L);EbNo = [-2 : 0.5 : 6.5]; %仿真信噪比范围(dB)%EbNo = [-2 : 0.5 : -1.5];%++++++++++++++++++++++++++++++++++++++++++++++++++++++%------------------------------------------------------%-------------------------主程序-------------------------ErrorsB = []; ErrorsC = []; NN = [];if (SD == 1) % 判断软/硬判决接收fprintf('\n SOFT Decision Viterbi Decoder\n\n');elsefprintf('\n HARD Decision Viterbi Decoder\n\n');endfor i=1:length(EbNo) %根据EbNo多次运行fprintf('\nProcessing %1.1f (dB)', EbNo(i));%输出当前EbNo值iter = 0; ErrB = 0; ErrC = 0;while (ErrB <300) & (iter <150)drawnow;%++++++++++++++++++++++发射机+++++++++++++++++++++++TxData = (randn(N, 1)>0);%生成源数据% 速率为19.2Kcps[TxChips, Scrambler] = PacketBuilder(TxData, G_Vit, Gs); %产生IS-95前向链路系统的发送数据包% 速率为1.2288Mcps[x PN MF] = Modulator(TxChips, MFType, Walsh);%实现IS-95前向链路系统的数据调制%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++++++++信道+++++++++++++++++++++++++++noise = 1/sqrt(2)*sqrt(R/2)*( randn(size(x)) + j*randn(size(x)))*10^(-(EbNo(i) - EbEc)/20);%生成噪声序列r = x+noise;%加入噪声%++++++++++++++++++++++++++++++++++++++++++++++++++++++%+++++++++++++++++++++++++接收机++++++++++++++++++++++++RxSD = Demodulator(r, PN, MF, Walsh); %软判决,速率为19.2 KcpsRxHD = (RxSD>0); % 定义接收码片的硬判决if (SD)[RxData Metric]= ReceiverSD(RxSD, G_Vit, Scrambler); %软判决else[RxData Metric]= ReceiverHD(RxHD, G_Vit, Scrambler); %硬判决end%++++++++++++++++++++++++++++++++++++++++++++++++++++++if(show)subplot(311); plot(RxSD, '-o'); title('Soft Decisions'); %软判决结果图subplot(312); plot(xor(TxChips, RxHD), '-o'); title('Chip Errors');%RAKE接收机输入符号与发送码相比出错的码subplot(313); plot(xor(TxData, RxData), '-o'); %硬判决接收机与发送数据相比的出错码title(['Data Bit Errors. Metric = ', num2str(Metric)]);pause;endif(mod(iter, 50)==0) %每50次保存一次fprintf('.');save TempResults ErrB ErrC N iter %保存结果endErrB = ErrB + sum(xor(RxData, TxData));%求出错比特数ErrC = ErrC + sum(xor(RxHD, TxChips)); %求出错码数iter = iter+ 1;%迭代次数endErrorsB = [ErrorsB; ErrB]; %存储各EbNo值下的出错比特数ErrorsC = [ErrorsC; ErrC]; %存储各EbNo值下的出错码数NN = [NN; N*iter]; %存储各EbNo值下的总数据码数目save SimData * %保存当前迭代的数据end%+++++++++++++++++++++++++误码率计算++++++++++++++++++++++++PerrB = ErrorsB./NN; %出错比特比例%PerrB1 = ErrorsB1./NN1;PerrC = ErrorsC./NN; %出错码比例Pbpsk= 1/2*erfc(sqrt(10.^(EbNo/10))); %EbNo的余误差PcVit= 1/2*erfc(sqrt(10.^((EbNo-EbEcVit)/10)));%EbNo-EbEcVit的余误差Pc = 1/2*erfc(sqrt(10.^((EbNo-EbEc)/10)));%EbNo-EbEc的余误差%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%+++++++++++++++++++++++++性能仿真显示++++++++++++++++++++++ figure;semilogy(EbNo(1:length(PerrB)), PerrB, 'b-*'); hold on;%信噪比误码率图% %semilogy(EbNo(1:length(PerrB1)), PerrB1, 'k-o'); hold on;% semilogy(EbNo(1:length(PerrC)), PerrC, 'b-o'); grid on;% semilogy(EbNo, Pbpsk, 'b-.^');% %semilogy(EbNo, PcVit, 'k-.x'); ylabel('BER');% semilogy(EbNo, Pc, 'b-.x');xlabel('信噪比/dB');ylabel('误码率');grid on;% legend('Pb of System (HD)', 'Pb of System (SD)', 'Pc before Viterbi of System',% ... 'Pb of BPSK with no Viterbi (theory)', 'Pc on Receiver (theory)');%% legend('Pb of System', 'Pc before Viterbi of System', ...%'Pb of BPSK with no Viterbi (theory)',%'Pc before Viterbi (theory)', 'Pc on Receiver (theory)');%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++disp('--------------end-------------------');%------------------------------------------------------% ************************beginning of file*****************************%PacketBuilder.mfunction [ChipsOut, Scrambler] = PacketBuilder(DataBits, G, Gs);%此函数用于产生IS-95前向链路系统的发送数据包%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% DataBits 发送数据(二进制形式)% G Viterbi编码生成多项式% Gs 长序列生成多项式(扰码生成多项式)% ChipsOut 输入到调制器的码序列(二进制形式)% Scrambler 扰码%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ global Zs %扰码状态K = size(G, 2); %维特比多项式的长度L = size(G, 1); %每个数据比特的码片数N = 64*L*(length(DataBits)+K-1);% 码片数(9.6 Kbps -> 1.288 Mbps)chips = VitEnc(G, [DataBits; zeros(K-1,1)]); % Viterbi编码% 交织编码INTERL = reshape(chips, 24, 16); % IN:列, OUT:行chips = reshape(INTERL', length(chips), 1); %速率=19.2 KBps% 产生扰码[LongSeq Zs] = PNGen(Gs, Zs, N);%根据生成多项式和输入状态产生长度为N的PN序列Scrambler = LongSeq(1:64:end);%扰码ChipsOut = xor(chips, Scrambler); %加扰%************************end of file***********************************% ************************beginning of file*****************************%VitEnc.mfunction y = VitEnc(G, x);% 此函数根据生成多项式进行Viterbi编码%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式的矩阵% x 输入数据(二进制形式)% y Viterbi编码输出序列%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++K = size(G, 1); %每个数据比特的码片数L = length(x); %输入数据的长度yy = conv2(G, x'); %二维卷积yy = yy(:, 1:L); %根据L重新设定yy长度y = reshape(yy,K*L, 1);%矩阵变形y = mod(y, 2); %模二运算% ************************end of file*********************************** % ************************beginning of file***************************** %PNGen.mfunction [y, Z] = PNGen(G, Zin, N);%% 此函数是根据生成多项式和输入状态产生长度为N的伪随机序列%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式% Zin 移位寄存器初始化% N PN序列长度% y 生成的PN码序列% Z 移位寄存器的输出状态%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ L = length(G);%扰码生成多项式长度Z = Zin; % 移位寄存器的初始化y = zeros(N, 1);%N*1的0矩阵for i=1:Ny(i) = Z(L); %获取当前状态输出值(移位寄存器的最后一位输出)Z = xor(G*Z(L), Z); %生成移位寄存器次态Z = [Z(L); Z(1:L-1)]; %移位寄存器后移1位end%yy = filter(1, flipud(G), [1; zeros(N-1, 1)]);%yy = mod(yy, 2);%************************end of file*********************************** % ************************beginning of file***************************** %Modulator.mfunction [TxOut, PN, MF] = Modulator(chips, MFType, Walsh);%此函数用于实现IS-95前向链路系统的数据调制%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% chips 发送的初始数据% MFType 成型滤波器的类型选择% Walsh walsh码% TxOut 调制输出信号序列% PN 用于扩频调制的PN码序列% MF 匹配滤波器参数%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ global Zi Zq show R Gi GqN = length(chips)*length(Walsh); %输出数据的数目% 输入速率= 19.2 KBps, 输出速率= 1.2288 Mcpstmp = sign(Walsh-1/2)*sign(chips'-1/2); %求扩频调制码数目的中间变量chips = reshape(tmp, prod(size(tmp)), 1);%矩阵变形[PNi Zi] = PNGen(Gi, Zi, N);%i路PN序列生成[PNq Zq] = PNGen(Gq, Zq, N);%q路PN序列生成PN = sign(PNi-1/2) + j*sign(PNq-1/2); %i、q路以复数形式合并chips_out = chips.*PN;%得到复数形式的码序列chips = [chips_out, zeros(N, R-1)];%码序列0插值chips = reshape(chips.' , N*R, 1);%矩阵变形%成型滤波器switch (MFType) %根据MFType选择滤波器类型case 1%升余弦滤波器L = 25;L_2 = floor(L/2);n = [-L_2:L_2]; %升余弦滤波器点数B = 0.7; %B越大拖尾越小MF = sinc(n/R).*(cos(pi*B*n/R)./(1-(2*B*n/R).^2)); %升余弦滤波器形状MF = MF/sqrt(sum(MF.^2)); %升余弦滤波器特性曲线case 2%矩形滤波器L = R;L_2 = floor(L/2);MF = ones(L, 1); %1->0,锐截止MF = MF/sqrt(sum(MF.^2)); %矩形滤波器特性曲线case 3%汉明滤波器L = R;L_2 = floor(L/2);MF = hamming(L);%生成汉明滤波器MF = MF/sqrt(sum(MF.^2));%汉明滤波器特性曲线endMF = MF(:); %转置TxOut = sqrt(R)*conv(MF, chips)/sqrt(2);%通过成型滤波器TxOut = TxOut(L_2+1: end - L_2); %限定序列区间if (show)figure;subplot(211); plot(MF, '-o'); title('Matched Filter'); grid on;%成型滤波器特性曲线图subplot(212); psd(TxOut, 1024, 1e3, 113); title('Spectrum'); %功率谱密度估计end% ************************end of file***********************************% ************************beginning of file*****************************%Demodulator.mfunction [SD] = Demodulator(RxIn, PN, MF, Walsh);% 此函数是实现基于RAKE接收机的IS-95前向信链路系统的数据包的解调%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% RxIn 输入信号% PN PN码序列(用于解扩)% MF 匹配滤波器参数% Walsh 用于解调的walsh码% SD RAKE接收机的软判决输出%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% DEMODULATOR This function performs demodulation of the forward% Channel packet, based on RAKE Receiver% Block Diagram% Input Signal -> [Matched Filter] -> [Sampler] -> [RAKE Receiver] -> [Walsh] -> [DeSpreading]% Inputs: RxIn - input signal (I/Q) analoge% PN - PN sequence (used for De-spreading)% MF - matched filter taps% Walsh - Used row of Walsh matrix for recovering %% Outputs: SD - Soft Decisions of RAKE receiver%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++global RN = length(RxIn)/R; %有用码的个数L = length(MF);L_2 = floor(L/2);rr = conv(flipud(conj(MF)), RxIn); %通过匹配接收滤波器rr = rr(L_2+1: end - L_2); %限定接收符号序列长度Rx = sign(real(rr(1:R:end))) + j*sign(imag(rr(1:R:end)));%接收符号采样Rx = reshape(Rx, 64, N/64); %列导向Walsh = ones(N/64, 1)*sign(Walsh'-1/2);%行导向walsh码PN = reshape(PN, 64, N/64)';%矩阵变形PN = PN.*Walsh;%walsh正交% 输入速率= 1.2288 Mpbs, 输出速率= 19.2 KBpsSD= PN*Rx;%解扩SD= real(diag(SD));%确定软判决输出% ***********************end of file***********************************% ************************beginning of file*****************************%ReceiverSD.mfunction [DataOut, Metric] = ReceiverSD(SDchips, G, Scrambler);% 此函数用于实现基于Viterbi译码的发送数据的恢复%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% SDchips 软判决RAKE接收机输入符号% G Viterbi编码生成多项式矩阵% Scrambler 扰码序列% DataOut 接收数据(二进制形式)% Metric Viterbi译码最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++if (nargin == 1)%判断只有SDchips传入时在此生成Viterbi编码生成多项式矩阵G = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];end% 速率=19.2 KBpsSDchips = SDchips.*sign(1/2-Scrambler);%解扰INTERL = reshape(SDchips, 16, 24);%解交织SDchips = reshape(INTERL', length(SDchips), 1); % 速率=19.2 KBps[DataOut Metric] = SoftVitDec(G, SDchips, 1);%实现软判决输入的Viterbi译码% ************************end of file**********************************% ************************beginning of file*****************************%SoftVitDec.mfunction [xx, BestMetric] = SoftVitDec(G, y, ZeroTail);%% 此函数是实现软判决输入的Viterbi译码%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式的矩阵% y 输入的待译码序列% ZeroTail 判断是否包含‘0’尾% xx Viterbi译码输出序列% BestMetric 最后的最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++L = size(G, 1); % 输出码片数K= size(G, 2); % 生成多项式的长度N = 2^(K-1); % 状态数T = length(y)/L; % 最大栅格深度OutMtrx = zeros(N, 2*L); %输出矩阵的定义for s = 1:Nin0 = ones(L, 1)*[0, (dec2bin((s-1), (K-1))-'0')];in1 = ones(L, 1)*[1, (dec2bin((s-1), (K-1))-'0')];out0 = mod(sum((G.*in0)'), 2);out1 = mod(sum((G.*in1)'), 2);OutMtrx(s, :) = [out0, out1]; %生成输出矩阵endOutMtrx = sign(OutMtrx-1/2);PathMet = [100; zeros((N-1), 1)]; % 初始状态= 100PathMetTemp = PathMet(:,1); %副本Trellis = zeros(N, T); %栅格的矩阵Trellis(:,1) = [0 : (N-1)]';%给第一列赋值y = reshape(y, L, length(y)/L);%矩阵按输出码片数变形for t = 1:T %主栅格计算循环yy = y(:, t); %取出y的第t列for s = 0:N/2-1[B0 ind0] = max( PathMet(1+[2*s, 2*s+1]) + [OutMtrx(1+2*s, 0+[1:L]) * yy; OutMtrx(1+(2*s+1), 0+[1:L])*yy] );[B1 ind1] = max( PathMet(1+[2*s, 2*s+1]) + [OutMtrx(1+2*s, L+[1:L]) * yy; OutMtrx(1+(2*s+1), L+[1:L]) * yy] );PathMetTemp(1+[s, s+N/2]) = [B0; B1]; %改变状态Trellis(1+[s, s+N/2], t+1) = [2*s+(ind0-1); 2*s + (ind1-1)];%生成栅格矩阵endPathMet = PathMetTemp;%赋状态值endxx = zeros(T, 1);%生成单列0矩阵,输出变量if (ZeroTail) %确定最佳度量BestInd = 1;else[Mycop, BestInd] = max(PathMet); %非‘0’尾,取最大值所在位置endBestMetric = PathMet(BestInd); %得到最后的最佳度量xx(T) = floor((BestInd-1)/(N/2)); %赋值xx最后一个数NextState = Trellis(BestInd, (T+1)); %从栅格矩阵获得初态for t=T:-1:2xx(t-1) = floor(NextState/(N/2));%倒序生成xxNextState = Trellis( (NextState+1), t); %从栅格矩阵获得次态endif (ZeroTail)xx = xx(1:end-K+1);%限定译码输出序列长度end% ************************end of file***********************************% ************************beginning of file*****************************%ReceiverHD.mfunction [DataOut, Metric] = ReceiverHD(HDchips, G, Scrambler);% 此函数用于实现基于Viterbi译码的硬判决接收机%+++++++++++++++++++++++variables++++++++++++++++++++++++++++%HDchips 硬判决RAKE接收机输入符号% G Viterbi编码生成多项式矩阵% Scrambler 扰码序列% DataOut 接收数据(二进制形式)% Metric Viterbi译码最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++if (nargin == 1) %判断只有HDchips传入时在此生成Viterbi编码生成多项式矩阵G = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];end% 速率=19.2 KBpsHDchips = xor(HDchips, Scrambler);%解扰INTERL = reshape(HDchips, 16, 24);%解交织HDchips = reshape(INTERL', length(HDchips), 1);%速率=19.2 KBps[DataOut Metric] = VitDec(G, HDchips, 1);%维特比解码%************************end of file***********************************% ************************beginning of file*****************************%VitDec.mfunction [xx, BestMetric] = VitDec(G, y, ZeroTail);%% 此函数是实现硬判决输入的Viterbi译码%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式的矩阵% y 输入的待译码序列% ZeroTail 判断是否包含‘0’尾% xx Viterbi译码输出序列% BestMetric 最后的最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++L = size(G, 1); % 输出码片数K= size(G, 2); % 生成多项式长度N = 2^(K-1); % 状态数T = length(y)/L; % 最大栅格深度OutMtrx = zeros(N, 2*L);%输出矩阵的定义for s = 1:Nin0 = ones(L, 1)*[0, (dec2bin((s-1), (K-1))-'0')];in1 = ones(L, 1)*[1, (dec2bin((s-1), (K-1))-'0')];out0 = mod(sum((G.*in0)'), 2);out1 = mod(sum((G.*in1)'), 2);OutMtrx(s, :) = [out0, out1];%生成输出矩阵endPathMet = [0; 100*ones((N-1), 1)];%初始状态为0PathMetTemp = PathMet(:,1);%副本Trellis = zeros(N, T);%栅格的矩阵Trellis(:,1) = [0 : (N-1)]';%给第一列赋值y = reshape(y, L, length(y)/L);%矩阵按输出码片数变形for t = 1:T %主栅格计算循环yy = y(:, t)';%取出y的第t列for s = 0:N/2-1[B0 ind0] = min( PathMet(1+[2*s, 2*s+1]) + [sum(abs(OutMtrx(1+2*s, 0+[1:L]) - yy).^2); sum(abs(OutMtrx(1+(2*s+1), 0+[1:L]) - yy).^2)] );[B1 ind1] = min( PathMet(1+[2*s, 2*s+1]) + [sum(abs(OutMtrx(1+2*s, L+[1:L]) - yy).^2); sum(abs(OutMtrx(1+(2*s+1), L+[1:L]) - yy).^2)] );PathMetTemp(1+[s, s+N/2]) = [B0; B1];%改变状态Trellis(1+[s, s+N/2], t+1) = [2*s+(ind0-1); 2*s + (ind1-1)];%生成栅格矩阵endPathMet = PathMetTemp;%赋状态值endxx = zeros(T, 1);%生成单列0矩阵,输出变量if (ZeroTail) %确定最佳度量BestInd = 1;else[Mycop, BestInd] = min(PathMet);%非‘0’尾,取最小值所在位置endBestMetric = PathMet(BestInd);%得到最后的最佳度量xx(T) = floor((BestInd-1)/(N/2));%赋值xx最后一个数NextState = Trellis(BestInd, (T+1));%从栅格矩阵获得初态for t=T:-1:2xx(t-1) = floor(NextState/(N/2)); %倒序生成xxNextState = Trellis( (NextState+1), t);%从栅格矩阵获得次态endif (ZeroTail)xx = xx(1:end-K+1); %限定译码输出序列长度end% ************************end of file***********************************运行结果:图1 升余弦滤波器时的结果图2 矩形滤波器时代结果图3 矩形滤波器时代结果2.按照下列框图设计一个CDMA系统,并进行仿真。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CDMA通信系统的仿真分析(燕山大学信息科学与工程学院)摘要:码分多址(CDMA)以扩频信号为基础,利用不同的码型实现同一载波上的不同用户的信息传输,是第三代数字蜂窝移动通信系统采用的多址技术。

本次项目设计使用Simulink仿真工具对4用户的CDMA无线通信系统进行建模、仿真和分析,观察用户和扩频码波形,利用8psk实现调制,分析了信噪比、m序列抽样时间、多址干扰对系统误码率的影响。

关键词:码分多址、Simulink仿真、扩频、误码率分析1前言CDMA通信,是利用相互正交(或准正交)的编码分配给不同的用户调制信号,实现多用户同时使用一个频率接入网络进行通信。

如果从频域和时域来观察,多个CDMA信号是相互重叠的,或者说它们均占有相同的频段和时间,接收机用相关器在多个CDMA信号中选出其中使用预定码型的信号。

由于利用相互正交(或准正交)的编码去调制信号,会将原信号的频谱扩展,因此又称为扩频通信。

CDMA具有伪随机编码调制和信号相关处理两大特点,因此CDMA具有许多优点:抗干扰、抗噪声、抗多径衰落、能在低功率下工作、保密性强,可多址复用和任意选址等。

CDMA技术在第三代移动通信中得到广泛应用。

本次项目设计使用Simulink仿真工具对4用户的CDMA无线通信系统进行建模、仿真和分析,观察用户和扩频码波形,利用8psk实现调制,分析了信噪比、m序列抽样时间、多址干扰对系统误码率的影响。

2仿真系统整体设计2.1扩频调制原理扩频通信的一般原理如图1所示。

在发送端的信息经信息调制形成数字信号,然后由扩频码发生器产生扩频码序列去调制数字信号以展宽信号的频谱。

展宽以后的信号在对载频进行调制,经过射频功率放大器发射到天线上发射出去。

在收端,从接受天线上收到的宽带射频信号,经过输入电路、高频放大器后送入变频器,下变频至中频,然后由本地产生的与发端完全相同的扩频码序列去解扩,最后经信息解调,恢复成原始信息输出。

图1 扩频系统原理框图按照扩展频谱的方式的不同,目前的扩频通信可以分为:直接序列(DS)扩频,跳频(FH),调时(TH),以及上述几种方式的组合。

直接序列(DS)扩频:直接用具有高码率的扩频码序列在发端去扩展信号的频谱。

而在收端,用相同的扩频码序列去进行解扩,把展宽的扩频信号还原成原始的信息。

跳频(FH):用一定码序列进行选择的多频率频移键控。

即用扩频码序列去进行频移键控调制,使载波频率不断地跳变,所以称为跳频。

系统有几个、几十个、甚至上干个频率、由所传信息与扩频码的组合去进行选择控制,不断跳变。

所以,跳频系统也占用了比信息带宽要宽得多的频带调时(TH):跳时是使发射信号在时间轴上跳变。

首先把时间轴分成许多时片。

在一帧内哪个时片发射信号由扩频码序列去进行控制。

可以把跳时理解为:用一定码序列进行选择的多时片的时移键控。

由于采用了很窄的时片去发送信号,相对说来,信号的频谱也就展宽了。

本次三级项目CDMA系统使用直接扩频的方法。

2.2仿真电路整体设计根据直接扩频的原理框图,在Simulink仿真工具可设计总电路图如图2。

图2 CDMA系统仿真电路设计思路与各模块功能见第3节。

3模块设计原理及实现根据仿真要求与设计电路,该设计大致分为以下几个模块:扩频模块,调制解调模块,解扩模块,误码率检测。

现分别对各模块做详细说明。

3.1扩频模块采用直接扩频方法即直接用具有高码率的扩频码序列在发端去扩展信号的频谱。

而在收端,用相同的扩频码序列去进行解扩,把展宽的扩频信号还原成原始的信息。

1.信源设计利用二进制伯努利产生器产生随机二进制序列来表示各用户的信息,此时的信息码元为单极性波形。

2.伪随机码序列生成器利用PN序列生成器产生扩频调制需要的随机序列,使用相同的生成多项式:[1 0 0 0 0 1 1],不同的初始状态,产生准正交关系的周期性的m序列。

m 序列是最长线性移位寄存器序列的简称。

它是由多级移位寄存器或其他延迟元件通过线性反馈产生的最长的码序列。

由于m 序列容易产生、规律性强、有许多优良的性能,在扩频通信中最早获得广泛的应用。

如图3所示,m 序列可由二进制线性反馈移位寄存器产生。

它主要由n 个串联的寄存器、移位脉冲产生器和模2加法器组成。

图中第i 级移存器的状态ai 表示,ai=0 或ai=1,i=整数。

反馈线的连接状态用ci 表示,ci=1表示此线接通(参加反馈),ci=0表示此线断开。

由于反馈的存在,移存器的输入端受控地输入信号。

反馈线位置不同将出现不同周期的不同序列,我们希望找到线性反馈的位置,能使移存器产生的序列最长,即达到周期P=2n-1。

按图2中线路连接关系,可以写为:∑=----=⊕⊕⊕⊕=n i in i n n n n n a c a c a c a c a c a 10112211... (模2)该式称为递推方程。

图3 线性反馈移位寄存器3.信息调制利用抽样判决器将单极性信息码元转化为双极性信号。

4.扩频模块利用乘法器完成扩频过程。

扩频模块的仿真电路连接如图所示,同时将4个用户的扩频模块封装为子模块,简化电路。

图4 扩频模块电路图5 扩频各点波形3.2调制解调模块1.信道选取添加AWGN模块,即使用加性高斯白噪声信道。

加性高斯白噪声在通信领域中是一种幅度服从高斯分布,各频谱分量在频谱域上服从均匀分布的噪声信号。

该噪声为一种理想噪声信号,实际的噪声往往只在某一段内可以使用高斯白噪声特性进行近似处理。

在信号处理领域,对信号系统的噪声性能简单分析中,一般均假设系统所产生的噪音或受到的噪声的干扰是高斯白噪声。

2.调制解调模块调制采用M-PSK调制模块(M-PSK Modulator Baseband),设置为8进制相移键控。

8进制相移键控即是将输入二进制数字序列中每3比特分成一组,共有8种组合,即000,001,010,011,100,101,110,111。

用8种相位之一去代表每种排列。

解调采用M-PSK解调模块(M-PSK Modulator Baseband),同样设置为8进制。

8PSK信号相位如图6所示:图6 8PSK相位星座图8psk调制解调模块仿真电路连接如图7所示。

图7 8psk 调制解调模块仿真电路 3.3 解扩模块解扩过程为用本地产生的与发端完全相同的扩频码序列去解扩,最后经信息解调,恢复成原始信息输出。

1.相关检测原理DS-CDMA 系统的载波调制方式可采用调频或调相,以调相方式应用最广。

以2PSK 调制为例,发端用户1发射的信号为t t c t d t S c ωcos ).().()(111=上式中,d1(t).c1(t)是(-1,+1)域二元数据,则S1(t)是0/π调相的2PSK 信号。

故载波调制器就是模拟乘法器。

式1可写成如下形式t t c t d t S c ωcos ).().()(111= t t c t d c ωcos )]()([11⋅=或t t c t d t S c ωcos ).().()(111= )(]cos )([11t c t t d c ⋅⋅=ω上式表明,发端的DS-CDMA 射频信号,可通过先扩频调制再载波调制或先载波调制再扩频调制得到,二者是等效的。

与此对应,收端也有二种等效的解调方案。

本实验系统采用的方案是:发端先扩频调制再载波调制,收端先载波解调再扩频解调。

发端N 个用户发射在空中的信号在时域、频域完全混叠在一起,收端每一个用户都可收到。

收端第1个用户天线收到的信号∑∑====N i N i c i i i i tt c t d A t S t S 11cos ).().(.)()(ω解调后的信号:∑='=N i i i i EX t c t d A t S 1)().(.)(经过与本地地址码c1(t)相关检测后输出信号:∑⎰⎰=⋅⋅⋅'=⋅='N i Ti i i T EX dt t c t c t d A dt t c t S d 101011)()()()()(上式中,T 为地址码序列周期,等于信码周期Tb ,故积分号中信码di(t)是常数可提出,得:∑⎰=⋅⋅⋅'='N i T i i i dt t c t c t d A d 1011)()()(已知PN 序列的互相关函数为0,即:⎰≠=-⋅=T j i j i j i dt t c t c R 0,,0)()()(ττ代入上式,根据地址码的正交性关系可得: )()()(111111t d A o R t d A d ''='=' 上式中⎰⋅=Tdt t c t c R 0111)()()0(为c1(t)的自相关函数峰值。

'1d 经采样后得到方波形式的信码d1(t)。

收端用户1从发端N 个用户发射在空中,在时域及频域完全混叠的DS-CDMA 信号中,接收到发端用户1的信码。

2.解扩模块设计依据上述原理,解扩模块设计如下图。

图8 解扩模块模块仿真电路 3.4 系统误码率分析使用误码率分析仪模块Error Rate Calculation ,方便得出经传输输出端相对于入端的误码率大小,显示模块Display 显示出误码率大小、错误码元个数,传输码元个数。

图9 误码率分析模块4 仿真结果分析4.1 扩频前后频谱观察经过相乘器,信息码元与高速率伪随机序列码元相乘完成扩频调制,使用频谱仪,观察扩频前后频谱。

图10 扩频前后频谱对比(左)扩频前,主瓣宽度范围小(右)扩频后,能量均匀分布,频谱展宽4.2信道信噪比对误码率影响加性高斯白噪声信道中,通过参数“SNR”设置信道信噪比,取信噪比为5:20,观察用户1的误码率变化,并绘图。

结论:信道信噪比微小的改善对误码率的提高都有显著促进作用。

图11 信道信噪比对误码率影响4.3m序列抽样时间对误码率的影响观察m序列抽样时间对误码率的影响,实际应用的扩频通信系统中,扩频码速率是信息速率的几十倍甚至是上万倍,本次仿真设计中,为便于波形观察,所选倍数较小,但不失原理的一般性讨论。

图12观察m序列抽样时间对误码率的影响结论:观察m序列的码元速率越大,扩频通信的误码率越小。

4.4用户数量对误码率影响增加系统中用户数量,多址干扰的增大,故误码率增加,这也是多址干扰是限制CDMA通信系统容量的原因。

m序列序列产生器中,移位寄存器的位数为6,若使用相同的生成多项式,则可产生的m序列的相关性已确定,新增加用户使用的m序列,因其相关性与现有各用户m序列相关性不同,因此对各用户的干扰程度也不相同,总体来说,用户增加,多址干扰增大,误码率增加。

5收获总结本次CDMA通信系统的仿真系统设计锻炼了我们使用matlab中simulink仿真工具的基本技能,对CDMA通信系统的的原理有了更深的认识。

相关文档
最新文档