CDMA2000_RAKE接收机的Matlab仿真
Rake接收机仿真

3G移动通信实验报告实验名称:Rake接收机仿真学生姓名:学生学号:学生班级:所学专业:实验日期:1.实验目的1. 了解Rake接收机的原理。
2. 分析比较三种不同合并算法的性能。
2.实验原理移动通信系统工作在VHF和UHF两个频段(30——3000MHz),电波以直射方式(即“视距”方式)在靠近地球表面的大气中传播。
由于低层大气并非均匀介质,会产生折射和吸收现象;而且传输路径上遇到的各种障碍物(如山,高楼,树等)还可能发生反射、绕射和散射等,到达接收方的信号可能来自不同的传播路径。
即移动通信的信道是典型的多径衰落信道,如下图所示:图9-1 多径传播示意图多径传播将引起接受信号中脉冲宽度扩展,称为时延扩展。
时延扩展的时间可以用第一个码元信号至最后一个多径信号之间的时间来测量。
时延扩展会引起码间串扰,严重影响数字信号的传输质量。
分集技术是克服多径衰落的一个有效方法。
包括频率分集,时间分集、空间分集和极化分集。
其基本原理是接收端对多个携带有相同信息但衰落特性相互独立的多径信号合并处理之后进行判决,从而将“干扰”变为有用信息,提高系统的抗干扰能力。
本仿真采用在CDMA系统中广泛使用的Rake接收技术,且为时间分集。
因为当传播时延超过一个码片周期时,多径信号实际上可看成是互不相关的。
Rake接收机采用一组相关接收机,分布于每条路径上,各个接收机与同一期望信号的多径分量之一相关,根据各个相关输出的相对强度加权后合成一个输出。
根据加权系数的选择原则,有三种合并算法:选择式合并,等增益合并和最大比合并。
Rake接收机的相关器的原理如图:图9-2 Rake接收机的相关器的原理假设采用M个相关器去接收M个多径信号分支,其中12,,,Mααα是每一条分支的乘性系数,它们的取值是根据所采用组合方式(例如最大比合并、等增益合并等)而可调的。
不妨令相关器1与最强的多径支路1m同步,并且多径支路2m比多径支路1m延迟时间1τ到达接收端。
基于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接收机中的各个分支。
然后,我们可以使用相关器来检测这些分支中的信号,并选择最强的分支作为接收信号的输出。
CDMA2000_RAKE接收机的Matlab仿真

摘要近年来,CDMA已成为移动通信领域的研究热点。
CDMA2000是北美基于IS-95系统发展而来的第三代移动通信系统,在前向信道结构上采用直接序列扩频和多载波两种方式来达到提供宽带数据业务的目的。
CDMA2000标准中,详细规定了发射技术的具体建议,但接收部分涉及的不多。
本文建立了多信道软件无线电接收机数学模型,在此基础上提出一种数字中频在CDMA2000多载波接收系统的设计及应用方案,并给出了系统各个单元的设计和性能参数,最后仿真验证了方案的可行性。
本文基于Windows 平台,使用Matlab中的软件包Simulink 对CDMA2000移动通信系统的接收机进行了仿真,主要是对“CDMA2000 移动台发射机”进行了基于时间流的仿真与实现。
分析了信号在“CDMA2000移动台发射机”的主要处理流程,包括信源编码,信道编码,数据调制,以及基带滤波等过程。
关键词:CDMA2000;接收机;扩频通信;Simulink RAKEAbstractThis paper mainly based upon the Windows flatform, simulates the R-TCH of theCDMA2000 mobile communicationsystems using “Simulink” in “Matlab”.Mainly simulates “the CDMA2000 mobile station transmitter” in a timed-stream mode,andanalyses the main treatment processing flow of signals in the “CDMA2000 mobile station transmitt er”, including source encoder,channel encoder, data modulation and base-band filtering process.KeyWords: CDMA2000; R-TCH; Spectrum-Spreading Communication; Simulink目录1.绪论2 研究背景及研究意义2.1 研究背景2.2 研究意义3 CDMA2000 发展与介绍3.1 CDMA 简介3.2 CDMA 2000发展史4 CDMA2000接收机的建模4.1软件无线电接收机数学模型4.2多径分集接收技术4.2.1多径分集接收技术感念4.22分集接收技术在CDMA2000具体实现方法5 CDMA2000接收机整体设计5.1 CDMA2000 模块分化5.1.1接收机信道介绍5.2.2 模块分化图5.2.3 RAKE接收器介绍以及流程图5.2数据帧处理模块设计5.3 HPSK模块设计5.4移动台发射机的实现框图6.仿真分析6.1信道比特流的输入62 CRC编码6.3卷积编码6.4符号重复6.5符号抽取6.6块交织6.7正交扩频6.8 HPSK调制7.结束语1.绪论CDMA目前已成为第三代蜂窝移动通信系统的首选技术(以WCDMA和CDMA2000为代表),国内外都在研究如何高质量地实现第三代移动通信系统。
cdma2000反向业务信道在Matlab中的仿真

