您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页通信原理综设实验报告

通信原理综设实验报告

来源:吉趣旅游网


通信系统原理综合性、设计性实验报告

基于MATLAB的CDMA系

统仿真

学 院:物理与电信工程学院 年 级: 指导老师:

时 间:2014年6月

一、实验目的

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,本次实验利用MATLAB平台功能,并结合CDMA的实际通信情况,利用MATLAB组建出完整的CDMA通信系统,完成整体设计方案,实现完整的发送到接收的端到端的CDMA无线通信系统的建模、仿真和分析。

关键字: MATLAB CDMA 仿真

二、实验原理 2.1 CDMA的基本原理

CDMA是指在各发送端使用不相同、相互(准)正交的地址码调制所传送的信息,而在接收端在利用码型的(准)正交性,通过相关检测,从混合信号中选出相应的信号的一种技术。实现CDMA的理论基础是扩频通信,即在发送端将待发送的数据用伪随机码进行调制,实现频谱扩展,然后进行传输,而在接收端则采用同样的编码进行解扩及相关处理,恢复原始的数据信息。扩频通信有直接序列(DS)、跳频(FH)、线性调频(chrip)、跳时(TH)等方式。采用扩频通信的优点很多,如抗干扰、抗噪声、抗多径衰落的能力强,能在低功率谱密度下工作,保密性好、可多址复用和任意选址及进行高度测量等等。

2.2 CDMA的系统框图

信源 交织编码 卷积编码 扩频 DPSK调制 加性高斯噪声信道

信宿 解交织 解卷积 解扩 DPSK解调 2.3 交织编码的原理

交织编码的目的是把一个较长的突发差错离散成随机差错,再用纠正随机差错的编码(FEC)技术消除随机差错。交织深度越大,则离散度越大,抗突发差错能力也就越强。但交织深度越大,交织编码处理时间越长,从而造成数据传输时延增大,也就是说,交织编码是以时间为代价的。因此,交织编码属于时间隐分集。在实际移动通信环境下的衰落,将造成数字信号传输的突发性差错。利用交织编码技术可离散并纠正这种突发性差错,改善移动通信的传输特性。

2.4 卷积编码的原理

卷积码编码的当前输出v(l)不仅与当前输入消息u(l)相关,还与此去前输入的m个消息u(l-1),…,u(l-m)相关,即 v(l)=f(u(l),u(l-1),…,u(l-m)), l=0,1,2…

卷积编码电路中移位寄存器初态可设定为全0,电路为按段工作方式,即对每段k比特输出入,产生一段n比特输出。任意一输入段u(l-h)与输出v(l)的关系都是一个特殊的(n,k)线性分组码的编码关系,即存在k v(l)=u(l-h)

Gh, h=0,1,2,…,m

n的二元矩阵Gh,使得

因此对于消息段序列u=(u(0),u(1),…,u(m),u(m+1),…),相应的输出端序列为v=(v(0),v(1),…,v(m),v(m+1),…),并满足v(0)=u(0)G0

卷积编码电路在按段工作方式下只需存储或者记忆m段的消息输入,电路中输入移位寄存器最多只有km

串转换作用。因此称参量m为卷积码的记忆长度,下图为原理图

2.5 扩频通信的原理

扩频通信技术是一种信息传输方式,其信号所占有的频带宽度远大于所传信息所需的最小带宽;频带的扩展是通过一个的码序列来完成,用编码及调制的方法来实现的,与所传信息数据无关;在接收端则用同样的码进行相关同步接受、解扩及恢复所传信息数据。 扩频通信理论基础

香农公式 :C=Wlog2(1+S/N)

1、在给定的传输速率C不变的条件下,频带宽度W和信噪比S/N是可以互换的。即可通过增加频带宽度的方法,在较低的信噪比情况下,传输信息。 2、扩展频谱换取信噪比要求的降低,正是扩频通信的重要特点,并由此为扩频通信的应用奠定了基础。

2.6 DPSK调制解调的原理

DPSK,即差分移相键控,是数字调制方式的一种。

差分移相键控(DPSK):Differential Phase Shift Keying 利用调制信号前后码元之间载波相对相位的变化来传递信息。

