通信原理软件实验Word下载.docx
《通信原理软件实验Word下载.docx》由会员分享,可在线阅读,更多相关《通信原理软件实验Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
2.2HDB3码
1)先把消息代码变换成AMI码,当没有4个以上连0串时,结束编码;
2)当出现4个以上连0串时,则将每4个连0小段的第4个0变换成与其前一非0符号同极性的符号,称为破坏符号V(即+1记为+V,-1记为-V)。
3)当相邻V符号之间有奇数个非0符号时,结束编码;
当有偶数个非0符号时,将该小段的第1个0变换成+B或-B,B符号的极性与前一非0符号的相反,并让后面的非0符号从V符号开始再交替变化。
代码:
100001000011000011
-10000+l0000-1+10000-1+1
-1000-V+l000+V-1+1000+V-1+1
HDB3码:
-1000-V+l000+V-1+1-B00-V+1-1
2PSK基本原理
二进制移相键控是用二进制数字信号0,1去控制载波的两个相位0,π
的方法,其时域表达式为
式中
,为双极性数字信号,若g(t)是脉宽为Ts的单个矩形脉冲,则有
以载波的不同相位直接去表示相应数字信息的相位键控称为绝对
移相,即2PSK。
2.12PSK信号的产生
(a)模拟相乘法(b)键控法
2.22PSK的解调(相干解调)
2.32PSK信号的频谱
2PSK和2ASK的形式完全相同,只是的取值不同,求2PSK信号
的功率谱密度,可采用与求2ASK信号功率谱密度相同的方法。
2PSK信号功率谱密度
由于g(t)是双极性矩形脉冲信号上式变为
当概率相等时,P=1/2,上式变为
最后得到
2PSK信号频谱同样由连续谱和离散谱构成,当双极性信号等概出现时,将不存在离散谱部分。
连续谱结构与ASK信号连续谱结构基本相同,仅相差一个常数因子;
2PSK信号带宽与2ASK信号带宽相同。
3、仿真方案(程序流程图),参数设置
4、实验结果(仿真图)及分析
1.通过仿真观察占空比为50%、75%以及100%的单、双极性归零码波形以及其功率谱,分析不同占空比对仿真结果的影响。
图3.1占空比为50%、75%、100%的单极性归零码波形
图3.2占空比为50%、75%、100%的双极性归零码波形
图3.3占空比为50%、75%、100%的单极性归零码功率谱
图3.4占空比为50%、75%、100%的双极性归零码功率谱
2.通过仿真产生一随机消息码序列,将其分别转换为AMI码和HDB3码,观察它们的波形及其功率谱密度。
图3.5AMI码及HDB3码的波形
图3.6AMI码及HDB3码的功率谱
3.设计一个采用2PSK调制的数字通信系统:
产生二进制随机数据,并仿真其对应的2PSK调制波形,分析其频谱。
所产生的调制波形加入不同信噪比的白噪声,选取合适的接收方案,画出系统误码率曲线,并与理论误码率进行对比。
图3.72PSK信号的波形及功率谱密度
图3.82PSK信号的误码率曲线
5、程序源代码
1)通过仿真观察占空比为50%、75%以及100%的单、双极性归零码波形以及其功率谱,分析不同占空比对仿真结果的影响。
%%生成单个码元
Ts=1;
%码元周期
N_sample=128;
%单个码元抽样点数
dt=Ts/N_sample;
%抽样时间间隔
N=50;
%码元数
t=0:
dt:
(N*N_sample-1)*dt;
%序列传输时间
duty1=ones(1,N_sample);
%100%单极性归0码
duty2=[ones(1,N_sample/2),zeros(1,N_sample/2)];
%50%单极性归0码
duty3=[ones(1,N_sample/4),ones(1,N_sample/4),ones(1,N_sample/4),zeros(1,N_sample/4)];
%75%单极性归0码
%%生成随机序列
RAN=randi([0,1],1,N);
%随机01序列
code1=[];
code2=[];
code3=[];
fori=1:
N%生成序列
ifRAN(i)==1
code1=[code1duty1];
code2=[code2duty2];
code3=[code3duty3];
else
code1=[code1zeros(1,N_sample)];
code2=[code2zeros(1,N_sample)];
code3=[code3zeros(1,N_sample)];
end
end
code4=[];
code5=[];
code6=[];
code4=[code4duty1];
code5=[code5duty2];
code6=[code6duty3];
code4=[code4-duty1];
code5=[code5-duty2];
code6=[code6-duty3];
%%绘制出结果
figure
(1)
subplot(3,1,1);
plot(t,code1);
gridon;
title('
单极性:
D=100%'
);
xlabel('
t/s'
ylabel('
幅度'
subplot(3,1,2);
plot(t,code2);
D=50%'
subplot(3,1,3);
plot(t,code3);
D=75%'
figure
(2)
plot(t,code4);
双极性:
plot(t,code5);
plot(t,code6);
%%%%%%%%%%%%%%功率谱绘制与计算%%%%%%%%%%%%%%%%%
fft_code1=fftshift(fft(code1));
%求序列的频谱
fft_code2=fftshift(fft(code2));
fft_code3=fftshift(fft(code3));
fft_code4=fftshift(fft(code4));
fft_code5=fftshift(fft(code5));
fft_code6=fftshift(fft(code6));
PE1=10*log10(abs(fft_code1).^2/(N*Ts));
%公式法求功率谱密度
PE2=10*log10(abs(fft_code2).^2/(N*Ts));
PE3=10*log10(abs(fft_code3).^2/(N*Ts));
PE4=10*log10(abs(fft_code4).^2/(N*Ts));
PE5=10*log10(abs(fft_code5).^2/(N*Ts));
PE6=10*log10(abs(fft_code6).^2/(N*Ts));
PEL1=(-length(fft_code1)/2:
length(fft_code1)/2-1)/N;
%转换成对应频率(-L/2:
L/2-1)*fs/L
PEL2=(-length(fft_code2)/2:
length(fft_code2)/2-1)/N;
PEL3=(-length(fft_code3)/2:
length(fft_code3)/2-1)/N;
PEL4=(-length(fft_code4)/2:
length(fft_code4)/2-1)/N;
PEL5=(-length(fft_code5)/2:
length(fft_code5)/2-1)/N;
PEL6=(-length(fft_code6)/2:
length(fft_code6)/2-1)/N;
figure(3)
plot(PEL1,PE1);
单极性归零码功率谱:
频率/HZ'
axis([-2020-5050]);
P/dB'
plot(PEL2,PE2);
plot(PEL3,PE3);
figure(4)
plot(PEL4,PE4);
双极性归零码功率谱:
D=100%'
plot(PEL5,PE5);
D=50%'
plot(PEL6,PE6);
D=75%'
2)通过仿真产生一随机消息码序列,将其分别转换为AMI码和HDB3码,观察它们的波形及其功率谱密度。
gt1=ones(1,N_sample);
gt2=zeros(1,N_sample);
%%%%%%%%%%%%%%%%%%%%AMI%%%%%%%%%%%%%%%%%
AMI=[];
RAN0=RAN;
single0=1;
N
if(RAN0(i)==1)
RAN0(i)=RAN0(i)*single0;
single0=single0*-1;
AMI=[AMIRAN0(i)*gt1];
end
%%
%%%%%%%%%%%%%%%%%%%%HDB3%%%%%%%%%%%%%%%%%
RAN1=RAN;
single=1;
if(RAN1(i)==1)
RAN1(i)=RAN1(i)*single;
single=single*-1;
RAN2=RAN1;
count=1;
Vcode=0;
N-3
if((RAN2(i)||RAN2(i+1)||RAN2(i+2)||RAN2(i+3))==0)
if(i==1)
RAN2(i+3)=1;
Vcode=[VcodeRAN2(i+3)];
count=count+1;
else
RAN2(i+3)=RAN2(i-1);
%破坏码
if(Vcode(count)==Vcode(count-1))%破坏码是否正负相间
RAN2(i)=-RAN2(i-1);
%加信码
Vcode(count)=-Vcode(count);
forj=i+1:
RAN2(j)=-RAN2(j);
%信码之后极性取反
end
HDB3=[];
HDB3=[HDB3RAN2(i)*gt1];
%%%%%%%%%%%%%%%%%%%%求频谱%%%%%%%%%%%%%%%%%%
fft_AMI=fftshift(fft(AMI));
fft_HDB3=fftshift(fft(HDB3));
PE1=10*log10(abs(fft_AMI).^2/(N*Ts));
PE2=10*log10(abs(fft_HDB3).^2/(N*Ts));
PEL1=(-length(fft_AMI)/2:
length(fft_AMI)/2-1)/N;
PEL2=(-length(fft_HDB3)/2:
length(fft_HDB3)/2-1)/N;
%%%%%%%%%%%%%%%%%%%%绘制码元仿真图%%%%%%%%%%%%%%%%%
subplot(2,1,1);
plot(t,AMI);
AMI码元'
subplot(2,1,2);
plot(t,HDB3);
HDB3码元'
%%%%%%%%%%%%%%%%%%%%绘制功率谱%%%%%%%%%%%%%%%%
subplot(2,1,1);
AMI功率谱'
axis([-1010-1050]);
subplot(2,1,2);
HDB3功率谱'
axis([-1010-5050]);
2数字带通调制仿真
clearall;
closeall;
clc
N_sample=100;
N=1000000;
code=[];
Progressbar=waitbar(0,'
Pleasewait(1/2)...'
%创建进度条
waitbar(i/N);
if(RAN0(i)==0)
RAN0(i)=-1;
code=[codeRAN0(i)*gt1];
close(Progressbar);
fc=5;
CarrierWave=sin(2*pi*fc*t);
%载波信号
BPSK_Wave=code.*CarrierWave;
%调制
fft_code1=fftshift(fft(BPSK_Wave));
%%%%%%%%%%%%%%绘制信号%%%%%%%%%%%%%%%%%%
subplot(3,1,1);
plot(t,code);
axis([0,10,-1.5,1.5]);
码元序列'
%码元序列
subplot(3,1,2);
plot(t,BPSK_Wave);
BPSK波形'
%BPSK波形
subplot(3,1,3);
plot(PEL1,PE1);
axis([fc-5,fc+5,-100,100]);
功率谱密度'
%功率谱密度
%%%%%%%%%%%%%%%%%计算误码率%%%%%%%%%%%%%%%%%%%
Pe=[];
h=waitbar(0,'
Pleasewait(2/2)...'
%%%%%%%%%%%%%加入高斯噪声%%%%%%%%%%%%%%%
SNR=-30:
0;
fori=1:
length(SNR);
BPSK_Noise=awgn(BPSK_Wave,SNR(i));
waitbar(i/length(SNR));
%%%%%%%%%%%%BPSK信号的解调(相干)%%%%%%%%%%%%%
BPSK_Demo=BPSK_Noise.*CarrierWave;
%相干解调
fp=1;
%截至频率2.5hz
fcm=fp/N_sample;
%归一化频率
LPF=fir1(30,2*pi*fcm);
%反复实验得出阶数
BPSK_LPF=filter2(LPF,BPSK_Demo);
%此处不用conv卷积,因为长度增加
%%%%%%%%%%%%%%%%抽样判决%%%%%%%%%%%%%%%%%%%
code_back=[];
count=0;
forq=1:
N*N_sample
if(BPSK_LPF(q)>
0)
code_back=1;
code_back=-1;
if(code_back~=code(q))
error=count/(N*N_sample);
Pe=[Peerror];
%%%%%%%%%%%%%误码率计算%%%%%%%%%%%%%%%%%%%%%%%%
close(h);
snr=10.^(0.1.*SNR);
Pe_theor=(erfc(sqrt(snr))).*(1-0.5*erfc(sqrt(snr)));
semilogy(SNR,Pe,'
b'
SNR/db'
误码率'
holdon;
BPSK误码率曲线'
semilogy(SNR,Pe_theor,'
r'
legend('
实际值'
'
理论值'
)%xlabel('
误码率/10^x'
6、总结及存在的问题