通信原理实验报告.docx

上传人:b****4 文档编号:12387645 上传时间:2023-04-18 格式:DOCX 页数:50 大小:778.62KB
下载 相关 举报
通信原理实验报告.docx_第1页
第1页 / 共50页
通信原理实验报告.docx_第2页
第2页 / 共50页
通信原理实验报告.docx_第3页
第3页 / 共50页
通信原理实验报告.docx_第4页
第4页 / 共50页
通信原理实验报告.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

通信原理实验报告.docx

《通信原理实验报告.docx》由会员分享,可在线阅读,更多相关《通信原理实验报告.docx(50页珍藏版)》请在冰豆网上搜索。

通信原理实验报告.docx

通信原理实验报告

信息科学与工程学院

课程设计报告书

 

课题:

通信原理

班级:

学号:

姓名:

指导教师:

郭丽梅

二〇一〇年十月

✧目录----------------------------------------------2

✧一、课程设计目的----------------------------3

✧二、课程设计题目----------------------------3

✧三、课程设计实验原理-----------------------3

✧四、建立模型描述----------------------------6

✧五、模块功能分析及源程序代码-----------6

✧六、调试过程及结论-------------------------22

✧七、调试分析----------------------------------34

✧八、基于MATLAB的MASK、MFSK、MPSK调制拓展(M=4;M=8)----------34

✧九、心得体会----------------------------------40

✧十、参考文献---------------------------------41

 

摘要:

通信原理是通信工程专业相当重要的学科,对日后就业和科研有重大的意义,通过MATLAB,我们可以清晰地理解通信原理中难以理解的一面,对理论的知识加以深化。

关键字:

MATLAB通信原理GUI序列频谱相位相干非相干

一、课程设计题目

1)、应用MATLAB编制信号生成程序,并对信号进行HDB3编码和译码。

2)、课程设计需要运用MATLAB编程实现2ASK,2FSK,2PSK,2DPSK调制解调过程,并且输出其源码,调制后码元以及解调后码元的波形。

二、课程设计目的

通信原理是一门以算法为核心,理论和实践性较强的学科。

是电子信息工程、通信工程专业、电子信息科学与技术专业的一门重要的专业技术基础课。

通信原理课程设计是在学习完通信原理的相关理论后,进行的综合性训练课程,其目的是:

1.使学生进一步巩固通信原理的基本概念、理论、分析方法和实现方法;

2.增强学生应用Matlab语言编写数字信号处理的应用程序及分析、解决实际问题的能力;

3.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来;

4.提高综合运用所学知识独立分析和解决问题的能力;

5.熟练使用一种高级语言进行编程实现。

三、课程设计实验原理

1.HDB3编码解码原理

HDB3码:

三阶高密度双极性码。

HDB3码与二进制序列的关系:

(1)二进制信号序列中的“0”码在HDB3码中仍编为“0”码,二进制信号中“1”码,在HDB3码中应交替地成+1和-1码,但序列中出现四个连“0”码时应按特殊规律编码(引入传号交替反转码的“破坏点”V码);

(2)二进制序列中四个连“0”按以下规则编码:

信码中出现四个连“0”码时,要将这四个连“0”码用000V或B00V取代节来代替(B和V也是“1”码,可正、可负)。

这两个取代节选取原则是,使任意两个相邻v脉冲间的传号数为奇数时选用000V取代节,偶数时则选用B00V取代节。

2.二进制数字调制技术原理

数字信号的传输方式分为基带传输和带通传输,在实际应用中,大多数信道具有带通特性而不能直接传输基带信号。

为了使数字信号在带通信道中传输,必须使用数字基带信号对载波进行调制,以使信号与信道的特性相匹配。

这种用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。

通常使用键控法来实现数字调制,比如对载波的振幅、频率和相位进行键控。

(1)2ASK信号的产生方法通常有两种:

模拟调制和键控法。

解调有相干解调和非相干解调。

P=1时f(t)=Acoswt;p=0时f(t)=0;其功率谱密度是基带信号功率谱的线性搬移。

解调原理图

图12ASK非相干解调接收系统