用于光传输系统中对DPSK调制信号的接收解调。DPSK是一个1 Bit延迟器,输入一个信号,可以得到两路相差一个比特的信号,形成信号对DPSK信号进行相位解调,实现相位到强度的转化。

三、MATLAB仿真实现 3.1 交织编码

3.2 卷积编码与解卷积

(2,1,3)卷积编码

function output = convolutionX( X )

%UNTITLED Summary of this function goes here % Detailed explanation goes here

n=length(X); %取得输入序列的长度

%%%%%%%%%%%%%%%%%%%%%画出输入波形%%%%%%%%%%%%% n1=0.01:0.01:n; for(i=1:n)

is((i-1)*100+1:i*100)=X(i); end figure

subplot(2,1,1) plot(n1,is);

axis([0,n+1,-0.1,1.1]); title('原始信号') grid

Y=[0 0 0]; %寄存器初始值置为全0

for(i=1:n) %进行序列移位,得到卷积的序列 Y(1)=Y(2); Y(2)=Y(3); Y(3)=X(i);

Y;

output(2*(i-1)+1)=mod(sum(Y),2); %三个寄存器模二相加

output(2*(i-1)+2)=mod((Y(1)+Y(3)),2);%第一、三寄存器模二相加 end

output;

%%%%%%%%%%%%%%%%%%%%%%画出卷积波形%%%%%%%%%%%%%%%%%%% a=length(output); a;

t=0.01:0.01:a; for(i=1:a)

st(((i-1)*100+1):i*100)=output(i); end st;

subplot(2,1,2) plot(t,st);

axis([0,a+1,-0.1,1.1]); title('卷积波形') grid end

解卷积函数:维特比解码

function Z = deconvolution(X)

%UNTITLED Summary of this function goes here % Detailed explanation goes here n=length(X); Z=zeros(1,n);

a=n/2; %解卷积输出序列长度

M=zeros(2^a,a);%初始化存放解卷积的可能序列矩阵 Y=zeros(2^a,n);%初始化维特比对比的可能序列矩阵 %%%%%%%%%%%%%%产生所有的可能序列%%%%%%%%%%5 for(i=1:2^a)

M(i,:)=de2bi(i-1,a);%把十进制转化为二进制 Y(i,:)=encoding(M(i,:));%进行卷积编码

m(i)=distance(Y(i,:),X); %取得每个序列对比的汉明距 end

b=min(m); %%%%%%%%%取得汉明距最小的值 b;

%%%%%%%根据得到的最小汉明距进行译码%%%%%%%%% for(i=1:2^a) if(b==m(i))

Z=de2bi(i-1,a); end end

%%%%%%%%%%%画出译码的波形%%%%%%%%%%%%%%% t=0.01:0.01:a;

st=zeros(1,100*a); for(i=1:a)

st(((i-1)*100+1):i*100)=Z(i); end Z;

figure

%subplot(2,1,2) plot(t,st);

axis([0,a+1,-0.1,1.1]); title('解卷积波形') grid end

3.3 M序列的产生

function mseq=

m_sequence(fbconnection,register) %fbconnectionΪ·´À¡ÏµÊý£¬registerΪ³õʼ״̬

n = length(fbconnection);

N = 2^n-1; %mÐòÁеij¤¶È

mseq(1)= register(n); %mÐòÁеĵÚÒ»¸öÊä³öÂëÔª for i = 2:N

newregister(1)= mod(sum(fbconnection.*register),2); %¼Ä´æÆ÷Óë·´À¡µÄÄ£2ºÍ for j = 2:n

newregister(j)= register(j-1); end;

register = newregister; %ÒÆÎ»ºóµÄ¼Ä´æÆ÷ mseq(i) = register(n); %еļĴæÆ÷Êä³ö end

3.4 DPSK调制与解调

function z=dpsk(X)

%UNTITLED2 Summary of this function goes here % Detailed explanation goes here fs=200; %取样频率

w=25; %载波角频率 n=length(X); %获取序列的长度 t=1:100; nn=1:100; n1=0.01:0.01:n;

%os=zeros(1,100);

for(i=1:n)

is((i-1)*100+1:i*100)=X(i); %将每个信息码元用100个点表示,存储到is数组,提高精度。

st((i-1)*100+1:i*100)=0; %定义调制后的信息码存放的数组st,并初始化。 end

