通信原理实验报告

更新时间:2023-10-07 18:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

信息科学与工程学院

课程设计报告书

课 题: 通信原理 班 级: 学 号: 姓 名:

指导教师: 郭 丽 梅 二〇一〇 年 十 月

目 录

? 目录----------------------------------------------2 ? 一、课程设计目的----------------------------3 ? 二、课程设计题目----------------------------3 ? 三、课程设计实验原理-----------------------3

1 / 41

? 四、建立模型描述----------------------------6 ? 五、模块功能分析及源程序代码-----------6

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

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

? 八、基于MATLAB的MASK、MFSK、MPSK调制拓展

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

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

摘要:

通信原理是通信工程专业相当重要的学科,对日后就业和科研有重大的意义,

2 / 41

通过MATLAB,我们可以清晰地理解通信原理中难以理解的一面,对理论的知识加以深化。b5E2RGbCAP 关键字:

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

一、 课程设计题目

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

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

通信原理是一门以算法为核心,理论和实践性较强的学科。是电子信息工程、通信工程专业、电子信息科学与技术专业的一门重要的专业技术基础课。通信原理课程设计是在学习完通信原理的相关理论后,进行的综合性训练课程,其目的是:DXDiTa9E3d 1.使学生进一步巩固通信原理的基本概念、理论、分析方法和实现方法; 2.增强学生应用Matlab语言编写数字信号处理的应用程序及分析、解决实际问 题的能力;

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

4.提高综合运用所学知识独立分析和解决问题的能力; 5.熟练使用一种高级语言进行编程实现。

三、课程设计实验原理

1.HDB3编码解码原理

HDB3码:三阶高密度双极性码。 HDB3码与二进制序列的关系:

