通信原理软件实验.docx
- 文档编号:27662617
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:15
- 大小:36.30KB
通信原理软件实验.docx
《通信原理软件实验.docx》由会员分享,可在线阅读,更多相关《通信原理软件实验.docx(15页珍藏版)》请在冰豆网上搜索。
通信原理软件实验
通信原理软件实验
1、设计题目
1、基带码型仿真
1)通过仿真观察占空比为50%、75%以及100%的单、双极性归零码波形以及其功率谱,分析不同占空比对仿真结果的影响。
2)通过仿真产生一随机消息码序列,将其分别转换为AMI码和HDB3码,观察它们的波形及其功率谱密度。
2、数字带通调制仿真
设计一个采用2PSK调制的数字通信系统:
产生二进制随机数据,并仿真其对应的2PSK调制波形,分析其频谱。
所产生的调制波形加入不同信噪比的白噪声,选取合适的接收方案,画出系统误码率曲线,并与理论误码率进行对比。
2、实验基本原理
1、基带码型仿真
单极性归零码
发送“l”时,在整个码元期间高电平只持续一段时间,在码元的
其余时间内则返回到零电平;发送“0”时低电平。
常记作RZ。
双极性归零码
10100110
AMI码
将消息代码“0”(空号)和“1”(传号)按如下规则进行编码:
代码的0
仍变换为传输码的0,而把代码中的1交替地变换为传输码的+1、-1、
+1、-1、…。
消息代码:
10011000111...
AMI码:
+100-1+1000-1+1-1...
由于AMI码的传号交替反转,故由它决定的基带信号将出现正负脉冲交
替,而0电位保持不变的规律。
由此看出,这种基带信号无直流成分,
且只有很小的低频成分,因而它特别适宜在不允许这些成分通过的信道
中传输。
但是,AMI码有一个重要缺点,即当它用来获取定时信息时,
由于它可能出现长的连0串,会造成提取定时信号的困难。
HDB3码
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
AMI码:
-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
2、数字带通调制仿真
2PSK基本原理
二进制移相键控是用二进制数字信号0,1去控制载波的两个相位0,π
的方法,其时域表达式为
式中
,为双极性数字信号,若g(t)是脉宽为Ts的单个矩形脉冲,则有
以载波的不同相位直接去表示相应数字信息的相位键控称为绝对
移相,即2PSK。
2PSK信号的产生
(a)模拟相乘法(b)键控法
2PSK的解调(相干解调)
2PSK信号的频谱
2PSK和2ASK的形式完全相同,只是的取值不同,求2PSK信号
的功率谱密度,可采用与求2ASK信号功率谱密度相同的方法。
2PSK信号功率谱密度
由于g(t)是双极性矩形脉冲信号上式变为
当概率相等时,P=1/2,上式变为
最后得到
2PSK信号频谱同样由连续谱和离散谱构成,当双极性信号等概出现时,将不存在离散谱部分。
连续谱结构与ASK信号连续谱结构基本相同,仅相差一个常数因子;2PSK信号带宽与2ASK信号带宽相同。
3、仿真方案(程序流程图),参数设置
4、实验结果(仿真图)及分析
1.通过仿真观察占空比为50%、75%以及100%的单、双极性归零码波形以及其功率谱,分析不同占空比对仿真结果的影响。
图占空比为50%、75%、100%的单极性归零码波形
图占空比为50%、75%、100%的双极性归零码波形
图占空比为50%、75%、100%的单极性归零码功率谱
图占空比为50%、75%、100%的双极性归零码功率谱
2.通过仿真产生一随机消息码序列,将其分别转换为AMI码和HDB3码,观察它们的波形及其功率谱密度。
图AMI码及HDB3码的波形
图AMI码及HDB3码的功率谱
3.设计一个采用2PSK调制的数字通信系统:
产生二进制随机数据,并仿真其对应的2PSK调制波形,分析其频谱。
所产生的调制波形加入不同信噪比的白噪声,选取合适的接收方案,画出系统误码率曲线,并与理论误码率进行对比。
图2PSK信号的波形及功率谱密度
图2PSK信号的误码率曲线
5、程序源代码
1、基带码型仿真
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=[];
fori=1:
N%生成序列
ifRAN(i)==1
code4=[code4duty1];
code5=[code5duty2];
code6=[code6duty3];
else
code4=[code4-duty1];
code5=[code5-duty2];
code6=[code6-duty3];
end
end
%%绘制出结果
figure
(1)
subplot(3,1,1);plot(t,code1);gridon;title('单极性:
D=100%');xlabel('t/s');ylabel('幅度');
subplot(3,1,2);plot(t,code2);gridon;title('单极性:
D=50%');xlabel('t/s');ylabel('幅度');
subplot(3,1,3);plot(t,code3);gridon;title('单极性:
D=75%');xlabel('t/s');ylabel('幅度');
figure
(2)
subplot(3,1,1);plot(t,code4);gridon;title('双极性:
D=100%');xlabel('t/s');ylabel('幅度');
subplot(3,1,2);plot(t,code5);gridon;title('双极性:
D=50%');xlabel('t/s');ylabel('幅度');
subplot(3,1,3);plot(t,code6);gridon;title('双极性:
D=75%');xlabel('t/s');ylabel('幅度');
%%%%%%%%%%%%%%功率谱绘制与计算%%%%%%%%%%%%%%%%%
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)
subplot(3,1,1);plot(PEL1,PE1);gridon;title('单极性归零码功率谱:
D=100%');xlabel('频率/HZ');axis([-2020-5050]);ylabel('P/dB');
subplot(3,1,2);plot(PEL2,PE2);gridon;title('单极性归零码功率谱:
D=50%');xlabel('频率/HZ');axis([-2020-5050]);ylabel('P/dB');
subplot(3,1,3);plot(PEL3,PE3);gridon;title('单极性归零码功率谱:
D=75%');xlabel('频率/HZ');axis([-2020-5050]);ylabel('P/dB');
figure(4)
subplot(3,1,1);plot(PEL4,PE4);gridon;title('双极性归零码功率谱:
D=100%');axis([-2020-5050]);xlabel('频率/HZ');ylabel('P/dB');
subplot(3,1,2);plot(PEL5,PE5);gridon;title('双极性归零码功率谱:
D=50%');axis([-2020-5050]);xlabel('频率/HZ');ylabel('P/dB');
subplot(3,1,3);plot(PEL6,PE6);gridon;title('双极性归零码功率谱:
D=75%');axis([-2020-5050]);xlabel('频率/HZ');ylabel('P/dB');
2)通过仿真产生一随机消息码序列,将其分别转换为AMI码和HDB3码,观察它们的波形及其功率谱密度。
Ts=1;
N_sample=128;
dt=Ts/N_sample;
N=50;
t=0:
dt:
(N*N_sample-1)*dt;
RAN=randi([0,1],1,N);%随机01序列
gt1=ones(1,N_sample);
gt2=zeros(1,N_sample);
%%%%%%%%%%%%%%%%%%%%AMI%%%%%%%%%%%%%%%%%
AMI=[];
RAN0=RAN;
single0=1;
fori=1:
N
if(RAN0(i)==1)
RAN0(i)=RAN0(i)*single0;
single0=single0*-1;
end
end
AMI=[];
fori=1:
N
AMI=[AMIRAN0(i)*gt1];
end
%%
%%%%%%%%%%%%%%%%%%%%HDB3%%%%%%%%%%%%%%%%%
RAN1=RAN;
single=1;
fori=1:
N
if(RAN1(i)==1)
RAN1(i)=RAN1(i)*single;
single=single*-1;
end
end
RAN2=RAN1;
count=1;
Vcode=0;
fori=1:
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);%破坏码
Vcode=[VcodeRAN2(i+3)];
count=count+1;
if(Vcode(count)==Vcode(count-1))%破坏码是否正负相间
RAN2(i)=-RAN2(i-1);%加信码
Vcode(count)=-Vcode(count);
forj=i+1:
N
RAN2(j)=-RAN2(j);%信码之后极性取反
end
end
end
end
end
HDB3=[];
fori=1:
N
HDB3=[HDB3RAN2(i)*gt1];
end
%%%%%%%%%%%%%%%%%%%%求频谱%%%%%%%%%%%%%%%%%%
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;%转换成对应频率(-L/2:
L/2-1)*fs/L
PEL2=(-length(fft_HDB3)/2:
length(fft_HDB3)/2-1)/N;
%%%%%%%%%%%%%%%%%%%%绘制码元仿真图%%%%%%%%%%%%%%%%%
figure
(1)
subplot(2,1,1);plot(t,AMI);gridon;title('AMI码元');xlabel('t/s');ylabel('幅度');
subplot(2,1,2);plot(t,HDB3);gridon;title('HDB3码元');xlabel('t/s');ylabel('幅度');
%%
%%%%%%%%%%%%%%%%%%%%绘制功率谱%%%%%%%%%%%%%%%%
figure
(2)
subplot(2,1,1);plot(PEL1,PE1);gridon;title('AMI功率谱');axis([-1010-1050]);xlabel('频率/HZ');ylabel('P/dB');
subplot(2,1,2);plot(PEL2,PE2);gridon;title('HDB3功率谱');axis([-1010-5050]);xlabel('频率/HZ');ylabel('P/dB');
2数字带通调制仿真
设计一个采用2PSK调制的数字通信系统:
产生二进制随机数据,并仿真其对应的2PSK调制波形,分析其频谱。
所产生的调制波形加入不同信噪比的白噪声,选取合适的接收方案,画出系统误码率曲线,并与理论误码率进行对比。
clearall;
closeall;
clc
Ts=1;
N_sample=100;
dt=Ts/N_sample;
N=1000000;
t=0:
dt:
(N*N_sample-1)*dt;
RAN=randi([0,1],1,N);%随机01序列
gt1=ones(1,N_sample);
code=[];
RAN0=RAN;
Progressbar=waitbar(0,'Pleasewait(1/2)...');%创建进度条
fori=1:
N
waitbar(i/N);
if(RAN0(i)==0)
RAN0(i)=-1;
end
code=[codeRAN0(i)*gt1];
end
close(Progressbar);
fc=5;
CarrierWave=sin(2*pi*fc*t);%载波信号
BPSK_Wave=code.*CarrierWave;%调制
fft_code1=fftshift(fft(BPSK_Wave));%求序列的频谱
PE1=10*log10(abs(fft_code1).^2/(N*Ts));%公式法求功率谱密度
PEL1=(-length(fft_code1)/2:
length(fft_code1)/2-1)/N;%转换成对应频率(-L/2:
L/2-1)*fs/L
%%%%%%%%%%%%%%绘制信号%%%%%%%%%%%%%%%%%%
figure
(1)
subplot(3,1,1);plot(t,code);axis([0,10,,]);title('码元序列');xlabel('t/s');ylabel('幅度');%码元序列
subplot(3,1,2);plot(t,BPSK_Wave);axis([0,10,,]);title('BPSK波形');xlabel('t/s');ylabel('幅度');%BPSK波形
subplot(3,1,3);plot(PEL1,PE1);axis([fc-5,fc+5,-100,100]);xlabel('频率/HZ');ylabel('P/dB');title('功率谱密度');%功率谱密度
%%%%%%%%%%%%%%%%%计算误码率%%%%%%%%%%%%%%%%%%%
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;%截至频率
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;
else
code_back=-1;
end
if(code_back~=code(q))
count=count+1;
end
end
error=count/(N*N_sample);
Pe=[Peerror];
end
%%%%%%%%%%%%%误码率计算%%%%%%%%%%%%%%%%%%%%%%%%
close(h);
figure
(2)
snr=10.^.*SNR);
Pe_theor=(erfc(sqrt(snr))).**erfc(sqrt(snr)));
semilogy(SNR,Pe,'b');xlabel('SNR/db');ylabel('误码率');holdon;title('BPSK误码率曲线');
semilogy(SNR,Pe_theor,'r');gridon;legend('实际值','理论值')%xlabel('SNR/db');ylabel('误码率/10^x');title('BPSK误码率曲线');
6、总结及存在的问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 原理 软件 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)