for(nn=1:100) %定义两个角频率相同,相位相反的正玄波 oss(nn)=sin(2*pi*w*(t(nn )/100)); osc(nn)=sin(2*pi*w*(t(nn)/100)+pi); end %figure

%subplot(2,1,1) %plot(t/100,oss);

%axis([0,n+1,-1.1,1.1]); %title('信号波形1') %grid

%subplot(2,1,2) %plot(t/100,osc);

%axis([0,n+1,-1.1,1.1]); %title('信号波形2') %grid

for(i=1:n) %调制

if(X(i)==1)

for(nn=1:100)

st(100*(i-1)+nn)=oss(nn); %码元为1的点用oss填充 end else

for(nn=1:100)

st(100*(i-1)+nn)=osc(nn); %码元为0的点用osc填充 end

end end st; figure

subplot(2,1,1) plot(n1,is);

axis([0,n+1,-0.1,1.1]); title('原始信号') grid

subplot(2,1,2) plot(n1,st);

axis([0,n+1,-1.1,1.1]); title('调制信号') grid

%%%%%%%%%%%%%%%%%%%%%高斯白噪声信道 tt=0.01:0.01:n; stt=awgn(st,5); figure plot(tt,stt);

axis([0,n+1,-1.5,1.5]);

title('通过高斯信道后的信号'); grid

%-------------------------------------加噪声及低通滤波--------------------------------------------- dt=stt.*sin(2*pi*w*tt); %乘以同频率载波,为滤波做准备 figure

subplot(2,1,1) plot(tt,dt);

axis([0,n+1,-1.5,1.5]); title('相乘后的波形'); grid

%-----------------------------------------低通滤波器-------------------------------------------------- [N,Wn]=buttord(2*pi*25,2*pi*50,3,25,'s'); %临界频率采用角频率表示 [b,a]=butter(N,Wn,'s'); [bz,az]=impinvar(b,a,fs); %映射为数字,得到filter函数的参数 dt=filter(bz,az,dt); %数字低通滤波器 subplot(2,1,2)

%15? plot(tt,dt);

axis([0,n+1,-1.5,1.5]); title('低通滤波后的波形');

grid

%---------------------------------------抽样判决------------------------------------------ dt1=0; dt2=0; for(i=1:n) for(j=1:100)

% if(dt(100*(i-1)+j)>0) % dt1= dt1+1; % else dt1=dt1;

dt1=dt1+dt(100*(i-1)+j);

% end

% dt2=dt1/100; end

dt2=dt1/100; %取平均值判断,若大于0,则判决为高电平,否则为低电平 if(dt2>0)

dtt(100*(i-1)+1:100*i)=1; dt2=0; dt1=0;

else dtt(100*(i-1)+1:100*i)=0; dt2=0; dt1=0; end end figure

%subplot(2,1,2) plot(tt,dtt);

axis([0,n+1,-0.1,1.1]); title('判决后的波形'); grid

%------------------------------------------逆码变换后的序列------------------------------------------- z=zeros(1,n); for(i=1:n)

if(dtt(100*(i-1)+50)==1) z(i)=1; else z(i)=0; end end z; end

3.5 主函数

s0 = randint(1,56); %s0 Ëæ»úÐÅÔ´

%s1 ½»Ö¯±àÂëºóµÄ¾ØÕó %s2 ½»Ö¯±àÂëºóµÄÐòÁÐ %s3 ¾í»ý±àÂëºóµÄ¾ØÕó %s4 À©ÆµºóµÄ¾ØÕó %s5 À©ÆµºóµÄÐòÁÐ %s6 DPSK½âµ÷ºóµÄÐòÁÐ %s7 ¾í»ý½âÂëµÄ¾ØÕó %s8 ½»Ö¯½âÂëǰµÄ¾ØÕó %s9 ÊÕµ½µÄÐòÁÐ

s1 = (reshape(s0,7,8)); %½»Ö¯±àÂë

for j=1:8

s2(j) = s1(1,j); end for j=1:8

s2(j+8) = s1(2,j); end for j=1:8

s2(j+8*2) = s1(3,j); end for j=1:8

s2(j+8*3) = s1(4,j); end for j=1:8