图22ASK相干解调接收系统

(2)一个2FSK信号可以看成是两个不同载波的2ASK信号的叠加。

其解调和解调方法和ASK差不多。

2FSK信号的频谱可以看成是f1和f2的两个2ASK频谱的组合。

解调原理图

图32FSK相干解调接收系统

图42FSK非相干解调接收系统

(3)2PSK以载波的相位变化作为参考基准的,当基带信号为0时相位相对于初始相位为0,当基带信号为1时相对于初始相位为180°。

(4)2DPSK调制原理方框图如下图:

S(t)

           

图5间接法信号调制器原理方框图

2DPSK信号的解调,主要有两种方法,即相位比较法和相干解调法。

相干解调法原理方框图如下图:

 

图6相干解调法原理方框图

 

           四、建立模型描述

用MATLAB实现二进制振幅键控(2ASK)的调制和解调

在这里用MATLAB函数来对这个二进制振幅键控(2ASK)来实现调制与解调的仿真。

二进制振幅键信号可以表示完成一个单极性矩形脉冲序列与一个正弦型载波的乘积。

通常它的调制方法有两种,即模拟幅度调制方法和键控方法,在MATLAB里我们采用模拟幅度调制的方法,解调采用相干解调(包络检波法)的方式。

我们用SOURCE函数来产生一个原始二进制基带信号,即一个单矩形脉冲序列。

以askModu函数来进行模拟幅度调制,得到一个已调2ASK信号,并用此函数进行此2ASK信号的频谱分析。

然后用gussian函数加入加性高斯白噪声,再用demoASK函数进行想干解调并分别输出各点的输出波形,最后经过抽样判决后得出输出波形。

同时我们用CheckRatePe函数来得出误码率,最后运行主函数ASK_main可以看到各种波形。

用MATLAB函数来对2FSK、2PSK、2DPSK实现调制与解调的仿真与2ASK的调制与解调过程的仿真类似。

五、模块功能分析及源程序代码

5.1HDB3码的编码和译码

globalx

xn=x;

yn=xn;

num=0;%计数器初始化

fork=1:

length(xn)

ifxn(k)==1%1的计数器

num=num+1;

ifnum/2==fix(num/2)%奇数个一时输出-1,进行记性交替

yn(k)=1;

else

yn(k)=-1;

end

end

end

%HDB3编码

num=0;

yh=yn;

sign=0;

v=zeros(1,length(yn));

B=zeros(1,length(yn));%B脉冲位置记录

fork=1:

length(yn)

ifyn(k)==0

num=num+1;%连0个数计数

ifnum==4%如果4连0

num=0;%计数器清零

yh(k)=1*yh(k-4);%最后一个0改变与前一个非零符号同极性

v(k)=yh(k);

ifyh(k)==sign%如果当前V与前一个极性相同

yh(k)=-1*yh(k);%则当前V符号极性反转,

yh(k-3)=yh(k);%添加B脉冲

B(k-3)=yh(k);%B脉冲位置

v(k)=yh(k);%V脉冲位置

yh(k+1:

length(yn))=-1*yh(k+1:

length(yn));

end

sign=yh(k);%计算前一个V符号的极性

end

else

num=0;%当前输入为0,则计数器清零

end

end