(1>二进制信号序列中的“0”码在HDB3码中仍编为“0”码,二进制信号中“1”码,在HDB3码中应交替地成+1和-1码,但序列中出现四个连“0”码时应按特殊规律编码<引入传号交替反转码的“破坏点”V码);RTCrpUDGiT (2>二进制序列中四个连“0”按以下规则编码:信码中出现四个连“0”码时,要将这四个连“0”码用000V或B00V取代节来代替(B和V也是“1”码,可正、可负>。这两个取代节选取原则是,使任意两个相邻v脉冲间的传号数为奇数时选用000V取代节,偶数时则选用B00V取代节。5PCzVD7HxA 2.二进制数字调制技术原理

数字信号的传输方式分为基带传输和带通传输,在实际应用中,大多数

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

3 / 41

这种用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。通常使用键控法来实现数字调制,比如对载波的振幅、频率和相位进行键控。jLBHrnAILg (1>2ASK信号的产生方法通常有两种:模拟调制和键控法。解调有相干解调和非相干解调。P=1时f(t>=Acoswt。p=0时f(t>=0。其功率谱密度是基带信号功率谱的线性搬移。xHAQX74J0X 解调原理图

图1 2ASK非相干解调接收系统

图2 2ASK相干解调接收系统

(2> 一个2FSK信号可以看成是两个不同载波的2ASK信号的叠加。其解调和解调方法和ASK差不多。2FSK信号的频谱可以看成是f1和f2的两个2ASK频谱的组合。LDAYtRyKfE 解调原理图

4 / 41

带通滤波器 相乘器 低通滤波器 抽样判决器 带通滤波器 相乘器 低通滤波器 图3 2FSK相干解调接收系统

带通滤波器 包络检波器 抽样判决器 带通滤波器 包络检波器 图4 2FSK非相干解调接收系统

(3> 2PSK以载波的相位变化作为参考基准的,当基带信号为0时相位相对于初始相位为0, 当基带信号为1时相对于初始相位为180°。Zzz6ZB2Ltk (4> 2DPSK调制原理方框图如下图:

载波 A(t> 移相??码变换 S(t>

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

5 / 41

2DPSK信号的解调,主要有两种方法,即相位比较法和相干解调法。相干解调法原理方框图如下图:

带通滤波 相乘 低通滤波 抽样判决 逆码变换 本地载波 提取

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

四、建立模型描述

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

在这里用MATLAB函数来对这个二进制振幅键控<2ASK)来实现调制与解调的仿真。二进制振幅键信号可以表示完成一个单极性矩形脉冲序列与一个正弦型载波的乘积。通常它的调制方法有两种,即模拟幅度调制方法和键控方法,在MATLAB里我们采用模拟幅度调制的方法,解调采用相干解调<包络检波法)的方式。我们用SOURCE函数来产生一个原始二进制基带信号,即一个单矩形脉冲序列。以askModu函数来进行模拟幅度调制,得到一个已调2ASK信号,并用此函数进行此2ASK信号的频谱分析。然后用gussian函数加入加性高斯白噪声,再用demoASK函数进行想干解调并分别输出各点的输出波形,最后经过抽样判决后得出输出波形。同时我们用CheckRatePe函数来得出误码率,最后运行主函数ASK_main可以看到各种波形。用MATLAB函数来对2FSK、2PSK、2DPSK实现调制与解调的仿真与2ASK的调制与解调过程的仿真类似。dvzfvkwMI1 五、模块功能分析及源程序代码

5.1 HDB3码的编码和译码

global x xn=x。 yn=xn。

num=0。 %计数器初始化 for k=1:length(xn>

if xn(k>==1 %1的计数器 num=num+1。

6 / 41

if num/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脉冲位置记录 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,则计数器清零 end end

re=[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>。%极性标志

7 / 41

end end

decode=abs(decode>。

subplot(3,1,1>。stairs(xn>。axis([1 length(xn> -2 2]>。 rqyn14ZNXI grid。 ylabel('xn'>。 title('HDB3 码的编码前图形'>。

subplot(3,1,2>。stairs(yh>。axis([1 length(xn> -2 2]>。 EmxvxOtOco grid。 ylabel('HDB3 codes'>。

title('HDB3 码的编码后<解码前)图形'>。

subplot(3,1,3>。stairs(decode>。axis([1 length(xn> -2 2]>。 SixE2yXPq5 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]>。 end

5.2.2 askModu函数源程序

function transmittedSignal=askModu(signal,bitRate,fc,N>6ewMyirQFL 8 / 41

%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]。 end figure(2>

plot(1:length(transmittedSignal>,transmittedSignal>。title('ASK调制波形 '>。grid on。kavU42VRUs 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'>。y6v3ALoS89 %grid on。 End

5.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。

9 / 41

end

5.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。 end end

PeWrong=wrongs/(wrongs+rights>。 End

5.2.5 demoASK函数源程序

function bitstream=demoASK(receivedSignal,bitRate,fc,n,N> M2ub6vSTnP 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<=length(signal3>> %判决 bitstream=[bitstream,signal3(i>>=0.5]。 i=i+LL。 end figure(6>

10 / 41

subplot(3,1,1>。

plot(1:length(signal1>,signal1>。title('接收端波形(包含噪声>'>。grid on。

0YujCfmUCw subplot(3,1,2>。

plot(1:length(signal2>,signal2>。title('整流之后的波形'>。grid on。eUts8ZQVRd subplot(3,1,3>。

plot(1:length(signal3>,signal3>。title('LPF滤波后的包络波形'>。grid on。

sQsAEJkW5T 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.2.6 ASK_main函数源程序

close all clear all %{ ti=0。 fpeask=[]。 startn=-6。 endn=18。

11 / 41

for ti=startn:endn n=1000。 %} n=16。

fc=1000000。 ü>=bitRate fc/bitRate为每个包含sin周期个数GMsIasNXkA 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>。 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>

12 / 41

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]>。 end

5.3.2 FskModu函数源程序

function transmittedSignal=fskModu(signal,bitRate,f1,f2,N>TIrRGchYzg 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 end figure(2>

plot(1:length(transmittedSignal>,transmittedSignal>。title('FSK调制波形'>。grid on。7EqZcWLZNX figure(3>

m=0:length(transmittedSignal>-1。 F=fft(transmittedSignal>。

plot(m,abs(real(F>>>,title('FSK仿真频谱分析'>。 grid on。 end

5.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。

13 / 41

end

5.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。 end end

PeWrong=wrongs/(wrongs+rights>。 end

5.3.5 demoFSK函数源程序

function bitstream=demoFSK(receivedSignal,bitRate,f1,f2,N> lzq7IGf02E 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>。 %延迟时间zvpgeqJ1hk 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('接收端波形(包含噪声>'>。grid on。

NrpoJac3v1 subplot(3,1,2>。

plot(1:length(signal2>,signal2>。title('通过HPF得到的高频分量波形'>。grid on。

1nowfTG4KI subplot(3,1,3>。

plot(1:length(signal3>,signal3>。title('通过LPF后的包络波形'>。grid on。

fjnFLDa5Zo signal4=filter(daitong,1,signal1>。 %通过BPF,得到低频分量 signal5=abs(signal4>。 %整流

14 / 41

signal5=filter(lowpass,1,signal5>。 %通过LPF,形成包络

IN2=fix(length(lowpass>/2>+fix(length(daitong>/2>。 %延迟时间tfnNhnE6e5 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('接收端波形(包含噪声>'>。grid on。

HbmVN777sL subplot(3,1,2>。

plot(1:length(signal4>,signal4>。title('通过BPF得的低频分量波形'>。grid on。

V7l4jRB8Hs subplot(3,1,3>。

plot(1:length(signal5>,signal5>。title('通过LPF后的包络波形'>。grid on。

83lcPA59W9 for i=1:min(length(bitstream1>,length(bitstream2>> %判决mZkklkzaaP 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 all clear all

15 / 41

figure subplot(2,1,1> plot ( t, dt >。

axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1>, - 3*(A / 2>, 3*(A / 2> ] >。

bR9C6TJscw title ( '相乘后的波形' >。 grid

[N,Wn] = buttord( 2*pi*50, 2*pi*150,3,25,'s'>。 %临界频率采用角频率表示pN9LBDdtrd [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> ] >。

DJ8T7nHuGT title ( '低通滤波后的波形' >。 grid

for 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。QF81D7bvUA else

sign_result( (I-1>*Num_Unit + 1 : I*Num_Unit> = Low_Level。4B7a9QFw9h end end figure

plot ( t, sign_result >。

axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1>, - 3*(A / 2>, 3*(A / 2> ] >。

ix6iFA8xoX title ( '逆码变换后的波形' >。 grid

六、调试过程及结论

6.1基于MATLAB的2ASK调制解调仿真过程及结论

6.1.1 仿真过程中的各点波形

21 / 41

图7 发送端二进制波形

图8 已调2ASK波形

22 / 41

图9 2ASK频谱分析

图10 加入高斯白噪声后的2ASK波形

23 / 41

图11 解调过程中各点的输出波形

图13 解调后的波形

24 / 41

6.2 基于MATLAB的2FSK调制解调仿真过程及结论

图14 发送端二进制波形

图15 已调 2FSK波形

25 / 41

本文来源:https://www.bwwdw.com/article/r53d.html

Top