文档详情

CDMA系统仿真(matlab)

飞****9
实名认证
店铺
DOC
662.51KB
约19页
文档ID:150426258
CDMA系统仿真(matlab)_第1页
1/19

CDMA系统仿真1. 设计要求说明用matlab进行CDMA系统仿真,CDMA系统框图如图所示图 1 CDMA系统框图信源卷积编码交织编码加扰码扩频调制AWGN信道解调解扩信宿解卷积解交织去扰码2、设计思路通过对IS-95窄带CDMA反向业务信道原理的了解,采用模块化思想,分为信源编码,信道交织编码,AWGN信道传播,信道解码以及信源解码等部分3、核心原理3.1 Viterbit(卷积)编码卷积码是分组的,但它的监督元不仅与本组的信息元有关,还与前若干组的信息由关着种码纠错能力强,不仅可以纠正随机差错,还能纠正突发差错本系统采用(2,1,8)卷积编码,编码器如图 2所示:图 2 卷积编码3.2 Walsh码扩频Walsh码是一组由0和1元素构成的正交方阵,即其任意两行(或两列)相互正交IS-95系统利用Walsh码作为地址码,与信息数据相乘(或模2加)进行地址么调制,增强系统的抗干扰能力3.3 数据扰码利用伪随机序列对数据进行扰码,增强系统的抗干扰能力伪随机序列具有类似于随机序列的确定序列,序列中不同位置的元素取值相互独立,取0和1的概率相等本系统采用生成矩阵为[1000000101010001110011011110000010011101111]的m序列发生器,对数据进行扰码。

3.4 QPSK信号3.4.1 QPSK调制MPSK调制中最常用的就是4PSK,又称QPSK因为它有四种相位状态,所以称为四相键控;又因为他是两个相互相交的BPSK之和,所以又称作为正交移相键控,记作QPSK对于矩形包络的多进制移相键控(MPSK),其已调信号的表达式为:式中 同相分量 正交分量当M=4时,即位QPSK,它是由两个互相正交的BPSK之和构成的输入的二进制信息码元经串/并变换电路后分为两个支路,一路为奇数码元,另一路为偶数码元这时,每个支路的码元宽度为原码元宽度的Tb的两倍每个支路再按BPSK的方法进行调制不过两支路的载波相位不同,他们为正交,即相位差为90,一个称为同相支路,即I支路,另一个称为正交支路,即Q支路这两个支路非别调制,将调制后的信号合并相加,就得到QPSK信号,即完成了调制任务其原理图如图 3图 3 QPSK调制原理图3.4.2 QPSK解调QPSK信号解调方法可分为相干解调和差分解调两类本实验采用了相干解调图 4为相干解调的组成方框图图 4 QPSK相干解调器如图 4所示,输入的QPSK信号,加入同相支路和正交支路的相关器(或匹配滤波器)。

由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信道序列位数多,导致仿真结果中其序列图无法区分图 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; %清除命令窗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: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对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_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;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, 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 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(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_chip。

下载提示
相似文档
正为您匹配相似的精品文档