re=[xn',yn',yh',v',B'];

%HDB3解码

input=yh;

decode=input;

sign=0;%极性标志初始化

fork=1:

length(yh)

ifinput(k)~=0

ifsign==yh(k)%如果当前码与前一个非零码的极性相同

decode(k-3:

k)=[0000];

end

sign=input(k);%极性标志

end

end

decode=abs(decode);

subplot(3,1,1);stairs(xn);axis([1length(xn)-22]);

grid;ylabel('xn');

title('HDB3码的编码前图形');

subplot(3,1,2);stairs(yh);axis([1length(xn)-22]);

grid;ylabel('HDB3codes');

title('HDB3码的编码后(解码前)图形');

subplot(3,1,3);stairs(decode);axis([1length(xn)-22]);

grid;ylabel('decodedxn');

title('HDB3码的解码后图形');

code1=yh;

decode1=decode;

5.2ASK的调制与解调

5.2.1source函数

functionsendSignal=source(n,N)

sendSignal=randint(1,n)

bit=[];

fori=1:

length(sendSignal)

ifsendSignal(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure

(1)

plot(1:

length(bit),bit),title('发送端二进制波形'),gridon;

axis([0,N*length(sendSignal),-2,2]);

end

5.2.2askModu函数源程序

functiontransmittedSignal=askModu(signal,bitRate,fc,N)

%signal=[10101001];

%bitRate=1000000;

%fc=1000000;

%N=32;

t=linspace(0,1/bitRate,N);

c=sin(2*pi*t*fc);

transmittedSignal=[];

fori=1:

length(signal)

transmittedSignal=[transmittedSignal,signal(i)*c];

end

figure

(2)

plot(1:

length(transmittedSignal),transmittedSignal);title('ASK调制波形');gridon;

figure(3)

m=0:

length(transmittedSignal)-1;

F=fft(transmittedSignal);

plot(m,abs(real(F))),title('ASK仿真频谱分析');

gridon;

%figure(4)

%plot(m,imag(F));title('ASK_frequency-domainanalysisimag');

%gridon;

End

5.2.3gussian函数源程序

functionsignal=gussian(transmittedSignal,noise)

signal=sqrt

(2)*transmittedSignal;

signal=awgn(signal,noise);

figure(5)

plot(1:

length(signal),signal);

title('包含噪声的波形'),gridon;

end

5.2.4CheckRatepe函数源程序

functionPeWrong=CheckRatePe(signal1,signal2,s)

rights=0;

wrongs=0;

forki=1:

s-2

if(signal1(ki)==signal2(ki))

rights=rights+1;

else

wrongs=wrongs+1;

end

end

PeWrong=wrongs/(wrongs+rights);

End

5.2.5demoASK函数源程序

functionbitstream=demoASK(receivedSignal,bitRate,fc,n,N)

loadnum

signal1=receivedSignal;

signal2=abs(signal1);%整流

signal3=filter(num1,1,signal2);%LPF,包络检波¨

IN=fix(length(num1)/2);%延迟时间

bitstream=[];

LL=fc/bitRate*N;

i=IN+LL/2;

while(i<=length(signal3))%判决

bitstream=[bitstream,signal3(i)>=0.5];

i=i+LL;

end

figure(6)

subplot(3,1,1);

plot(1:

length(signal1),signal1);title('接收端波形(包含噪声)');gridon;

subplot(3,1,2);

plot(1:

length(signal2),signal2);title('整流之后的波形');gridon;

subplot(3,1,3);

plot(1:

length(signal3),signal3);title('LPF滤波后的包络波形');gridon;

bit=[];

fori=1:

length(bitstream)

ifbitstream(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure(7)

plot(bit),title('接收端二进制波形'),gridon;

axis([0,N*length(bitstream),-2.5,2.5]);

end

5.2.6ASK_main函数源程序

closeall

clearall

%{

ti=0;

fpeask=[];

startn=-6;

endn=18;

forti=startn:

endn

n=1000;

%}

n=16;

fc=1000000;%fc>=bitRatefc/bitRate为每个包含sin周期个数

bitRate=1000000;

N=50;

%noise=ti;

noise=10;

signal=source(n,N);

transmittedSignal=askModu(signal,bitRate,fc,N);

signal1=gussian(transmittedSignal,noise);

configueSignal=demoASK(signal1,bitRate,fc,n,N);

%{

configueSignal;

P=CheckRatePe(signal,configueSignal,n)

fpeask=[fpeask,P];

end

figure(8);

semilogy(startn:

length(fpeask)+startn-1,fpeask);

gridon;

title('ASK—误码率');

xlabel('r/dB');

ylabel('PeASK');

savePeRate.matfpeask

%}

5.3FSK的调制与解调

5.3.1source函数

functionsendSignal=source(n,N)

sendSignal=randint(1,n)

bit=[];

fori=1:

length(sendSignal)

ifsendSignal(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure

(1)

plot(bit),title('发送端二进制波形'),gridon;

axis([0,N*length(sendSignal),-2.5,2.5]);

end

5.3.2FskModu函数源程序

functiontransmittedSignal=fskModu(signal,bitRate,f1,f2,N)

t=linspace(0,1/bitRate,N);

c1=sin(2*pi*t*f1);

c2=sin(2*pi*t*f2);

transmittedSignal=[];

fori=1:

length(signal)

ifsignal(i)==1

transmittedSignal=[transmittedSignal,c1];

else

transmittedSignal=[transmittedSignal,c2];

end

end

figure

(2)

plot(1:

length(transmittedSignal),transmittedSignal);title('FSK调制波形');gridon;

figure(3)

m=0:

length(transmittedSignal)-1;

F=fft(transmittedSignal);

plot(m,abs(real(F))),title('FSK仿真频谱分析');

gridon;

end

5.3.3gussian函数源程序

functionsignal=gussian(transmittedSignal,noise)

signal=sqrt

(2)*transmittedSignal;

signal=awgn(signal,noise);

figure(4)

plot(1:

length(signal),signal),title('包含噪声的波形');

gridon;

end

5.3.4CheckRatepe函数源程序

functionPeWrong=CheckRatePe(signal1,signal2,s)

rights=0;

wrongs=0;

forki=1:

s-2

if(signal1(ki)==signal2(ki))

rights=rights+1;

else

wrongs=wrongs+1;

end

end

PeWrong=wrongs/(wrongs+rights);

end

5.3.5demoFSK函数源程序

functionbitstream=demoFSK(receivedSignal,bitRate,f1,f2,N)

loadFSKnum

signal1=receivedSignal;

signal2=filter(gaotong,1,signal1);%通过HPF,得到高频分量

signal3=abs(signal2);%整流

signal3=filter(lowpass,1,signal3);%通过LPF,形成包络

bitstream=[];

IN1=fix(length(lowpass)/2)+fix(length(gaotong)/2);%延迟时间

bitstream1=[];

LL=N;%每个bit的抽样点数

i=IN1+LL/2;

while(i<=length(signal3))%判决

bitstream1=[bitstream1,signal3(i)>=0.5];

i=i+LL;

end

bitstream1

figure(5)

subplot(3,1,1);

plot(1:

length(signal1),signal1);title('接收端波形(包含噪声)');gridon;

subplot(3,1,2);

plot(1:

length(signal2),signal2);title('通过HPF得到的高频分量波形');gridon;

subplot(3,1,3);

plot(1:

length(signal3),signal3);title('通过LPF后的包络波形');gridon;

signal4=filter(daitong,1,signal1);%通过BPF,得到低频分量

signal5=abs(signal4);%整流

signal5=filter(lowpass,1,signal5);%通过LPF,形成包络

IN2=fix(length(lowpass)/2)+fix(length(daitong)/2);%延迟时间

bitstream2=[];

LL=N;%每个bit的抽样点数

i=IN2+LL/2;

while(i<=length(signal5))%判决

bitstream2=[bitstream2,signal5(i)>=0.5];

i=i+LL;

end

bitstream2

figure(6)

subplot(3,1,1);

plot(1:

length(signal1),signal1);title('接收端波形(包含噪声)');gridon;

subplot(3,1,2);

plot(1:

length(signal4),signal4);title('通过BPF得的低频分量波形');gridon;

subplot(3,1,3);

plot(1:

length(signal5),signal5);title('通过LPF后的包络波形');gridon;

fori=1:

min(length(bitstream1),length(bitstream2))%判决

if(bitstream1(i)>bitstream2(i))

bitstream(i)=1;

else

bitstream(i)=0;

end

end

bitstream

bit=[];%接收端波形

fori=1:

length(bitstream)

ifbitstream(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure(7)

plot(bit),title('接收端波形(解调后波形)'),gridon;

axis([0,N*length(bitstream),-2.5,2.5]);

end

5.3.6FSK_main函数源程序

closeall

clearall

%{

ti=0;

fpefsk=[];

startn=-6;

endn=18;

forti=startn:

endn

n=1000;

%}

n=16

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1