通信原理软件实验Word文档下载推荐.docx
《通信原理软件实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《通信原理软件实验Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
1、基带码型仿真
1)通过仿真观察占空比为50%、75%以及100%的单、双极性归零码波形以及其功率谱,分析不同占空比对仿真结果的影响。
2)通过仿真产生一随机消息码序列,将其分别转换为AMI码和HDB3码,观察它们的波形及其功率谱密度。
2、数字带通调制仿真
设计一个采用2DPSK调制的数字通信系统:
产生二进制随机数据,并仿真其对应的2DPSK调制波形,分析其频谱。
所产生的调制波形加入不同信噪比的白噪声,选取合适的接收方案,画出系统误码率曲线,并与理论误码率进行对比。
2、实验基本原理
想要产生不同占空比的单、双极性归零码波形,首先要确定码元序列,其次要对码元序列进行采样并输出到图表上。
确定码元序列的原理很简单,对于单极性码元,只需要产生一系列随机数并判断随机数是否大于零即可。
若大于等于零则码元为1,若小于零则码元为0。
对于双极性码元,可以通过判断随机数的极性来产生码元。
AMI码为传号交替反转码,为1反转,否则归零。
而HDB3码则是在AMI的基础上进行变换。
通过检测4个及以上的连零来插入破坏符号(V)。
倘若两个相邻破坏符号间的非零符号有偶数个时,还要插入B符号。
2DPSK数字调制系统的调制过程可以认为成差分双极性非归零矩形脉冲与高频载波的乘积。
至于解调过程,我在本次实验中选取的为相位比较法。
基本原理是将接收到的调制波形延迟一个码元周期,再与未延迟的调制波形相乘,分析该信号,从而解调码元。
3、仿真方案
4、实验结果
1)
占空比为0.5
占空比为0.75
占空比为1
分析:
由实验结果可知,随着占空比的增大,码元信号的直流分量会逐渐增多,频谱变窄。
而且,相较于单极性,双极性的功率谱要更宽一些。
2)
(参数:
HDB3码中V为1.5,B为2)
通过以上实验结果可见,AMI和HDB3码波形正确,而二者的功率谱在如此有限的码元数量内看不出来太多的区别。
相比之下,HDB3的功率谱成分要更复杂,更多。
上图为综合了调制和解调结果的总图。
(仅取了一种信噪比)
分析可得:
调制完成后的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:
)=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);
双极性'
subplot(2,2,3)
plot(f,fin);
单极性功率谱'
subplot(2,2,4)
plot(f1,fin1);
双极性功率谱'
2、AMI和HDB3码的产生:
function[output_args]=AMI_HDB3(D)
N=1280;
tmp=zeros(L,M);
a=(randn(1,M)>
L1=L*D;
tmp([1:
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);
end
a_AMI(i)=0;
tmp_AMI([1:
)=ones(L1,1)*a_AMI;
s_AMI=tmp_AMI(:
%产生HDB3码数据
a_HDB3=a_AMI;
V=1.5;
B=2;
k0=0;
%连零计数
f0=0;
%V之间的非零计数
v0=0;
%V计数
flag=0;
%是否有B出现
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;
a_HDB3(i)=a_HDB3(m)*V;
v0=v0+1;
if(v0==1)
if(mod(f0,2)==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;
f0=f0+1;
tmp_HDB3=zeros(L,M);
tmp_HDB3([1:
)=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)
axis([-5,5,-2,2]);
subplot(3,1,2)
plot(t,s_AMI);
AMI码'
subplot(3,1,3)
plot(t,s_HDB3);
HDB3码'
figure
(2)
subplot(2,1,1)
plot(f,P);
AMI码功率谱'
subplot(2,1,2)
plot(f1,P1);
HDB3码功率谱'
3、2DPSK调制:
function[wm,xzb]=DPSK(D,M)
N=L*M;
%M=N/L;
f0=2;
zb=cos(2*pi*f0*t-pi/2);
%产生载波数据
L1=L*1;
a_AMI
(1)=1;
%产生差分双极性非归零码元数据
fori=2:
a_AMI(i)=-a_AMI(i-1);
a_AMI(i)=a_AMI(i-1);
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);
jt_DPSK=s_jt;
%产生解调波形(携带噪声)
%-----相位比较法解调-----
fx=tz_noise.*jt_DPSK;
jt_sig=zeros(1,N);
%解调出的码元数据
jt=zeros(1,M);
%解调出的码元序列
if(fx(loop)<
0)
jt_sig(loop)=1;
cnt0=0;
cnt1=0;
m=1;