通信原理实验报告.doc_第1页
通信原理实验报告.doc_第2页
通信原理实验报告.doc_第3页
通信原理实验报告.doc_第4页
通信原理实验报告.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息科学与工程学院 课程设计报告书 课 题: 通信原理 班 级: 学 号: 姓 名: 指导教师: 郭 丽 梅 二一 年 十 月 目 录 目录-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;其功率谱密度是基带信号功率谱的线性搬移。解调原理图图1 2ask非相干解调接收系统 图2 2ask相干解调接收系统 (2) 一个2fsk信号可以看成是两个不同载波的2ask信号的叠加。其解调和解调方法和ask差不多。2fsk信号的频谱可以看成是f1和f2的两个2ask频谱的组合。解调原理图带通滤波器相乘器低通滤波器抽样判决器带通滤波器相乘器低通滤波器 图3 2fsk相干解调接收系统带通滤波器包络检波器带通滤波器包络检波器抽样判决器 图4 2fsk非相干解调接收系统 (3) 2psk以载波的相位变化作为参考基准的,当基带信号为0时相位相对于初始相位为0, 当基带信号为1时相对于初始相位为180。 (4) 2dpsk调制原理方框图如下图:s(t) 载波移相p码变换 a(t)图5 间接法信号调制器原理方框图2dpsk信号的解调,主要有两种方法,即相位比较法和相干解调法。相干解调法原理方框图如下图:带通滤波相乘低通滤波抽样判决逆码变换本地载波 提取图6 相干解调法原理方框图 四、建立模型描述 用matlab实现二进制振幅键控(2ask)的调制和解调在这里用matlab函数来对这个二进制振幅键控(2ask)来实现调制与解调的仿真。二进制振幅键信号可以表示完成一个单极性矩形脉冲序列与一个正弦型载波的乘积。通常它的调制方法有两种,即模拟幅度调制方法和键控方法,在matlab里我们采用模拟幅度调制的方法,解调采用相干解调(包络检波法)的方式。我们用source函数来产生一个原始二进制基带信号,即一个单矩形脉冲序列。以askmodu函数来进行模拟幅度调制,得到一个已调2ask信号,并用此函数进行此2ask信号的频谱分析。然后用gussian函数加入加性高斯白噪声,再用demoask函数进行想干解调并分别输出各点的输出波形,最后经过抽样判决后得出输出波形。同时我们用checkratepe函数来得出误码率,最后运行主函数ask_main可以看到各种波形。用matlab函数来对2fsk、2psk、2dpsk实现调制与解调的仿真与2ask的调制与解调过程的仿真类似。 五、 模块功能分析及源程序代码5.1 hdb3码的编码和译码global xxn=x;yn=xn;num=0; %计数器初始化for k=1:length(xn) if xn(k)=1 %1的计数器 num=num+1; if num/2=fix(num/2) %奇数个一时输出-1,进行记性交替 yn(k)=1; else yn(k)=-1; end endend%hdb3编码num=0;yh=yn;sign=0;v=zeros(1,length(yn);b=zeros(1,length(yn);% b脉冲位置记录for k=1:length(yn) if yn(k)=0 num=num+1;%连0个数计数 if num=4 %如果4连0 num=0; %计数器清零 yh(k)=1*yh(k-4);%最后一个0改变与前一个非零符号同极性 v(k)=yh(k); if yh(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,则计数器清零 endendre=xn,yn,yh,v,b;%hdb3解码input=yh;decode=input;sign=0; %极性标志初始化for k=1:length(yh) if input(k)=0 if sign=yh(k)%如果当前码与前一个非零码的极性相同 decode(k-3:k)=0 0 0 0; end sign=input(k);%极性标志 endend decode=abs(decode); subplot(3,1,1);stairs(xn);axis(1 length(xn) -2 2); grid; ylabel(xn);title(hdb3 码的编码前图形);subplot(3,1,2);stairs(yh);axis(1 length(xn) -2 2); grid; ylabel(hdb3 codes);title(hdb3 码的编码后(解码前)图形);subplot(3,1,3);stairs(decode);axis(1 length(xn) -2 2); grid; ylabel(decoded xn);title(hdb3 码的解码后图形); code1=yh;decode1=decode; 5.2 ask的调制与解调 5.2.1 source函数function sendsignal=source(n,n) sendsignal=randint(1,n) bit=; for i=1:length(sendsignal) if sendsignal(i)=0 bit1=zeros(1,n); else bit1=ones(1,n); end bit=bit,bit1; end figure(1) plot(1:length(bit),bit),title(发送端二进制波形),grid on; axis(0,n*length(sendsignal),-2,2);end5.2.2 askmodu函数源程序function transmittedsignal=askmodu(signal,bitrate,fc,n) %signal=1 0 1 0 1 0 0 1;% bitrate=1000000;% fc=1000000;% n=32; t=linspace(0,1/bitrate,n); c=sin(2*pi*t*fc); transmittedsignal=; for i=1:length(signal) transmittedsignal=transmittedsignal,signal(i)*c; endfigure(2) plot(1:length(transmittedsignal),transmittedsignal);title(ask调制波形 );grid on;figure(3)m=0:length(transmittedsignal)-1;f=fft(transmittedsignal);plot(m,abs(real(f),title(ask仿真频谱分析);grid on;%figure(4)%plot(m,imag(f);title(ask_frequency-domain analysis imag);%grid on;end5.2.3 gussian函数源程序function signal=gussian(transmittedsignal,noise) signal=sqrt(2)*transmittedsignal; signal=awgn(signal,noise); figure(5) plot(1:length(signal),signal); title(包含噪声的波形),grid on;end5.2.4 checkratepe函数源程序function pewrong=checkratepe(signal1,signal2,s)rights=0;wrongs=0;for ki=1:s-2 if(signal1(ki)=signal2(ki) rights=rights+1; else wrongs=wrongs+1; endendpewrong=wrongs/(wrongs+rights);end5.2.5 demoask函数源程序function bitstream=demoask(receivedsignal,bitrate,fc,n,n) load num 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=0.5; i=i+ll; end figure(6) subplot(3,1,1); plot(1:length(signal1),signal1);title(接收端波形(包含噪声);grid on; subplot(3,1,2); plot(1:length(signal2),signal2);title(整流之后的波形);grid on; subplot(3,1,3); plot(1:length(signal3),signal3);title(lpf滤波后的包络波形);grid on; bit=; for i=1:length(bitstream) if bitstream(i)=0 bit1=zeros(1,n); else bit1=ones(1,n); end bit=bit,bit1; end figure(7) plot(bit),title(接收端二进制波形),grid on; axis(0,n*length(bitstream),-2.5,2.5);end5.2.6 ask_main函数源程序close allclear all%ti=0;fpeask=;startn=-6;endn=18;for ti=startn:endnn=1000;%n=16;fc=1000000; %fc=bitrate fc/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;endfigure(8);semilogy(startn:length(fpeask)+startn-1,fpeask);grid on;title(ask误码率 );xlabel(r/db);ylabel(peask);save perate.mat fpeask% 5.3 fsk的调制与解调 5.3.1 source函数function sendsignal=source(n,n) sendsignal=randint(1,n) bit=; for i=1:length(sendsignal) if sendsignal(i)=0 bit1=zeros(1,n); else bit1=ones(1,n); end bit=bit,bit1; end figure(1) plot(bit),title(发送端二进制波形),grid on; axis(0,n*length(sendsignal),-2.5,2.5);end5.3.2 fskmodu函数源程序function transmittedsignal=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=; for i=1:length(signal) if signal(i)=1 transmittedsignal=transmittedsignal,c1; else transmittedsignal=transmittedsignal,c2; end endfigure(2) plot(1:length(transmittedsignal),transmittedsignal);title(fsk调制波形);grid on;figure(3)m=0:length(transmittedsignal)-1;f=fft(transmittedsignal);plot(m,abs(real(f),title(fsk仿真频谱分析);grid on;end5.3.3 gussian函数源程序function signal=gussian(transmittedsignal,noise) signal=sqrt(2)*transmittedsignal; signal=awgn(signal,noise); figure(4) plot(1:length(signal),signal),title(包含噪声的波形); grid on;end5.3.4 checkratepe函数源程序function pewrong=checkratepe(signal1,signal2,s)rights=0;wrongs=0;for ki=1:s-2 if(signal1(ki)=signal2(ki) rights=rights+1; else wrongs=wrongs+1; endendpewrong=wrongs/(wrongs+rights);end5.3.5 demofsk函数源程序function bitstream=demofsk(receivedsignal,bitrate,f1,f2,n) load fsknum 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=0.5; i=i+ll; end bitstream1 figure(5) subplot(3,1,1); plot(1:length(signal1),signal1);title(接收端波形(包含噪声);grid on; subplot(3,1,2); plot(1:length(signal2),signal2);title(通过hpf得到的高频分量波形);grid on; subplot(3,1,3); plot(1:length(signal3),signal3);title(通过lpf后的包络波形);grid on; 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=0.5; i=i+ll; end bitstream2 figure(6) subplot(3,1,1); plot(1:length(signal1),signal1);title(接收端波形(包含噪声);grid on; subplot(3,1,2); plot(1:length(signal4),signal4);title(通过bpf得的低频分量波形);grid on; subplot(3,1,3); plot(1:length(signal5),signal5);title(通过lpf后的包络波形);grid on; for i=1:min(length(bitstream1),length(bitstream2) %判决 if(bitstream1(i)bitstream2(i) bitstream(i)=1; else bitstream(i)=0; end end bitstream bit=; %接收端波形 for i=1:length(bitstream) if bitstream(i)=0 bit1=zeros(1,n); else bit1=ones(1,n); end bit=bit,bit1; end figure(7) plot(bit),title(接收端波形(解调后波形)),grid on; axis(0,n*length(bitstream),-2.5,2.5); end 5.3.6 fsk_main函数源程序close allclear all%ti=0;fpefsk=;startn=-6;endn=18;for ti=startn:endnn=1000;%n=16;f1=18000000;f2=6000000;bitrate=1000000;n=50;%noise=ti;noise=10;signal=fsksource(n,n);transmittedsignal=fskmodu(signal,bitrate,f1,f2,n);signal1=fskgussian(transmittedsignal,noise);configuesignal=demofsk(signal1,bitrate,f1,f2,n);%configuesignal;p=checkratepe(signal,configuesignal,n)fpefsk=fpefsk,p;endfigure(8);semilogy(startn:length(fpefsk)+startn-1,fpefsk);grid on;title(bit error rate of fsk);xlabel(r/db);ylabel(pefsk);load peratesave perate.mat fpefsk fpeask%5.4 psk的调制与解调 5.4.1 source函数function sendsignal=source(n,n) sendsignal=randint(1,n) bit=; for i=1:length(sendsignal) if sendsignal(i)=0 bit1=zeros(1,n); else bit1=ones(1,n); end bit=bit,bit1; end figure(1) plot(bit),title(发送端二进制波形),grid on; axis(0,n*length(sendsignal),-2.5,2.5);end5.4.2 pskmodu函数源程序function transmittedsignal=bpskmodu(signal,bitrate,fc,n) t=linspace(0,1/bitrate,n); c1=sin(2*pi*t*fc); c2=sin(2*pi*t*fc + pi); transmittedsignal=; for i=1:length(signal) if signal(i)=1 transmittedsignal=transmittedsignal,c1; else transmittedsignal=transmittedsignal,c2; end endfigure(2) plot(1:length(transmittedsignal),transmittedsignal);title(bpsk);grid on;figure(3)m=0:length(transmittedsignal)-1;f=fft(transmittedsignal);plot(m,abs(real(f),title(2psk仿真频谱分析 );grid on;end5.4.3 gussian函数源程序function signal=bpskgussian(transmittedsignal,noise) signal=sqrt(2)*transmittedsignal; signal=awgn(signal,noise); figure(4) plot(1:length(signal),signal),grid on; title(包含噪声的波形)end5.4.4 checkratepe函数源程序function pewrong=bpskcheckratepe(signal1,signal2,s)rights=0;wrongs=0;for ki=1:s-2 if(signal1(ki)=signal2(ki) rights=rights+1; else wrongs=wrongs+1; endendpewrong=wrongs/(wrongs+rights);end5.4.5 demopsk函数源程序function bitstream=demobpsk(receivedsignal,bitrate,fc,n,n) load num %读取num中存储的低通滤波用的数据 signal1=receivedsignal; t=linspace(0,1/bitrate,n); c=sin(2*pi*t*fc); signal=; for i=1:n signal=signal,c; end signal2=signal1.*signal; %乘同频同相sin signal3=filter(num1,1,signal2); %lpf,包络检波 in=fix(length(num1)/2); %延迟时间 bitstream=; ll=fc/bitrate*n; i=in+ll/2; while (i=0; i=i+ll; end figure(5) subplot(3,1,1); plot(1:length(signal1),signal1);title(接收端波形 (包含噪声);grid on; subplot(3,1,2); plot(1:length(signal2),signal2); ylabel(相干解调); title(乘同频同相sin之后的波形);grid on; subplot(3,1,3); plot(1:length(signal3),signal3);title(lpf滤波后的包络波形);grid on; bit=; for i=1:length(bitstream) if bitstream(i)=0 bit1=zeros(1,n); else bit1=ones(1,n); end bit=bit,bit1; end figure(6) plot(bit);title(接收端二进波形(解调后波形));grid on; axis(0,n*length(bitstream),-2.5,2.5);end5.4.6 psk_main函数源程序close allclear all%ti=0;fpepsk=;startn=-30;endn=-6;for ti=startn:endnn=1000;%n=16;fc=1000000;bitrate=1000000;n=50;%noise=ti;noise=10;signal=bpsksource(n,n);transmittedsignal=bpskmodu(signal,bitrate,fc,n);signal1=bpskgussian(transmittedsignal,noise);configuesignal=demobpsk(signal1,bitrate,fc,n,n);%configuesignal;p=checkratepe(signal,configuesignal,n)fpepsk=fpepsk,p;endfigure(8);semilogy(startn:length(fpepsk)+startn-1,fpepsk);grid on;title(bit error rate of psk);xlabel(r/db);ylabel(pepsk);%load perate%save perate.mat fpepsk fpeask fpefsksave peratep.mat fpepsk%5.5 dpsk的调制与解调 fs = 30000;time_hold_on = 0.1;num_unit = fs * time_hold_on;high_level = ones ( 1, num_unit );low_level = zeros ( 1, num_unit );w = 300;a = 1;sign_set = 0,1,1,0,1,0,0,1lenth_of_sign = length ( sign_set );st = zeros ( 1, num_unit * lenth_of_sign );sign_orign = zeros ( 1, num_unit * lenth_of_sign );sign_result = zeros ( 1, num_unit * lenth_of_sign );t = 0 : 1/fs : time_hold_on * lenth_of_sign - 1/fs;for i = 1 : lenth_of_sign if sign_set(i) = 1 sign_orign( (i-1)*num_unit + 1 : i*num_unit) = high_level; else sign_orign( (i-1)*num_unit + 1 : i*num_unit) = low_level; endendfor i = 1 : lenth_of_sign if sign_set(i) = 1 st( (i-1)*num_unit + 1 : i*num_unit) = a * cos ( 2 * pi * w * t( (i-1)*num_unit + 1 : i*num_unit ) + ( pi / 2 ) ); else st( (i-1)*num_unit + 1 : i*num_unit) = a * cos ( 2 * pi * w * t( (i-1)*num_unit + 1 : i*num_unit ) ); endend figuresubplot ( 2, 1, 1 )plot(t, sign_orign);axis( 0 , time_hold_on *( lenth_of_sign + 1), - (a / 2), a + (a / 2) );title ( 原始信号 );grid subplot ( 2, 1, 2 );plot ( t, st );axis( 0 , time_hold_on *( lenth_of_sign + 1), - 3*(a / 2), 3*(a / 2) );title ( 调制后的信号 );griddt = st .* cos ( 2 * pi * w * t ); figuresubplot(2,1,1)plot ( t, dt );axis( 0 , time_hold_on *( lenth_of_sign + 1), - 3*(a / 2), 3*(a / 2) );title ( 相乘后的波形 );gridn,wn = buttord( 2*pi*50, 2*pi*150,3,25,s); %临界频率采用角频率表示b,a=butter(n,wn,s);bz,az=impinvar(b,a,fs); %映射为数字的 dt = filter(bz,az,dt); subplot(2,1,2)plot ( t, dt );axis( 0 , time_hold_on *( lenth_of_sign + 1), - 3*(a / 2), 3*(a / 2) );title ( 低通滤波后的波形 );gridfor i = 1 : lenth_of_sign if dt(2*i-1)*num_unit/2) 0.25 sign_result( (i-1)*num_unit + 1 : i*num_unit) = high_level; else sign_result( (i-1)*num_unit + 1 : i*num_unit) = low_level; en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论