cm 0 d a00系统 以卷积 码作为主要的纠错编码 手段 , 编码器约束长度为 9 不 同的数据速率采用不 ,
De ,2 o c o6
c ma 0 0 反 向 业 务 信 道 在 Mal b 中 的 仿 真 d 20 t a
曾志刚 ,胡晓 东
( 湖南工程学院 电气与信息工程系, 湖南 湘潭 4 10 ) 111
摘
要 :介绍 了作为第三代移动通信技术的 cm 20 d a00的应用发展情况, 详细分析 了 cm 2 0 d a00的反 向
性能的要求 ,d a00在 I 9 cm 2 0 S一 5的基础上采用 了 增强 的信 道 编码 , 改进 的调制方 式 , 加 了反 向导 频 增
信道、 反向接入信道 、 反向公共控制信道、 前向功率
控制等技术¨ . 在国外 , 第三代移动通信 的网络建设 已经广泛 开展 , 在国内 , 中国联通也从 20 0 2年开始部署 c— d m 20 a00网络 . 虽然如此, 但国内对 cm 20 信道 d a00 特性的深入研究还有很多工作要做.
容量更高 , 支持高速率链接和分组服务, 而且与 I S
9 向下兼容 , 5 为移动通信系统 向第三代平稳过渡 提供了便利. 为了满足第三代移动通信系统标准对
一
的完全兼容 , 技术延续性好 , 可靠性较高. 这些特点 使得 cm 20 d a00成为第二代 向第三代移动通信系统
平滑过渡时所采用的主流技术之一, cm 2 0 采用扩频速率为 S 1 即前向信道 和 d a0 0 R, 反向信道均采用码片速率为 12 8M / 的单载波 .8 B s 直接序列扩频 方式. 因此 , 它可以与 I 9 ( / ) S一 5 A B 兼容 , 以便 平滑过渡. 由于 cm 20 采用 了反 向 d a00l 相干解调 , 快速前 向功率控制 , 发送分集和 T r ub o编 码等新技术 , 其容量 比I - 5大大提高. S 9
基于MATLAB的CDMA通信系统的仿真

