1、学 号: 课 程 设 计题 目 ASK 信号的仿真分析学 院 信息工程学院专 业 通信工程班 级 1405 班姓 名指导教师 周建新2017 年 1 月 5 日Matlab 原理与应用课程设计任务书学生姓名: 专业班级: 通信 1405 班 指导教师: 周建新 工作单位: 信息工程学院 题 目: ASK 信号的仿真分析 初始条件:理论方面电路分析基础、模拟电子、高频电子线路、通信原理、数字信号处理等专业知识设备方面微型计算机软件方面Matlab 仿真平台场地方面鉴主 15 楼通信实验室一要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 理论设计与分析,包括
2、理论的推导和计算过程。2. 制作相应的 Matlab 编制仿真程序,并与理论结果对比,最后得出结论。3. 完成课程设计报告,包括必要的公式、文字/图表说明和仿真结果。时间安排:本课程设计自任务书发布之日开始,分散进行,答辩时间统一。指导教师签名: 2016 年 12 月 6 日系主任(或责任教师)签名: 2016 年 12 月 6 日目 录摘要 IAbstract II1 绪论 12 方案设计 22.1 编程产生 2ASK 信号 .22.1.1 PCM 编码原理 22.1.2 PCM 编程函数 22.2 信号调制 52.2.1 ASK 调制原理 52.2.2 ASK 调制程序设计 62.3 解
3、调 62.3.1ASK 同步解调原理 .62.3.2 ASK 解调程序设计 63 方案实现 83.1 2ASK 信号产生仿真 .83.2 调制方案的实现 .103.3 同步解调方案的实现 .114 结果测试 .154.1 2ASK 信号产生的结果分析 154.2 调制结果分析 .164.3 解调结果分析 .174.4 误码率与输入信噪比的关系 .205 总结 .21参考文献 .23附录 1 .24附录 2 .27武汉理工大学 Matlab 原理与应用课程设计报告键入文字摘要MATLAB 和 Mathematica、Maple 并称为三大数学软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创
4、建用户界面、连接其他编程语言的程序等。本文主要介绍 PCM 编码、 ASK 信号的调制和解调原理及 MATLAB 仿真,以信号与系统、通信原理等专业知识作为支撑,以编程语言为工具在 MATLAB平台通过调用其自带函数和编写主程序输出波形及频谱,通过参数的调整和图像分析进一步解释振幅键控的过程与特性并由误码率随信噪比变化曲线解读两者在调制解调中的关系。关键词:MATLAB 编程 ASK 调制 解调武汉理工大学 Matlab 原理与应用课程设计报告键入文字AbstractMATLAB and Mathematica, Maple, and known as the three major math
5、ematical software, it can undertake matrix operations, drawing functions and data and realize the algorithm, to create the user interface, connecting other programming languages, etc., this paper mainly introduces the PCM coding, ASK the signal modulation and demodulation principle and the MATLAB si
6、mulation, signal and system, communication principle and other professional knowledge, with programming language as tools in the MATLAB platform by calling its own function and write the main program, output waveform and spectrum by parameters adjustment and the process of image analysis to further
7、explain the amplitude keying and characteristics and the bit error rate change with SNR curve interpretation both in the modem.Keywords: MATLAB programming ASK modulation demodulation武汉理工大学 Matlab 原理与应用课程设计报告键入文字1 绪论ASK 信号的 matlab 仿真分析课程设计目的是让学生熟悉 matlab 语言,掌握用键控法产生 2ASK 信号的方法,并且能够利用 matlab 语言或者函数族进
8、行专业课程理论知识的再现,更深入得了解 2ASK 信号的频谱特性及其与数字基带信号频谱之间的关系,让学生体会 matlab 的强大功能,为今后使用 matlab 语言奠定基础。ASK 信号的仿真分析内容和要求:调制信号:300Hz 正弦信号,经过 律 PCM 编码;载波频率:100kHz;解调方式:同步解调。要求:画出调制信号、已调信号、解调信号的波形、频谱以及误码率与输入信噪比的关系曲线。武汉理工大学 Matlab 原理与应用课程设计报告键入文字2 方案设计数字幅度调制又称幅度键控,二进制幅度键控记作 2ASK。2ASK 是利用代表数字信息“0”或“1”的基带矩形脉冲去键控一个连续的载波,使
9、载波时断时续得输出。有载波输出时表示发送“1”,无载波输出时表示发送“0”。本设计主要采用相乘法来产生 2ASK 信号,实现 2ASK 的数字调制,采用相干解调法对 2ASK 信号进行解调。2.1 编程产生 2ASK 信号本设计采用 300Hz 的正弦信号,通过 律 PCM 编码。2.1.1 PCM 编码原理通常把从模拟信号抽样,量化,直到变换成为二进制符号的基本过程称为脉冲编码调制(PCM)。其原理框图如图 2-1 所示。模拟信号 PCM 信号输出冲激脉冲 图 2-1 PCM 编码原理框图2.1.2 PCM 编程函数由于要产生信号,因此要调用 matlab 自带正弦函数 sin(),为了便于
10、对比观测,也将用到将多个图画到一个平面上的工具subplot() 函数以及画图函数plot()。pcm 编码采用 15 折线法,借助 abs()函数返回一个数的绝对值,需要注意的是:如果参数 x 是 float,则返回的类型也是 float,否则返回 integer(因为 float 通常比 integer 有更大的取值范围)。运用 max()函数求出输入信号的最大值后再用 abs() 函数进行归一化处理,量化后将其存入一个矩阵中,这就需要用到全零矩阵 zeros(),由于 15 折线法由 9 位编码组成,因此矩阵应设计为 length(S)行,9 列。段落码和段内码的程序编写相对简单,只需逐
11、一判断量化后的数值段落位抽样保持量化器编码器武汉理工大学 Matlab 原理与应用课程设计报告键入文字置和段内位置,再利用 str2double()函数将字符串转换成数值存入矩阵得到数字信号输出。由于 subplot()函数、plot()函数、全零矩阵 zeros()和全 1 矩阵 ones()在后续的设计中经常用到,这里我们先具体说明一下这几个函数的用法。subplot()函数:使用方法:subplot(m,n,p)或者 subplot(m n p)。subplot 是将多个图画到一个平面上的工具。其中,m 表示是图排成 m 行,n 表示图排成 n 列,也就是整个 figure 中有 n 个
12、图是排成一行的,一共 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) pl
13、ot(t,y1) subplot(2,1,2) plot(t,y2)也可以将上述命令写成一个程序段:function subplot_sample1()close allfiguregrid on武汉理工大学 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)plot()函数:plot 函数是 matlab 中二维线画图函数。基本调用格式为:1、plot(y)当 y 为向量时,是以 y 的分量为纵坐标,以元素序号为横坐标,用直线依
14、次连接数据点,绘制曲线。若 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 是绘制一维曲线的基本函数,
15、但在使用此函数之前,须先定义曲线上每一点的 x 以及 y 坐标。简单的例子:在 0x2 区间内,绘制曲线 y=2e-0.5xcos(4x)编程示例:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y)plot 函数还可以同时输出多个曲线,由于本次课程设计无需用到此功能,因此这里不再举例。全零矩阵 zeros()zeros 功能是返回一个 mnp.的 double 类零矩阵。注意:m, n, p,.必须是非负整数,负整数将被当做 0 看待。当没有参数 classname 时,产生的是标量零矩阵,有参数时产生指定类型的零矩阵,例如 zeros
16、(3,2,uint8)。武汉理工大学 Matlab 原理与应用课程设计报告键入文字二维用法:zeros(m,n) 或 zeros(n)功能:zeros(m,n) 产生 mn 的 double 类零矩阵,zeros(n)产生 nn 的全 0方阵。n 维用法:zeros(m,n,p,.) 或 zeros(m n p .)或 zeros(m,n,p.,classname)相关函数:ones、rand、randn、magic 、eye编程示例: A=zeros(2,3)A =0 0 00 0 0 B=zeros(3)B =0 0 00 0 00 0 0全 1 矩阵 ones()ones()的用法与 z
17、eros()的使用方法类似,这里不再赘述。2.2 信号调制2.2.1 ASK 调制原理 模 拟 开 关 电 路( 74HC06)ASK载 波 输 入ASK基 带 输 入 电 压 比 较 器( LM39)电 压 跟 随 电 路( TL082) ASK调 制 输 出图 2-2 ASK 调制原理框图ASK 基带信号经过电压比较器(LM339),输出高 /低电平驱动模拟开关(74HC4066)导通/关闭,ASK 载波通过电压跟随电路(TL082)提高带负载能力,然后通过模拟开关电路选择通过/截止,最后得到 ASK 调制信号输出。武汉理工大学 Matlab 原理与应用课程设计报告键入文字2.2.2 AS
18、K 调制程序设计为了所得波形的清晰与美观,我们选择抽样频率为 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 行 2
19、00 列的全 1 矩阵,但是需要将载波信号设置为 sin(0*t),因为输入信号为 0 时无载波输出,即 B=ones(1,200);c=sin(0*t)。最后利用 subplot()函数和 plot()函数输出 2ASK 信号调制波形和原始信号的频谱。2.3 解调2.3.1ASK 同步解调原理ASK 信号的解调方法有非相干解调、相干解调和匹配滤波器三种,采用不同解调方案的系统其抗噪性能有所不同。本次 ASK 课程设计我们采用相干解调(同步检测法)的方案,需要载波提取电路。相干解调框图如图 2-3 所示。图 2-3 2ASK 信号的相干解调框图2.3.2 ASK 解调程序设计解调过程最重要的是
20、选择合适的滤波器带宽。matlab 自带巴特沃斯滤波器函数,通过调用语句n,wn=buttord(wp,ws,rp,rs)得到滤波后的波形。式中 n 代表滤波器阶数,Wn 代表滤波器的截止频率,语句功能可简述为:在 wp 处通带内波纹系数达到最大衰减 rp,而在 ws 处阻带达到最小衰减 rs,默认求得的 wn 是在(-3dB)时的频率。使用 buttord 函数需先求得最小阶数和截止频率,一般情武汉理工大学 Matlab 原理与应用课程设计报告键入文字况下,截止频率不是计算的,而是根据信号选定的,本次选定 fp=500;fs=700,根据公式 2*fs/fn 和 2*fp/fn 计算出归一化
21、的角频率,同时设定最大衰减rp=3dB,rs=20dB。至于抽样判决程序,运用判断语句和循环语句即可实现。武汉理工大学 Matlab 原理与应用课程设计报告键入文字3 方案实现3.1 2ASK 信号产生仿真产生 300Hz 正弦信号, 律 PCM 编码。为了窗口的美观,我们取 200 为单位画出坐标,同时,当遇到 1 时,输出200 个值为 1 的点,当遇到 0 时,输出 200 个值为 0 的点,并让这些点相连,使之连续,形成直线。将抽样频率设为 3000Hz,即每个正弦信号周期内均匀选取 10( )个抽301样点,然后根据输入信号 S 的数值求 S 的最大值,完成归一化后产生量化信号。至于
22、编码程序,则可根据 2.1.4 节编码原理分别完成符号位、段落码和段内码的判断与编码。程序设计如下:function code2=pcm(S) %S 为输入信号t = 0:0.0001:0.01; fs = 3000;ts = 0:1/fs:0.01;Signal = sin(2*pi*300*t); Sign_m = sin(2*pi*300*ts); figuresubplot(2,1,1)plot(t,Signal);title( sin(2*pi*300*t);subplot(2,1,2)%抽样stem(ts,Sign_m);title(3000HZ抽样波形 );%量化z=sign(S
23、); %判断S 的正负 MaxS=max(abs(S); %求S的最大值 S=abs(S/MaxS); %归一化 Q=8160*S; %量化 武汉理工大学 Matlab 原理与应用课程设计报告键入文字code=zeros(length(S),9); %代码存储矩阵(全零)%段落码判断程序 for i=1:length(S)if (Q(i)=480)elseif z(i)=0;jt(m)=1; endendfigure(1);subplot(3,2,6);plot(jt);grid onaxis(0 20*length(g) -2 2);title(经抽样判决后信号波形 )figure(2);s
24、ubplot(3,2,6);plot(abs(fft(jt);axis(0 20*length(g) 0 1000);title(经抽样判决后信号频谱 );在 ASK 的解调方式中,在相同输入信噪比的条件下,相干解调的性能优于非相干解调,判决“0”、“1”等概时系统统计平均误码率为Pe= (Pe1+Pe0)21误码率随着信噪比的增大而呈减小趋势。snr = 0 : 2: 20;%信噪比范围len_snr = length(snr);for i = 1:len_snrSNR_eb = exp(snr(i)*log(10)/10);theo_err_prb(i) = (1/2)*erfc(sqrt
25、(SNR_eb);%ASK系统的误码率与信噪比的关系end武汉理工大学 Matlab 原理与应用课程设计报告键入文字figure(3);semilogy(snr,theo_err_prb,ko-);grid on;title(误码率随信噪比的变化曲线 );武汉理工大学 Matlab 原理与应用课程设计报告键入文字4 结果测试本课程设计的结果可以通过连接电路图或编写代码实现,为了达到更好得熟悉 matlab 软件、自主学习编程语言的目的,本文采用纯代码实现的方式给出各参量图形。在文章第 3 节,我们已经根据第 2 节的原理基础给出部分代码,只需整合起来在 matlab 仿真平台运行调试得出结果。
26、4.1 2ASK 信号产生的结果分析图 4-1 2ASK 信号产生波形根据题目要求产生 300Hz 的正弦信号(如图 4-1sin(2*pi*300t)所示),由于我们在设计时采用了 3000Hz 的抽样频率,因此一个正弦周期内均匀选取了10 个抽样点,对应于图 4-1 中 3000Hz 抽样波形图。武汉理工大学 Matlab 原理与应用课程设计报告键入文字4.2 调制结果分析图 4-2 2ASK 信号调制结果图图 4-3 2ASK 信号调制频谱图采用键控法对 2ASK 信号调制,其调制模型如图 4-4 所示:cosct图 4-4 数字键控法 2ASK 信号的调制模型开关 K 受数字基带信号
27、S 的控制,当 S=“1”时,K 接 1 端,有载波输出;当 S=“0”时,K 接 0 端,无信号输出。根据 2ASK 信号的功率谱密度特性:属于线性调制,将单极性基带序列的功率谱密度平移至中心频率 f=fc 处。理论上原始信号只有一根最突出谱线,因为原始信号的频率为 300Hz,在未调制之前频谱图中不存在其它频率,当然,要除去噪声的影响。在 2ASK 的信号频谱中,由于进行了调制,加入了高频载频,这时应能够看到三条突出谱线,分别为 fc,fc-R B,fc+R B。观察仿真图形,虽然频谱轮廓很精确,但频谱取值却有误差,这是系统和软件误差,不可避免。武汉理工大学 Matlab 原理与应用课程设
28、计报告键入文字4.3 解调结果分析将第 3 章设计的程序在 matlab 平台运行得到如图 4-5 和图 4-6 所示波形和频谱图:图 4-5 调制解调输出波形武汉理工大学 Matlab 原理与应用课程设计报告键入文字图 4-6 调制解调频谱图通过观察,我们发现抽样判决后的波形图和 pcm 编码信号波形有很大区别,并且最终解调出的频谱与原始信号的频谱也有较大区别,但通过理论分析,加噪、相乘和低通滤波的结果除了些许误差并没有太大错误。那么很明显信噪比的参数需要重新设定,并且抽样判决程序也需要稍作修改。将信噪比调整为 18,考虑经过解调各阶段积累的误差,将抽样判决阈值设为“0.5”而非“0”或“1
29、”。修改后解调过程各阶段波型如图 4-7 所示:武汉理工大学 Matlab 原理与应用课程设计报告键入文字图 4-7 解调波形加入高斯白噪声后波形出现很多毛刺,可见在解调输入端噪声对信号的影响。调制信号与载波相乘后,同号得正,异号得负,波形如图 4-7 中“相乘后信号波形”所示。经巴特沃斯低通滤波器滤除多余的分量后波形轮廓已经反映出 pcm 调制信号,但还不是很规整,再经抽样判决即得出解调波形。解调过程各阶段频谱图如图 4-8 所示:图 4-8 解调频谱图调制信号与载波相乘后,中心频率为原载频的 2 倍,频谱图中依然可以观察到三根最突出谱线。经过低通滤波器的滤波,滤除了我们不需要的成分,保留了
30、有用成分。抽样判决以后的频谱和原始信号频谱几乎一样,证明了设计的合理性与正确性。武汉理工大学 Matlab 原理与应用课程设计报告键入文字4.4 误码率与输入信噪比的关系图 4-7 误码率随信噪比的变化曲线如图 4-7 所示,随着信噪比的增大,误码率呈负指数曲线下降,并且误码率始终是小于 1 的数值。从图形布局也可以确定我们选择横坐标为 20 存在其合理性,既能准确反映出二者关系又可以让图形更加美观。当信噪比为 15dB,误码率约为 10-25;当信噪比为 20dB,误码率约为 10-45。因此,我们在加入高斯白噪声阶段刚开始选取的信噪比(10)并不是很理想,当调整至 18,判决后的波形和频谱
31、符合理论推导。武汉理工大学 Matlab 原理与应用课程设计报告键入文字5 总结通过本次 matlab 仿真课程设计,我对 matlab 软件有了更多的认识,比如matlab 有很多自带的函数,支持很多的复杂计算。虽然之前学习信号与系统这门课程时使用 matlab 编写过一些简单的程序,其中有一些程序语句在本次仿真中也有用到,但由于对编程语言的理解与运用还不成熟,要想一个人完成ASK 信号仿真所有程序的编写还是有很大难度的。所以我将课题分成几个模块pcm 编码模块、调制模块、解调模块、误码率分析模块,将复杂的问题简单化。对于时间连续的信号,利用傅里叶变换可以把信号从时域转换到频域,能在频域上进
32、行分析,对于时间离散的信号,信号是用序列表示的,相应的用离散傅里叶变换算法,经过变换后的结果也是一个序列。2ASK 的调制方法有模拟相乘法和数字键控法。2ASK 信号的解调,总的来说也是有两种基本方法 相干解调和非相干解调,本次课程设计的要求是相干解调法。因此,设计中的关键问题是如何选择合适的滤波器带宽等参数,才能准确的滤出信号,这也是我在设计过程中遇到的最大问题。前几次编程调试正是由于没有选择合适的参数,导致无法准确滤波。编写 pcm 编码程序时虽然也遇到一些麻烦,但由于可以使用 matlab 自带函数产生正弦信号,抽样和量化的程序也可通过参考书的详解理解并编程,所以通过不多次的修改和调试便
33、能运行出正确波形。当编写调写模块时,我深深得感受到“书到用时方恨少”,因此我打算请教同学并上网查找参考程序,在看懂别人所编写的程序的基础上加入自己的元素。通过通信原理理论课的学习,我已经能够抽象得去理解数字键控法实现2ASK 信号的调制和相干解调法实现 ASK 信号的解调,因此,编程思路清晰,在运行出错时也能很快锁定问题所在。这让我明白:编程语言只是一种工具,最重要最基础的还是要明晰事物的原理。为了使课题内容丰满,我将解调过程中每一阶段的图像输出,以便观察分析整个解调过程。经过这一次的 matlab 课程设计,我收获颇多。首先,它让我意识到合理安排时间的重要性。在考试周的时候便接到课程设计任务
34、,我一直以为时间还很充足,因此在一周之前从未真正开始思考本次课设的问题,当编写的程序屡屡出错需要边学习边完成任务时我也开始后悔没有早些准备。虽然最后也是保质保量的完成了仿真课设,但是如果回头去看,若是能早两天认识到自己编程方面的欠缺并且提早学习,也不至于后来的加班加点。合理的时间安排和明晰的武汉理工大学 Matlab 原理与应用课程设计报告键入文字目标追求可以提高做事效率,我相信,有了这一次的教训,在以后的学习和生活中我可以做到更好地规划时间。本次课程设计过程教会我的第二点便是要形成自己的一套思路。在遇到问题请教同学的过程中,我始终坚持自己的设计思路,遇到问题可以想办法解决,但轻易膜拜别人的成
35、果、否定自己的努力一般不会有很成功的结果。努力后的结果也证实了一件事情 一个问题的解决方法不只一种,也不存在某个人的方案好某个人的方案不好问题,根据自身条件选择适合自己的方法才最重要。最后,结合之前学过的 C、java、汇编语言等编程常用语言,我意识到编程是需要一点点积累的,正所谓“冰冻三尺非一日之寒”,越是急于学成一项本领越是很难取得成效。武汉理工大学 Matlab 原理与应用课程设计报告键入文字参考文献1 刘泉,江雪梅 . 信号与系统. 高等教育出版社. 2010.2 王虹.通信系统原理.国防工业出版社.2014.3 樊昌信. 通信原理.国防工业出版社.2001.4 郭文彬.通信原理:基于
36、 Matlab 的计算机仿真.北京邮电大学出版社.2006.5 赵鸿图. 通信原理 MATLAB 仿真教程.人民邮电出版社 .2010.武汉理工大学Matlab 原理与应用课程设计报告键入文字附录 1pcm 编码程序:function code2=pcm(S) %S 为输入信号t = 0:0.0001:0.01; fs = 3000;ts = 0:1/fs:0.01;Signal = sin(2*pi*300*t); Sign_m = sin(2*pi*300*ts); figuresubplot(2,1,1)plot(t,Signal);title( sin(2*pi*300*t);subp
37、lot(2,1,2)%抽样stem(ts,Sign_m);title(3000HZ抽样波形 );%量化z=sign(S); %判断S 的正负 MaxS=max(abs(S); %求S的最大值 S=abs(S/MaxS); %归一化 Q=8160*S; %量化 code=zeros(length(S),9); %代码存储矩阵(全零)%段落码判断程序 for i=1:length(S)if (Q(i)=480)elseif z(i)0code(i,1)=0;end %符号位的判断 endfor i=1:length(S)for j=1:9code2(9*(i-1)+j)=code(i,j);end