数字通信系统的MATLAB设计与仿真本科毕业设计

上传人:仙*** 文档编号:33625417 上传时间:2021-10-18 格式:DOC 页数:68 大小:938KB
返回 下载 相关 举报
数字通信系统的MATLAB设计与仿真本科毕业设计_第1页
第1页 / 共68页
数字通信系统的MATLAB设计与仿真本科毕业设计_第2页
第2页 / 共68页
数字通信系统的MATLAB设计与仿真本科毕业设计_第3页
第3页 / 共68页
点击查看更多>>
资源描述
湖南工程学院毕业设计(论文) 毕 业 设 计题 目: 数字通信系统的MATLAB设计与仿真 毕业设计(论文)任务书 题目: 数字通信系统的MATLAB设计与仿真 姓名 系 计算科学与技术 专业 通信工程 班级 0402 学号 200403040204 指导老师 职称 讲师 教研室主任 一、 基本任务及要求:实际的通信系统是一个功能结构相当复杂的系统,对通信系统作出的任何改变都可能影响到整个系统的性能和工作效率。因此,在构建一个新的通信系统或改进原有通信系统前,必须要对通信系统进行建模和仿真,从仿真结果衡量设计方案的可行性,选择最合理和高效的系统配置与参数设置,在应用到实际系统中。可见,通信系统仿真在整个通信系统的构建中处于先导、验证、重要的地位。通信系统仿真在一般分为3个步骤,即仿真建模、仿真实验、仿真分析。 基本任务: 1.熟悉并掌握数字通信系统结构; 2.搭建起数字通信的基带、频带传输系统,采用合适的信源编码、信道编码和数字调制技术,实现有效、正确的信息传输; 3. 仿真分析,学会观察仿真结果,并以此来调整系统参数或改变2中的所使用的各种通信技术。 基本要求:掌握数字通信系统结构及常用技术;熟悉仿真语言。 二、 进度安排及完成时间:第1周: 老师讲解课题,明确课题任务与要求,学习资料收集检索方法并搜索收集所需中文资料。第2周: 阅读资料、书籍,学习所需知识,撰写文献综述。第35周:毕业实习。第6周: 完成毕业实习报告撰写;建立毕业设计实验环境;初步拟订设计方案;准备开题报告。第7周: 撰写开题报告。第813周:具体设计、调试、修改、实现。第1415周:撰写毕业论文(说明书),完成毕业答辩资格审查。第16周: 毕业答辩准备、毕业答辩。61目 录摘要1Abstract2前 言3第一章 MATLAB与通信仿真41.1 MATLAB简介41.2 通信仿真61.2.1 通信仿真的概念61.2.2 通信仿真的基本步骤71.2.3 通信系统仿真的重要作用101.3 通信系统仿真问题的提出、研究价值及研究现状101.3.1 通信系统仿真问题的提出101.3.2 通信系统仿真问题的研究价值101.3.3 通信系统仿真问题的研究现状111.4 本论文的主要研究内容11第二章 simulink入门132.1 simulink简介132.2 simulink的工作环境142.2.1 simulink的模型库142.2.2 设计仿真模型152.2.3 运行仿真162.2.4 建立子系统162.2.5 封装子系统182.3 S函数及其简介182.3.1 S函数工作原理192.3.2 S函数基本概念20第三章 通信系统信道和噪声研究及其仿真223.1 通信系统信道模型及其分类223.1.1 恒参信道223.1.2 随参信道233.2 通信系统中噪声概述及高斯白噪声243.2.1 噪声概述243.2.2 高斯白噪声243.3 仿真系统设计BFSK在三种传输信道中的传输性能分析24第四章 模拟信号的数字传输研究及其仿真294.1 模拟信号的数字传输模型及抽样定理294.1.1 模拟信号的数字传输模型294.1.2 抽样定理294.2 模拟信号的量化304.2.1 均匀量化304.2.2 非均匀量化304.3 脉冲编码调制及差分脉冲编码调制原理314.3.1 脉冲编码调制(PCM)原理314.3.2 差分脉冲编码调制(DPCM)原理324.4 仿真系统设计324.4.1 A律十三折与u律十五折量化误差分析32第五章 通信系统信道编码研究及其仿真355.1 信道编码概念355.2 信道编码分类355.2.1 分组编码355.2.2 循环冗余码365.2.3 卷积编码365.3 仿真系统设计375.3.1 RS编码纠错性能分析375.3.2 CRC-16编码检错性能分析38第六章 通信系统信号调制研究及其仿真416.1 信号调制的概念416.2 信号调制416.2.1 脉冲振幅调制(PAM)416.2.2 正交振幅调制(QAM)426.2.3 数字频率调制426.2.4 数字相位调制436.3 仿真系统设计446.3.1 PAM和QAM抗噪声性能分析446.3.2 QPSK在IS-95前向信道中的应用466.3.3 DQPSK在USDC中的应用476.3.4 OQPSK在IS-95反向信道中的应用496.3.5 GMSK在GSM中的应用50小 结53参 考 文 献54致 谢55附录A56数字通信系统的MATLAB设计与仿真摘 要:现代社会发展要求通信功能越来越强,性能越来越高,构成越来越复杂;另一方面,要求通信系统技术研究和产品开发缩短周期,降低成本,提高水平。这样尖锐对立的两方面的要求,只有通过使用强大的计算机辅助分析设计技术和工具才能实现。现代计算机科学技术快速发展,已经研发出新一代的可视化仿真软件。这些功能强大的仿真软件,使得通信系统仿真的设计和分析过程变得相对直观和便捷,由此也使得通信系统仿真技术得到了更快的发展。本文首先介绍了通信系统仿真的基本内容,包括通信系统仿真的一般步骤MATLAB中的一种可视化仿真工具Simulink以及S-函数的相关概念。从理论上对通信系统进行深入细致的研究是非常必要的。本文对通信系统中的一些重要环节,包括信道、噪声、模拟信号的数字化传输、信道编码以及信号调制的原理、方法和过程进行了详细的阐述。理论知识是用来指导具体实践的。本文在深刻理解通信系统理论的基础上利用MATLAB强大的仿真功能,设计了许多具体的通信系统仿真模型。在仿真模型设计过程中,本文对模型设计的目的、具体的结构组成、仿真流程以及仿真结果都给出了具体详实的分析和说明。最后,本文对所做的研究工作进行了总结,并且提出了今后的工作和研究方向。关键词:MATLAB;数字通信;系统设计。Digital Communication System Design and Simulation MATLABAbstract: The development of modern society requires communications system has more powerful function, higher performance and complicated structure. On the other hand,the research of technology and development of product should truncate cycle, cut costs and increase production levels. We can resolve the conflict by using the computer aided design technology and tools. The rapid development of computer science causes the successful research and development of new generation visual simulation software. The simulation software is powerful which makes the process of design and analysis of communications system simulation more intuitional and convenient. Today, the communications system simulation is rapid developing. The paper firstly introduces the basic content of communications system simulation, which include common steps of simulation, visual simulation tool called Simulink and the concept of S-function. It is necessary to research the theory of communications system intensively. The paper expands some important links of the communications system which include channel, noise, digital transmission of analog signal, channel encode and signal modulation. Theory aims to guide practice. On the base of deep comprehension of communications system theory, the paper designs many concrete simulation models In the process of models design, the paper analyses the intention, configuration, simulation links and simulation results.In the end, the paper summarizes main content of the research and some following study and research objects are suggested.Key Words: MATLAB, Digital Communication, System Design前 言在过去的几十年里,通信和信号处理系统的复杂程度显著地提高了。与此同时出现了一系列新的技术,如:用于数字信号处理的价格不高但速度很快的硬件、光纤光学器件、集成光学设备和单片微波集成电路,这些对通信系统的实现均有重要影响。通信系统复杂度的提高使得用来分析和设计系统的时间和精力也相应提高了,然而在商用产品中引入新技术要求设计能做到短时、高效、省力,而这些要求只有通过使用强大的计算机辅助分析和设计工具才能实现。所以,通信系统仿真在通信系统工程设计中起着举足轻重的作用。虽然软件实验不像硬件实验那样让人感到“真实”,但对于许多通信问题的研究来说的确非常有效。与硬件实验相比,软件实验具有如下一些优点:(1) 软件实验具有广泛的适应性和极好的灵活性。在硬件实验中改变系统参数也许意味着要重做硬件,而在软件实验中则是改一、两个数据,甚至只是在屏幕上按几下鼠标。(2) 软件实验更有助于我们较为全面地研究通信系统。有许多问题,通过硬件实验来研究可能非常困难,但在软件实验中却易于解决。(3)硬件实验的精确度取决于元器件及工艺水平,软件实验的精度取决于CPU的运算速度或者说是程序的运算量。(4) 软件实验建设开发周期短,成本低。而且近年来,随着计算机硬件性能的不断提升和计算机软件技术的飞速发展,利用计算机进行实验系统仿真成为一种国际潮流。国内也逐步开始了这一方面的工作,并正取得积极的成果。第一章 MATLAB与通信仿真1.1 MATLAB简介Matlab软件系列产品是一套高效强大的工程技术数值运算和系统仿真软件,广泛应用于当今的航空航天、汽车制造、半导体创造、电子通信、医学研究、财经研究和高等教育答领域,被誉为“巨人肩膀上的工具”,研发人员借助Matlab软件能迅速测试设计构想,综合评测系统性能,快速设计出更好的方案来确保更高技术的要求。同时,Matlab也是国家教委重点提倡的一种计算工具。综合起来,Matlab有以下几个特点:(1)友好的工作平台和编程环境Matlab由一系列工具组成。这些工具方便用户使用Matlab的函数和文件,其中许多工具采用的是图形用户界面。包括Matlab桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着Matlab的商业化以及软件本身的不断升级,Matlab的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的Matlab提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。(2)简单易用的程序语言Matlab一个高级的距阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C语言基础上的,因此语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是Matlab能够深入到科学研究及工程计算各个领域的重要原因。(3)强大的科学计算机数据处理能力Matlab是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C+ 。在计算要求相同的情况下,使用Matlab的编程工作量会大大减少。MATLAB的这些函数集合包括从最简单最基本的函数到诸如距阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。(4)出色的图形处理功能Matlab自产生之日起就具有方便的数据可视化功能,以将向量和距阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的Matlab对整个图形处理功能作了很大的改进和完善,使他不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),Matlab同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,Matlab也有相应的功能函数,保证了用户不同层次的要求。另外新版本的Matlab还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。(5)应用广泛的模块集合工具箱Matlab对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,他们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,Matlab已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。(6)实用的程序接口和发布平台新版本的Matlab可以利用Matlab编译器和C/C+数学库和图形库,将自己的Matlab程序自动转换为独立于Matlab运行的C和C+代码。允许用户编写可以和Matlab进行交互的C或C语言程序。另外,Matlab网页服务程序还容许在Web应用中使用自己的Matlab数学和图形程序。Matlab的一个重要特色就是他有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是Matlab函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。(7)应用软件开发(包括用户界面)在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5。1.2 通信仿真仿真是衡量系统性能的工具,它通过仿真模型的仿真结果来推断原系统的性能,从而为新系统的建立或原系统的改造提供可靠的参考。通过仿真,可以降低新系统失败的可能性,消除系统中潜在的瓶颈,防止对系统中某些功能部件造成过量的负载,优化系统的整体性能,因此,仿真是科学研究和工程建设中不可缺少的方法。实际的通信系统是一个功能结构相当复杂的系统,对这个系统做出的任何改变(如改变某个参数的设置、改变系统的结构等)都可能影响到整个系统的性能和稳定。因此,在对原有的通信系统做出改进或建立一个新系统之前,通常需要对这个系统进行建模和仿真,通仿真结果衡量方案的可行性,从中选择最合理的系统配置和参数设置,然后再应用于实际系统中。这个过程就是通信仿真。1.2.1 通信仿真的概念 通信仿真是衡量通信系统性能的工具。通信仿真可以分成离散事件仿真和连续仿真。在离散事件仿真中,仿真系统只对离散事件做出响应,而在连续仿真中,仿真系统对输入信号产生连续的输出信号。离散事件仿真是对实际通信系统的一种简化,它的仿真建模比较简单,整个仿真过程需要花费的时间也比连续仿真少。虽然离散事件仿真舍弃了一些仿真细节,在有些场合显得不够具体,但仍然是通信仿真的主要形式。与一般的仿真过程类似,在对通信系统实施仿真之前,首先需要研究通信系统的特性,通过归纳和抽象建立通信系统的仿真模型。图11所示是关于通信系统仿真流程的一个示意图。从图中可以看到,通信系统仿真是一个循环往复的过程,它从当前系统出发,通过分祈建立起一个能够在一定程度上描述原通信系统的仿真模型,然后通过仿真实验得到相关的数据。通过对仿真数据的分析可以得到相应的结论,然后把这个结论应用到对当前通信系统的改造中。如果改造后通信系统的性能并不像仿真结果那样令人满意,还需要重新实施通信系统仿真,这时候改造后的通信系统就成了当前系统,并且开始新一轮的通信系统仿真过程。当前系统仿真建模仿真实验仿真分析结论分析改造后的系统实际系统 仿真系统图1.1通信系统仿真流程图1.2.2 通信仿真的基本步骤通信仿真系统一般分为3个步骤,即:仿真建模、仿真实验和仿真分析。应该注意的是,通信仿真是一个螺旋式发展的过程,因此这3个步骤可能需要循环执行多次之后才能够获得令人满意的仿真结果。1、仿真建模仿真建模是根据实际通信系统建立仿真模型的过程,它是整个通信仿真过程中的个关键步骤,因为仿真模型的好坏直接影响者仿真的结果以及仿真结果的真实性和可靠性。 仿真模型是对实际文件系统的一种模拟和抽象,但又不是完全的复制。简单的仿真模型容易被理解和操作,但是由于它忽略了很多关于实际系统的细节,因而在一定程度上影响了仿真的可靠性。如果仿真模型比较复杂,虽然它是对实际系统的种忠实反映,但是其中包含了过多的相互作用因素,这些因素不仅需要消耗过多的仿真时间,而且使仿真结果的分析过程变的相当复杂。因此,仿真模型的建立需要综合考虑其可行性和简单性。在仿真建模过程中,我们可以先建立一个相对简单的仿真模型,然后再根据仿真结果和仿真过程的需要逐步增加仿真模型的复杂度。仿真模型一般是一个数学模型。数学模型有多种分类方式,包括确定性模型和随机模型,静态模型和动态模型。确定性模型的输入变量和输出变量都有固定数值,而在随机模型中,至少有个输入变量是随机的。静态模型个需要考虑时间变化因素,动态模型的输入输出变量则需要考虑时间变化因素。一般情况下通信仿真模型是一个随机动态系统。在仿真建模过程中,首先需要分析实际系统存在的问题或设立系统改造的目标,并且把这些问题和目标转化成数学变量和公式。例如,我们可以设定改造后系统或新系统在达到系统最大容量时的误码率,或者是通信系统的最大呼损率,等等。有了这些具体的仿真目标之后,下一步是获取实际通信系统的各种运行参数,如通信系统占用的带宽及其频率分布,系统对于特定的输入信号产生的输出等。同时,对于通信系统中的各个随机变量,可以采集这些变量的数据,然后通过数学工具来确定随机变量的分布特性。有了上面的准备工作,下一步就可以通过仿真软件来建造仿真模型了。最简单的工具是采用c语言等编程工具直接编写仿真程序,这种方法的优点是效率高,缺点则是不够灵活,没有一个易于实现的人机交互界面,不便于对仿真结果进行分析。除此之外,还可以采用专门的仿真软件建造仿真模型,比较常用的仿真软件包括Matlab、0PNET、NS2等,这些软件具有各自不同的特点,适用于不同层次的通信仿真。例如,物理层仿真通常采用Matlab,而网络层仿真则适用采用0PNET。在完成仿真模型的软件实现之后,还需要对这个仿真模型的有效性进行初步的验证。一种简便的验证方法是采用特定的已知输入信号,这个输入信号分别通过仿真模型和实际系统,产生两种输出信号。如果仿真模型的输出信号与实际系统的输出信号比较吻合,说明这个仿真模型与原系统具有较好的相似性。当这两种输出信号差别很大时,最好先检查一下仿真模型的内部连接和设置,找出造成这种差异的原因。仿真建模的最后一步是做好仿真模型的文档工作,这是最容易被大家忽略的。很多情况下,我们在完成系统的设计之后就迫不及待地运行仿真程序,待发现仿真结果与预期目标相差甚远时才回过头来焦头烂额地检查仿真模型的内部结构。这时候,往往原先的很多参数设置和条件假设都变得不可理解,这非常不利于修改多数和结构,不利于找错和排错。2、仿真实验仿真实验是一个或一系列针对仿真模型的测试。在仿真实验过程中,通常需要多次改变仿真模型输入信号的数值,以观察和分析仿真模型对这些输入信号的反应,以及仿真系统在这个过程中表现出来的性能。需要强调的一点是,仿真过程中使用的输入数据必须具有一定的代表性,即能够从各个角度显著地改变仿真输出信号的数值。 实施仿真之前需要确定的另外一个因素是性能尺度。性能尺度指的是能够衡量仿真过程中系统性能的输出信号的数值(或根据输出信号计算得到的数值),因此,在实施仿真之前,首先需要确定仿真过程中应该收集哪些仿真数据,这些数据以什么样的格式存在,以及收集多少数据。 在明确了仿真系统对输入信号和输出信号的要求之后,最好把这些设置整理成一份简单的文档。编写文档是一个好习惯,它能够帮助我们回亿起仿真设计过程的一些细节。当然,文档的编写不一定要求很规范,并且文档大小应该视仿真设计的规模而定。 最后,还应该明确各个输入信号的初始设置以及仿真系统内部各个状态的初姑值。仿真的运行实际上是计算机的计算过程,这个过程一般不需要人工干预,花费的时间由仿真的复杂度确定。如果需要比较仿真系统在不同参数设置下的性能,应该使仿真系统在取不同参数值时具有相同的输入信号(或相同的随机输入信号),这样才能够保证分析和比较的客观性和可靠性。对于需要较长时间的仿真,应该尽可能地使用批处理方式,使得仿真过程在完成种参数配置的仿真之后能够自动启动针对下个参数配置下个仿真。这种方式减少了仿真过程中的人工下颈,提高了系统利用率利仿真效率。3、仿真分析 仿真分析是个通信仿真流程中的最后个步骤。在仿真分析过程个,用户已经从仿真过程中获得了足够多的关于系统件能的信息,这是这些信息只是一些原始数据,一般还需要经过数值分析和处理才能够获得衡量系统性能的尺度,从而获得对仿真系统件能的一个总体评价。常用的系统性能尺度包括平均值、方差、标准差、最大值和最小值等,它们从不同的角度描绘了仿真系统的性能。 如果仿真过程需要一定的时间才能够达到平衡状态,在对输出数据进行分析和处理时一般要忽略最初的若干个数据,而只考虑平衡之后的输出。对于仿真尺度不随时间变化的平衡系统(Stationary System),还可能涉及到对输出变量稳定状态的求解。 另外一个需要注意的地方是,即使仿真过程中收集的数据正确无误,由此得到的仿真结果并不一定就是难确的。造成这种结果的原因可能是输入信号恰好与仿真系统的内部特性相吻合,或者输入的随机信号不具有足够的代表性。图表是最简洁的说明工具,它具有很强的直观性,便于分析和比较,因此仿真结果一般绘制成图表形式。我们使用的仿真工具股都具有很强的绘图功能,能够便捷的绘制各种类型的图表。以上就是通信仿真的一个循环。应该强调的是,仿真分析并不定意味着通信仿真过程的完全结束。如果仿真分析得到的结果达不到预期的目标,用户还需要重新修改通信仿真模型,这时候仿真分析就成为了另外一个循环的开始。1.2.3 通信系统仿真的重要作用在过去的几十年里,通信和信号处理系统的复杂程度显著地提高了。与此同时出现了一系列新的技术,如用于数字信号处理的价格不高但速度很快的硬件、光纤光学器件、集成光学设备和单片微波集成电路,这些对通信系统的实现均有重要影响。通信系统复杂度的提高使得用来分析和设计系统的时间和精力也相应提高了,然而在商用产品中引入新技术要求设计能做到短时、高效、省力,而这些要求只有通过使用强大的计算机辅助分析和设计工具才能实现。所以,通信系统仿真在通信系统工程设计中起着举足轻重的作用。1.3 通信系统仿真问题的提出、研究价值及研究现状1.3.1 通信系统仿真问题的提出通信系统的性能可以用基于公式的计算方法、波形级仿真或通过硬件样机研究和测量来估计得到。以简化模型为基础的公式法只能应用于一些理想化和过于简单的例子,要想估计出复杂通信系统的性能是非常困难的。基于测量的性能估计方法通常代价很高,并且很不灵活。用基于仿真的方法来估计性能时,系统可以用任何所期待的细节(主观的,当然有一定局限)来模拟。与公式法或测量法相比较,仿真的方法能更好的利用设计空间,很容易将数字和经验模型结合起来,并结合设备和真实信号的特点进行分析和设计。1.3.2 通信系统仿真问题的研究价值通信系统仿真实质上就是把硬件实验搬进了计算机,可以把它看成是一种软件实验。在硬件实验系统中,用各种电子元器件制作出通信系统中的理论模型所规定的各个模块,再把它们通过导线或电缆等接在一起,然后再用示波器、频谱议、误码仪等通信仪表做各种测量,最后分析测量结果。在软件实验中我们也是这样做,只不过所有通信模块及通信仪表的功能都是用程序来实现的,通信系统的全过程在计算机中仿真运行。虽然软件实验不像硬件实验那样让人感到“真实”,但对于许多通信问题的研究来说的确非常有效。与硬件实验相比,软件实验具有如下一些优点:(1) 软件实验具有广泛的适应性和极好的灵活性。在硬件实验中改变系统参数也许意味着要重做硬件,而在软件实验中则是改一、两个数据,甚至只是在屏幕上按几下鼠标。(2) 软件实验更有助于我们较为全面地研究通信系统。有许多问题,通过硬件实验来研究可能非常困难,但在软件实验中却易于解决。(3)硬件实验的精确度取决于元器件及工艺水平,软件实验的精度取决于CPU的运算速度或者说是程序的运算量。(4) 软件实验建设开发周期短,成本低。1.3.3 通信系统仿真问题的研究现状计算机辅助分析和设计技术发展十分迅速,出现了大量实用仿真软件与工具,并应用于通信系统建模,分析和设计,使得通信系统仿真发展很快。计算机辅助技术基本上有两大类,一是基于公式的方法,用计算机计算复杂的公式:二是用计算机仿真系统的信号波形,即波形级仿真。通信系统仿真应用到了通信系统工程设计的各个阶段,无论是从早期的概念设计,还是实现、测试、使用等各个阶段。在概念定义阶段,通信系统仿真获得顶层指标;在接下来的设计和研发中,通信系统仿真确定硬件研发的指标,检验已完成子系统对整个系统性能的影响;在运行阶段,通信系统仿真可以用来确定解决问题的方法;通信系统仿真还可以预测系统的使用寿命。现代计算机软硬件技术的快速发展,新一代的可视化的仿真软件的使用使得通信系统仿真的设计和分析过程变得相对直观和便捷,推动了通信系统仿真的快速发展。1.4 本论文的主要研究内容现代社会发展要求通信系统功能越来越强,性能越来越高,构成越来越复杂;另一方面,要求通信系统技术研究和产品开发缩短周期,降低成本,提高水平。这样尖锐对立的两个方面的要求,只有通过使用强大的计算机辅助分析设计技术和工具才能实现。通信系统仿真贯穿通信系统工程设计的全过程,对通信系统的发展起着举足轻重的作用。本论文针对通信系统仿真的研究主要做了以下的工作:(1) 介绍了通信系统仿真的相关内容,包括通信系统仿真的一般步骤、Matlab中的一种可视化仿真工具Simulink以及S-函数的相关概念。(2) 对通信系统中的主要环节,包括通信系统信道、噪声、模拟信号的数字传输系统、信道编码以及信号调制的原理、方法和过程进行了详细的阐述。(3) 在理解通信系统理论的基础上,利用Matlab强大的仿真功能,设计了具体的通信系统模型。在模型的设计过程,对模型设计的目的、具体的结构组成、仿真流程以及仿真结果都给出了具体详实的说明和分析。第二章 simulink入门simulink是Matlab中的一种可视化仿真工具,广泛应用于线性系统、数字控制、非线性系统以及数字信号处理的建模和仿真中。simulink采用模块化方式,每个模块都有自己的输入输出端口,实现一定的功能。在simulink中,仿真模型表现为若干个仿真模块的集合以及这些模块之间的连接关系,这就使得仿真的设计和分析过程变得相对直观和便捷,同时有利于仿真模型的扩充。2.1 simulink简介动态系统是输出信号随时间变化的系统。要描述这种系统的特性,传统的建模方法是先对系统的输入信号和输出信号进行分析,得到它们的系统方程,然后编写程序进行仿真。这种仿真方法有两个缺点:首先是不够直观,缺乏足够的人机交互。由于所有的输入信号和输出信号都被抽象成数值之间的关系,仿真表现为一种计算过程,因此难以对仿真的过程进行控制,也难以对仿真的输出数据进行直观的描述和分析。另外,这种方法缺乏系统性,尤其是在对复杂系统的处理过程中,难以采用模块化方法,从而降低了仿真程序的可读性和可扩展性。simulink是Matlab提供的用于对动态系统进行建模、仿真和分析的工具包。simulink提供了专门用于显示输出信号的模块,可以在仿真过程中随时观察仿真结果。同时,通过simulink的存储模块,仿真数据可以方便地以各种形式保存到工作区或文件中,供用户在仿真结束之后对数据进行分析和处理。另外,simulink把具有特定功能的代码组织成模块的方式,并且这些模块可以组织成具有等级结构的子系统,因此具有内在的模块化设计要求。基于上述优点,simulink称为一种通用的仿真建模工具,广泛应用于通信仿真、数字信号处理、模糊逻辑、神经网络、机械控制和虚拟现实等领域。根据输出信号与输入信号的关系,simulink提供3种类型的模块:连续模块、离散模块和混合模块。连续模块是指输出信号随着输入信号发生连续变化的模块,离散模块则是输出信号以固定间隔变化的模块。对于连续模块,simulink采用积分方式计算输出信号的数值,因此,连续模块主要涉及导数的计算及其积分。离散模块的输出信号在下一个抽样时刻到来之前保持恒定,这时simulink只需以一定的间隔计算输出信号的数值。混合模块是根据输入信号的类型来确定输出信号类型的,它既能够产生连续输出信号,也能够产生离散输出信号。2.2 simulink的工作环境当采用simulink进行建模和仿真时,一般是从simulink模型库中提供的模块出发,通过组合各种模块来完成模块的设计。simulink模型库提供了一种模块的集成环境,通过它可以快速地开发各种仿真模型。2.2.1 simulink的模型库在matlab的工作区中输入“simulink”或是单击matlab工具栏上的,就进入如2-1图所示的模型库界面图2.1 simulink 模型库simulink模型库中的仿真模块组织成个三级树型结构,例如,图21所示:Smulink于模型库包含了Continuous、Discontinuities、Discrete等下一级的模型库,其中Continuous模型库中包含了若干个模块,这些模块可以直接加入到自己的仿真模型中。2.2.2 设计仿真模型在matlab或simulink窗口的工具栏中依次选择“file”“new”“model”,自动生成一个空白的仿真模型模型窗口,如图2-2所示图2.2 空白仿真模型 在设计仿真模型的过程中,如果在simulink模型库中包含了仿真模型所需的模块,则在simulink模型库中选中这个模块,单击鼠标右键,从浮动菜单中选择“Add to untitled”(或直接把模块拖到仿真模型中),这时候就把这个选中的模块加入到仿真模型中了。 simulink模型库窗口提供了模块查找功能。在simulink模型库窗口的工具栏上单击按钮,弹出如图23所示的模块查找对话框。输入所需查找的模块名称的关键字,单击“find Next”按钮,则simulink自动搜索整个模型库。图2.3 simulink搜索模型 simulink模型库中的模块一般具有各种参数设置。在仿真模型窗口中双击模块,弹出该模块的参数设置对话框,这时候可以修改模块中各个参数的数值。通常情况下,仿真模块的设计过程就是对simulink模型库中各个模块的一种组合。如果simulink模型库中没有所需的模块,这时候可以通过s函数构造自己的模块,并且把这个模块与其他simulink模块合起来,实现相应的仿真功能。关于S函数的内容,将在后面进行详细论述。2.2.3 运行仿真仿真模型有两种运行方式:菜单方式和命令行方式。在simulink中打开仿真模型,然后在菜单栏中依次选择“simulation”“start”,或者在工具栏上单击缺钮,则仿真模型将以菜单方式运行。菜单方式的优点在于它的交互性,通过在仿真模型中设置示波器模块(Scope)或显示模块(Display)可以在仿真过程中观察输出信号的数值。同时,有些仿真模块还允许用户在不中断仿真进程的条件下随时更改模块的参数设置。命令行方式一般用于执行批处理方式的仿真,它是通过MATLAB命令“sim”启动仿真进程,例如,在matlab工作区中输入“sim (rayleighfading)”命令后,simulink开始运行仿真模型rayleighfading。如果需要多次运行仿真程序,可以把这些命令编写成个M文件,然后在matlab工作区中执行这个M文件就可以了。用命令行方式启动仿真模型后,simulink并不自动打开相应的模型,因此不能直接观察仿真的进程,但是仍然可以通过各种显示不模块观察输出信号。matlab把工作区和simulink集成在一起,因此仿真模型的两种运行方式可以交互使用。一般情况下,仿真结果保存到上作区中,用户可以在仿真结束之后对仿真结果进行分析和加工,并且根据仿真数据绘制各种图表。2.2.4 建立子系统 在Simulink中,若干个仿真模块可以组合起来构成个子系统(subsystem),以减少每个仿真模型窗口中显示的仿真模块的数日。采用子系统的另外一个好处是可以把复杂的仿真模型按照功能关系组织成等级结构,使得每个子系统都是个相对独立的功能实体,这些子系统组合起来构成一个功能更强的子系统。 Simulink子系统可以按照自顶向下的方式进行构造。首先,在仿真模型中添加一个子系统模块(subsystem),设置这个子系统模块的名称,然后双击该模块,待打开该模块之后就可以对子系统的功能进行设计了。子系统的输入、输出分别由Simulink模型库中的输入端口模块(in)和输出端口模块(out)构造,在设计子系统的过程中可以根据需要添加若干个这样的输入输出模块。 另外个构造子系统的方法是自底向上,即先在同个窗门中添加各个Simulink模块,当模块的数目增加到一定的限度时,可以选中其中若干个模块(按住shift键后单击各个需要组合的模块),然后单击鼠标右键,在弹出的菜单中选择Create Subsystem,这时候就创建了一个子系统,并且Simulink自动为这个于系统设置了输入端口和输出端口。在Simulink中,子系统和输入、输出端口的名称都可以由用户自行设置。 子系统的命名方式类似于系统目录的命名,每个子系统的名称是它所在上一级系统名称与子系统名称的组合,中间以反斜杠(“”)分隔。例如,“preject5_1source”,表示preject5_1模型中名为source的子系统。用户可以设置子系统在双击之后的打开万式。选择菜单栏上的“file”“Preferences”命令打开如图24所示的对话柜,在左边的列表框中选择“Simulink”,这时候可以在右边面板的“window reuse”下拉列表中选择所需的方式。图2.4 matlab的preferences对话框如果把“window reuse”设置为“none”,双击子系统时,simulink在新窗口中打开子系统,原窗口保持不变:如果“window reuse”设置为“reuse”,simulink在当前窗口中打开子系统:如果“window reuse”设置为“replace”,simulink在新窗口中打开子系统,同时原窗口消失:如果“window reuse”设置为“mixed”,simulink在新窗口中打开子系统,同时保持原窗口不变,这种方式与none的差别在于,当在于系统中选择菜单栏上的“VIew”“go to parent”命令返回上一级系统时,none方式中这个子系统窗口不会消失,而mixer方式的子系统窗口被自动隐藏。2.2.5 封装子系统simulink模块库中的每一个模块部有它独特的图标和参数设置对话框。对于用户自己创建的子系统,也可以通过simulink来设置该模块的图标和参数。选中某个子系统,单击右键后从弹出式菜单中选择“Mask subsynem”,这时候就创建了一个封装子系统(Masked subsynem)。需要注意的是,对于一个已经被封装的子系统,它的Mask subsynem命令无效。 子系统转化成封装子系统之后,simulink弹出一个封装编辑器对话框,这时候可以设置封装子系统的图标和模块参数。封装编辑器共有4个属性页,分别用与设置模块的图标、参数、初始化代码以及文档信息。在Icon属性页中,读者可以设置模块的外观属性,并且可以在Drawing commands编辑框中输入代码,以绘制模块的图标。我们可以通过MATLAB命令行“disp(source)”在模块中显示一行文字“Source”。 通过Parameters属性页我们可以设置封装子系统的白定义参数,这些参数将出现在封装子系统的参数设置对话框中。对于每一个自定义参数,它有一个用于在参数设置对话框中显示的名称(prompt)和个变量名称。每个自定义参数可以通过编辑框(edit)、复选框(checkbox)或者是下拉列表(Popup)设置参数值。如果选择了Evaluate复选框,则该参数的输入将自动转化成数值传递给相应的变量;否则,simulink自动把字符串传递给这个变量。如果选择了tunable复选框,则该参数的数值可以在仿真过程中动态改变。例如,对于名为samples Per symbl的白定义参数,它的内部变量名为samples Per symbl,用户可以通过下拉列表“popup”来选择该参数的数值2、3或4,同时simulink传递给变量samples Per symbl个数值,并且该参数可以在仿真过程中动态改变。2.3 S函数及其简介S-函数是系统函数(System-functions)的简称。在很多情况下,Simulink 模型库(Simulink Library)中的模块不能完全满足用户的要求,这时候需要由用户自己来编写相应的代码。M文件虽然能够用来编写 MATLAB 函数代码,但是它不具备与 Simulink 的接口,因此难以与Simulink其他模块一起使用。S-函数则提供了函数代码与 Simulink之间的接口,使得用户编写的代码既能够像 Simulink 模型库中的模块那样具有统一的仿真接口,同时能够实。各种灵活的控制和计算功能。从这个意义上说,S-函数是对 Simulink模块库功能的扩展。S-函数的代码既可以用 MATLAB 语言编写,也可以用其他通用的编程语言(如 C、C+、Ada 或 Fortran等)编写,后者具有更强的控制能力,它们被编译成 MEX(MATLAB EXecutable)文件,并且在仿真过程中动态装载。 通过 S-函数可以方便地编写仿真代码以创建自己的 Simulink模块,因此,S-函数是对Simulink模块库功能的扩展。根据S-函数代码使用的编程语言,S-函数可以分成 M 文件 S-函数(即用MATLAB语言编写的 S-函数)、C语言 S-函数、C+语言S-函数、Ada语言S-函数以及Fortran语言S-函数等。通过 S-函数创建的模块具有与 Simulink模型库中的模块相同的特征,它可以与 Simulink求解器进行交互,支持连续状态和离散状态模型。2.3.1 S函数工作原理每个Simulink模块都可以表示成输入信号 x、输入信号y以及内部状态u之间的关系,如图 3-1 所示。 内部状态u输出y输入x图2.5 simulink模块基本模型在某个时刻t,Simulink 模块的内部状态u由两部分组成:连续状态和离散状态,且u=+,此时输出信号,连续状态的导数,离散状态。Simulink根据连续状态导数方程进行积分运算,得到各个连续状态的数值,同时通过离散状态方程计算离散状态的当前值。这样,Simulink就可以得到各个时刻的状态及其输出信号,实现对仿真结果的求解。 在仿真过程中,每个 Simulink模块的执行过程可以分成 3 个阶段:初始化阶段、仿真循环阶段和仿真结束阶段。在初始化阶段,Simulink把各个模块调入内存,检查模块的数据类型和长度,设置仿真时间间隔,制订仿真模块的执行顺序,以及内存分配。在仿真循环阶段,Simulink按照初始化阶段制定的顺序依次执行各个模块,计算当前时刻的离散状态和输出信号,以小步长积分的方式计算各个连续状态的数值以及由此产生的输出。这个过程一直持续到仿真过程结束,然后Simulink进入仿真结束阶段,清理各种已经分配的资源,同时保存仿真过程中产生的数据。初始化计算下一个抽样时间更新离散状态计算过零点计算连续状态导数计算连续状态导数计算输出信号循 环 仿 真仿真结束图2.6 simulink模块仿真流程对应于仿真流程中的每一个步骤,Simulink中的S-函数调用预先设定的函数来实现相应的功能。例如,我们可以编写一个mdlInitializeSizes函数实现S-函数的初始化操作,通过mdlDerivatives和mdlUpdate函数在每一个抽样时刻分别计算连续状态变量的导数和更新离散状态的数值,在mdlOutputs函数中计算S-函数的输出信号等。需要指出的是,这些函数的名称都可以由用户自己设定。用户需要在S-函数的主体部分对这些函数进行注册,Simulink通过回调函数(Callback Function)的方式在不同事件发生的时候调用相应的函数。 2.3.2 S函数基本概念在编写S-函数的时候经常涉及到的概念有3个:直接反馈(Direct feedthrough)、可变长度输入(Dynamically sized inputs)以及抽样时刻和偏移(Setting sample times and offsets),它们是编写S-函数的基础。1 直接反馈 简单说来,直接反馈(Direct feedthrough)指的是输入信号是否直接影响着输出信号和仿真的抽样时间。在计算S-函数输出信号的过程中,如果输出信号(包括仿真过程中绘制的图形)是输入信号的函数,那么这个S-函数存在直接反馈。同样地,如果在可变步长的仿真过程中,S-函数的输入信号影响着对下一个仿真时刻的计算,这个S-函数也存在直接反馈。Simulink根据模块中的S-函数是否存在直接反馈来确定仿真模型中各个模块的执行顺序。如果S-函数不存在直接反馈,在计算该模块的输出信号时这个模块就可以不等待前一个模块的输出信号,因而有可能先于前面的模块执行。在编写S-函数的过程中,首要的是确
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!