ASK信号地仿真分析报告.docx
《ASK信号地仿真分析报告.docx》由会员分享,可在线阅读,更多相关《ASK信号地仿真分析报告.docx(30页珍藏版)》请在冰豆网上搜索。
![ASK信号地仿真分析报告.docx](https://file1.bdocx.com/fileroot1/2022-11/16/bb8df9ae-59f8-4e3b-8c36-e341b68e949c/bb8df9ae-59f8-4e3b-8c36-e341b68e949c1.gif)
ASK信号地仿真分析报告
学号:
课程设计
题目
ASK信号的仿真分析
学院
信息工程学院
专业
通信工程
班级
1405班
姓名
指导教师
周建新
2017
年
1
月
5
日
Matlab原理与应用课程设计任务书
学生姓名:
专业班级:
通信1405班
指导教师:
周建新工作单位:
信息工程学院
题目:
ASK信号的仿真分析
初始条件:
理论方面——电路分析基础、模拟电子、高频电子线路、通信原理、数字信号处理等专业知识
设备方面——微型计算机
软件方面——Matlab仿真平台
场地方面——鉴主15楼通信实验室一
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.理论设计与分析,包括理论的推导和计算过程。
2.制作相应的Matlab编制仿真程序,并与理论结果对比,最后得出结论。
3.完成课程设计报告,包括必要的公式、文字/图表说明和仿真结果。
时间安排:
本课程设计自任务书发布之日开始,分散进行,答辩时间统一。
指导教师签名:
2016年12月6日
系主任(或责任教师)签名:
2016年12月6日
摘要
MATLAB和Mathematica、Maple并称为三大数学软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。
本文主要介绍PCM编码、ASK信号的调制和解调原理及MATLAB仿真,以信号与系统、通信原理等专业知识作为支撑,以编程语言为工具在MATLAB平台通过调用其自带函数和编写主程序输出波形及频谱,通过参数的调整和图像分析进一步解释振幅键控的过程与特性并由误码率随信噪比变化曲线解读两者在调制解调中的关系。
关键词:
MATLAB编程ASK调制解调
Abstract
MATLABandMathematica,Maple,andknownasthethreemajormathematicalsoftware,itcanundertakematrixoperations,drawingfunctionsanddataandrealizethealgorithm,tocreatetheuserinterface,connectingotherprogramminglanguages,etc.,thispapermainlyintroducesthePCMcoding,ASKthesignalmodulationanddemodulationprincipleandtheMATLABsimulation,signalandsystem,communicationprincipleandotherprofessionalknowledge,withprogramminglanguageastoolsintheMATLABplatformbycallingitsownfunctionandwritethemainprogram,outputwaveformandspectrumbyparametersadjustmentandtheprocessofimageanalysistofurtherexplaintheamplitudekeyingandcharacteristicsandthebiterrorratechangewithSNRcurveinterpretationbothinthemodem.
Keywords:
MATLABprogrammingASKmodulationdemodulation
1绪论
ASK信号的matlab仿真分析课程设计目的是让学生熟悉matlab语言,掌握用键控法产生2ASK信号的方法,并且能够利用matlab语言或者函数族进行专业课程理论知识的再现,更深入得了解2ASK信号的频谱特性及其与数字基带信号频谱之间的关系,让学生体会matlab的强大功能,为今后使用matlab语言奠定基础。
ASK信号的仿真分析内容和要求:
调制信号:
300Hz正弦信号,经过μ律PCM编码;载波频率:
100kHz;解调方式:
同步解调。
要求:
画出调制信号、已调信号、解调信号的波形、频谱以及误码率与输入信噪比的关系曲线。
2方案设计
数字幅度调制又称幅度键控,二进制幅度键控记作2ASK。
2ASK是利用代表数字信息“0”或“1”的基带矩形脉冲去键控一个连续的载波,使载波时断时续得输出。
有载波输出时表示发送“1”,无载波输出时表示发送“0”。
本设计主要采用相乘法来产生2ASK信号,实现2ASK的数字调制,采用相干解调法对2ASK信号进行解调。
2.1编程产生2ASK信号
本设计采用300Hz的正弦信号,通过μ律PCM编码。
2.1.1PCM编码原理
通常把从模拟信号抽样,量化,直到变换成为二进制符号的基本过程称为脉冲编码调制(PCM)。
其原理框图如图2-1所示。
模拟信号PCM信号输出
冲激脉冲
图2-1PCM编码原理框图
2.1.2PCM编程函数
由于要产生信号,因此要调用matlab自带正弦函数sin(),为了便于对比观测,也将用到将多个图画到一个平面上的工具——subplot()函数以及画图函数plot()。
pcm编码采用15折线法,借助abs()函数返回一个数的绝对值,需要注意的是:
如果参数x是float,则返回的类型也是float,否则返回integer(因为float通常比integer有更大的取值范围)。
运用max()函数求出输入信号的最大值后再用abs()函数进行归一化处理,量化后将其存入一个矩阵中,这就需要用到全零矩阵zeros(),由于15折线法由9位编码组成,因此矩阵应设计为length(S)行,9列。
段落码和段内码的程序编写相对简单,只需逐一判断量化后的数值段落位置和段内位置,再利用str2double()函数将字符串转换成数值存入矩阵得到数字信号输出。
由于subplot()函数、plot()函数、全零矩阵zeros()和全1矩阵ones()在后续的设计中经常用到,这里我们先具体说明一下这几个函数的用法。
●subplot()函数:
使用方法:
subplot(m,n,p)或者subplot(mnp)。
subplot是将多个图画到一个平面上的工具。
其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。
p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。
简单的例子:
把绘图窗口分成两行两列四块区域,然后在每个区域分别作图
基本步骤:
subplot(2,2,1);%2、2、1之间没有空格也可以
在第一块绘图
subplot(2,2,2);
在第二块绘图
subplot(2,2,3);
在第三块绘图
subplot(2,2,4);
在第四块绘图
编程示例:
在MATLAB的命令窗口依次输入以下命令:
(>>不用输入)
>>t=0:
0.001:
1;
>>y1=sin(10*t);
>>y2=sin(15*t);
>>subplot(2,1,1)
>>plot(t,y1)
>>subplot(2,1,2)
>>plot(t,y2)
也可以将上述命令写成一个程序段:
functionsubplot_sample1()
closeall
figure
gridon
t=0:
0.001:
1;
y1=sin(10*t);
y2=sin(15*t);
subplot(2,1,1)
plot(t,y1)
subplot(2,1,2)
plot(t,y2)
●plot()函数:
plot函数是matlab中二维线画图函数。
基本调用格式为:
1、plot(y)
当y为向量时,是以y的分量为纵坐标,以元素序号为横坐标,用直线依次连接数据点,绘制曲线。
若y为实矩阵,则按列绘制每列对应的曲线。
2、plot(x,y)
若y和x为同维向量,则以x为横坐标,y为纵坐标绘制连线图。
若x是向量,y是行数或列数与x长度相等的矩阵,则绘制多条不同色彩的连线图,x被作为这些曲线的共同横坐标。
若x和y为同型矩阵,则以x,y对应元素分别绘制曲线,曲线条数等于矩阵列数。
3、plot(x1,y1,x2,y2,……)
在此格式中,每对x,y必须符合plot(x,y)中的要求,不同对之间没有影响,命令将对每一对x,y绘制曲线。
以上三种格式中的x,y都可以是表达式。
plot是绘制一维曲线的基本函数,但在使用此函数之前,须先定义曲线上每一点的x以及y坐标。
简单的例子:
在0≤x≤2π区间内,绘制曲线y=2e-0.5xcos(4πx)
编程示例:
x=0:
pi/100:
2*pi;
y=2*exp(-0.5*x).*cos(4*pi*x);
plot(x,y)
plot函数还可以同时输出多个曲线,由于本次课程设计无需用到此功能,因此这里不再举例。
●全零矩阵zeros()
zeros功能是返回一个m×n×p×...的double类零矩阵。
注意:
m,n,p,...必须是非负整数,负整数将被当做0看待。
当没有参数classname时,产生的是标量零矩阵,有参数时产生指定类型的零矩阵,例如zeros(3,2,'uint8')。
二维用法:
zeros(m,n)或zeros(n)
功能:
zeros(m,n)产生m×n的double类零矩阵,zeros(n)产生n×n的全0方阵。
n维用法:
zeros(m,n,p,...)或zeros([mnp...])或zeros(m,n,p...,classname)
相关函数:
ones、rand、randn、magic、eye
编程示例:
>>A=zeros(2,3)
A=
000
000
>>B=zeros(3)
B=
000
000
000
●全1矩阵ones()
ones()的用法与zeros()的使用方法类似,这里不再赘述。
2.2信号调制
2.2.1ASK调制原理
图2-2ASK调制原理框图
ASK基带信号经过电压比较器(LM339),输出高/低电平驱动模拟开关(74HC4066)导通/关闭,ASK载波通过电压跟随电路(TL082)提高带负载能力,然后通过模拟开关电路选择通过/截止,最后得到ASK调制信号输出。
2.2.2ASK调制程序设计
为了所得波形的清晰与美观,我们选择抽样频率为3000Hz,那么在设置时间t的参数时,步长应为1/3000,坐标初值为0,终值为0.01,即t=0:
1/3000:
0.01由载波频率fc=100kHz可以大致设定载波时间t=0:
40000*pi/199:
40000*pi。
若某一位编码的数值为1则使用ones()函数产生1行200列的全1矩阵并将载波信号输入为cos(f*t),即B=ones(1,200);cos(f*t),之所以将列数设为200,是为了观测到连续的波形。
同理,若某一位编码数值为0则同样使用ones()函数产生1行200列的全1矩阵,但是需要将载波信号设置为sin(0*t),因为输入信号为0时无载波输出,即B=ones(1,200);c=sin(0*t)。
最后利用subplot()函数和plo