基于MATLAB勺CDM軀信系统的仿真摘要:利用MATLA呼台的Simulink可视化仿真功能,结合CDMA勺实际通信情况,对CDMA!信系统的实现完整以及发送到接收的端到端的CDMA无通信系统的建模、仿真和分析。
本次介绍了CDMA勺主要环节,包括扩频技术、信道等参数设置。
关键字:码分多址;扩频;MATLA;B Simulink1 CDMA 技术基础1.1 扩频定义:扩频技术就是将信息的频谱展宽后进行传输的技术。
理论基础:在白噪声干扰的条件下,信道容量—信道带宽S —信号平均功率 N —噪声平均功率论:在信道容量C 不变的情况下,信道带宽B 与信噪比S/N 完全可以互即可以通过增大传输系统的带宽可以在较低信噪比的条件下获得比 较满意的传输质量。
-fSB ----------k佶号JfO扩频后i 的佶号麵图1扩频过程扩频通信系统的主要特点:(1)隐蔽性和保密性;(2 )抗干扰和抗多径衰落能力强;(3)实现多址技术、增加容量、提高频率复用率;( 4)占用频带较宽,系统复杂性增加。
1.2 CDMA 仿真系统模型建立信源高昕a嗓声图2本次仿真CDM 系统组成框图C = B Iog2 (1 + S / N ) 香农公式相交换,2 Matlab 的CDMA 通信系统的仿真2.1直接扩频的码分多址通信系统的仿真模型CHKBFtt 蛇I?曲寮 FtUrmEeriJIi& n 町直接扩频的码分多址通信系统的仿真模型2.2 仿真系统的各部分分析宽度为6X 10 - 6 s 。
(1)第一路伯努利二进制随机信号发生器iT —l"g<j| lii Sin OffB«rioLjlli B -in-ary---图4二进制伯努利序列产生器 图5第一路发生器产生的仿真波形h_n_n_rir r-r-1 EUJR . jii _k - ni~ tna-KDspley|~u n rj strMli Ernar/Berculli 帥町 Ge-teiEbflMl€ei[z3.31C21zg£淞1S 叭训 i Sinijy3finGfEO2削LcncEGenermxIrteucDsli ^*?**tM[;DE3i :i F It^lQajsa.q Sse2.2.1 伯努利二进制随机信号发生器三个 Bernoulli Random Binary Generator(伯努利二进制随机信号发生器)表示三个不同的通信用户发射各自的通信信息 (基带信号),码元u 呦C 就Ber J Hi Bi n 17*T JC Enn 社t許离亡E IdIstizinPLTII } EiwRstiCal ulatUT 也) f 匚卄1"K E™ mat表2第一路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 12345 Samp le time 3*2e-7 Frame-base out putsUncheckedIn terl pret vector p arameter as 1-DUnchecked(2)第二路伯努利二进制随机信号发生器□crnobll i曰 i narv曰crnmu Hi Bi n ary图6二进制伯努利序列产生器表3第二路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 54321 Samp le time 3*2e-7 Frame-base out putsUnchecked Interlpret vector parameter as 1-DUnchecked(3)第三路伯努利二进制随机信号发生器图9第三路发生器产生的仿真波形D …1 — III n ■ 1 1 …1 1 [・ py.—…IT11 1 1 ■ 1= ---- ■- ------ ! - ----- 1 - — 1 ■ ■■ 1 ■ 1 1 1 - - 1 ■ I---- ■ : 7 --- ■ 1 h- ■----1 ■L ■* ~-12H01 0.01R —iCigjIli binaryBcjma-Lklli ainnjy图8二进制伯努利序列产生器图7第二路发生器产生的仿真波形表4第二路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 13542 Samp le time 3*2e-7 Frame-base out putsUnchecked In terl pret vector p arameter as 1-DUnchecked222 直接扩频图10 PN 伪随机序列产生器表 5 PN Seque neeGen erator 参数设置(rf-iltrHlcVf 戸&丁也卸“讥"卜成寧项式JCl 1 0 0 J]to 1 0 0]Sc^itTfnr 匱羽荐曲) 0SiHupk t inK <釆样 时阪P裁一T本系统中的m 序列周期是15,码元宽度为2X 10 — 7 s ,基带信号码元宽度是m 序列码元宽度的30倍, 正好是两个m 序列的周期。
rake接收机仿真matlab

3.3 单用户RAKE接收机性能仿真3.3.1 仿真程序利用MATLAB软件来仿真RAKE接收机分集接收性能的程序如下:Numusers=1; %用户数Nc=16; %扩频因子ISI_Length=1; %每径延时为ISI_Length/2EbN0db = [0:2:10]; %信噪比,单位dbTlen=5000;%数据长度Bit_Error_Number1=0;%误比特率的初始值Bit_Error_Number2=0;Bit_Error_Number3=0;power_unitary_factor1=sqrt(5/9);%每径功率因子power_unitary_factor2=sqrt(3/9);power_unitary_factor3=sqrt(1/9);s_initial=randsrc(1,Tlen);%数据源%产生Walsh 矩阵Wal2=[1 1;1 -1];Wal4=[Wal2 Wal2;Wal2 Wal2*(-1)];Wal8=[Wal4 Wal4;Wal4 Wal4*(-1)];Wal16=[Wal8 Wal8;Wal8 Wal8*(-1)];%扩频s_spread=zeros(Numusers,Tlen*Nc);ray1=zeros(Numusers,2*Tlen*Nc);ray2=zeros(Numusers,2*Tlen*Nc);ray3=zeros(Numusers,2*Tlen*Nc);for i=1:Numusersx0=s_initial(i,:).'*Wal16(8,:);x1=x0.';s_Spread(i,:)=(x1(:)).';end%将每个扩频后输出重复为两次,有利于下面的延迟(延迟了半个码元)ray1(1:2:2*Tlen*Nc-1)=s_Spread(1:Tlen*Nc);ray1(2:2:2*Tlen*Nc)=ray1(1:2:2*Tlen*Nc-1);%产生第二径和第三径信号ray2(ISI_Length+1:2*Tlen*Nc)=ray1(1:2*Tlen*Nc-ISI_Length);ray3(2*ISI_Length+1:2*Tlen*Nc)=ray1(1:2*Tlen*Nc-2*ISI_Length);for nEN = 1:length(EbN0db)en = 10^(EbN0db(nEN)/10); % convert Eb/N0from unit db to normal numberssigma = sqrt((32/(2*en)));%接收到的信号dempdemp=power_unitary_factor1*ray1+power_unitary_factor2*ray2+p (randn(1,2*Tlen*Nc)+randn(1,2*Tlen*Nc)*i)*sigma;dt=reshape(demp,32,Tlen)';%将Walsh码重复为两次Wal16_d(1:2:31)=Wal16(8,1:16);Wal16_d(2:2:32)=Wal16(8,1:16);%解扩后rdata1为第一径输出rdata1=dt*Wal16_d(1,:).';%将Walsh码延迟半个码片Wal16_delay1(1,2:32)=Wal16_d(1,1:31);%解扩后rdata2为第二径输出rdata2=dt*Wal16_delay1(1,:).';%将Walsh码延迟一个码片Wal16_delay2(1,3:32)=Wal16_d(1,1:30);Wal16_delay2(1,1:2)=Wal16_d(1,31:32);%解扩后rdata3为第三径输出rdata3=dt*Wal16_delay2(1,:).';p1=rdata1'*rdata1;p2=rdata2'*rdata2;p3=rdata3'*rdata3;p=p1+p2+p3;u1=p1/p;u2=p2/p;u3=p3/p;%最大值合并rd_m1=real(rdata1*u1+rdata2*u2+rdata3*u3); %等增益合并rd_m2=(real(rdata1+rdata2+rdata3))/3;%选择式合并u=[u1,u2,u3];maxu=max(u);if(maxu==u1)rd_m3=real(rdata1);else if(maxu==u2)rd_m3=real(rdata2);else rd_m3=real(rdata3);endend%三种方法判决输出r_Data1=sign(rd_m1)';r_Data2=sign(rd_m2)';r_Data3=sign(rd_m3)';%计算误比特率Bit_Error_Number1=length(find(r_Data1(1:Tlen)~=s_initial(1:Tlen)));Bit_Error_Rate1(nEN)=Bit_Error_Number1/(Tlen);Bit_Error_Number2=length(find(r_Data2(1:Tlen)~=s_initial(1:Tlen)));Bit_Error_Rate2(nEN)=Bit_Error_Number2/(Tlen);Bit_Error_Number3=length(find(r_Data3(1:Tlen)~=s_initial(1:Tlen)));Bit_Error_Rate3(nEN)=Bit_Error_Number3/(Tlen);endsemilogy(EbN0db,Bit_Error_Rate1,'*-');hold on;semilogy(EbN0db,Bit_Error_Rate2,'o-'); hold on;semilogy(EbN0db,Bit_Error_Rate3,'+-');legend('最大比合并','等增益合并','选择式合并');xlabel('信噪比');ylabel('误比特率');title('3种主要分集合并方式性能比较');3.3.2 仿真结果分析单用户RAKE接收机的误码性能比较如图3-4所示。
CDMA2000仿真实操步骤
BSC的配置一、机架、机框的增加:1.桌面双击仿真软件“ZXC10VBOX1.1”进入仿真软件界面----选择“实验仿真教学软件”----单击进入机房2-1----单击“虚拟后台”----虚拟桌面双击“ZXC10BSSB服务端”当显示已启动状态时-----双击“ZXC10BSSB客户端”—单击“确定”进入客户端系统。
2.选择“视图”工具栏,单击“配置管理”选项,进入配置界面3.右键—增加BSS—空白处填0—确定----右键BSSB[0][0]—增加BSC—空白处填0—确定----右键选中“物理配置”—选择增加机架----确定。
4.双击“机架”—右键—在四个框中分别增加机框,分别为:一级IP 交换框、控制框、资源框、GCM框。
5.业务框配置一级交换框:单板配置:A:15-16槽位,右键—增加单板—选中UIMC2—确定B:在7—8槽位,增加PSN单板;C:1—2槽位,增加GLI;控制框:(1):单板配置:A:9-10槽位,右键—增加单板—选中UIMC2—确定(其他单板增加步骤一致)。
B:在1—4和11—12槽位,增加MP单板,型号选择“85XX”;把2槽位的MP单板删除再加上(目的是取消主备关系)C:13—14槽位,增加CLKG;D:15—16槽位,增加CHUB;(2):MP模块配置A:选择1槽位的MP,右键—配置模块类型—双击CPU1—选择SPCF —关闭;双击CPU2—选择DOCMP—关闭;B:选择2槽位的MP,右键—配置模块类型—双击CPU1—选择RMP —关闭;双击CPU2—选择1XCMP—关闭;C :选择3槽位的MP,右键—配置模块类型—双击CPU1—选择DSMP —关闭;资源框:单板配置:A:9-10槽位,右键—增加单板—选中UIMU2—确定B:在1槽位,增加DTB单板;C:7-8槽位,增加ABPM2;D:5槽位,增加IPCF2;E:11-12槽位,增加UPCF2;F:13槽位,增加DOSDU(85XX);插曲:1、配置无线参数:菜单栏中,选择并双击“无线参数”—弹出对话框—A:点“+”(或选中空白的格—右键—增加)—增加频点:“载频频率指配”选160(语音);0B:点“+”(或选中空白的格—右键—增加)—增加频点:“载频频率指配”选37(DO);2:1X参数配置:无线参数的下拉菜单—双击“1X参数”—弹出对话框—设置下面参数:BSID=0、MARKET ID=0、交换机序号=0,MCC=460、MNC=03、ISMI=09、—保存;资源框单板配置(二) G: 14槽位,增加1XSDU2;H:15槽位,增加SPB;I:16槽位,增加VTCD;注:GCM框系统自动配置,故不用人为配置。
基于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系统,并进行仿真。
基于MATLAB的CDMA通信系统的仿真
基于MATLAB勺CDM軀信系统的仿真摘要:利用MATLA呼台的Simulink可视化仿真功能,结合CDMA勺实际通信情况,对CDMA!信系统的实现完整以及发送到接收的端到端的CDMA无通信系统的建模、仿真和分析。
本次介绍了CDMA勺主要环节,包括扩频技术、信道等参数设置。
关键字:码分多址;扩频;MATLA;B Simulink1 CDMA 技术基础1.1 扩频定义:扩频技术就是将信息的频谱展宽后进行传输的技术。
理论基础:在白噪声干扰的条件下,信道容量—信道带宽S —信号平均功率 N —噪声平均功率论:在信道容量C 不变的情况下,信道带宽B 与信噪比S/N 完全可以互即可以通过增大传输系统的带宽可以在较低信噪比的条件下获得比 较满意的传输质量。
-fSB ----------k佶号JfO扩频后i 的佶号麵图1扩频过程扩频通信系统的主要特点:(1)隐蔽性和保密性;(2 )抗干扰和抗多径衰落能力强;(3)实现多址技术、增加容量、提高频率复用率;( 4)占用频带较宽,系统复杂性增加。
1.2 CDMA 仿真系统模型建立信源高昕a嗓声图2本次仿真CDM 系统组成框图C = B Iog2 (1 + S / N ) 香农公式相交换,2 Matlab 的CDMA 通信系统的仿真2.1直接扩频的码分多址通信系统的仿真模型CHKBFtt 蛇I?曲寮 FtUrmEeriJIi& n 町直接扩频的码分多址通信系统的仿真模型2.2 仿真系统的各部分分析宽度为6X 10 - 6 s 。
(1)第一路伯努利二进制随机信号发生器iT —l"g<j| lii Sin OffB«rioLjlli B -in-ary---图4二进制伯努利序列产生器 图5第一路发生器产生的仿真波形h_n_n_rir r-r-1 EUJR . jii _k - ni~ tna-KDspley|~u n rj strMli Ernar/Berculli 帥町 Ge-teiEbflMl€ei[z3.31C21zg£淞1S 叭训 i Sinijy3finGfEO2削LcncEGenermxIrteucDsli ^*?**tM[;DE3i :i F It^lQajsa.q Sse2.2.1 伯努利二进制随机信号发生器三个 Bernoulli Random Binary Generator(伯努利二进制随机信号发生器)表示三个不同的通信用户发射各自的通信信息 (基带信号),码元u 呦C 就Ber J Hi Bi n 17*T JC Enn 社t許离亡E IdIstizinPLTII } EiwRstiCal ulatUT 也) f 匚卄1"K E™ mat表2第一路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 12345 Samp le time 3*2e-7 Frame-base out putsUncheckedIn terl pret vector p arameter as 1-DUnchecked(2)第二路伯努利二进制随机信号发生器□crnobll i曰 i narv曰crnmu Hi Bi n ary图6二进制伯努利序列产生器表3第二路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 54321 Samp le time 3*2e-7 Frame-base out putsUnchecked Interlpret vector parameter as 1-DUnchecked(3)第三路伯努利二进制随机信号发生器图9第三路发生器产生的仿真波形D …1 — III n ■ 1 1 …1 1 [・ py.—…IT11 1 1 ■ 1= ---- ■- ------ ! - ----- 1 - — 1 ■ ■■ 1 ■ 1 1 1 - - 1 ■ I---- ■ : 7 --- ■ 1 h- ■----1 ■L ■* ~-12H01 0.01R —iCigjIli binaryBcjma-Lklli ainnjy图8二进制伯努利序列产生器图7第二路发生器产生的仿真波形表4第二路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 13542 Samp le time 3*2e-7 Frame-base out putsUnchecked In terl pret vector p arameter as 1-DUnchecked222 直接扩频图10 PN 伪随机序列产生器表 5 PN Seque neeGen erator 参数设置(rf-iltrHlcVf 戸&丁也卸“讥"卜成寧项式JCl 1 0 0 J]to 1 0 0]Sc^itTfnr 匱羽荐曲) 0SiHupk t inK <釆样 时阪P裁一T本系统中的m 序列周期是15,码元宽度为2X 10 — 7 s ,基带信号码元宽度是m 序列码元宽度的30倍, 正好是两个m 序列的周期。
RAKE接收机原理及仿真设计
的崛起提供了有利的条件。美国领土面积 939 大帝国的胚胎”,但英国是崛起中的美国的天然 决定从西半球收缩,集中力量对付德国。由此可
万平方公里,它占有北美大陆最富庶的心脏地 伙伴。美国应该等待时机,忍受伦敦有时出现的 见,美国在取代英国成为全球霸主的过程中,从
带,其土地属于最肥沃和最高产的土地之列,其 专横行为,积累国家财富和力量,逐步达到显赫 来没有直接挑战英国霸权,而是成为英国的盟
本土避免了两次世界大战的破坏;南北都是弱 利的外部环境。二是奉行“韬光养晦”与“有所作 史告诉我们,丧失了制海权就等于丧失了战争
国,没有邻国的威胁,美国也成为美洲的当然领 为”相结合的策略。19 世纪末美国的工业总产 的主导权。建立一支高度现代化的海军是维护
袖。
值居世界第一位,成为以重工业为主导的工业 我国领土主权和经济安全的重要保障,是中国
rake接收机包含多个相关器每个相关器接收多路信号中的一路意思好像和原来的有些区别不知是否正确通过多个相关检测器接收多径信号中的各种信号分别检测多径信号中最强的l个支路信号感觉意思表述的不是太明确然后对每个相关器的输出进行加权求和以提供优于单路相关器的信号检测然后在此基础上进行解调和判决
科技论坛
RAKE 接收机原理及仿真设计
将导致信号的空间衰落,严重影响通信质量。克服 对第一条路径相对时延差为△3…第 N 条路径相 形。以此来作为仿真的初始信号。
多径效应是移动通信的一个关键问题。分集接收 对于第一条路径相对时延差为△N,且有
技术是一种对抗多径效应的有效方法。在 CDMA
△N>△N-1>…△3>△(2 △1=0)
移动通信系统中采用 RAKE 接收机来完成分集接
可耕地占总面积的 40%。它蕴藏有丰富的金属 的地位。在 1787 年的制宪会议上,汉密尔顿建 友,是在英国的逐步衰落中取而代之的,而德国
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要近年来,CDMA已成为移动通信领域的研究热点。
CDMA2000是北美基于IS-95系统发展而来的第三代移动通信系统,在前向信道结构上采用直接序列扩频和多载波两种方式来达到提供宽带数据业务的目的。
CDMA2000标准中,详细规定了发射技术的具体建议,但接收部分涉及的不多。
本文建立了多信道软件无线电接收机数学模型,在此基础上提出一种数字中频在CDMA2000多载波接收系统的设计及应用方案,并给出了系统各个单元的设计和性能参数,最后仿真验证了方案的可行性。
关键词:CDMA2000;接收机;扩频通信;Simulink RAKEAbstractThis paper mainly based upon the Windows flatform, simulates the R-TCH of the CDMA2000 mobile communicationsystems using “Simulink” in “Matlab”.Mainly simulates “the CDMA2000 mobile station transmitter” in a timed-stream mode,andanalyses the main treatment processing flow of signals in the “CDMA2000 mobile station transmitter”, including source encoder,channel encoder, data modulation and base-band filtering process.KeyW ords:CDMA2000; R-TCH; Spectrum-Spreading Communication; Simulin k1.引言CDMA目前已成为第三代蜂窝移动通信系统的首选技术(以WCDMA和CDMA2000为代表),国内外都在研究如何高质量地实现第三代移动通信系统。
在研发过程中,前期的计算机仿真结果,可以给系统的具体实现提供理论依据和可行性指导。
MATLAB平台上的SIMULINK携带有极为丰富的工具包,易于在极短的时间内非常高效地实现新算法。
本文基于MATLAB中的SIMULINK软件包,对CDMA2000进行了建模和仿真,并针对接收机中的反向基本信道及反向补充信道(RC3和RC4)的信号处理过程进行分析。
前向信道与反向信道的仿真思想基本一致移动通信技术迅速发展的同时,也出现了多种通信体制并存、各种标准层出不穷和频率资源缺乏等问题。
这些新标准由于射频载波频率和调制方式不同而限制了各种设备的互通和兼容,造成了资金浪费和重复投入。
软件无线电SDR(Software Defined Radio)技术的出现,使人们看到解决问题的希望。
它的基本思想[1]是:构造一个开放、标准、模块化的通用硬件平台,将无线通信系统的各种功能如工作频段、调制解调类型、数据格式、加密模式、通信协议等通过软件编程来实现。
但是现阶段,由于微电子发展水平有限,直接对射频(RF)进行采样还很难,所以需要先将射频信号转换到中频(IF)上,然后在中频对模拟信号进行数字化,即数字中频。
它是软件无线电技术发展的一个重要步骤,它与模拟中频相比能产生严格的幅相平衡正交信号,处理时能保证有严格的线性相位。
数字中频技术的应用范围很广,除了可以应用在基站的收发信机中,在其他很多领域中都可以应用。
如在信号源或者信号频谱分析仪中、信息化家电中、雷达系统中的应用,甚至可以应用在终端系统中。
2. CDMA2000接收机整体设计2.1 CDMA2000 模块分化2.1.1接收机信道介绍CDMA系统是一个相当复杂的系统,就发送方和接收方来对CDMA进行划分,它至少含有上行链路和下行链路。
其中由移动台发向基站的无线线路,称为上行(反向)链路;由基站发向移动台的无线线路,称为下行(前向)链路。
文主要是通过SIMULINK实现反向链路的发送部分(CDMA2000移动台发射机)的设计。
在CDMA2000中,接收机主要包括反向基本信道、反向专用控制信道和反向补充信道,其中反向基本信道和反向专用控制信道主要用于传输速率较低的话音数据及控制信令数据,而反向补充信道则可以实现高速率的数据传输。
业务信道的信号一般需要经过CRC编码、卷积编码、符号重复、符号抽取、块交织、最后经过HPSK调制后再送往射频发射。
基带接受流程图如下:2.1.2模块分化图CDMA2000移动台阵列配置与软件实现接收机功能模块介绍CDMA2000接收机分为发送和接收两部分,这里主要介绍接收部分,接收机基带部分可分解为若干模块,包括同步捕获与跟踪、RAKE接收机、解交织、维特比译码,模块划分如图4所示。
一个模块可被映射到一个或多个PicoArray设备, 每个模块的接口使用picoVHDL来定义,可使用一个或多个AE来构造子系统,AE之间的通信也由picoVHDL来表示,模块的全部功能通过使用C或汇编语言对每个AE进行编程来实现。
各个模块实现的功能如下:同步捕获与跟踪:系统刚启动时处于失步状态,接收信号的PN码相位没有和本地PN码相位同步,PN码相位捕获即粗同步,在PN序列整个周期上搜索相关峰,检测输入信号是否和本地参考PN序列同步;PN码相位跟踪即细同步,搜索粗同步附近的若干相位,使其和输入PN码相位一致。
RA KE接收:是接收机的核心模块, RAKE接收模块又分为以下三种子模块:多径搜索,信道估计,多径合并。
解交织:交织是为防止信道产生突发的连续错误,解交织就是交织的逆过程。
维特比译码:完成信道编码中的卷积码和TURBO码的译码。
2.1.3 RAKE接收器介绍以及流程图在无线信道中存在着多径传播的现象!针对这种多径导致的时间扩散"可以使用Rake接收机对多径信号加以利用"多径信号分离的基础是采用直接序列扩展频谱信号。
当直扩序列码片宽度为TC时,系统所能分离的最小路径时延差为TC。
RAKE接收机利用直扩序列的相关特性,采用多个相关器来分离直扩多径信号,然后按一定规则将分离后的多径信号合并起来以获得最大的有用信号能量。
这样将有害的多径信号变为有利的有用号。
应用RAKE 接收机主要应用在直扩系统中,特别是在民用CDMA(码分多址)移动通信系统中。
下图示出一个RAKE接收机,它是专为CDMA系统设计的多径最佳接收机。
如下图所示:2.2数据帧处理模块设计扩频速率(SpreadingRate)是指CDMA2000信道中采用的载波数目。
对于采用一个载波调制方式(即占用1.25MHZ的带宽)的CDMA2000系统,它的扩频速率等于1(SR1);而对于采用三个载波的调制方式,它占用3.75MHZ带宽,扩频速率等于(SR3)。
一般来说,扩频速率1对应于CDMA2000-1X,而扩频速率3则对应于CDMA2000-3X。
在CDMA2000系统中,前向信道和反向信道可以采用多种传输速率和帧长,对应为不同的无线配置(RadioConfiguration)。
反向信道则有6种不同的无线配置方式,CDMA2000-1X的接收机使用无线配置3和4(RC3和RC4)。
数据帧的处理模块组成如下图所示:数据帧处理模块实现对反向基本信道数据帧的CRC编码(CRC)、卷积编码(Encoder)、信号交织(Ierleaver)以及正交扩频(OrthogonalSpreading)功能,其中,随机整数发生器(RandomIntegerGenerator)为原始信帧输入,最后输出为传输速率为1.2288Mchip/s的数据流。
2.3 HPSK模块设计输出的数据流然后进入到调制模块中进行HPSK调制(混合移相键控)以及基带滤波。
PN码产生器(PNSequences)分别产生I支路和Q支路的1.2288Mchip/s码序列对信号进行扩频扰码。
基带滤波器为按照CDMA2000协议设计的FIR滤波器。
最后的调制信号被复合成复信号输出。
图2-3移动台发射机实现框图如下图2-3中FCHFrameData为数据帧处理模块的封装子系统,Modulation为调制模块的封装子系统,ModelInitia-ization为参数设置模块。
数据帧处理模块的整体增益设置为1,调制模块的相对增益为1/2,为了使仿真更加方便,接收机的其它信道均设置为0。
调制后的输出信号再转化为实部和虚部,最后可以通过示波器(ScopeIandQ)和频谱示波器(SpectrmScope)观察信号的波形和频谱。
2.4 移动台发射机的实现框图将前面的两大部分组合在一起,再加上其他的一些模块(如调制增益),组合成一个移动台发射机的实现框图:调制模块原理图如下3仿真分析3.1信道比特流的输入输入的比特流由通过随机整数生成器(RandomInteger中FCHFrameData为数据帧处理模块的封装子系统,Modulation为调制模块的封装子系统,ModelInitial-ization为参数设置模块。
数据帧处理模块的整体增益设置为1,调制模块的相对增益为1/2,为了使仿真更加方便,接收机的其它信道均设置为0。
调制后的输出信号再转化为实部和虚部,最后可以通过示波器(ScopeIandQ)和频谱示波器(SpectrmScope)观察信号的波形和频谱。
输入的比特流由通过随机整数生成器(RandomIntegerGenerator)产生一个长度为mFrameLength的数据帧,这个数据帧的周期等于mFrameDuration毫秒。
mFrameLength为552bits,mFrameDuration为20ms。
输出的整数范围是0和1。
3.2 CRC编码比特流在进入CRC编码之前,还要添加预留位。
由于帧长是552bits,所以添加0bit的预留位。
循环冗余码不具备纠错能力。
在本仿真中,信息帧长为552bits,根据CDMA2000协议,选取的CRC生成多项式是:即xGenPoly=[1615141165210],xGenPoly为CRC编码器的设置参数。
处理后,在数据帧后面添加16bits的帧质量指示位。
同时,为了使随后的卷积编码器在对一帧数据完成编码之后内部状态能够自动复位,RC4在每个数据帧末尾添加8bit的编码器尾部。
所以,这时候的帧长变为552bits+16bits+8bits=576bits。
数据率为v=576bits/20ms*1000=28.8kbps。
3.3 卷积编码卷积码属于信道编码。
在CDMA2000中卷积码用来做前向纠错码。
发送端通过某种方式对信息序列进行计算,得到相应的检错/纠错编码附加到信息序列中,与前面的CRC编码类似。
但是,卷积编码具有纠错能力,只要接收信号中的误码个数没有超出信道编码的纠错能力,它就有可能纠正这个错误。