[摘要]
本论文以课题“信号发生器的MATLAB仿真”为背景展开,介绍了MATLAB仿真技术的发展和信号发生器的现状,结合线性调制系统的应用背景设计了一种结构简便、性能优良的线性调制信号发生器,全面的实现信号发生器的功能要求。
本论文主要研究内容包括:
1.研究了信号发生器的现状,MATLAB仿真技术的发展及现状,介绍了用MATLAB进行仿真的实用性及可靠性。
2.研究了常规调制信号ASK信号、FSK信号和PSK等有关理论,为信号生成打下基础。
3.以线性调制为例研究了MATLAB仿真的三种方法,比较了其各自的优缺点,同时选定以Simulink进行系统的仿真。
4.用GUI进行线性调制系统的模拟,完成软件设计的实现,对系统进行调试,使系统达到指标需求。
关键词:信号发生器;线性调制系统;MATLAB仿真;simulink
目录
摘要........................................................................1
ABSTRACT................................................................. 2目录........................................................................3第一章 绪论................................................................1
1.1论文的立题背景及研究意义...............................................1
1.2 MATLAB仿真技术的发展及现状..........................................1
1.3信号发生器的发展及现状.................................................3
1.4论文的主要研究内容.....................................................4
第二章 信号发生器的理论部分................................................5
2.1信号发生器分类简介......................................................5
2.2常规信号...............................................................7
2.3本章小结..............................................................10
第三章 MATLAB的三种仿真办法.............................................11
3.1仿真基础原理..........................................................11
3.2三种仿真方法的简单实现................................................12
3.3基于Matlab 7.0的三种仿真方法比较.....................................15
3.4本章小结............................................................. 15
第四章 信号发生器的MATLAB仿真实现......................................16
4.1常规信号的Matlab仿真实现..............................................16
4.2线性调制系统Matlab仿真实现...........................................18
4.3AM信号发生的Simulink仿真实现......................................... 20
4.4本章小结............................................................. 23
结束语.....................................................................24
致谢.......................................................................25
参考文献...................................................................26
第一章 绪论
1.1 论文的立题背景及研究意义
在现代声纳、雷达等通信系统测试与仿真中都需要高精度的任意的波形信号,任意波形信号的重构技术也是声学和语音信号合成等应用领域中的关键技术之一。不过声纳、雷达等通信系统研制过程中出于保密和成本等原因不可能长期做大量的外场实验,而更多情况下需要在实验室重构这些具有某一种特征的随机信号,进行系统测试、系统分析与半实物仿真研究。
而且,随着通信技术的发展,通信信号的种类越来越多,随着通信事业的发展,通信网络的数目也越来越多。如何截获敌方的通信信号,对其进行预测和干扰从而阻碍敌方正常通信,是通信对抗的主要研究内容。在通信对抗的研究中,为了模拟真实场景,通信信号发生器也是不可或缺的仪器。而市面上的通信信号发生器价格十分昂贵,功能也比较简单,因此开展任意波形的通信信号的高精度重构方法研究工作,具有重要的理论意义和实用价值。
在生成任意波形时域信号的过程中,分为硬件、软件两种设计方法。Matlab仿真属于通过软件编程实现。Matlab是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件。MATLAB可以行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。Matlab自带了强大的GUI工具。Matlab仿真技术的出现也为研究产生任意波形的通信信号提供了有力的技术支持。
任意波形发生器不仅能产生正弦、余弦、方波、三角波和锯齿波等常见波形,而且还可以利用各种编辑手段,产生传统函数生器所不能产生的真正意义上的任意波形。如它能模拟诸如编码雷达信号、潜艇特征信号、磁盘数据信号、机械振动瞬变过程、电视信号以及各种各样的神经脉冲之类的波形。
1.2 MATLAB仿真技术的发展及现状
1.2.1 MATLAB的概况
MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。
当前流行的MATLAB 7.0/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox)。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。
1.2.2 MATLAB产生的历史背景
在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平.
到70年代后期美国New Mexico大学计算机系系主任的Cleve Moler利用业余时间为学生编写EISPACK和LINPACK的接口程序.在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。
1983年春天,Cleve Moler和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能.
1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发.
在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB.经过多年的国际竞争,MATLAB以经占据了数值软件市场的主导地位.
时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具。
1.2.3 MATLAB的语言特点
一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和 FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。
1)语言简洁紧凑,使用方便灵活,库函数极其丰富2)运算符丰富。3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。4)程序限制不严格,程序设计自由度大。5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。6)MATLAB的图形功能强大。7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。8)功能强大的工具箱。9)源程序的开放性。
1.3 信号发生器的发展及现状
在七十年代前,函数信号发生器能够提供正弦波、余弦波、方波、三角波等几种常用标准波形,产生其它波形时,需要采用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。同时,主要表现为两个突出问题,一是通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节。
在七十年代后,微处理器的出现,可以利用处理器A/D和D/A,硬件和软件使波形发生器的功能扩大,产生更加复杂的波形。这时期的波形发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单的波形。
信号发生的主要实现方法根据实现思路可以分为模拟式和数字式,根据实现方法可以分为直接法、锁相法、直接数字法和混合法四种。
直接法是优点是速度快,相位噪声底,但结构复杂、杂散多。锁相法所采用的锁相频率合成技术在近年发展较快,应用也较广泛,但其频率转换速度不快,电路控制复杂,这使得该技术的应用受到了一定的限制。直接数字法是采用直接数字合成(DDS)的方法实现信号产生。该技术具有频率转换速度快、频率分辨率高、易于控制的突出特点。在信号发生的几种技术当中,直接数字合成技术出现得最晚,但近年来发展得最快。随着大规模集成技术和数模混合信号集成技术的发展,单片集成的DDS芯片纷纷出现,在应用领域内大有后来居上的势头。混合法则是指采用以上方法中的两种及两种以上的方法实现信号发生。
随着现代信息事业的发展,测试对象不断丰富,现代通信系统和电子系统对测试系统提出了越来越高的要求,进而对信号发生器也提出了更高的要求。我们将当前业内对信号发生部件的要求大致归纳为以下四点:(1)高频谱纯度、宽频带。 (2 ) 快速和多点频率捷变。(3 )系列化、模块化。(4 )小型化和工程化。
随着现代电子、计算机和信号处理等技术的发展,极大促进了数字化技术在电子测量仪器中的应用,使原有的模拟信号处理逐步被数字信号处理所代替,从而扩充了仪器信号的处理能力,提高了信号测量的准确度、精度和变换速度,克服了模拟信号处理的诸多缺点,数字信号发生器随之发展起来。
1.4 论文的主要研究内容
研究相关理论,并根据具体实验室的应用,意在设计一个通用的多路任意波形信号发生器,该系统由两部分组成:
本论文围绕第一部分数据处理、信号产生部分设计而展开,基于对Matlab7.0的三种仿真方式介绍引出信号发生器的Matlab应程序设计。其主要工作如下:
第一章绪论
介绍了本论文的研究背景和立题意义,强调了通信信号发生器的重要性,概述了信号发生器的及MATLAB仿真技术的发展和现状,提出了本文的研究内容,阐述了本文的主要工作。
第二章信号发生器的理论部分
在本章中主要简单介绍了信号发生器的理论以及分类,研究了ASK、PSK、FSK和代县白噪声等常规信号的时频域表达式、调制方法。为设计通信信号发生器奠定了技术和理论的基础。为后面用MATLAB实现ASK、PSK、FSK信号奠定了理论基础。
第三章MATLAB的三种仿真办法
本文分析了线性模拟调制的数学模型,采用基于Matlab 7.0的三种仿真方法对AM调制进行仿真,以实例阐述了三种仿真方法的特点。最后,在实例分析的基础上对三种方法进行了简单的比较。结果表明,三种方法各有优劣,基于Simulink仿真模型能够反映系统的动态工作过程,基于GUI的可视化界面具有很好的演示效果,都为通信系统的设计和研究提供了强有力的工具,也为通信系统理论的教学和学习提供了有力的工具。
第四章信号发生器的MATLAB仿真实现
介绍了Matlab软件实现的程序编程的情况,重点介绍了信号的软件产生,其中包括ASK、PSK、FSK等信号以及AM、DSB 、SSB等信号。同时用Simulink产生的线性调制系统可以产生AM、DSB 、SSB、VSB等线性调制系统的任意波形信号等波形。
第二章 信号发生器的理论部分
2.1 信号发生器分类简介
信号发生器按输出波形可分为正弦波信号发生器、脉冲信号发生器、函数发生器和任意波形发生器等。按其产生频率的方法又可分为调谐信号发生器、锁相信号发生器和合成信号发生器。
调谐信号发生器是由调谐振荡器构成,传统调谐信号发生器都是由调谐振荡器和统调的调幅放大器(输出放大器)加上一些指示电路构成。这种信号发生器结构复杂、频率范围窄,而且可靠性、稳定性较差,波形失真比较大。随着集成电路的迅速发展,高性能的集成电路越来越多,这类信号发生器的性能有所改善。一般这种信号发生器只能手动来转换量程,不仅体积大,而且可靠性和准确度很难进一步提高,频率准确度一般在0.5%以下。现代电子测量对信号发生器的频率准确度和稳定度要求越来越高,要求在较宽的频率范围内获得高稳定度和准确度的输出信号。因此调谐信号发生器己经越来越不能满足现代电子测量的需要。另外,这类信号发生器只能产生规则波形,如方波、三角波、TTL信号和正弦波。进行科学试验则对信号发生器的输出波形提出了各种各样的要求,采用纯模拟的方法很难满足实验的要求。
锁相信号发生器是由调谐振荡器通过锁相的方法获得输出信号的信号源。这类信号发生器频率的精度和稳定度很高,但要实现快速和数控比较困难,同时输出信号的频率分辨率较差。实现高分辨率的信号发生器,采用锁相环来实现有一定的难度,尤其是覆盖低频和高频的信号发生器采用锁相实现比较困难。
合成信号发生器是采用频率合成方法构成的信号发生器。合成信号发生器中使用一个晶体参考频率源,所需的各种频率都由它经过分频、混频和倍频后得到的,因而合成器输出频率的稳定性和精度与参考源一样,现在绝大多数频率合成技术都使用这种合成方法。这类信号发生器具有频率稳定度高、分辨率高、输出信号频率范围宽、频率易于实现程序控制、可以实现多种波形输出及频率显示方便等优点。近10年间,随着微电子技术的迅速发展,它以有别于其它频率合成方法的优越性能和特点,成为现代频率合成技术中的佼佼者。具体体现在频率范围宽、频率转换时间短、频率分辨率高、输出相位连续、可产生宽带正交信号及其他多种调制信号、可编程和全数字化、控制灵活方便等方面,并具有极高的性价比。传统的模拟信号发生器存在可靠性差、体积大、不能实现数控等缺点。模拟信号发生器与模拟信号发生器相比,具有很大的优势。
2.2 常规信号
通信的根本任务是远距离传递信息,因此如何准确地传输数字信息是数字通信的一个重要组成部分。在数字传输系统中,其传输对象通常是二元数字信息,它可能来自计算机、电传打字机或其他数字设备的各种数字代码,也可能来自数字电话终端的脉冲编码信号。设计数字传输系统的基本考虑是选择一组有限的离散的波形来表示数字信息。这些离散波形可以是未经调制的不同电平信号,也可以是调制后的信号形式。由于未经调制的电脉冲信号占据的频带通常从直流和低频开始,因此称为数字基带信号。在某些有线信道中,特别是传输距离不太远的情况下,数字基带信号可以直接传送,我们称之为数字信号的基带传输。而在另外一些信道,特别是无线信道和光信道中,数字基带信号则必须经过调制,将信号频谱搬移到高频处才能在信道中传输,我们把这种传输称为数字信号的调制传输(或载波传输)。
调制的方法主要是通过改变余弦波的幅度、相位或频率来传送信息。其基本原理是把数据信号寄生在载波的上述三个参数中的一个上,即用数据信号来进行幅度调制、频率调制或相位调制。数字信号只有几个离散值,因此调制后的载波参数也只有有限个值,类似于用数字信息控制开关,从几个具有不同参量的独立振荡源中选择参量,为此把数字信号的调制方式称为“键控”。数字调制分为调幅、调相和调频三类,分别对应“幅移键控”(ASK)、“相移键控”(PSK)和“频移键控”(FSK)三种数字调制方式。除这些基本的以外,还可以采用各种多相位、多振幅和多频率的方案。但ASK、PSK和FSK这三种数字调制方式仍是最主要和最基本的,所以接下来要对这三种调制技术,以及上面提到的QAM调制技术分别进行介绍。
2.2.1 ASK信号
在幅度键控中载波幅度是随着调制信号而变化的。最简单的形式是载波在二进制基带信号1或0的控制下通或断,这种二进制幅度键控方式称为通一断键控(00K)。
二进制幅度键控的调制器可以用一个相乘器来实现,如图2.1所示,对基带信号和载波进行乘法运算即可得到ZASK信号。对于通断键控信号来说,相乘器则可以用一个开关电路来代替,调制信号为1时开关电路导通,为0时开关电路切断。
![v2-523f59a263038b3fabf67bd4dc7c09ed_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/2c9e3821370e01e04d62091be4d536dc.png)
图2.1 2ASK调制原理图
2.2.2 FSK信号
在二进制频移键控中载波频率随着调制信号1或0而变。
二进制频移键控的调制器可以采用模拟信号调制电路来实现,但更容易的实现方法是图2.10中的键控法,两个独立的载波发生器的输出受控于输入的二进制信号,按照1或O分别选择一个载波作为输出。
FSK方式实现起来比较容易,抗噪声和抗衰减性能好,稳定可靠,是中低速数据传输最佳选择。
![v2-b3f8242131ab2fa17e36b248c4f4f86c_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/3257a9f6dce58f9dd9c4edcf662ca58b.png)
图2.2 2FSK调制原理图
2.2.3 PSK信号
在PSK调制时,载波的相位随调制信号状态不同而改变。如果两个频率相同的载波同时开始振荡,这两个频率同时达到正最大值,同时达到零值,同时达到负最大值,此时它们就处于“同相”状态;如果一个达到正最大值时,另一个达到负最大值,则称为“反相”。一般把信号振荡一次(一周)作为360度。如果相差半个周期,我们说两个波的相位差180度,也就是反相。二进制相移键控中,载波的相位随调制信号1或0而改变,通常用相位0。和
来分别表示1或0。二进制相移键控已调信号的时域表达式为
式(2-9)所示BPSK信号与式(2-1)所示OOK信号相对比可知,BPSK信号是双极性非归零码的双边带调制,而OOK信号则是单极性非归零码的双边带调制。BPSK调制信号没有直流分量,因而是抑制载波的双边带调制。由此可见,BPS信号的功率谱与OOK信号的相同,只是少了一个离散的载频分量。这一结论也同样适用于基带信号为其他形式的BPSK信号。BPSK调制器可以采用相乘器,如图2.3所示。将二进制信息由单记性变为双极性后与载波相乘,即可得到已调信号。另外,也可以用相位选择器来实现,根据二进制信息选择载波的相位,也可得到已调信号。
![v2-e94431f525a9dca0b7f9ff6c3e063b73_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/d3494452a842062fe2dd96ee54d7de96.png)
图2.3 BPSK调制原理图
PSK相移键控调制技术在数据传输中,尤其是在中速和中高速的数传机2400bit/s-4800bit/s中得到了广泛的应用。应用较多的是二相和四相调相,即QPSK(Quadrature Phaseshift Keying),在卫星信道中传送数字电视信号时采用的就是QPSK调制方式,它可以看成是由两个ZPSK调制器构成的。输入的串行二进制信息序列经串一并变换后分成两路速率减半的序列,由电平转换器分别产生双极性二电平信号I(t)和Q(t)。fct进行调制,相加后即可得到QPSK信号。四相相移调制是利用载波的四种不同相位差来表征输入的数字信息,是四进制移相键控。QPSK是在M=4时的调相技术,它规定了四种载波相位,分别为45度,135度,225度,275度。调制器输入的数据是二进制数字序列,为了能和四进制的载波相位配合起来,则需要把二进制数据变换为四进制数据,这就是说需要把二进制数字序列中每两比特分成一组,共有四种组合,即00,01,10,l1。QPSK中每次调制可传输2个信息比特,这些信息比特是通过载波的四种相位来传递的。
2.2.4 带限白噪声
白噪声是指功率谱密度在整个频域内均匀分布的噪声。严格地说,白噪声只是一种理想化模型,因为实际噪声的功率谱密度不可能具有无限宽的带宽,否则它的平均功率将是无限大,是物理上不可实现的,如图2.4。然而,白噪声在数学处理上比较方便,因此它是系统分析的有力工具。一般,只要一个噪声过程所具有的频谱宽度远远大于它所作用系统的带宽,并且在该带宽中其频谱密度基本上可以作为常数来考虑,就可以把它作为白噪声来处理。
白噪声具有频带宽、能量分布均衡、对被测系统干扰小的特点,在工程实际中,是一种使用十分广泛的信号。当然用任何方法都无法产生理想的无限带宽的白噪声,实际应用中是要求信号的频率特性在一定带宽内具有白噪声的频率特性,即带宽内各频率分量能量近似相等。工程应用和试验研究中,经常需要信号的带宽可调,并具有较好的低通特性,一般还要求产生的白噪声信号具有一定的输出功率。
![v2-1b97deea741aa9519de809337adfb31e_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/747f2c44cc53a1f4763d9dd26d3b7d52.png)
图2.4 理想白噪声的功率谱密度和自相关函数
白噪声的实现可以通过单一的Logist方程进行,Logist方程见式(2-11)。Logist所产生的迭代混沌序列是平稳的随机过程,并且当参数K=4时,所产生的信号的统计特性和时频特性与白噪声一致,因此用Logist方程可以产生白噪声的理论成立。而且同时应用两个Logist方程可以改善白噪声的性能。
2.3 本章小结
在本章中主要简单介绍了信号发生器的理论以及分类,研究了ASK、PSK、FSK和代县白噪声等常规信号的时频域表达式、调制方法。为设计通信信号发生器奠定了技术和理论的基础。为后面用MATLAB实现ASK、PSK、FSK信号奠定了理论基础。
第三章 MATLAB的三种仿真办法
3.1 仿真基础原理
3.1.1 三种仿真方法简介
目前,计算机仿真已经成为解决工程实际问题的重要手段,Matlab软件是其中功能最为强大的仿真软件之一。目前利用Matlab进行系统性能仿真,主要有三种方法:其一是通过脚本程序的编写,实现相关系统仿真和性能分析;其二是利用Simulink模块库,通过鼠标拖拉的方式建立相关系统的仿真模型,对每个模块进行参数设置,以达到动态系统仿真和性能分析的目的;其三是利用图形用户界面GUI,创建各种菜单、按钮等可视化界面,通过函数回调等手段,实现人机交互的系统仿真及其性能分析。Matlab语言比较简单,脚本程序的编写也比较简单,很多语言结构和风格与常用的C语言非常相似,因此,对于初学者而言,是很容易上手的。
Simulink软件具有丰富的模块库,其中公共模块库共包含9个模块库:连续系统模块库、离散系统模块库、函数与表库、数学运算库、非线性系统模块库、信号与系统模块库、系统输出模块库、系统输人模块库、子系统模块库。除了公共模块库之外,Simulink中还集成了许多面向不同专业领域的专业模块库,如面向控制系统设计与分析的Control System Toolbox模块库、面向数字信号处理系统设计与分析的DSP Blockset模块库、专用于通信系统仿真的通讯模块库等。Simulink不但功能非常强大,而且还是一个开放性体系,可以支持用户开发模块来增强其自身的功能。
图形用户界面GUI(Graphics User Interface)是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交流信息的T具和方法。在该界面内,用户可以根据界面提示完成整个工程,不必去了解工程内部是如何工作的。GUI设计可以以基本的Matlab程序设计为主,也可以鼠标为主利用GUIDE(Graphics User Interface Design Environment)工具进行设计。利用GUIDE设计图形用户界面时,可通过GUI应用属性设置编辑器来设置对句柄操作的响应,findobj命令可以获得所需对象的旬柄。GUIDE是—个专用于GUI程序设计的快速开发环境,使用者通过鼠标就能迅速地产生各种CUI控件,并随心所欲地改变它们的外形、大小及颜色等,从而帮助用户方便地设计出各种符合要求的图形用户界面。
本章将以线性模拟调制为例,来阐述基于Natlab7.0的三种系统仿真方法,最后在仿真分析的基础上,对三种仿真方法进行分析比较。
3.2.2 线性模拟调制原理
线性模拟调制主要有调幅(AM)、双边带(DSB)、单边带(SSB)和残留边带(VSB)等调制方式。其中VSB调制是介于SSB与DSB之间的一种折中方式。
由于基于Matlab 7.0的三种系统仿真,都需要了解系统数学模型,所以下面就对AM、DSB和SSB调制的数学模型进行分析。
3.2 三种仿真的简单实现
3.2.1 基于Matlab的系统仿真
本文以线性模拟调制中的线性调制AM调制为例,通过脚本程序的编写,实现系统仿真和性能分析。
首先,编写Matlab脚本程序如下:
clear;
clf;
t=0:pi/10:40*pi;
Carrier=sin(t);
Mod_Sig=sin(t/20);
Dsb_am=Carrier.*(1+Mod_Sig);
plot(t,Carrier,t,Mod_Sig,t,Dsb_am);
title('Plot of carrier modulated by sinewave (dsb-am)');
xlabel('time');
ylabel('voltage');
grid on;
legend('carrier','baseband','modulated signal')
![v2-31928ea4c30a18b4b712b07f303f9ca8_b.jpg](https://ss.csdn.net/p?https://pic1.zhimg.com/v2-31928ea4c30a18b4b712b07f303f9ca8_b.jpg)
图3.1 基于脚本程序仿真的仿真结果
3.2.2 基于Simulink的系统仿真及分析
从以上理论分析可知,AM、DSB和SSB调制具有一定的共性,因此,为了演示和比较这三种调制方式的特点,可以将其集成在同一个仿真模型中。当需选择其他调制方式时,只需手动点击开关就可以进行切换。
使用Simulink建立如图3.2所示的线性模拟调制仿真模型。
![v2-95825254a185e718c81541c84060ab4a_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-95825254a185e718c81541c84060ab4a_b.jpg)
图3.2 线性模拟调制仿真模型
仿真模型中所用到的模块,均可以用鼠标从Simulink模块库中拖到模型编辑窗口,进行模块间的连线,然后对每一个模块的参数进行设置。当参数设置和连线正确后,就可以点击开始仿真按钮,进行性能仿真。通过示波器和频谱仪等输出模块,可以非常直观地看到各个节点的时域和频域特性。
本文以AM调制的性能仿真结果为例,得出相关节点的仿真图形。显然,示波器模块可以非常直观地显示了AM调制的调制信号时域波形、乘法器输出时域波形、乘法器输出信号频谱和已调信号时域波形。
在图2中,当切换左边开关就可以改变调制信号,实现AM调制与DSB或SSB调制不同调制方式的切换;当切换右边下面的开关就可以通过选择不同的滤波器,得到不同的SSB调制信号;而切换右边上面的开关就可以在示波器和频谱仪中显示相应的输出结果。当然,整个仿真模型中载波频率、滤波器传输特性等都可以按需要改变,相应节点的输出时域波形和频域波形都会随之改变。
3.2.3 基于GUI的动态系统仿真及分析
Matlab 7.0通信工具箱提供了一个典型的通信系统通常所包括的信源、信宿、信道和发送接收处理部分,可以通过应用相应的函数实现相关通信功能的仿真。通过使用GUI,可以使不同功能的系统形成一个独立的界面,编写m函数实现界面上相应按钮的功能,使用函数回调功能实现界面和m函数之间的链接。调试成功的图形用户界面可以实现对不同仿真系统的运行、暂停或停止进行控制,通过滑动块或动态文本框等实时修改模块参数,形成一个完整的仿真体系。
仍然以线性模拟调制解调系统中的AM调制为例,设计图形用户界面,编写m函数,通过函数回调等功能,达到动态演示AM调制的目的。
此种仿真首先要建立基于GUI的仿真系统主界面,添加按钮、静态文本、坐标轴等来实现界面的可视化,然后通过编辑回调函数,调用回调函数,来实现分析仿真。
3.3 基于Matlab 7.0的三种仿真方法比较
从上文的仿真范例可以看出,基于脚本程序编写的方法比较简单,只要掌握Matlab语言,就可以编辑一些简单的程序,实现一些仿真功能。但这种方法不直观,对于复杂系统的仿真对编程水乎有较高的要求。另外,这种仿真方法不直观,用户不了解功能系
统的体系构成。
Simulink是一个对动态系统进行建模、仿真并对仿真结果进行分析的软件包。使用Simulink可以更加方便地对系统进行可视化建模,并进行基于时间流的系统级仿真,使得仿真系统建模与工程中的方框图统一起来。并且仿真结果可以近乎“实时”地通过可视化模块,如示波器模块、频谱仪模块以及数据输入输出模块等显示出来,使得系统的仿真工作十分方便。因此,目前这种方法在科研中被广泛使用。但这种方法,不足之处就在于人机交互不太理想,对于系统演示等也不是很适合。
而使用GUI进行的界面设计,具有人机交互功能,可以实时改变系统各个参数,进行动态仿真,并将仿真结果形象地展现m来。可以通过形象、对比式的演示,使用户能够从整体上认识和区别各种系统,容易理解、印象深刻。因此,这种方法常用于演示系统
的开发,如通信原理课程的实验教学等。
3.4 本章小结
本文分析了线性模拟调制的数学模型,采用基于Matlab 7.0的三种仿真方法对AM调制进行仿真,以实例阐述了三种仿真方法的特点。最后,在实例分析的基础上对三种方法进行了简单的比较。结果表明,三种方法各有优劣,基于Simulink仿真模型能够反映系统的动态工作过程,基于GUI的可视化界面具有很好的演示效果,都为通信系统的设计和研究提供了强有力的工具,也为通信系统理论的教学和学习提供了有力的工具。
- 信号发生器的MATLAB仿真实现
4.1 常规信号的MATLAB仿真实现
理论论述介绍参见第二章,现在仅介绍用Matlab仿真实现常规数字信号的发生实现,现列举简洁的程序请单及运行结果如图一所示下:
clear all;
close all;
A=1;
fc=2; %2Hz
N_sample=8;
N=500; %码元数
Ts=1; %1Baud/s
dt=Ts/fc/N_sample; %波形采样间隔
t=0:dt:N*Ts-dt;
Lt=length(t);
%产生二进制信号源
d=sign(randn(1,N));
X=length((d+1)/2);
dd=zeros(fc*N_sample,X);
dd(1,:)=(d+1)/2;
dd=reshape(dd,1,fc*N_sample*X)
gt=ones(1,fc*N_sample); %NRZ波形
figure(1)
subplot(411); %输入NRZ信号波形(单极性)
d_NRZ=conv(dd,gt);
plot(t,d_NRZ(1:length(t)));
axis([0 10 0 1.2]);ylabel('输入信号');
%OOK信号
ht=A*cos(2*pi*fc*t);
s_2ask=d_NRZ(1:Lt).*ht;
subplot(412);
plot(t,s_2ask);
axis([0 10 -1.2 1.2]);ylabel('OOK');
%2PSK信号
d_2psk=2*d_NRZ-1;
s_2psk=d_2psk(1:Lt).*ht;
subplot(413);
plot(t,s_2psk);
axis([0 10 -1.2 1.2]);ylabel('2PSK');
%2FSK信号
sd_2fsk=2*d_NRZ-1;
s_2fsk=A*cos(2*pi*fc*t+2*pi*sd_2fsk(1:length(t)).*t);
subplot(414);
plot(t,s_2fsk);
axis([0 10 -1.2 1.2]);ylabel('t');ylabel('2PSK');
![v2-0e869f1eaf44fdbc1fc3669d22362d74_b.jpg](https://ss.csdn.net/p?https://pic1.zhimg.com/v2-0e869f1eaf44fdbc1fc3669d22362d74_b.jpg)
图4.1 OOK、PSK、FSK信号的仿真实现图
4.2 线性调制信号的MATLAB仿真实现
Matlab语言比较简单,脚本程序的编写也比较简单,很多语言结构和风格与常用的C语言非常相似,因此,对于初学者而言,是很容易上手的。
本文以线性模拟调制中的线性调制AM、DSB、SSB调制为例,通过脚本程序的编写,实现系统仿真和性能分析。理论介绍参考第三章。
close all;
clear all;
dt=0.001;
fm=1;
fc=10;
t=0:dt:5;
mt=sqrt(2)*cos(2*pi*fm*t);
%AM信号
A=2;
s_am=(A+mt).*cos(2*pi*fc*t);
figure;
subplot(311);
plot(t,s_am);hold on;
plot(t,A+mt,'r');
title('AM');xlabel('t');
%DSB信号
s_dsb=mt.*cos(2*pi*fc*t);
subplot(312);
plot(t,s_dsb);hold on;
plot(t,mt,'r');
title('DSB');xlabel('t');
%SSB信号
s_ssb=real(hilbert(mt).*exp(j*2*pi*fc*t));
subplot(313);
plot(t,s_ssb);
title('SSB');xlabel('t');
![v2-a269ebd2b0f3b4e38379577d6803cbca_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-a269ebd2b0f3b4e38379577d6803cbca_b.jpg)
图4.2 AM、DSB、SSB信号的仿真实现图
4.3 AM信号发生的Simulink仿真实现
第三章所建立的Simulink模型如图4.3进行分析如下:
图4.3 AM信号发生的Simulink仿真实现
![v2-2066e4afb07328a80dec98203d36ebd2_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/145ce2b80af5175bfb5677ab3567a4d7.png)
图4.4 调制信号1
![v2-f3a45b544fabfeaf3727420e482751ae_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/8e0fb7576c51a17f43a60ae385c339ed.jpeg)
图4.5 调制信号2
![v2-6216eadf879378490b1691c8b0a71539_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/17e323c87e548e1db5e9da8c6dd5d47b.jpeg)
图4.6 AM调制信号
![v2-28538cd11cbaeec0f168002799f4a7e4_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/beba77188995b03a381706e3ac8f7951.jpeg)
图4.7 DSB单边带调制信号
![v2-a769c7ba50a7d1f902a2971d401a3786_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/ce0ba1564a19a15485aac39079718808.jpeg)
图4.8 AM经过带通滤波器的输出波形
其中,仿真结果图4.6验证了调幅波是一个载波振幅按照调制信号的大小线性变化的高频振荡信号,而其载波频率保持不变的特点。图4.6和图4.8相比较可以看出,未经过带通滤波器滤波的乘法器输出时域波形比经过带通滤波器滤波的已调信号时域波形多很多带外噪声,这也验证了带通滤波器在AM调制中的作用。
在图4.3中,当切换左边开关就可以改变调制信号,实现AM调制与DSB或SSB调制不同调制方式的切换;当切换右边下面的开关就可以通过选择不同的滤波器,得到不同的SSB调制信号;而切换右边上面的开关就可以在示波器和频谱仪中显示相应的输出结果。当然,整个仿真模型中载波频率、滤波器传输特性等都可以按需要改变,相应节点的输出时域波形和频域波形都会随之改变。
图4.6,4.7分别与4.2节中直接用MATLAB语言进行仿真的结果相比较,可以发现,其调制结果是相同的。由此也可以证明用Simulink来进行仿真是很简洁的,可以不用过多的了解MATLAB语言,只要懂得对参数进行设计就可以了。
4.4 本章小结
综上分析,Simulink是一个对动态系统进行建模、仿真并对仿真结果进行分析的软件包。使用Simulink可以更加方便地对系统进行可视化建模,并进行基于时间流的系统级仿真,使得仿真系统建模与工程中的方框图统一起来。并且仿真结果可以近乎“实时”地通过可视化模块,如示波器模块、频谱仪模块以及数据输入输出模块等显示出来,使得系统的仿真工作十分方便。因此,目前这种方法在科研中被广泛使用。
结束语
计算机仿真已经成为解决工程实际问题的重要手段,Matlab软件是其中功能最为强大的仿真软件之一。目前利用Matlab进行系统性能仿真,主要有三种方法:其一是通过脚本程序的编写,实现相关系统仿真和性能分析;其二是利用Simulink模块库,通过鼠标拖拉的方式建立相关系统的仿真模型,对每个模块进行参数设置,以达到动态系统仿真和性能分析的目的;其三是利用图形用户界面GUI,创建各种菜单、按钮等可视化界面,通过函数回调等手段,实现人机交互的系统仿真及其性能分析。Matlab语言比较简单,脚本程序的编写也比较简单,很多语言结构和风格与常用的C语言非常相似,因此,对于初学者而言,是很容易上手的。
利用MATLAB丰富的数据处理函数和强大的图形可视化功能,用它来实现信号源,使设计者能快速实现多种方案,对于信号源的采集、分析和处理都带来了较大的方便。虽然这种方法实现的信号源受声卡采样频率、电脑噪音的影响较大,但还是能够基本满足电路实验室低频信号发生器的要求。
但是,采用这种方法实现的低频信号发生器有产生噪音,分析如下:
(1)主机电源的噪音;
(2)主机的高频幅射;
(3)环境噪音。降低噪音。
我们可以:
(1)选择信噪比比较高的主机电源将会对消除噪到重要作用;
(2)实验设备在利用信号源时应尽量与主机保持距离,以减少电磁辐射对设备的影响;
(3)对于环境噪音,当信号频率与50HZ相差很大时忽略环境噪音对设备的影响,但当信号频率接近50HZ应对实验设备采取良好的屏蔽措施;
虽然会有一些噪声,但总体而言,用MATLAB仿真得到的信号发生器总体效果还是很好的,简单可靠有效。这些特点使MATLAB仿真在实际应用中具有广泛的推广应用前景。