《通信原理软件实验.doc》由会员分享,可在线阅读,更多相关《通信原理软件实验.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流通信原理软件实验【精品文档】第 13 页实 验 报 告课程名称通信原理实验项目名称通信原理软件实验实验类型实验学时班级学号姓名指导教师实验室名称实验时间实验成绩实验原理(1分)实验步骤(2分)实验结果(2分)总成绩教师签字日期哈尔滨工程大学教务处 制通信原理软件仿真实验一、实验题目1、基带码型仿真1) 通过仿真观察占空比为50%、75%以及100%的单、双极性归零码波形以及其功率谱,分析不同占空比对仿真结果的影响。2) 通过仿真产生一随机消息码序列,将其分别转换为AMI码和HDB3码,观察它们的波形及其功率谱密度。2、 数字带通调制仿真设计一个采用2DP
2、SK调制的数字通信系统:产生二进制随机数据,并仿真其对应的2DPSK调制波形,分析其频谱。所产生的调制波形加入不同信噪比的白噪声,选取合适的接收方案,画出系统误码率曲线,并与理论误码率进行对比。二、 实验基本原理1、基带码型仿真想要产生不同占空比的单、双极性归零码波形,首先要确定码元序列,其次要对码元序列进行采样并输出到图表上。确定码元序列的原理很简单,对于单极性码元,只需要产生一系列随机数并判断随机数是否大于零即可。若大于等于零则码元为1,若小于零则码元为0。对于双极性码元,可以通过判断随机数的极性来产生码元。AMI码为传号交替反转码,为1反转,否则归零。而HDB3码则是在AMI的基础上进行
3、变换。通过检测4个及以上的连零来插入破坏符号(V)。倘若两个相邻破坏符号间的非零符号有偶数个时,还要插入B符号。2、数字带通调制仿真2DPSK数字调制系统的调制过程可以认为成差分双极性非归零矩形脉冲与高频载波的乘积。至于解调过程,我在本次实验中选取的为相位比较法。基本原理是将接收到的调制波形延迟一个码元周期,再与未延迟的调制波形相乘,分析该信号,从而解调码元。三、 仿真方案1、基带码型仿真2、数字带通调制仿真四、 实验结果1、基带码型仿真1)占空比为0.5占空比为0.75占空比为1分析:由实验结果可知,随着占空比的增大,码元信号的直流分量会逐渐增多,频谱变窄。而且,相较于单极性,双极性的功率谱
4、要更宽一些。2)(参数:HDB3码中V为1.5,B为2)分析:通过以上实验结果可见,AMI和HDB3码波形正确,而二者的功率谱在如此有限的码元数量内看不出来太多的区别。相比之下,HDB3的功率谱成分要更复杂,更多。2、数字带通调制仿真上图为综合了调制和解调结果的总图。(仅取了一种信噪比)分析可得:调制完成后的2DPSK波形是正确的,叠加噪声后,送入解调器,得到的码元序列如图,可见解调结果还是比较正确和稳定的。上图为选取了100000个码元情况下的解调器信噪比和误码率之间的关系。欲要求误码率在,则只需保证信噪比即可。上图为选取100000个码元情况下的误码率理论曲线。可见仿真得到的曲线要比理论曲
5、线的误码率更小。原因可能是该处的信噪比较小,与书中理论公式所要求的大信噪比条件不符,故而误差较大。五、 程序源代码1、单双极性码元序列及可调的占空比:function output_args = exam_1( D )L=64;%每码元采样点数N=512;%采样点数M=N/L;%码元数Rs=2;%码元速率(个)/sTs=1/Rs;%比特间隔fs=L/Ts;%采样速率T=N/fs;%截短时间t=-(T/2):1/fs:(T/2-1/fs);%时域采样点fin=zeros(1,N);fin1=zeros(1,N);for loop=1:1000 a=(randn(1,M)0);%产生单极性数据 a
6、1=sign(randn(1,M);%产生双极性数据 tmp=zeros(L,M); tmp1=zeros(L,M); L1=L*D;%D是占空比 tmp(1:L1,:)=ones(L1,1)*a; tmp1(1:L1,:)=ones(L1,1)*a1; s=tmp(:); s1=tmp1(:); f,S=T2F(t,s); f1,S1=T2F(t,s1); P=abs(S).2/T;%样本信号的功率谱密度 P1=abs(S1).2/T; fin=fin*(1-1/loop)+P/loop; fin1=fin1*(1-1/loop)+P1/loop;endsubplot(2,2,1)plot(
7、t,s);axis(-2,2,-2,2);title(单极性);grid on;subplot(2,2,2)plot(t,s1);axis(-2,2,-2,2);title(双极性);grid on;subplot(2,2,3)plot(f,fin);title(单极性功率谱);subplot(2,2,4)plot(f1,fin1);title(双极性功率谱);end2、AMI和HDB3码的产生:function output_args = AMI_HDB3( D )L=64;%每码元采样点数N=1280;%采样点数M=N/L;%码元数Rs=2;%码元速率(个)/sTs=1/Rs;%比特间隔f
8、s=L/Ts;%采样速率T=N/fs;%截短时间t=-(T/2):1/fs:(T/2-1/fs);%时域采样点tmp=zeros(L,M);a=(randn(1,M)0);%产生单极性数据L1=L*D;%D是占空比tmp(1:L1,:)=ones(L1,1)*a;s=tmp(:);a_AMI=zeros(1,M);k=1;m=0;tmp_AMI=zeros(L,M);%产生AMI码元数据for i=1:M if(a(i)=1) if(k=1) a_AMI(i)=1; m=i; k=k+1; else a_AMI(i)=-a_AMI(m); m=i; k=k+1; end else a_AMI(
9、i)=0; endendtmp_AMI(1:L1,:)=ones(L1,1)*a_AMI;s_AMI=tmp_AMI(:);%产生HDB3码数据a_HDB3=a_AMI;V=1.5;B=2;m=0;k0=0;%连零计数f0=0;%V之间的非零计数v0=0;%V计数flag=0;%是否有B出现for i=1:M a_HDB3(i)=a_HDB3(i)*(-1)(flag); if(a_HDB3(i)=0) k0=k0+1; if(k0=4) if(m=0) a_HDB3(i)=V; k0=0; v0=1; f0=0; else a_HDB3(i)=a_HDB3(m)*V; v0=v0+1; k0
10、=0; if(v0=1) f0=0; else if(mod(f0,2)=0) f0=0; i1=m+1; a_HDB3(i1)=-a_HDB3(m)*B; i1=m+4; a_HDB3(i1)=sign(a_HDB3(m+1)*V; flag=flag+1; else f0=0; end end end end else k0=0; f0=f0+1; m=i; endendtmp_HDB3=zeros(L,M);tmp_HDB3(1:L1,:)=ones(L1,1)*a_HDB3;s_HDB3=tmp_HDB3(:);%求取功率谱f,S_AMI=T2F(t,s_AMI);f1,S_HDB3=
11、T2F(t,s_HDB3);P=abs(S_AMI).2/T;P1=abs(S_HDB3).2/T;figure(1)subplot(3,1,1)plot(t,s);axis(-5,5,-2,2);title(单极性);grid on;subplot(3,1,2)plot(t,s_AMI);axis(-5,5,-2,2);title(AMI码);grid on;subplot(3,1,3)plot(t,s_HDB3);axis(-5,5,-2,2);title(HDB3码);grid on;figure(2)subplot(2,1,1)plot(f,P);title(AMI码功率谱);grid
12、 on;subplot(2,1,2)plot(f1,P1);title(HDB3码功率谱);grid on;end3、2DPSK调制:function wm,xzb = DPSK( D,M )L=64;%每码元采样点数N=L*M;%采样点数% M=N/L;Rs=2;%码元速率(个)/sTs=1/Rs;%比特间隔fs=L/Ts;%采样速率T=N/fs;%截短时间t=-(T/2):1/fs:(T/2-1/fs);%时域采样点f0=2;zb=cos(2*pi*f0*t-pi/2);%产生载波数据tmp=zeros(L,M);a=(randn(1,M)0);%产生单极性数据L1=L*1;tmp(1:L
13、1,:)=ones(L1,1)*a;s=tmp(:);a_AMI=zeros(1,M);tmp_AMI=zeros(L,M);a_AMI(1)=1;%产生差分双极性非归零码元数据for i=2:M if(a(i)=1) a_AMI(i)=-a_AMI(i-1); else a_AMI(i)=a_AMI(i-1); endendtmp_AMI(1:L1,:)=ones(L1,1)*a_AMI;s_AMI=tmp_AMI(:);s_jt=zeros(1,N);tz_DPSK=s_AMI.*zb;%产生调制波形noise=randn(1,N)*D;%D为噪声比例P_noise=(sum(noise.
14、2)/T;%求出噪声功率P_sig=(sum(tz_DPSK.2)/T;%求出信号功率tz_noise=tz_DPSK+noise;%加入噪声xzb=P_sig/P_noise;for n=65:N s_jt(n)=tz_noise(n-64);endjt_DPSK=s_jt;%产生解调波形(携带噪声)%-相位比较法解调-fx=tz_noise.*jt_DPSK;jt_sig=zeros(1,N);%解调出的码元数据jt=zeros(1,M);%解调出的码元序列for loop=1:N if(fx(loop)cnt1) jt(m)=0; m=m+1; cnt0=0; cnt1=0; else
15、jt(m)=1; m=m+1; cnt0=0; cnt1=0; end end else cnt1=cnt1+1; k=k+1; if(k=65) k=1; if(cnt0cnt1) jt(m)=0; m=m+1; cnt0=0; cnt1=0; else jt(m)=1; m=m+1; cnt0=0; cnt1=0; end end endendtmp_DPSK=zeros(L,M);tmp_DPSK(1:L1,:)=ones(L1,1)*jt;s_DPSK=tmp_DPSK(:);%计算误码率x1=0;for x=1:M if(jt(x)=a(x) x1=x1+1; endendwm=x1
16、/M;figure(1)subplot(4,1,1)plot(t,s);axis(-T/2,T/2,-2,2);title(单极性码元);grid on;subplot(4,1,2)plot(t,tz_DPSK);axis(-T/2,T/2,-2,2);title(2DPSK调制波形);grid on;subplot(4,1,3)plot(t,tz_noise);title(2DPSK调制波形+噪声 信噪比=,num2str(xzb);grid on;subplot(4,1,4)plot(t,s_DPSK);axis(-T/2,T/2,-2,2);title(相位比较法解调出的码元 误码率(d
17、B)=,num2str(wm);grid on;end3、计算误码率图表:function output_args = cul( M )h=waitbar(0,Please wait.);%创建进度条P=19; x=zeros(1,P);y=zeros(1,P);k=1;for i=1:-0.02:0.64 wm,xzb=DPSK(i,M); x(k)=xzb; y(k)=wm; k=k+1; waitbar(k/P); %显示等待时间endclose(h);figure(2)semilogy(10*log10(x),y,k-v);xlabel(信噪比/dB);ylabel(误码率);grid on;end五、总结存在的问题本次实验存在的问题在于误码率曲线的仿真值和理论曲线相差有点大。尽管总的曲线趋势是对的,但是具体的误码率数值却要低于理论值很多。换句话说,达到了更高的精度。