ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:617.29KB ,
资源ID:11814199      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11814199.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(CDMA仿真.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

CDMA仿真.docx

1、CDMA仿真CDMA蜂窝移动通信课程设计报告姓 名: 班 级: 学 号: 指导老师: 目 录第一部分1. 设计要求说明 12、设计思路 23、核心原理 23.1 Viterbit(卷积)编码 23.2 Walsh码扩频 23.3 数据扰码 33.4 QPSK信号 33.4.1 QPSK调制 33.4.2 QPSK解调 44、设计过程及仿真结果 54.1 设计流程 54.2 仿真结果 54.2.1 原始序列图以及原始序列频谱图 54.2.2 维特比编码序列图以及其频谱图 64.2.3 扩频序列及其频谱图 65.2.4 扰码序列及其频谱图 65.2.5 I信道序列图及其频谱图 74.2.6 Q信道

2、序列图及其频谱图 84.2.7 滤波器模型图及其频谱图 84.2.8 同相分量成型图及其频谱图 94.2.9 正交分量成型图及其频谱图 104.2.10 QPSK已调信号图及其频谱图 104.2.11 同相分量解调图及其频谱图 104.2.12 正交分量解调信号图及其频谱图 114.2.13 解调恢复后所得序列图及其频谱图 124.2.14 信噪比曲线图 125、核心程序代码 13第一部分1. 设计要求说明按照下列框图设计一个CDMA系统,并进行仿真。图 1 CDMA系统框图2、设计思路通过对IS-95窄带CDMA反向业务信道原理的了解,采用模块化思想,分为信源编码,信道交织编码,AWGN信道

3、传播,信道解码以及信源解码等部分。3、核心原理3.1 Viterbit(卷积)编码卷积码是分组的,但它的监督元不仅与本组的信息元有关,还与前若干组的信息由关。着种码纠错能力强,不仅可以纠正随机差错,还能纠正突发差错。本系统采用(2,1,8)卷积编码,编码器如图 2所示:图 2 卷积编码3.2 Walsh码扩频Walsh码是一组由0和1元素构成的正交方阵,即其任意两行(或两列)相互正交。IS-95系统利用Walsh码作为地址码,与信息数据相乘(或模2加)进行地址么调制,增强系统的抗干扰能力。3.3 数据扰码利用伪随机序列对数据进行扰码,增强系统的抗干扰能力。伪随机序列具有类似于随机序列的确定序列

4、,序列中不同位置的元素取值相互独立,取0和1的概率相等。本系统采用生成矩阵为1000000101010001110011011110000010011101111的m序列发生器,对数据进行扰码。3.4 QPSK信号3.4.1 QPSK调制MPSK调制中最常用的就是4PSK,又称QPSK。因为它有四种相位状态,所以称为四相键控;又因为他是两个相互相交的BPSK之和,所以又称作为正交移相键控,记作QPSK。对于矩形包络的多进制移相键控(MPSK),其已调信号的表达式为:式中 同相分量 正交分量当M=4时,即位QPSK,它是由两个互相正交的BPSK之和构成的。输入的二进制信息码元经串/并变换电路后分

5、为两个支路,一路为奇数码元,另一路为偶数码元。这时,每个支路的码元宽度为原码元宽度的Tb的两倍。每个支路再按BPSK的方法进行调制。不过两支路的载波相位不同,他们为正交,即相位差为90,一个称为同相支路,即I支路,另一个称为正交支路,即Q支路。这两个支路非别调制,将调制后的信号合并相加,就得到QPSK信号,即完成了调制任务。其原理图如图 3。图 3 QPSK调制原理图3.4.2 QPSK解调QPSK信号解调方法可分为相干解调和差分解调两类。本实验采用了相干解调。图 4为相干解调的组成方框图。图 4 QPSK相干解调器如图 4所示,输入的QPSK信号,加入同相支路和正交支路的相关器(或匹配滤波器

6、)。由QPSK信号通过载波恢复(或载波提取)电路,产生相干载波。供给同相支路相关器;本地载波经90移相,供给正交支路相关器。相关器输出经积分、判决、并/串变换,即可恢复出原始二进制信息数据,从而完成解调。4、设计过程及仿真结果4.1 设计流程该CDMA通信系统的设计流程图如图 5所示。图 5 CDMA设计流程图4.2 仿真结果4.2.1 原始序列图以及原始序列频谱图图 6 4.2.2 维特比编码序列图以及其频谱图图 74.2.3 扩频序列及其频谱图图 85.2.4 扰码序列及其频谱图 由于扰码序列位数多,导致仿真结果中其序列图无法区分。图 95.2.5 I信道序列图及其频谱图 由于I信道序列位

7、数多,导致仿真结果中其序列图无法区分。图 104.2.6 Q信道序列图及其频谱图 由于Q信道序列位数多,导致仿真结果中其序列图无法区分。图 114.2.7 滤波器模型图及其频谱图图 124.2.8 同相分量成型图及其频谱图图 134.2.9 正交分量成型图及其频谱图图 144.2.10 QPSK已调信号图及其频谱图图 154.2.11 同相分量解调图及其频谱图图 164.2.12 正交分量解调信号图及其频谱图图 174.2.13 解调恢复后所得序列图及其频谱图图 184.2.14 信噪比曲线图图 195、核心程序代码clear all; %清除数据记录close all; %关闭图形窗clc;

8、 %清除命令窗N=184; %产生二进制随机信息个数Fc=20000; %调制/解调载波频率df=0.3;zero_in=5 ; %插入4个0snr_lin= -2:1:6; %仿真信噪比范围show=1; % 图形显示控制bit_err_count=zeros(1,length(snr_lin),double);bit_err_rate=zeros(1,length(snr_lin),double);for count= 1:length(snr_lin) for kk=1:5 % 相同信噪比下,多次数据求平均%-原始二进制随机信息- InputData=rand(N,1); for i=1

9、:N if InputData(i)0.5 InputData(i)=1; else InputData(i)=0; end end Output_Print( InputData , 19.2e3 , show , 原始序列)% -Viterbi编码(卷积编码)- G_Vit = 1 1 1 1 0 1 0 1 1 ; %Viterbi生成多项式 1 0 1 1 1 0 0 0 1 ; K_Vit = size(G_Vit, 2); % Viterbi生成多项式列数 K=9 L_vit = size(G_Vit, 1); % Viterbi生成多项式行数 L=2%-根据生成多项式G_Vit对

10、InputData进行编码- K = size(G_Vit , 1); % K=G_Vit生成矩阵的行数=2 %结束时,为了令寄存器回到全零状态,要在输入序列末尾补K_Vit-1个零 InputData1= InputData; zeros(K_Vit-1,1) ; %补零 L = length(InputData1); % 补零后的输入序列长度 yy = conv2(G_Vit , InputData1); % 卷积编码 yy = yy( : , 1:L); % 截断数据,变为K*L=250矩阵 y = reshape( yy, K*L, 1 ); %将矩阵yy转置成(K*L)行1列 Vit

11、_Out = mod(y, 2) ; % y= y%2;Viterbit输出序列【K*L行1列】 Output_Print( Vit_Out , 2*19.2e3 , show , 维特比编码序列)%-交织- INTERL = reshape(Vit_Out, 24, 16); % IN:列, OUT:行 InterLeave_Out = reshape(INTERL, length(Vit_Out), 1); %速率=19.2 KBps %-扩频- % 输入速率 = 19.2 KBps, 输出速率= 1.2288 Mcps R=5; WLen = 64; Walsh = reshape(1;

12、0*ones(1, WLen/2), WLen , 1);% Walsh矩阵 W_N = length(InterLeave_Out)*length(Walsh); % 扩频后序列长度 tmp=Walsh*InterLeave_Out; DS_chips = reshape(tmp, numel(tmp), 1); %numel-返回tmp元素个数 Output_Print( DS_chips , 64*2*192 , show , 扩频序列)%-加扰码- Gs_ind = 42, 35, 33, 31, 27, 26, 25, 22, 21, 19, 18, 17, 16, 10, 7, 6

13、, 5, 3, 2, 1, 0; Gs = zeros(43, 1); Gs(43-Gs_ind) = ones(size(Gs_ind); %扰码生成多项式 Zs = zeros(length(Gs)-1, 1); 1; % 长序列生成器的初始状态 Scrambler Zs = PNGen(Gs, Zs, W_N); Scram_out=xor(DS_chips,Scrambler); Output_Print( Scram_out , 64*2*192 , show , 扰码序列)%-加偏置- %PN码偏置生成多项式: %Gi = 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0

14、 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路 Gq_ind = 15, 12, 11, 10, 6, 5, 4, 3, 0; % Q路 Gi = zeros(16, 1); Gi(16-Gi_ind) = ones(size(Gi_ind); Zi = zeros(length(Gi)-1, 1); 1; % I路信道PN码生成器的初始状态 Gq = zeros(16, 1); Gq(16-Gq_ind) = ones(size(Gq_ind); Zq = zeros(length

15、(Gq)-1, 1); 1; % Q路信道PN码生成器的初始状态 PNi Zi = PNGen(Gi, Zi, W_N); %I信道扩频码 I_chips = sign(Scram_out-1/2).*sign(PNi-1/2); I_chips_out = I_chips, zeros(W_N, R-1); %零值插入:4个 I_chips_out = reshape(I_chips_out. , W_N*R, 1); PNq Zq = PNGen(Gq, Zq, W_N); %Q信道扩频码 Q_chips = sign(Scram_out-1/2).*sign(PNq-1/2); Q_ch

16、ips_out = Q_chips, zeros(W_N, R-1); %零值插入 Q_chips_out = reshape(Q_chips_out. , W_N*R, 1); Output_Print2( I_chips_out , 64*2*192*5 , show , I信道序列) Output_Print2( Q_chips_out , 64*2*192*5 , show , Q信道序列)%-调制- rf=0.1; % rf 滚降因子 Nt=100; %滤波器过采样率 zero_in=5; rate=zero_in; %rate=zero_in=5, M=2*zero_in*Nt;

17、%调整数据长度 Fs=122880; % Fs 码元传输速率 ts=1/Fs; df=0.3; Sqpsk = Modulator( I_chips_out, Q_chips_out,rf,Nt,rate,Fs,Fc,show);%-AWGN信道- Sqpsk_power=(norm(Sqpsk)2)/length(Sqpsk); %已调信号功率 noise_power=Sqpsk_power/(10(snr_lin(count)/10);%噪声功率 noise=sqrt(noise_power)*randn(1,length(Sqpsk); %高斯噪声 Sqpsk1=Sqpsk+noise;

18、%-解调- DemIpluse, DemQpluse=Demodulator(Sqpsk1,rf,Nt,rate,Fs,Fc,show);%-抽样判决- threshold=0.3; % 判决门限 DemI=Judging( DemIpluse,threshold,M,W_N,zero_in); DemQ=Judging( DemQpluse,threshold,M,W_N,zero_in);%-解偏置,码型转换(双极性-0/1码)- De_PN_Out=(DemI.*sign(PNi-1/2)+1)/2; %-解扰- De_Scram=xor(De_PN_Out,Scrambler);%-解

19、扩- temp=reshape(De_Scram,64,(length(De_Scram)/64); De_Walsh=ones(length(De_Scram)/64), 1)*Walsh; De_chips=diag(De_Walsh*temp);%-解交织- De_INTERL=reshape(De_chips, 16, 24); De_InterLeave=reshape(De_INTERL,length(De_chips),1);%-解卷积- DataOut Metric = SoftVitDec(G_Vit, De_InterLeave, 1); bit_err_count(cou

20、nt) = bit_err_count(count)+sum(xor(De_InterLeave,Vit_Out); show=0; %关闭图形显示 end %-误码率计算- bit_err_rate(count)=bit_err_count(count)/(length(Vit_Out)*kk); end Output_Print( DataOut , 19.2e3 , 1 , 解调恢复序列)%-结果显示-figure;semilogy(snr_lin, bit_err_rate,b-*); hold on; title(信噪比曲线图)xlabel(信噪比/dB); ylabel(误码率);

21、grid on; %-PN码产生-% *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); for i=1:N y(i) = Z(L); Z = xor(G*Z(L), Z); Z = Z(L); Z(1:L

22、-1); end %yy = filter(1, flipud(G), 1; zeros(N-1, 1); %yy = mod(yy, 2);%*end of file*end% *维特比码*% *beginning of file*%SoftVitDec.mfunction xx, BestMetric = SoftVitDec(G, y, ZeroTail); % % 此函数是实现软判决输入的Viterbi译码 %+variables+% G 生成多项式的矩阵% y 输入的待译码序列 % ZeroTail 判断是否包含0尾% xx Viterbi译码输出序列 % BestMetric 最后

23、的最佳度量%+ L = size(G, 1); % 输出码片数K= size(G, 2); % 生成多项式的长度 N = 2(K-1); % 状态数 T = length(y)/L; % 最大栅格深度 OutMtrx = zeros(N, 2*L); for s = 1:N in0 = 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, :) =

24、out0, out1; end OutMtrx = sign(OutMtrx-1/2); PathMet = 100; zeros(N-1), 1); % 初始状态 = 100 PathMetTemp = 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); for s = 0:N/2-1 B0 ind0 = max( PathMet(1+2*s, 2*s+1) + OutMtrx(1+2*s, 0+1:L)

25、 * 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); end PathMet = PathMetTemp; end xx = zeros(T, 1); if (ZeroTail) BestInd = 1; else Mycop, BestInd = max(PathMet); end BestMetric = PathMet(BestInd); xx(T) = floor(BestInd-1)/(N/2); NextState = Trellis(BestInd, (T+1); for t=T:-1:2 xx(t-1) = floor(NextState/(N/2); NextState = Trellis( (NextState+1), t); end if (ZeroTail) xx = xx(1:end-K+1); end % *end of file*end

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1