通信原理软件实验.docx
- 文档编号:4393356
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:19
- 大小:213.29KB
通信原理软件实验.docx
《通信原理软件实验.docx》由会员分享,可在线阅读,更多相关《通信原理软件实验.docx(19页珍藏版)》请在冰豆网上搜索。
通信原理软件实验
实验报告
课程名称
通信原理
实验项目名称
通信原理软件实验
实验类型
实验学时
班级
学号
姓名
指导教师
实验室名称
实验时间
实验成绩
实验原理
(1分)
实验步骤
(2分)
实验结果
(2分)
总成绩
教师签字
日期
哈尔滨工程大学教务处制
通信原理软件仿真实验
一、实验题目
1、基带码型仿真
1)通过仿真观察占空比为50%、75%以及100%的单、双极性归零码波形以及其功率谱,分析不同占空比对仿真结果的影响。
2)通过仿真产生一随机消息码序列,将其分别转换为AMI码和HDB3码,观察它们的波形及其功率谱密度。
2、数字带通调制仿真
设计一个采用2DPSK调制的数字通信系统:
产生二进制随机数据,并仿真其对应的2DPSK调制波形,分析其频谱。
所产生的调制波形加入不同信噪比的白噪声,选取合适的接收方案,画出系统误码率曲线,并与理论误码率进行对比。
2、实验基本原理
1、基带码型仿真
想要产生不同占空比的单、双极性归零码波形,首先要确定码元序列,其次要对码元序列进行采样并输出到图表上。
确定码元序列的原理很简单,对于单极性码元,只需要产生一系列随机数并判断随机数是否大于零即可。
若大于等于零则码元为1,若小于零则码元为0。
对于双极性码元,可以通过判断随机数的极性来产生码元。
AMI码为传号交替反转码,为1反转,否则归零。
而HDB3码则是在AMI的基础上进行变换。
通过检测4个及以上的连零来插入破坏符号(V)。
倘若两个相邻破坏符号间的非零符号有偶数个时,还要插入B符号。
2、数字带通调制仿真
2DPSK数字调制系统的调制过程可以认为成差分双极性非归零矩形脉冲与高频载波的乘积。
至于解调过程,我在本次实验中选取的为相位比较法。
基本原理是将接收到的调制波形延迟一个码元周期,再与未延迟的调制波形相乘,分析该信号,从而解调码元。
3、仿真方案
1、基带码型仿真
2、数字带通调制仿真
4、实验结果
1、基带码型仿真
1)
占空比为0.5
占空比为0.75
占空比为1
分析:
由实验结果可知,随着占空比的增大,码元信号的直流分量会逐渐增多,频谱变窄。
而且,相较于单极性,双极性的功率谱要更宽一些。
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;%码元速率(个)/s
Ts=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);
forloop=1:
1000
a=(randn(1,M)>0);%产生单极性数据
a1=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;
end
subplot(2,2,1)
plot(t,s);
axis([-2,2,-2,2]);
title('单极性');
gridon;
subplot(2,2,2)
plot(t,s1);
axis([-2,2,-2,2]);
title('双极性');
gridon;
subplot(2,2,3)
plot(f,fin);
title('单极性功率谱');
subplot(2,2,4)
plot(f1,fin1);
title('双极性功率谱');
end
2、AMI和HDB3码的产生:
function[output_args]=AMI_HDB3(D)
L=64;%每码元采样点数
N=1280;%采样点数
M=N/L;%码元数
Rs=2;%码元速率(个)/s
Ts=1/Rs;%比特间隔
fs=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码元数据
fori=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(i)=0;
end
end
tmp_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出现
fori=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=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;
end
end
tmp_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]=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('单极性');
gridon;
subplot(3,1,2)
plot(t,s_AMI);
axis([-5,5,-2,2]);
title('AMI码');
gridon;
subplot(3,1,3)
plot(t,s_HDB3);
axis([-5,5,-2,2]);
title('HDB3码');
gridon;
figure
(2)
subplot(2,1,1)
plot(f,P);
title('AMI码功率谱');
gridon;
subplot(2,1,2)
plot(f1,P1);
title('HDB3码功率谱');
gridon;
end
3、2DPSK调制:
function[wm,xzb]=DPSK(D,M)
L=64;%每码元采样点数
N=L*M;%采样点数
%M=N/L;
Rs=2;%码元速率(个)/s
Ts=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:
L1],:
)=ones(L1,1)*a;
s=tmp(:
)';
a_AMI=zeros(1,M);
tmp_AMI=zeros(L,M);
a_AMI
(1)=1;
%产生差分双极性非归零码元数据
fori=2:
M
if(a(i)==1)
a_AMI(i)=-a_AMI(i-1);
else
a_AMI(i)=a_AMI(i-1);
end
end
tmp_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.^2))/T;%求出噪声功率
P_sig=(sum(tz_DPSK.^2))/T;%求出信号功率
tz_noise=tz_DPSK+noise;%加入噪声
xzb=P_sig/P_noise;
forn=65:
N
s_jt(n)=tz_noise(n-64);
end
jt_DPSK=s_jt;%产生解调波形(携带噪声)
%-----相位比较法解调-----
fx=tz_noise.*jt_DPSK;
jt_sig=zeros(1,N);%解调出的码元数据
jt=zeros(1,M);%解调出的码元序列
forloop=1:
N
if(fx(loop)<0)
jt_sig(loop)=1;
end
end
k=1;
cnt0=0;
cnt1=0;
m=1;
forloop=1:
N
if(jt_sig(loop)==0)
cnt0=cnt0+1;
k=k+1;
if(k==65)
k=1;
if(cnt0>cnt1)
jt(m)=0;
m=m+1;
cnt0=0;
cnt1=0;
else
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(cnt0>cnt1)
jt(m)=0;
m=m+1;
cnt0=0;
cnt1=0;
else
jt(m)=1;
m=m+1;
cnt0=0;
cnt1=0;
end
end
end
end
tmp_DPSK=zeros(L,M);
tmp_DPSK([1:
L1],:
)=ones(L1,1)*jt;
s_DPSK=tmp_DPSK(:
)';
%计算误码率
x1=0;
forx=1:
M
if(jt(x)~=a(x))
x1=x1+1;
end
end
wm=x1/M;
figure
(1)
subplot(4,1,1)
plot(t,s);
axis([-T/2,T/2,-2,2]);
title('单极性码元');
gridon;
subplot(4,1,2)
plot(t,tz_DPSK);
axis([-T/2,T/2,-2,2]);
title('2DPSK调制波形');
gridon;
subplot(4,1,3)
plot(t,tz_noise);
title(['2DPSK调制波形+噪声信噪比=',num2str(xzb)]);
gridon;
subplot(4,1,4)
plot(t,s_DPSK);
axis([-T/2,T/2,-2,2]);
title(['相位比较法解调出的码元误码率(dB)=',num2str(wm)]);
gridon;
end
3、计算误码率图表:
function[output_args]=cul(M)
h=waitbar(0,'Pleasewait...');%创建进度条
P=19;
x=zeros(1,P);
y=zeros(1,P);
k=1;
fori=1:
-0.02:
0.64
[wm,xzb]=DPSK(i,M);
x(k)=xzb;
y(k)=wm;
k=k+1;
waitbar(k/P);%显示等待时间
end
close(h);
figure
(2)
semilogy(10*log10(x),y,'k-v');
xlabel('信噪比/dB');
ylabel('误码率');
gridon;
end
五、总结存在的问题
本次实验存在的问题在于误码率曲线的仿真值和理论曲线相差有点大。
尽管总的曲线趋势是对的,但是具体的误码率数值却要低于理论值很多。
换句话说,达到了更高的精度。
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 原理 软件 实验