s2(j+8*4) = s1(5,j); end for j=1:8

s2(j+8*5) = s1(6,j); end for j=1:8

s2(j+8*6) = s1(7,j); end

s3 = zeros(7,16); %¾í»ý±àÂë for i=1:7

s3(i,:) = convolutionX(s2(((i-1)*8+1):(i*8))); end

s4 = zeros(7,112); %À©Æµ start = zeros(7,7);

fbconnection = [0 0 0 0 0 1 1]; for i=1:7 if(i==1)

start(i,:) = [0 0 0 0 0 0 1]; else if(i==2)

start(i,:) = [0 0 0 0 0 1 1]; else if(i==3)

start(i,:) = [0 0 0 0 1 1 1]; else if(i==4)

start(i,:) = [0 0 0 1 1 1 1]; else if(i==5)

start(i,:) = [0 0 1 1 1 1 1]; else if(i==6)

start(i,:) = [0 1 1 1 1 1 1]; else

start(i,:) = [1 1 1 1 1 1 1]; end end end end end end

mseq=m_sequence(fbconnection,start(i,:)); for j=1:16 f = s3(i,j); for k=1:7

a = sign(mseq((j-1)*7+k)-0.5); b = sign(f-0.5); c = -a.*b; d = sign(c+1); s4(i,((j-1)*7+k)) = d; end end end

for j=1:112

s5(j) = s4(1,j); end

for j=1:112

s5(j+112) = s4(2,j);

end

for j=1:112

s5(j+112*2) = s4(3,j); end

for j=1:112

s5(j+112*3) = s4(4,j); end

for j=1:112

s5(j+112*4) = s4(5,j); end

for j=1:112

s5(j+112*5) = s4(6,j); end

for j=1:112

s5(j+112*6) = s4(7,j); end

s6 = dpsk(s5); %DPSKµ÷ÖÆ s7 = zeros(7,16); %½âÀ© for i=1:7 if(i==1)

start(i,:) = [0 0 0 0 0 0 1]; else if(i==2)

start(i,:) = [0 0 0 0 0 1 1]; else if(i==3)

start(i,:) = [0 0 0 0 1 1 1]; else if(i==4)

start(i,:) = [0 0 0 1 1 1 1]; else if(i==5)

start(i,:) = [0 0 1 1 1 1 1]; else if(i==6)

start(i,:) = [0 1 1 1 1 1 1]; else

start(i,:) = [1 1 1 1 1 1 1]; end end end end end end

mseq=m_sequence(fbconnection,start(i,:)); for j=1:16 for k=1:7

a = sign(mseq((j-1)*7+k)-0.5);

b = sign(s6(112*(i-1)+7*(j-1)+k)-0.5); c = -a.*b; d(k) = sign(c+1); end

if(d(1)==d(2)==d(3)==d(4)==d(5)==d(6)==d(7)) s7(i,j) = d(1); end end end

s8 = zeros(7,8); %¾í»ý½âÂë for i=1:7

s8(i,:) = deconvolution(s7(i,:)); end

s9 = (reshape(s8,1,56)); %½»Ö¯½âÂë

kkk=0; for(i=1:7) for(j=1:8)

if(s1(i,j)~=s8(i,j)) kkk=kkk+1; else kkk=kkk; end end bbb=kkk; end bbb

四、仿真结果

信源序列

交织编码后的矩阵序列

卷积编码后的矩阵序列

扩频后的序列

DPSK调制载波

DPSK调制后的信号波形

DPSK低通滤波后的信号波形

DPSK解调后的序列

扩频解扩后的序列

卷积解码后的序列

信宿收到的序列

五、CDMA系统分析

本次综设设计的CDMA系统,源信元采用56位的数字信号,码速率为56 bps/s 。其中,每8位为一个用户信息,即设计中有7个用户。

对源码进行交织编码,56位信息码分为7组信息码,每组8位数字信号。 对交织编码进行卷积编码,本次卷积编码采用(2,1,3)编码,所以每一组的8位数字信号转变为16位的卷积编码,码速率变为 7*16 = 112 bps/s 。

扩频通信中,采用M序列进行扩频,每一位信息码用7位M序列伪码进行扩频,码速率变为 112*7 = 784 bps/s 。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务