CDMA仿真Word文档格式.docx

上传人:b****3 文档编号:8136671 上传时间:2023-05-10 格式:DOCX 页数:21 大小:617.29KB
下载 相关 举报
CDMA仿真Word文档格式.docx_第1页
第1页 / 共21页
CDMA仿真Word文档格式.docx_第2页
第2页 / 共21页
CDMA仿真Word文档格式.docx_第3页
第3页 / 共21页
CDMA仿真Word文档格式.docx_第4页
第4页 / 共21页
CDMA仿真Word文档格式.docx_第5页
第5页 / 共21页
CDMA仿真Word文档格式.docx_第6页
第6页 / 共21页
CDMA仿真Word文档格式.docx_第7页
第7页 / 共21页
CDMA仿真Word文档格式.docx_第8页
第8页 / 共21页
CDMA仿真Word文档格式.docx_第9页
第9页 / 共21页
CDMA仿真Word文档格式.docx_第10页
第10页 / 共21页
CDMA仿真Word文档格式.docx_第11页
第11页 / 共21页
CDMA仿真Word文档格式.docx_第12页
第12页 / 共21页
CDMA仿真Word文档格式.docx_第13页
第13页 / 共21页
CDMA仿真Word文档格式.docx_第14页
第14页 / 共21页
CDMA仿真Word文档格式.docx_第15页
第15页 / 共21页
CDMA仿真Word文档格式.docx_第16页
第16页 / 共21页
CDMA仿真Word文档格式.docx_第17页
第17页 / 共21页
CDMA仿真Word文档格式.docx_第18页
第18页 / 共21页
CDMA仿真Word文档格式.docx_第19页
第19页 / 共21页
CDMA仿真Word文档格式.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

CDMA仿真Word文档格式.docx

《CDMA仿真Word文档格式.docx》由会员分享,可在线阅读,更多相关《CDMA仿真Word文档格式.docx(21页珍藏版)》请在冰点文库上搜索。

CDMA仿真Word文档格式.docx

2、设计思路

通过对IS-95窄带CDMA反向业务信道原理的了解,采用模块化思想,分为信源编码,信道交织编码,AWGN信道传播,信道解码以及信源解码等部分。

3、核心原理

3.1Viterbit(卷积)编码

卷积码是分组的,但它的监督元不仅与本组的信息元有关,还与前若干组的信息由关。

着种码纠错能力强,不仅可以纠正随机差错,还能纠正突发差错。

本系统采用(2,1,8)卷积编码,编码器如图2所示:

图2卷积编码

3.2Walsh码扩频

Walsh码是一组由0和1元素构成的正交方阵,即其任意两行(或两列)相互正交。

IS-95系统利用Walsh码作为地址码,与信息数据相乘(或模2加)进行地址么调制,增强系统的抗干扰能力。

3.3数据扰码

利用伪随机序列对数据进行扰码,增强系统的抗干扰能力。

伪随机序列具有类似于随机序列的确定序列,序列中不同位置的元素取值相互独立,取0和1的概率相等。

本系统采用生成矩阵为[1000000101010001110011011110000010011101111]的m序列发生器,对数据进行扰码。

3.4QPSK信号

3.4.1QPSK调制

MPSK调制中最常用的就是4PSK,又称QPSK。

因为它有四种相位状态,所以称为四相键控;

又因为他是两个相互相交的BPSK之和,所以又称作为正交移相键控,记作QPSK。

对于矩形包络的多进制移相键控(MPSK),其已调信号的表达式为:

式中

同相分量

正交分量

当M=4时,即位QPSK,它是由两个互相正交的BPSK之和构成的。

输入的二进制信息码元经串/并变换电路后分为两个支路,一路为奇数码元,另一路为偶数码元。

这时,每个支路的码元宽度为原码元宽度的Tb的两倍。

每个支路再按BPSK的方法进行调制。

不过两支路的载波相位不同,他们为正交,即相位差为90°

,一个称为同相支路,即I支路,另一个称为正交支路,即Q支路。

这两个支路非别调制,将调制后的信号合并相加,就得到QPSK信号,即完成了调制任务。

其原理图如图3。

图3QPSK调制原理图

3.4.2QPSK解调

QPSK信号解调方法可分为相干解调和差分解调两类。

本实验采用了相干解调。

图4为相干解调的组成方框图。

图4QPSK相干解调器

如图4所示,输入的QPSK信号,加入同相支路和正交支路的相关器(或匹配滤波器)。

由QPSK信号通过载波恢复(或载波提取)电路,产生相干载波。

供给同相支路相关器;

本地载波经90°

移相,供给正交支路相关器。

相关器输出经积分、判决、并/串变换,即可恢复出原始二进制信息数据,从而完成解调。

4、设计过程及仿真结果

4.1设计流程

该CDMA通信系统的设计流程图如图5所示。

图5CDMA设计流程图

4.2仿真结果

4.2.1原始序列图以及原始序列频谱图

图6

4.2.2维特比编码序列图以及其频谱图

图7

4.2.3扩频序列及其频谱图

图8

5.2.4扰码序列及其频谱图

由于扰码序列位数多,导致仿真结果中其序列图无法区分。

图9

5.2.5I信道序列图及其频谱图

由于I信道序列位数多,导致仿真结果中其序列图无法区分。

图10

4.2.6Q信道序列图及其频谱图

由于Q信道序列位数多,导致仿真结果中其序列图无法区分。

图11

4.2.7滤波器模型图及其频谱图

图12

4.2.8同相分量成型图及其频谱图

图13

4.2.9正交分量成型图及其频谱图

图14

4.2.10QPSK已调信号图及其频谱图

图15

4.2.11同相分量解调图及其频谱图

图16

4.2.12正交分量解调信号图及其频谱图

图17

4.2.13解调恢复后所得序列图及其频谱图

图18

4.2.14信噪比曲线图

图19

5、核心程序代码

clearall;

%清除数据记录

closeall;

%关闭图形窗

clc;

%清除命令窗

N=184;

%产生二进制随机信息个数

Fc=20000;

%调制/解调载波频率

df=0.3;

zero_in=5;

%插入4个0

snr_lin=-2:

1:

6;

%仿真信噪比范围

show=1;

%图形显示控制

bit_err_count=zeros(1,length(snr_lin),'

double'

);

bit_err_rate=zeros(1,length(snr_lin),'

forcount=1:

length(snr_lin)

forkk=1:

5%相同信噪比下,多次数据求平均

%-------------------原始二进制随机信息-------

InputData=rand(N,1);

fori=1:

N

ifInputData(i)>

0.5

InputData(i)=1;

else

InputData(i)=0;

end

end

Output_Print(InputData'

19.2e3,show,'

原始序列'

%----------------Viterbi编码(卷积编码)-------------------------

G_Vit=[111101011;

%Viterbi生成多项式

101110001];

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=2×

50矩阵

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.2KBps

%---------------------扩频-------------------

%输入速率=19.2KBps,输出速率=1.2288Mcps

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];

%长序列生成器的初始状态

[ScramblerZs]=PNGen(Gs,Zs,W_N);

Scram_out=xor(DS_chips,Scrambler);

Output_Print(Scram_out'

扰码序列'

%--------------------加偏置------------------------

%PN码偏置生成多项式:

%Gi=[1010001110100001]'

%Gq=[1001110001111001]'

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);

%I路信道PN码生成器的初始状态

Gq=zeros(16,1);

Gq(16-Gq_ind)=ones(size(Gq_ind));

Zq=[zeros(length(Gq)-1,1);

%Q路信道PN码生成器的初始状态

[PNiZi]=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);

[PNqZq]=PNGen(Gq,Zq,W_N);

%Q信道扩频码

Q_chips=sign(Scram_out-1/2).*sign(PNq-1/2);

Q_chips_out=[Q_chips,zeros(W_N,R-1)];

%零值插入

Q_chips_out=reshape(Q_chips_out.'

Output_Print2(I_chips_out'

64*2*192*5,show,'

I信道序列'

Output_Print2(Q_chips_out'

Q信道序列'

%----------------------调制-----------------

rf=0.1;

%rf滚降因子

Nt=100;

%滤波器过采样率

zero_in=5;

rate=zero_in;

%rate=zero_in=5,

M=2*zero_in*Nt;

%调整数据长度

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;

%------------------解调--------------------

[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'

%-----------------------解扩--------------------------

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);

%----------------------解卷积------------------

[DataOutMetric]=SoftVitDec(G_Vit,De_InterLeave,1);

bit_err_count(count)=bit_err_count(count)+sum(xor(De_InterLeave,Vit_Out));

show=0;

%关闭图形显示

%-------------------误码率计算---------------------

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-*'

holdon;

title('

信噪比曲线图'

xlabel('

信噪比/dB'

ylabel('

误码率'

gridon;

%-------------------PN码产生---------------------

%************************beginningoffile*****************************

%PNGen.m

function[y,Z]=PNGen(G,Zin,N);

%

%此函数是根据生成多项式和输入状态产生长度为N的伪随机序列

%+++++++++++++++++++++++variables++++++++++++++++++++++++++++

%G生成多项式

%Zin移位寄存器初始化

%NPN序列长度

%y生成的PN码序列

%Z移位寄存器的输出状态

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

L=length(G);

Z=Zin;

%移位寄存器的初始化

y=zeros(N,1);

fori=1:

N

y(i)=Z(L);

Z=xor(G*Z(L),Z);

Z=[Z(L);

Z(1:

L-1)];

end

%yy=filter(1,flipud(G),[1;

zeros(N-1,1)]);

%yy=mod(yy,2);

%************************endoffile***********************************

%************************维特比码*****************************

%SoftVitDec.m

function[xx,BestMetric]=SoftVitDec(G,y,ZeroTail);

%此函数是实现软判决输入的Viterbi译码

%G生成多项式的矩阵

%y输入的待译码序列

%ZeroTail判断是否包含‘0’尾

%xxViterbi译码输出序列

%BestMetric最后的最佳度量

L=size(G,1);

%输出码片数

K=size(G,2);

%生成多项式的长度

N=2^(K-1);

%状态数

T=length(y)/L;

%最大栅格深度

OutMtrx=zeros(N,2*L);

fors=1:

in0=ones(L,1)*[0,(dec2bin((s-1),(K-1))-'

0'

)];

in1=ones(L,1)*[1,(dec2bin((s-1),(K-1))-'

out0=mod(sum((G.*in0)'

),2);

out1=mod(sum((G.*in1)'

OutMtrx(s,:

)=[out0,out1];

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);

fort=1:

T

yy=y(:

t);

fors=0:

N/2-1

[B0ind0]=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]);

[B1ind1]=max(PathMet(1+[2*s,2*s+1])+[OutMtrx(1+2*s,L+[1:

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)];

PathMet=PathMetTemp;

xx=zeros(T,1);

if(ZeroTail)

BestInd=1;

else

[Mycop,BestInd]=max(PathMet);

BestMetric=PathMet(BestInd);

xx(T)=floor((BestInd-1)/(N/2));

NextState=Trellis(BestInd,(T+1));

fort=T:

-1:

2

xx(t-1)=floor(NextState/(N/2));

NextState=Trellis((NextState+1),t);

xx=xx(1:

end-K+1);

%************************endoffile***********************************

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2