通信系统课程设计-基于MATLAB的数字基带传输系统及数字调制的仿

更新时间:2024-04-03 00:01:01 阅读量: 综合文库 文档下载

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

课 程 设 计 说 明 书 设 计 及 说 明 目 录 前言……………………………………………………………………………… 2 MATLAB软件简介……………………………………………………… …… 2 数字基带传输系统仿真………………………………………………… ………5 1.1数字基带传输系统简介…… ……… ………………………………………5 1.2 数字基带信号……………………………………………………… ………7 1.2.1 数字基带信号的要求…………………………… ………………… … …7 1.2.2 数字基带信号………………………………………………………………8 1.2.3 常用的基带传输码型………………………………………………………9 1.3实验原理………………………………………………………………………12 1.3.1数字通信系统模型…………………………………………………………12 1.3.2数字基带传输系统模型……………………………………………………12 1.4实验内容………………………………………………………………………13 1.4.1 余弦滚降基带传输系统……………………………………………………13 1.4.2 眼图…………………………………………… …………………………14 1.5总结……………………………………………………………………………17 数字调制系统仿真 前言………………………………………………………………………………17 2.1二进制频移键控(2FSK)………………………………………… ………17 2FSK信号的产生…………………………………………………………………17 2FSK解调原理……………………………………………………………………19 2FSK调制与解调基于MATLAB仿真 …………………………………………20 2.2二进制振幅键控(2ASK)……………………………………………………23 2ASK调制与解调基于MATLAB仿真…………………………………………25 2.3二进制相移键控(2PSK)……………………………………………………27 2PSK原理…………………………………………………………………………27 2PSK基于MATLAB的仿真……………………………………………………29 2.4四进制相移键控(4PSK)……………………………………………………33 4PSK信号的产生与解调…………………………………………………………33 4PSK基于MATLAB的仿真……………………………………………………34 2.5十六进制正交幅度调制(16QAM)…………………………………………42 正交调制及相干解调原理框图…………………………………………………42 16QAM调制与解调基于MATLAB的仿真……………………………………43 2.6.心得……………………………………………………… …………………48 参考文献:………………………………………………………………………49 1

主要结果

前言 随着通信系统的规模和复杂度不断增加, 统的设计方法已经不能适应发展传的需要,通信系统的模拟仿真技术越来越受到重视。传统的通信仿真技术主要分 可以 得到与真实环境十分接近的结果,为手工分析与电路试验2种, 但耗时长方法比较繁杂,而通信系统的计算机模拟仿真技术是介于上述2种方法的一种系统设计方法,它可以让用户 在很 短的时间内建立整个通信系统模型,并对其进行模拟仿真。通信原理计算机仿真实验,是对数字基带传输系统的仿真。仿真工具是MATLAB程序设计语 言。 MATLAB是一种先进的高技术程序设计语言,主要用于数值计算及可视化图形处理。特点 是将数值分析、矩阵计算、图形、图像处理和仿 真等诸多强大功能集成在一个极易使用的交互式环境中伪科学研究、工程设计以及必须进行有效数值计算的众多学科提供了一种高效率的编程 工具。运用MATLAB,可以对数字基带传输系统 进行较为全面地研究。为了使本科类学生学好通信课程,我们进行了试点,通过课程设计的方式针对通信原理的很多内容进行了仿真。 MATLAB软件简介 MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。MATLAB 产品族可以用来进行以下各种工作: ● 数值分析 ● 数值和符号计算 ● 工程与科学绘图 2

● 控制系统的设计与仿真 ● 数字图像处理 技术 ● 数字信号处理 技术 ● 通讯系统设计与仿真 MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。 20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。 综上所述,Matlab 语言有如下特点: 1.编程效率高 它是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写程序,且 比 Basic、 Fortran 和 C 等语言更加接近我们书写计算公式的思维方式, Matlab 用 编写程序犹如在演算纸上排列出公式与求解问题。因此,Matlab 语言也可通俗 地称为演算纸式科学算法语言由于它编写简单,所以编程效率高,易学易懂。 2.用户使用方便 Matlab 语言是一种解释执行的语言(在没被专门的工具编译之前),它灵活、 方便,其调试程序手段丰富,调试速度快,需要学习时间少。人们用任何一种语 言编写程序和调试程序一般都要经过四个步骤:编辑、编译、连接以及执行和调 试。各个步骤之间是顺序关系,编程的过程就是在它们之间作瀑布型的循环。 Matlab 语言与其它语言相比,较好地解决了上述问题,把编辑、编译、连接和 执行融为一体。它能在同一画面上进行灵活操作快速排除输入程序中的书写错 误、语法错误以至语意错误,从而加快了用户编写、修改和调试程序的速度,可 以说在编程和调试过程中它是一种比 VB 还要简单的语言。 具体地说,Matlab 运行时,如直接在命令行输入 Mailab 语句(命令),包括调 用 M 文件的语句,每输入一条语句,就立即对其进行处理,完成绩译、连接和运 行的全过程。又如,将 Matlab 源程序编辑为 M 文3

件,由于 Mat1ab 磁盘文件也是 M 文件,所以编辑后的源文件就可直接运行,而不需进行编译和连接。在运行 M 文件时, 如果有错, 计算机屏幕上会给出详细的出锗信息, 用户经修改后再执行, 直到正确为止。所以可以说,Mat1ab 语言不仅是一种语言,广义上讲是一种该 语言开发系统,即语言调试系统。 3.扩充能力强 Matlab 语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,而且 Matlab 的库函数同用户文件在形成上一样, 所以用户文件也可作为 Matlab 的库 函数来调用。因而,用户可以根据自己的需要方便地建立和扩充新的库函数,以 便提高 Matlab 使用效率和扩充它的功能。另外,为了充分利用 Fortran、C 等语 言的资源, 包括用户已编好的 Fortran, 语言程序, C 通过建立 Me 调文件的形式, 混合编程,方便地调用有关的 Fortran,C 语言的子程序。 4.语句简单,内涵丰富 Mat1ab 语言中最基本最重要的成分是函数,其一般形式为「a,6,c……] = fun (d,e,f,……),即一个函数由函数名,输入变量 d,e,f,……和输出变量 a,b,c……组成,同一函数名 F,不同数目的输入变量(包括无输入变量)及 不同数目的输出变量,代表着不同的含义(有点像面向对象中的多态性。这不仅 使 Matlab 的库函数功能更丰富,而大大减少了需要的磁盘空间,使得 Matlab 编写的 M 文件简单、短小而高效。 5.高效方便的矩阵和数组运算 Matlab 语言象 Basic、Fortran 和 C 语言一样规定了矩阵的算术运算符、关系运 算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以毫无 改变地照搬到数组间的运算,有些如算术运算符只要增加“·”就可用于数组间 的运算,另外,它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函 数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时, 显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。在此基础上,高 版本的 Matlab 已逐步扩展到科学及工程计算的其它领域。因此,不久的将来, 它一定能名符其实地成为“万能演算纸式的”科学算法语言。 4

6.方便的绘图功能 Matlab 的绘图是十分方便的,它有一系列绘图函数(命令),例如线性坐标、 对数坐标,半对数坐标及极坐标,均只需调用不同的绘图函数(命令),在图上 标出图题、XY 轴标注,格(栅)绘制也只需调用相应的命令,简单易行。另外, 在调用绘图函数时调整自变量可绘出不变颜色的点、线、复线或多重线。这种为 科学研究着想的设计是通用的编程语言所不及的。总之,Matlab 语言的设计思 想可以说代表了当前计算机高级语言的发展方向。 数字基带传输系统仿真 1.1数字基带传输系统 数字基带传输系统的介绍 在数字传输系统中,其传输的对象通常是二进制数字信号,它可能是来自计算机、电传打字机或其它数字设备的各种数字脉冲,也可能是来自数字电话终端的脉冲编码调制(PCM)信号。这些二进制数字信号的频带范围通常从直流和低频开始,直到某一频率m f ,我们称这种信号为数字基带信号。在某些有线信道中,特别是在传输距离不太远的情况下,数字基带信号可以不经过调制和解调过程在信道中直接传送,这种不使用调制和解调设备而直接传输基带信号的通信系统,我们称它为基带传输系统。而在另外一些信道,特别是无线信道和光信道中,数字基带信号则必须经过调制过程,将信号频谱搬移到高频处才能在信道中传输,相应地,在接收端必须经过解调过程,才能恢复数字基带信号。我们把这种包括了调制和解调过程的传输系统称为数字载波传输系统。数字基带传输系统的模型如图 1-1 所示,它主要包括码型变换器、发送滤波器、信道、接收滤波器、均衡器和取样判决器等部分。 5

图1-1 数字基带传输系统模型 数字 基带传输系统 的输入信号是由终端设备或编码设备产生的二进制脉 冲序列,通常是单极 性的矩形脉冲信号(NRZ 码)。为了使这种信号适合 于信道的传输,一般 要经过码形变换器,把单极性的二进制脉冲变成双极 性脉冲(如 AMI 码或 3 HDB 码)。发送滤波器对码脉冲进行波形变换,以减 小信号在基带 传输系 统中传输时产生的码间串扰。信号在传输过程中,由于 信道特性不理想 及加性噪声的影响,会使接收到的信号波形产生失真 ,为了减小失 真对信 号的影响,接收信号首先进入接收滤波器滤波,然后 再经均衡器对 失真信 号进行校正,最后由取样判决器恢复数字基带脉冲序 列。 目前,虽 然在实际使用的数字通信系统中,基带传输方式不如数字载波传 输方式那样应 用广泛 ,但由于数字基带传输系统是数字通信系统中最基本 的传输方式,而且从 理论上来说,任何一种线性载波传输系统都可以等效 为基带传输系 统,因 此理解数字信号的基带传输过程十分重要。 数字基带信号有二元码和三元码,有归零码和非归零码等,有的具有直流分量,在波形上具有不同的特点,他们有不同的特点,有的低频成份多,有的高频成份多,有的具有直流分量,有的占有带宽等,所有这些在波形处理时会对一些学生产生模糊的概念,针对本科类的学生要求,他们如何理解、辨别、掌握这些信号波形的特点,同时可以让学生在仿真过程中对通信原理的各种概念加深理解。另外,此仿真实验只需在计算机的虚拟实验室即可,不受实验场地、环境的限制。 软件的功能主要有: 1)实现各种常用码型的数字基带信号仿真; 2)能产生随机的数字信号序列,具有普遍性; 3)能绘制直观、清晰、准确、可靠的数字基带 信号仿真图形; 4)要对相应的码型的特点进行相应的描述。 6

图 1-2 仿真结构图 在通信中,数字基带信号有多种码型表示,它们在传输过程中有随机性,为 用让这种波形描述具有普遍性, m 序列伪随机码来作为码型的仿真数字序列。利用 MATLAB 软件仿真出每一种码型,让学生通过仿真软件的使用,加深对码和波形的理解。 1.2 数字基带信号 1.2.1 数字基带信号的要求 不同形式的数字基带信号(又称为码型)具有不同的频谱结构,为适应信道的传输特性及接收端再生、恢复数字基带信号的需要,必须合理地设计数字基带信号,即选择合适的信号码型。适合于在有线信道中传输的数字基带信号形式称为线路传输码型。一般来说,选择数字基带信号码型时,应遵循以下基本原则: (1) 数字基带信号应不含有直流分量,且低频及高频分量也应尽量的少。在基带传输系统中,往往存在着隔直电容及耦合变压器,不利于直流及低频分量的传输。此外,高频分量的衰减随传输距离的增加会快速地增大,另一方面,过多的高频分量还会引起话路之间的串扰,因此希望数字基带信号中的高频分量也要尽量的少。 (2) 数字基带信号中应含有足够大的定时信息分量。基带传输系统在接收端进行取样、判决、再生原始数字基带信号时,必须有取样定时脉冲。一般来说,这种定时脉冲信号是从数字基带信号中直接提取的。这就要求数字基带信号中含有或经过简单处理后含有定时脉冲信号的线谱分量,以便同步电路提取。实际经验告诉我们,所传输的信号中不仅要有定时分量,而且定时分量还必须具有足够大的能量,才能保证同步提取电路稳定可靠的工作。 (3) 基带传输的信号码型应对任何信源具有透明性,即与信源的统计特7

性无关。这一点也是为了便于定时信息的提取而提出的。信源的编码序列中,有时候会出现长时间连“0”的情况,这使接收端在较长的时间段内无信号,因而同步提取电路无法工作。为避免出现这种现象,基带传输码型必须保证在任何情况下都能使序列中“1”和“0”出现的概率基本相同,且不出现长连“1”或“0”的情况。当然,这要通过码型变换过程来实现。码型变换实际上是把数字信息用电脉冲信号重新表示的过程。此外,选择的基带传输信号码型还应有利于提高系统的传输效率;具有较强的抗噪声和码间串扰的能力及自检能力。实际系统中常常根据通信距离和传输方式等不同的要求,选择合适的基带码型。 1.2.2 数字基带信号 对不同的数字基带传输系统,应根据不同的信道特性及系统指标要求,选择不同的数字脉冲波形。原则上可选择任意形状的脉冲作为基带信号波形,如矩形脉冲、三角波、高斯脉冲及升余弦脉冲等。但实际系统常用的数字波形是矩形脉冲,这是由于矩形脉冲易于产生和处理。下面我们就以矩形脉冲为例,介绍常用的几种数字基带信号波形。 。(1).单极性波形(NRZ) 这是一种最简单的二进制数字基带信号波形。这种波形用正(或负)电平和零电平分别表示二进制码元的“1”码和“0”码,也就是用脉冲的有无来表示码元的“1”和“0”,这种波形的特点是脉冲的极性单一,有直流分量,且脉冲之间无空隙,即脉冲的宽度等于码元宽度。故这种脉冲又称为不归零码(NRZ ---NonReturn to Zero)NRZ波形一般用于近距离的电传机之间的信号传输。 (2)双极性波形 在双极性波形中,用正电平和负电平分别表示二进制码元的“1”码和“0”码,这种波形的脉冲之间也无空隙。此外,从信源的统计规律来看,“1”码和“0”码出现的概率相等,所以这种波形无直流分量。同时这种波形具有较强的抗干扰能力。故双极性波形在基带传输系统中应用广泛。 (3)单极性归零波形(RZ) 这种波形的特点是脉冲的宽度(τ )小于码元的宽度(T ),每个电脉冲在小于码元宽度的时间内总要回到零电平,故这种波形又称为归零波(RZ---Return to Zero)。归零波形由于码元间隔明显,因此有利于定时信息的提取。但单极性RZ波形中仍含有直流分量,且由于脉冲变窄,码元能量减小,因而在匹配接收时,输出信噪比较不归零波形的低。 8

(4)双极性归零波形 这种波形是用正电平和负电平分别表示二进制码元的“1”码和“0”码,但每个电脉冲在小于码元宽度的时间内都要回到零电平,这种波形兼有双极性波形和归零波形的特点。 (5) 差分波形(相对码波形) 信息码元与脉冲电平之间的对应关系是固定不变的(绝对的),故称这些波形为绝对码波形,信息码也称为绝对码。所谓差分波形是一种把信息码元“1”和“0”反映在相邻信号码元的相对电平变化上的波形,差分波形中,码元“1”和“0”分别用电平的跳变和不变来表示,即用相邻信号码元的相对电平来表示码元“1”和“0”,故差分波形也称为相对码波形。差分波形也可以看成是差分码序列bn 对应的绝对码波形,差分码bn 与绝对码an之间的关系可用以下的编码方程表示 bnbn1 ⊕an (1.1)式中,⊕为模2和运算符号。 由上式看出,当绝对码an 每出现一个“1”码时,差分码bn电平变化一次;当 an 出现“0”码时,差分码bn 电平与前一码元bn-1 相同。可见, bn 前后码元取值的变化代表了原信码n a 中的“1”和“0”。由式(1.1)可以导出译码方程为 an bn-1⊕bn (1.2) 由上式可看出,译码时只要检查前后码元电平是否有变化就可以判决发送的是“1”码还是“0”码。 (6)多电平脉冲波形(多进制波形) 上述各种波形都是二进制波形,实际上还存在多电平脉冲波形,也称为多进制波形。这种波形的取值不是两值而是多值的。例如,代表四种状态的四电平脉冲波形,每种电平可用两位二进制码元来表示,如00 代表-3E, 代表-E, 代 01 10表E,11 代表3E,这种波形一般在高速数据传输系统中用来压缩码元速率,提高系统的频带利用率。但在相同信号功率的条件下,多进制传输系统的抗干扰性能不如二进制系统。 1.2.3 常用的基带传输码型 前面提到,为满足基带传输系统的特性要求,必须选择合适的传输码型。基带传输系统中常用的线路传输型码主要有:传号交替反转码---AMI 码、三阶高密度双极性码--- 3 HDB码、分相码---Manchester 码、传号反转码---CMI 码以及4B3T 码等。下面我们详细地介绍这些码型。 1、传号交替反转码---AMI 码 ( AMI Alternate Mark Inversion)码又称为平衡对称码。这种码的编码规则是:把码元序列中的“1”码变为极性交替变化的传输码1、-1、1、-1、…,而码元9

序列中的“0”码保持不变。 例如: 码元序列: 1 00 1 1 0 1 0 1 1 1 1 00 AMI码: 1 00-110-101-11-100 由AMI 码的编码规则可以看出,由于1和-1各占一半,因此,这种码中无直流分量,且其低频和高频分量也较少,信号的能量主要集中在2 T f 处,其中Tf 为码元速率。此外,AMI 码编码过程中,将一个二进制符号变成了一个三进制符号,即这种码脉冲有三种电平,因此我们把这种码称为伪三电平码,也称为1B/1T 码型。AMI码除了上述特点外,还有编译码电路简单及便于观察误码情况等优点。但是AMI码有一个重要的缺陷,就是当码元序列中出现长连“0”时,会造成提取定时信号的困难,因而实际系统中常采用AMI 码的改进型 HDB3码。 2、 HDB3 码 HDB3 (High Density Bipolar 3)是三阶高密度双极性码,它是为了克服传输波形中出现长连“0”码情况而设计的AMI 码的改进型。 HDB3 码的编码规则是:1把码元序列进行AMI 编码,然后去检查AMI 码中连0 的个数,如果没有四个以上(包括四个)连0 串时,则这时的AMI 码就是3 HDB 码。2如果出现四个以上连0 串时,则将每4 个连0 小段的第4 个0变成与其前一个非0 码(1 或-1)相同的码。显然,这个码破坏了“极性交替反转”的规则,因而称其为破坏码,用符号V 表示(即1 记为V, 记为-V) -1 。3为了使附加V 码后的序列中仍不含直流分量,必须保证相邻的V 码极性交替。这一点,当相邻的V 码之间有奇数个非0 码时,是能得到保证的;但当相邻的V 码之间有偶数个非0 码时,则得不到保证。这时再将该连0 小段中的第1 个0 变成B 或-B,B 的极性与其前一个非0 码相反,并让后面的非零码从V 码后开始再极性交替变化。 例如: 码元序列: 1 0000 1 0 1 0 0 0 0 1 000 0 1 1 AMI 码: 1 0000 -1 0 1 0 0 0 0 –1 000 0 1–1 HDB3 码: 1 000V -1 0 1 -B00-V 1 000V -1 1 上例中,第1个V码和第2个V码之间,有2个非0 码(偶数),故将第2个4 连0小段中的第1个0变成-B;第2个V码和第3个V码之间,有10

1个非0码(奇数),不需变化。最后可看出, HDB3 码中,V码与其前一个非0码(1 或-1)极性相同,起破坏作用;相邻的V码极性交替;除V码外,包括B码在内的所有非0码极性交替。 虽然HDB3 码的编码规则比较复杂,但译码却比较简单。从编码过程中可以看出,每一个V码总是与其前一个非0码(包括B码在内)同极性,因此从收到的码序列中可以很容易地找到破坏点V码,于是可断定V码及其前3个码都为0码,再将所有的-1变为1后,便可恢复原始信息代码。 HDB3码的特点是明显的,它既保留AMI码无直流分量,便于直接传输的优点,又克服了长连0串(连0的个数最多3个)的出现,HDB3 码的频谱中既消除了直流和甚低频分量,又消除了方波中的高频分量,非常适合基带传输系统的特性要求。因此,HDB3码是目前实际系统中应用最广泛的码型。虽然HDB3码比AMI 码的性能更好,但它仍属于1B/1T 码型。 (3)曼彻斯特Manchester码 曼彻斯特码又称数字双相码或分相码,曼彻斯特码用一个周期的方波来代表码元“1”,而用它的反相波形来代表码元“0”。这种码在每个码元的中心部位都发生电平跳变,因此有利于定时同步信号的提取,而且定时分量的大小不受信源统计特性的影响。曼彻斯特码中,由于正负脉冲各占一半,因此无直流分量,但这种码占用的频带增加了一倍。曼彻斯特码适合在较短距离的同轴电缆信道上传输。 (4)CMI 码 CMI 码称为传号反转码。 在CMI 码中,“1”码(传号)交替地用正、负电平脉冲来表示,而“0”码则用固定相位的一个周期方波表示,CMI 码和曼彻斯特码相似,不含有直流分量,且易于提取同步信号。CMI 码的另一个特点是具有一定的误码检测能力。这是因为,CMI 码中的“1”码相当于用交替的“00”和“11”两位码组表示,而“0”码则固定地用“01” 码组表示。正常情况下,序列中不会出现“10”码组,且“00”和“11”码组连续出现的情况也不会发生,这种相关性可以用来检测因干扰而产生的部分错码。根据原CCITT 的建议,CMI码可用作脉冲编码调制四次群的接口码型以及速率低于8448 kb / s的光纤数字传输系统中的线路传输码型。此外,CMI 码和曼彻斯特码一样都是将一位二进制码用一组两位二进11

制码表示,因此称其为1B2B 码。 (5)4 B/3T 码4B/3T 码是1B/1T 码的改进型 它把4 个二进制码元变换为3 个三进制码元。显然,在相同信息速率的条件下,4B/3T 码的码元传输速率要比1B/1T 码的低,因而提高了系统的传输效率。 4B/3T 码的变换过程中需要同步信号,变换电路比较复杂,故一般较少采用。 1.3实验原理 1.3.1数字通信系统模型 信源 信 源 编码器 信道 编码器 数字 调制器 数字信源 噪声 信道 信宿 信 源 译码器 数字信宿 数字通信系统模型 1.3.2数字基带传输系统模型 信道 译码器 数字 解调器 编码信道 H(?)?GT(?)C(?)GR(?) ? r(t)?angR(t?nTs)?nR(t) n??? 1? gR(t)?H(?)ejwtd?? 2??? ?12

1.4实验内容 1.4.1 余弦滚降基带传输系统 升余弦滚降传输特性H(ω)可表示为 H(?)?H0(?)?H1(?) H(ω)是对截止频率ωb的理想低通特性H0(ω)按H1(ω)的滚降特性进行“圆滑”得到的,H1(ω)对于ωb具有奇对称的幅度特性,其上、下截止角频率分别为ωb+ω1、ωb-ω1。它的选取可根据需要选择,升余弦滚降传输特性H1(ω)采用余弦函数, 此时H(ω)为 a称为滚降系数。 余弦滚降系统基于matlab仿真源程序如下: % 数字基带信号传输 码间串扰 升余弦滚降系统的频谱及其时域波形 % 文件名 syx_gunjiang.m Ts=1; N=17; dt=Ts/N; df=1.0/(20.0*Ts); t=-10*Ts:dt:10*Ts; f=-2/Ts:df:2/Ts; a=[0,0.5,1]; for n=1:length(a) for k=1:length(f) if abs(f(k))>0.5*(1+a(n))/Ts Xf(n,k)=0; elseif abs(f(k))<0.5*(1-a(n))/Ts Xf(n,k)=Ts; else Xf(n,k)=0.5*Ts*(1+cos(pi*Ts/(a(n)+eps)*(abs(f(k))-0.5*(1-a(n))/Ts))); end; end; xt(n,:)=sinc(t/Ts).*(cos(a(n)*pi*t/Ts))./(1-4*a(n)^2*t.^2/Ts^2+eps); end 13

subplot(211); plot(f,Xf); axis([-1 1 0 1.2]); xlabel('f/Ts'); ylabel('升余弦滚降系统的频谱'); legend('α=0','α=0.5','α=1'); subplot(212); plot(t,xt); axis([-10 10 -0.5 1.1]); xlabel('t'); ylabel('升余弦滚降系统的时域波形'); legend('α=0','α=0.5','α=1'); 程序运行结果如下图所示: 在上述运行结果中我们可以看出,频域波形在滚降段中心频率处呈奇对称特性,满足奈奎斯特第一准则。图可证明,滚降系数越大,超出奈奎斯特带宽的扩展量越大,要求带宽增大。 时域波形中,滚降系数越大,波形的拖尾衰减越快,对位定时精度要求越低。 1.4.2 眼图 眼图是指利用实验的方法估计和改善(通过调整)传输系统性能时在示波器上观察到的一种图形。观察眼图的方法是:用一个示波器跨接在接收滤波器的输出端,然后调整示波器扫描周期,使示波器水平扫描周期与接收码元的周14

期同步,这时示波器屏幕上看到的图形像人的眼睛,故称 为 “眼图”。从“眼图”上可 以观察出码间串扰和噪声的影响,从而估计系统优劣程度。另外也可以用此图形对接收滤波器的特性加以调整,以减小码间串扰和改善系统的传输性能。眼图 的 “眼睛” 张开的大小反映着码间串扰的强弱。 “眼睛”张的 越大,且眼图越端正,表示码间串扰越小;反之表示码间串扰越大。 当存在噪声时,噪声将叠加在信号上,观察到的眼图的线迹会变得模糊不清。若同时存在码间串扰 , “眼睛”将 张开得更小。与无码间串扰时的眼图相比,原来清晰端正的细线迹,变成了比较模糊的带状线,而且不很端正。噪声越大,线迹越宽,越模糊;码间串扰越大,眼图越不端正。眼图对于展示数字信号传输系统的性能提供了很多有用的信息:可以从中看出码间串扰的大小和噪声的强弱,有助于直观地了解码间串扰和噪声的影响,评价一个基带系统的性能优劣;可以指示接收滤波器的调整,以减小码间串扰。 ( 1 )最佳抽样时刻应 在 “眼睛” 张开最大的时刻。 ( 2 )对定时误差的灵敏度可由眼图斜边的斜率决定。斜率越大,对定时误差就越灵敏。 ( 3 )在抽样时刻上,眼图上下两分支阴影区的垂直高度,表示最大信号畸变。 ( 4 )眼图中央的横轴位置应对应判决门限电平。 ( 5 )在抽样时刻上,上下两分支离门限最近的一根线迹至门限的距离表示各相应电平的噪声容限,噪声瞬时值超过它就可能发生错误判决。 ( 6 )对于利用信号过零点取平均来得到定时信息的接收系统,眼图倾斜分支与横轴相交的区域的大小,表示零点位置的变动范围,这个变动范围的大小对提取定时信息有重要的影响。 升余弦滚降系统眼图程序段如下: % 数字基带信号波形及其眼图 % 文件名:eye.m Ts=1; N=15; eye_num=6; a=1; N_data=1000; dt=Ts/N; t=-3*Ts:dt:3*Ts; % 产生双极性数字信号 d=sign(randn(1,N_data)); dd=sigexpand(d,N); % % 基带系统冲击响应(升余弦) ht=sinc(t/Ts).*(cos(a*pi*t/Ts))./(1-4*a^2*t.^2/Ts^2+eps); st=conv(dd,ht); tt=-3*Ts:dt:(N_data+3)*N*dt-dt; subplot(211) plot(tt,st); 15

axis([0 20 -1.2 1.2]); xlabel('t/Ts'); ylabel('基带信号'); subplot(212) % 画眼图 ss=zeros(1,eye_num*N); ttt=0:dt:eye_num*N*dt-dt; for k=3:50 ss=st(k*N+1:(k+eye_num)*N); drawnow; plot(ttt,ss); hold on; end; xlabel('t/Ts'); ylabel('基带信号眼图'); % 将输入的序列扩成间隔为N-1个0的序列 function[out]=sigexpand(d,M) N=length(d); out=zeros(M,N); out(1,:)=d; out=reshape(out,1,M*N); 程序运行后仿真结果如下: 如图,波形幅度没有衰减,无码间串扰。可通过抽样判决后还原接收信号。 若干段数字基带波形叠加后形成眼图形状。眼图“眼睛”张开越大,眼图越端正,表示码间串扰越小。上图为理想状态下的眼图,不存在码间串扰。 16

1.5总结 本次实验主要是利用MATLAB软件来进行数字基带通信系统的仿真。在整个实验过程中,存在着以下几个问题。 1、刚开始对系统的整体构成不是很熟悉,思维比较模糊,后来和其他小组同学进行了交流,明白了整个系统的构成。知道了程序设计的步骤和流程。 2、由于是对于Matlab软件使用不熟练,所以没有过多采用老师建议的simulink仿真,这个在下次实验中我们会继续研究和努力。 3、鉴于我们是一个大程序的书写,在运行中总会存在问题,是结果运行不出来。我们刚开始是采用分部运行,逐次更改错误,后来经过同学们共同的努力,我们学会了使用断点来查找错误和单步运行程序,这对我们以后的实验有很大的帮助。 4、我们对整个实验的结果在仿真前没有大体的概念,导致我们面对仿真结果也难以判断正误。由于知识掌握的不牢固,使我们在编程过程中存在了理解的偏差。今后我们要扎实基础,对于系统的过程了如指掌。遇到不会的,先查书自己解决,实在不行,再互相讨论。 前言 数字信号的传输方式分为基带传输和带通传输,在实际应用中,大多数信道具有带 通特性而不能直接传输基带信号。为了使数字信号在有限带宽的高频信道中传输,必须对数字信号进行载波调制,以使信号与信道的特性相匹配。 这种用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。如同传输模拟信号时一样,传输数字信号时也有三种基本的调制方式:幅移键控(ASK)、频移键控(FSK)和相移键控(PSK)。它们分别对应于用载波(正弦波)的幅度、频率和相位来传递数字基带信号,可以看成是模拟线性调制和角度调制的特殊情况。理论上,数字调制与模拟调制在本质上没有什么不同,它们都是属正弦波调制。但是,数字调制是调制信号为数字型的正弦波调制,而模拟调制则是调制信号为连续型的正弦波调制。在数字通信的三种调制方式(ASK、FSK、PSK)中,就频带利用率和抗噪声性能(或功率利用率)两个方面来看,一般而言,都是PSK系统最佳。所以PSK在中、高速数据传输中得到了广泛的应用。 数字调制系统仿真 2.1二进制频移键控(2FSK) 2FSK信号的产生: 2FSK是利用数字基带信号控制在波的频率来传送信息。例如,1码用频率f1来传输,0码用频率f2来传输,而其振幅和初始相位不变。故其表示式为 Acos(?t??)发送\1\时 ?2FSK(t)?Acos(?12t??12) 发送\0\时 ?17

πf1和?2?2πf2为两个不同式中,假设码元的初始相位分别为?1和?2;?1?2的码元的角频率;幅度为A为一常数,表示码元的包络为矩形脉冲。 2FSK信号的产生方法有两种: (1)模拟法,即用数字基带信号作为调制信号进行调频。如图1-1(a)所示。 (2)键控法,用数字基带信号g(t)及其反g(t)相分别控制两个开关门电路,以此对两个载波发生器进行选通。如图1-1(b)所示。 这两种方法产生的2FSK信号的波形基本相同,只有一点差异,即由调频器产生的2FSK信号在相邻码元之间的相位是连续的,而键控法产生的2FSK信号,则分别有两个独立的频率源产生两个不同频率的信号,故相邻码元的相位不一定是连续的。 (a) (b) 2FSK信号产生原理图 由键控法产生原理可知,一位相位离散的2FSK信号可看成不同频率交替发送的两个2ASK信号之和,即 ?2FSK(t)?g(t)cos(?1t??1)?g(t)·cos(?2t??2) ?[?ang(t?nTs)]cos(?1t??1)?[?ang(t?nTs)]cos(?2t??2)n???n????? 其中g(t)是脉宽为Ts的矩形脉冲表示的NRZ数字基带信号。 an? ?0,概率P1,概率1?P an??0,概率1?P1,概率P 其中,an为an的反码,即若an?1,则an?0;若an?0,则an?1。 18

2、2FSK信号的频谱特性: 由于相位离散的2FSK信号可看成是两个2ASK信号之和,所以,这里可以直接应用2ASK信号的频谱分析结果,比较方便,即 S2FSK(f)?S2ASK1(f)?S2ASK2(f)2222S ?T16[|Sa?(f?f1)TS|?|Sa?(f?f1)TS|?|Sa?(f?f2)TS|?|Sa?(f?f2)TS|]1?16[?(f?f1)??(f?f1)??(f?f2)??(f?f2)] 2FSK信号带宽为 B2FSK?|f1?f2|?2fs?|f1?f2|?2Rs 式中,Rs?fs是基带信号的带宽。 2FSK解调原理: 仿真是基于非相干解调进行的,即不要求载波相位知识的解调和检测方法。 其非相干检测解调框图如下 M信号非相干检测解调框图 当k=m时检测器采样值为: 当k≠m时在样本和中的信号分量将是0,只要相继频率之间的频率间隔19

是,就与相移值无关了,于是其余相关器的输出仅有噪声组成。 其中噪声样本{}和{}都是零均值,具有相等的方差 对于平方律检测器而言,即先计算平方包络 并取其最大值信号。 二进制FSK系统的理论误码率与信噪比的关系给出如下 2FSK调制与解调基于MATLAB仿真: 2FSK基于MATLAB的程序 2FSK基于MATLAB的程序代码 fs=2000; %采样频率 dt=1/fs; f1=20; f2=120; %两个信号的频率 a=round(rand(1,10)); %随机信号 g1=a g2=~a; %信号反转,和g1反向 g11=(ones(1,2000))'*g1; %抽样 g1a=g11(:)'; g21=(ones(1,2000))'*g2; g2a=g21(:)'; t=0:dt:10-dt; t1=length(t); fsk1=g1a.*cos(2*pi*f1.*t); fsk2=g2a.*cos(2*pi*f2.*t); fsk=fsk1+fsk2; %产生的信号 no=0.01*randn(1,t1); %噪声 sn=fsk+no; subplot(311); 20

plot(t,no); %噪声波形 title('噪声波形') ylabel('幅度') subplot(312); plot(t,fsk); title('产生的波形') ylabel('幅度') subplot(313); plot(t,sn); title('将要通过滤波器的波形') ylabel('幅度的大小') xlabel('t') figure(2) %FSK解调 b1=fir1(101,[10/800 20/800]); b2=fir1(101,[90/800 110/800]); %设置带通参数 H1=filter(b1,1,sn); H2=filter(b2,1,sn); %经过带通滤波器后的信号 subplot(211); plot(t,H1); title('经过带通滤波器f1后的波形') ylabel('幅度') subplot(212); plot(t,H2); title('经过带通滤波器f2后的波形') ylabel('幅度') xlabel('t') sw1=H1.*H1; sw2=H2.*H2; %经过相乘器 figure(3) subplot(211); plot(t,sw1); title('经过相乘器h1后的波形') ylabel('幅度') subplot(212); plot(t,sw2); title('经过相乘器h2后的波形') ylabel('?幅度') xlabel('t') bn=fir1(101,[2/800 ,10/800]); %经过低通滤波器 figure(4) st1=filter(bn,1,sw1); st2=filter(bn,1,sw2); subplot(211); plot(t,st1); 21

title('经过低通滤波器sw1后的波形') ylabel('幅度') subplot(212); plot(t,st2); title('经过低通滤波器sw2后的波形') ylabel('幅度') xlabel('t') %判决 figure(5) st=st1+st2; subplot(211); plot(t,st); title('经过抽样判决器后的波形') ylabel('幅度') subplot(212); plot(t,sn); title('原始的波形') ylabel('幅度') xlabel('t') for i=1:length(t) if(st1(i)>=st2(i)) st(i)=0; else st(i)=st2(i); end end 仿真结果1 仿真结果2 仿真结果3 22

仿真结果4 仿真结果5 2.2二进制振幅键控(2ASK) 数字幅度调制又称幅度键控(ASK),二进制幅度键控记作2ASK。2ASK是利用代表数字信息“0”或“1”的基带矩形脉冲去键控一个连续的载波,使载波时断时续地输出。有载波输出时表示发送“1”,无载波输出时表示发送“0”。借助于第3章幅度调制的原理,2ASK信号可表示为 式中,为载波角频率, (8-1) 为单极性NRZ矩形脉冲序列 (8-2) 为其中,二进制数字 是持续时间为、高度为1的矩形脉冲,常称为门函数;23

(8-3) 2ASK信号的产生方法(调制方法)有两种,如图8-1所示。图(a)是一般的模拟幅度调制方法,不过这里的控方法,这里的开关电路受由式(8-2)规定;图(b)是一种键及的波形示例。控制。图(c)给出了二进制幅度键控信号,由于一个信号状态始终为0,相当于处于断开状态,故又常称为通断键控信号(OOK信号)。 图8-1 2ASK产生原理框图和示意波形 2ASK信号解调的常用方法主要有两种:包络检波法和相干检测法。 包络检波法的原理方框图如图8-2所示。带通滤波器(BPF)恰好使2ASK信号完整地通过,经包络检测后,输出其包络。低通滤波器(LPF)的作用是滤除高频杂波,使基带信号(包络)通过。抽样判决器包括抽样、判决及码元形成器。定时抽样脉冲(位同步信号)是很窄的脉冲,通常位于每个码元的中央位置,其重复周期等于码元的宽度。不计噪声影响时,带通滤波器输出为2ASK信号,即决后将码元再生,即可恢复出数字序列,包络检波器输出为。 。经抽样、判 图8-2 2ASK的包络(非相干)解调原理框图 相干检测法原理方框图如图8-3所示。相干检测就是同步解调,要求接收机产生一个与发送载波同频同相的本地载波信号,称其为同步载波或相干载波。利用此载波与收到的已调信号相乘,输出为 24

图8-3 2ASK的相干解调原理框图 经低通滤波滤除第二项高频分量后,即可输出信号。低通滤波器的截止频率与基带数字信号的最高频率相等。由于噪声影响及传输特性的不理想,低通滤波器输出波形有失真,经抽样判决、整形后再生数字基带脉冲。 虽然2ASK信号中确实存在着载波分量,原则上可以通过窄带滤波器或锁相环来提取同步载波,但这会给接收设备增加复杂性。因此,实际中很少采用相干解调法来解调2ASK信号。 2ASK调制与解调基于MATLAB仿真: 2ASK基于MATLAB的程序代码: function ask1() sim('dm'); t1=ScopeData5(:,1); y1=ScopeData5(:,2); t2=ScopeData2(:,1); y2=ScopeData2(:,2); t3=ScopeData(:,1); y3=ScopeData(:,2); t5=ScopeData1(:,1); y5=ScopeData1(:,2); t6=ScopeData7(:,1); y6=ScopeData7(:,2); t7=ScopeData3(:,1); y7=ScopeData3(:,2); %引入示波器的数据 subplot(3,2,5); plot(t1,y1),grid; xlabel('滤波后的波形') subplot(3,2,4); plot(t2,y2),grid; xlabel('相干解调后的波形') subplot(3,2,1); stairs(t3,y3),axis([0 20 -0.5 2.5]),grid; title(' ASK调制与解调各环节波形') 25

xlabel('源信号') subplot(3,2,2); plot(t5,y5),grid; xlabel('调制后的波形') subplot(3,2,3); plot(t6,y6),grid; xlabel('经过高斯信道后的波形') subplot(3,2,6); stairs(t7,y7),axis([0 20 -0.5 2.5]),grid; xlabel('抽样判决后的波形') figure(2) n1=1024; f1=(-n1/2:1:n1/2-1); s=fft(y3,n1); subplot(3,2,1); plot(f1,abs(fftshift(s))),%axis([-30 30 0 7]) xlabel('源信号频谱') n2=1024; f2=(-n2/2:1:n2/2-1); s=fft(y5,n2); subplot(3,2,2); plot(f2,abs(fftshift(s))),%axis([-400 400 0 300]) xlabel('调制后的频谱') s=fft(y2,n2); subplot(3,2,3); plot(f2,abs(fftshift(s))),%axis([-400 400 0 300]) xlabel('相干解调后的频谱') s=fft(y1,n2); subplot(3,2,4); plot(f2,abs(fftshift(s))),%axis([-400 400 0 300]) xlabel('滤波后的频谱') s=fft(y7,n2); subplot(3,2,5); plot(f2,abs(fftshift(s))),%axis([-400 400 0 300]) xlabel('抽样判决后的频谱') 26

仿真结果: 2.3二进制相移键控(2PSK) 2PSK原理 2PSK的一般原理及实现方法 绝对相移是利用载波的相位(指初相)直接表示数字信号的相移方式。二进制相移键控中,通常用相位0和来分别表示“0”或“1”。2PSK已调信号的时域表达式为 (8-20) 这里,与2ASK及2FSK时不同,为双极性数字基带信号,即 (8-21) 式中,是高度为1,宽度为的门函数; (8-22) 因此,在某一个码元持续时间内观察时,有 ,当码元宽度所示 为载波周期或 (8-23) 的整数倍时,2PSK信号的典型波形如图8-1127

图8-11 2PSK信号的典型波形 2PSK信号的调制方框图如图8-12示。图(a)是产生2PSK信号的模拟调制法框图;图(b)是产生2PSK信号的键控法框图。 图8-12 2PSK调制器框图 就模拟调制法而言,与产生2ASK信号的方法比较,只是对要求不同,因此2PSK信号可以看作是双极性基带信号作用下的DSB调幅信号。而就键控法来说,用数字基带信号时控制开关电路,选择不同相位的载波输出,这为单极性NRZ或双极性NRZ脉冲序列信号均可。 2PSK信号属于DSB信号,它的解调,不再能采用包络检测的方法,只能进行相干解调,其方框图如图8-13。工作原理简要分析如下。 图8-13 2PSK信号接收系统方框图 不考虑噪声时,带通滤波器输出可表示为 式中为2PSK信号某一码元的初相。 (8-24) 时,时,代表数字“0”;代表数字“1”。与同步载波相乘后,输出为 28

(8-25) 经低通滤波器滤除高频分量,得解调器输出为 (8-26) 根据发端产生2PSK信号时定,以及收端与(0或)代表数字信息(“1”或“0”)的规的关系的特性,抽样判决器的判决准则为 其中为在抽样时刻的值。 (8-28) 2PSK接收系统各点波形如图8-14所示。 图8-14 2PSK解调各点波形 可见,2PSK信号相干解调的过程实际上是输入已调信号与本地载波信号进行极性比较的过程,故常称为极性比较法解调。 由于2PSK信号实际上是以一个固定初相的末调载波为参考的,因此,解调时必须有与此同频同相的同步载波。如果同步载波的相位发生变化,如0相位变为相位或相位变为0相位,则恢复的数字信息就会发生“0”变“1”或“1”变“0”,从而造成错误的恢复。这种因为本地参考载波倒相,而在接收端发生错误恢复的现象称为“倒”现象或“反向工作”现象。绝对移相的主要缺点是容易产生相位模糊,造成反向工作。 2PSK基于MATLAB的仿真: 2PSK基于MATLAB的程序代码: 29

clear all; close all; fs=8e5;%抽样频率 fm=20e3;%基带频率 n=2*(6*fs/fm); final=(1/fs)*(n-1); fc=2e5; % 载波频率 t=0:1/fs:(final); Fn=fs/2;%耐奎斯特频率 %用正弦波产生方波 twopi_fc_t=2*pi*fm*t; A=1; phi=0; x = A * cos(twopi_fc_t + phi); % 方波 am=1; x(x>0)=am; x(x<0)=-1; figure(1) subplot(321); plot(t,x); axis([0 2e-4 -2 2]); title('基带信号'); grid on car=sin(2*pi*fc*t);%载波 ask=x.*car;%载波调制 subplot(322); plot(t,ask); axis([0 200e-6 -2 2]); title('PSK信号'); grid on; vn=0.1; noise=vn*(randn(size(t)));%产生噪音 subplot(323); plot(t,noise); grid on; title('噪音信号'); axis([0 .2e-3 -1 1]); askn=(ask+noise);%调制后加噪 subplot(324); plot(t,askn); axis([0 200e-6 -2 2]); title('加噪后信号'); grid on; 30

%带通滤波 fBW=40e3; f=[0:3e3:4e5]; w=2*pi*f/fs; z=exp(w*j); BW=2*pi*fBW/fs; a=.8547;%BW=2(1-a)/sqrt(a) p=(j^2*a^2); gain=.135; Hz=gain*(z+1).*(z-1)./(z.^2-(p)); subplot(325); plot(f,abs(Hz)); title('带通滤波器'); grid on; Hz(Hz==0)=10^(8);%avoid log(0) subplot(326); plot(f,20*log10(abs(Hz))); grid on; title('Receiver -3dB Filter Response'); axis([1e5 3e5 -3 1]); %滤波器系数 a=[1 0 0.7305];%[1 0 p] b=[0.135 0 -0.135];%gain*[1 0 -1] faskn=filter(b,a,askn); figure(2) subplot(321); plot(t,faskn); axis([0 100e-6 -2 2]); title('通过带通滤波后输出'); grid on; cm=faskn.*car;%解调 subplot(322); plot(t,cm); axis([0 100e-6 -2 2]); grid on; title('通过相乘器后输出'); %低通滤波器 p=0.72; gain1=0.14;%gain=(1-p)/2 Hz1=gain1*(z+1)./(z-(p)); subplot(323); Hz1(Hz1==0)=10^(-8);%avoid log(0) plot(f,20*log10(abs(Hz1))); grid on; 31

title('LPF -3dB response'); axis([0 5e4 -3 1]); %滤波器系数 a1=[1 -0.72];%(z-(p)) b1=[0.14 0.14];%gain*[1 1] so=filter(b1,a1,cm); so=so*10;-d gain so=so-mean(so);%removes DC component subplot(324); plot(t,so); axis([0 8e-4 -3.5 3.5]); title('通过低通滤波器后输出'); grid on; %Comparator High=2.5; Low=-2.5; vt=0;%设立比较标准 error=0; len1=length(so); for ii=1:len1 if so(ii) >= vt Vs(ii)=High; else Vs(ii)=Low; end end Vo=Vs; subplot(325); plot (t,Vo), title('解调后输出信号'), axis([0 2e-4 -5 5]) grid on; xlabel('时间 (s)'), ylabel('幅度(V)') 仿真结果: 32

2.4四进制相移键控(4PSK) 4PSK信号的产生与解调 在进制数字相位调制中,四进制绝对移相键控(4PSK,又称QPSK)和四进制差分相位键控(4DPSK,又称QDPSK)用的最为广泛。下面着重介绍多进制数字相位调制的这两种形式。 4PSK利用载波的四种不同相位来表征数字信息。由于每一种载波相位代表两个比特信息,故每个四进制码元又被称为双比特码元,习惯上把双比特的前一位用代表,后一位用代表。 (1)4PSK信号的产生 多相制信号常用的产生方法有:直接调相法及相位选择法。 1)相位选择法 由式(8-54)可以看出,在一个码元持续时间内,4PSK信号为载波四个相位中的某一个。因此,可以用相位选择法产生4PSK信号,其原理如图8-27所示。图中,四相载波发生器产生4PSK信号所需的四种不同相位的载波。输入的二进制数码经串/并变换器输出双比特码元。按照输入的双比特码元的不同,逻辑选相电路输出相应相位的载波。例如,B方式情况下,双比特码元为11时,输出相位为45?的载波;双比特码元的载波等。 为01时,输出相位为135? 图8-27 相位选择法产生4PSK信号(B方式)方框图 图中产生的是B方式的4PSK信号。要想形成A方式的4PSK信号,只需调整四相载波发生器输出的载波相位即可。 2)直接调相法 由式(8-56)可以看出,4PSK信号也可以采用正交调制的方式产生。B方式4PSK时的原理方框图如图8-28(a)所示。它可以看成是由两个载波正交的2PSK调制器构成,分别形成图8-28(b)中的虚线矢量,再经加法器合33

成后,得图(b)中实线矢量图。显然其为B方式4PSK相位配置情况。 图8-28 直接调相法产生4PSK信号方框图 若要产生4PSK的A方式波形,只需适当改变振荡载波相位就可实现。 (2)4PSK信号的解调 由于4PSK信号可以看作是两个载波正交的2PSK信号的合成,因此,对4PSK信号的解调可以采用与2PSK信号类似的解调方法进行。图8-29是B方式4PSK信号相干解调器的组成方框图。图中两个相互正交的相干载波分别检测出两个分量和,然后,经并/串变换器还原成二进制双比特串行数字信号,从而实现二进制信息恢复。此法也称为极性比较法。 图8-29 4PSK信号的相干解调 若解调4PSK信号(A方式),只需适当改变相移网络。 在2PSK信号相干解调过程中会产生“倒”即“180°相位模糊”现象。同样,对于4PSK信号相干解调也会产生相位模糊问题,并且是0°、90°、180°和270°四个相位模糊。 4PSK基于MATLAB的仿真 % 调相法 clear all close all 34

t=[-1:0.01:7-0.01]; tt=length(t); x1=ones(1,800); for i=1:tt if (t(i)>=-1 & t(i)<=1) | (t(i)>=5& t(i)<=7); x1(i)=1; else x1(i)=-1; end end t1=[0:0.01:8-0.01]; t2=0:0.01:7-0.01; t3=-1:0.01:7.1-0.01; t4=0:0.01:8.1-0.01; tt1=length(t1); x2=ones(1,800); for i=1:tt1 if (t1(i)>=0 & t1(i)<=2) | (t1(i)>=4& t1(i)<=8); x2(i)=1; else x2(i)=-1; end end f=0:0.1:1; xrc=0.5+0.5*cos(pi*f); y1=conv(x1,xrc)/5.5; y2=conv(x2,xrc)/5.5; n0=randn(size(t2)); f1=1; i=x1.*cos(2*pi*f1*t); q=x2.*sin(2*pi*f1*t1); I=i(101:800); Q=q(1:700); QPSK=sqrt(1/2).*I+sqrt(1/2).*Q; QPSK_n=(sqrt(1/2).*I+sqrt(1/2).*Q)+n0; n1=randn(size(t2)); 35

i_rc=y1.*cos(2*pi*f1*t3); q_rc=y2.*sin(2*pi*f1*t4); I_rc=i_rc(101:800); Q_rc=q_rc(1:700); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); QPSK_rc_n1=QPSK_rc+n1; figure(1) subplot(4,1,1);plot(t3,i_rc);axis([-1 8 -1 1]);ylabel('a序列'); subplot(4,1,2);plot(t4,q_rc);axis([-1 8 -1 1]);ylabel('b序列'); subplot(4,1,3);plot(t2,QPSK_rc);axis([-1 8 -1 1]);ylabel('合成序列'); subplot(4,1,4);plot(t2,QPSK_rc_n1);axis([-1 8 -1 1]);ylabel('加入噪声') ; 仿真结果1: data_I = -2*bit_I+1; data_Q = -2*bit_Q+1; data_I1=repmat(data_I',20,1); data_Q1=repmat(data_Q',20,1); for i=1:1e4 data_I2(i)=data_I1(i); data_Q2(i)=data_Q1(i); end; f=0:0.1:1; 36

xrc=0.5+0.5*cos(pi*f); data_I2_rc=conv(data_I2,xrc)/5.5; data_Q2_rc=conv(data_Q2,xrc)/5.5; f1=1; t1=0:0.1:1e3+0.9; n0=rand(size(t1)); I_rc=data_I2_rc.*cos(2*pi*f1*t1); Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); QPSK_rc_n0=QPSK_rc+n0; % 解调 I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1); Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1); % 低通滤波 I_recover=conv(I_demo,xrc); Q_recover=conv(Q_demo,xrc); I=I_recover(11:10010); Q=Q_recover(11:10010); t2=0:0.05:1e3-0.05; t3=0:0.1:1e3-0.1; % 抽样判决 data_recover=[]; for i=1:20:10000 data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)]; end; bit_recover=[]; for i=1:20:20000 if sum(data_recover(i:i+19))>0 data_recover_a(i:i+19)=1; bit_recover=[bit_recover 1]; else data_recover_a(i:i+19)=-1; bit_recover=[bit_recover -1]; end end 37

error=0; dd = -2*bit_in+1; ddd=[dd']; ddd1=repmat(ddd,20,1); for i=1:2e4 ddd2(i)=ddd1(i); end for i=1:1e3 if bit_recover(i)~=ddd(i) error=error+1; end end p=error/1000; figure(1) subplot(2,1,1);plot(t2,ddd2);axis([0 100 -2 2]);title('原序列'); subplot(2,1,2);plot(t2,data_recover_a);axis([0 100 -2 2]);title('解调后序列'); 仿真结果2: % 设定 T=1, 不加噪声 clear all close all % 调制 bit_in = randint(1e3, 1, [0 1]); 38

bit_I = bit_in(1:2:1e3); bit_Q = bit_in(2:2:1e3); data_I = -2*bit_I+1; data_Q = -2*bit_Q+1; data_I1=repmat(data_I',20,1); data_Q1=repmat(data_Q',20,1); for i=1:1e4 data_I2(i)=data_I1(i); data_Q2(i)=data_Q1(i); end; t=0:0.1:1e3-0.1; f=0:0.1:1; xrc=0.5+0.5*cos(pi*f); data_I2_rc=conv(data_I2,xrc)/5.5; data_Q2_rc=conv(data_Q2,xrc)/5.5; f1=1; t1=0:0.1:1e3+0.9; I_rc=data_I2_rc.*cos(2*pi*f1*t1); Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); % 解调 I_demo=QPSK_rc.*cos(2*pi*f1*t1); Q_demo=QPSK_rc.*sin(2*pi*f1*t1); I_recover=conv(I_demo,xrc); Q_recover=conv(Q_demo,xrc); I=I_recover(11:10010); Q=Q_recover(11:10010); t2=0:0.05:1e3-0.05; t3=0:0.1:1e3-0.1; data_recover=[]; for i=1:20:10000 data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)]; end; ddd = -2*bit_in+1; ddd1=repmat(ddd',10,1); for i=1:1e4 ddd2(i)=ddd1(i); end figure(1) subplot(4,1,1);plot(t3,I);axis([0 20 -6 6]); 39

subplot(4,1,2);plot(t3,Q);axis([0 20 -6 6]); subplot(4,1,3);plot(t2,data_recover);axis([0 20 -6 6]); subplot(4,1,4);plot(t,ddd2);axis([0 20 -6 6]); % QPSK误码率分析 SNRindB1=0:2:10; SNRindB2=0:0.1:10; for i=1:length(SNRindB1) [pb,ps]=cm_sm32(SNRindB1(i)); smld_bit_err_prb(i)=pb; smld_symbol_err_prb(i)=ps; end; for i=1:length(SNRindB2) SNR=exp(SNRindB2(i)*log(10)/10); theo_err_prb(i)=Qfunct(sqrt(2*SNR)); end; title('QPSK误码率分析'); semilogy(SNRindB1,smld_bit_err_prb,'*'); axis([0 10 10e-8 1]); hold on; % semilogy(SNRindB1,smld_symbol_err_prb,'o'); 仿真结果3: % semilogy(SNRindB1,smld_symbol_err_prb,'o'); semilogy(SNRindB2,theo_err_prb); legend('仿真比特误码率','理论比特误码率'); hold off; function[y]=Qfunct(x) y=(1/2)*erfc(x/sqrt(2)); function[pb,ps]=cm_sm32(SNRindB) N=10000; E=1; 40

SNR=10^(SNRindB/10); sgma=sqrt(E/SNR)/2; s00=[1 0]; s01=[0 1]; s11=[-1 0]; s10=[0 -1]; for i=1:N temp=rand; if (temp<0.25) dsource1(i)=0; dsource2(i)=0; elseif (temp<0.5) dsource1(i)=0; dsource2(i)=1; elseif (temp<0.75) dsource1(i)=1; dsource2(i)=0; else dsource1(i)=1; dsource2(i)=1; end; end; numofsymbolerror=0; numofbiterror=0; for i=1:N n=sgma*randn(size(s00)); if((dsource1(i)==0)&(dsource2(i)==0)) r=s00+n; elseif((dsource1(i)==0)&(dsource2(i)==1)) r=s01+n; elseif((dsource1(i)==1)&(dsource2(i)==0)) r=s10+n; else r=s11+n; end; c00=dot(r,s00); c01=dot(r,s01); c10=dot(r,s10); c11=dot(r,s11); c_max=max([c00 c01 c10 c11]); if (c00==c_max) decis1=0;decis2=0; elseif(c01==c_max) decis1=0;decis2=1; 41

elseif(c10==c_max) decis1=1;decis2=0; else decis1=1;decis2=1; end; symbolerror=0; if(decis1~=dsource1(i)) numofbiterror=numofbiterror+1; symbolerror=1; end; if(decis2~=dsource2(i)) numofbiterror=numofbiterror+1; symbolerror=1; end; if(symbolerror==1) numofsymbolerror=numofsymbolerror+1; end; end; ps=numofsymbolerror/N; pb=numofbiterror/(2*N); 仿真结果4: 2.5十六进制正交幅度调制(16QAM) 正交调制及相干解调原理框图 42

In电平映射成形滤波Xcoswt载波发生器基带信号x串并转换Qn电平映射成形滤波+90度相移-sinwt已调信号yX 正交调制原理框图 InLPFcoswt已调信号yEPF载波恢复时钟恢复并串转换恢复信号x抽样判决X90度相移-sinwtQnLPF抽样判决X 相干解调原理框图 16QAM调制与解调基于MATLAB的仿真: 仿真程序: clc; close all; N=60; %设定码元数量 fb=1; %基带信号频率 fs=32; %抽样频率 fc=4; %载波频率,为便于观察已调信号,我们把载波频率设的较低 Kbase=2; % Kbase=2,基带经成形滤波器滤波后,再进行调制 info=random_binary(N); %产生二进制信号序列 [y,I,Q]=qam(info,Kbase,fs,fb,fc); %对基带信号进行16QAM调制 y1=y; y2=y; %备份信号,供后续仿真用 T=length(info)/fb; m=fs/fb; nn=length(info); 43

dt=1/fs; t=0:dt:T-dt; subplot(221); plot(info); title('原序列') subplot(222); %显示的已调信号 %由于测试信号码元数量为10000个,在这里我们只显示其总数的1/10 plot(t(1:1000),y(1:1000),t(1:1000),I(1:1000),t(1:1000),Q(1:1000),[0 20],[0 0]); title('已调信号输出波形'); %傅里叶变换,求出已调信号的频谱 n=length(y); y=fft(y)/n; y=abs(y(1:fix(n/2)))*2; q=find(y<1e-04); y(q)=1e-04; y=20*log10(y); f1=m/n; f=0:f1:(length(y)-1)*f1; subplot(223); plot(f,y); grid on; title('已调信号频谱'); xlabel('f/fb'); %画出16QAM调制方式对应的星座图 subplot(224); constel(y1,fs,fb,fc); title('16QAM调制方式对应的星座图'); SNR_in_dB=8:2:24; %AWGN信道信噪比 for j=1:length(SNR_in_dB) y_add_noise=awgn(y2,SNR_in_dB(j)); %加入不同强度的高斯白噪声 I=x(1:2:nn-1); [I,In]=two2four(I,4*m); Q=x(2:2:nn); [Q,Qn]=two2four(Q,4*m); if Kbase==2; %基带成形滤波 I=bshape(I,fs,fb/4); Q=bshape(Q,fs,fb/4); end; y=I.*cos(2*pi*fc*t)-Q.*sin(2*pi*fc*t); %调制 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%qamdet.m %QAM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信号解调 function [xn,x]=qamdet(y,fs,fb,fc); dt=1/fs; t=0:dt:(length(y)-1)*dt; I=y.*cos(2*pi*fc*t); Q=-y.*sin(2*pi*fc*t); [b,a]=butter(2,2*fb/fs); %设计巴特沃斯滤波器 I=filtfilt(b,a,I); 44

Q=filtfilt(b,a,Q); m=4*fs/fb; N=length(y)/m; n=(.6:1:N)*m; n=fix(n); In=I(n); Qn=Q(n); xn=four2two([In Qn]); %I分量Q分量并/串转换,最终恢复成码元序列xn nn=length(xn); xn=[xn(1:nn/2);xn(nn/2+1:nn)]; xn=xn(:); xn=xn'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%bshape.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%基带升余弦成形滤波器 function y=bshape(x,fs,fb,N,alfa,delay); %设置默认参数 if nargin<6; delay=8; end; if nargin<5; alfa=0.5; end; if nargin<4; N=16; end; b=firrcos(N,fb,2*alfa*fb,fs); y=filter(b,1,x); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%two2four.m % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%二进制转换成四进制 function [y,yn]=two2four(x,m); T=[0 1;3 2]; n=length(x); ii=1; for i=1:2:n-1; xi=x(i:i+1)+1; yn(ii)=T(xi(1),xi(2)); ii=ii+1; end; yn=yn-1.5; y=yn; for i=1:m-1; y=[y;yn]; end; y=y(:)'; %映射电平分别为-1.5;0.5;0.5;1.5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%four2two.m % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%四进制转换成二进制 function xn=four2two(yn); 仿真结果: 45

%加入不同强度的高斯白噪声 y_output=qamdet(y_add_noise,fs,fb,fc); %对已调信号进行解调 %傅里叶变换,求出解调信号的频谱 n1=length(y_output); Fy_output=fft(y_output)/n1; Fy_output=abs(Fy_output(1:fix(n1/2)))*2; q=find(Fy_output<1e-04); Fy_output(q)=1e-04; Fy_output=20*log10(Fy_output); f1=m/n1; f2=0:f1:(length(Fy_output)-1)*f1; numoferr=0; for i=1:N if (y_output(i)~=info(i)), numoferr=numoferr+1; end; end; Pe(j)=numoferr/N; %统计误码率 end; figure; subplot(311); plot(y_add_noise); title('已调信号加噪后输出'); subplot(312); plot(y_output); title('解调输出信号'); 46

subplot(313); plot(Fy_output); title('解调信号频谱') %%%%%%%%%%%%%%%%%%%%random_binary.m %%%%%%%%%%%%%%%%产生二进制信源随机序列 function [info]=random_binary(N) if nargin == 0, %如果没有输入参数,则指定信息序列为10000个码元 N=10000; end; for i=1:N, temp=rand; if (temp<0.5), info(i)=0; % 1/2的概率输出为0 else info(i)=1; % 1/2的概率输出为1 end end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%qam.m function [y,I,Q]=qam(x,Kbase,fs,fb,fc); T=length(x)/fb; m=fs/fb; nn=length(x); dt=1/fs; t=0:dt:T-dt; y=yn; ymin=min(y); ymax=max(y); ymax=max([ymax abs(ymin)]); ymin=-abs(ymax); yn=(y-ymin)*3/(ymax-ymin); %设置门限电平,判决 I0=find(yn< 0.5); yn(I0)=zeros(size(I0)); I1=find(yn>=0.5 & yn<1.5); yn(I1)=ones(size(I1)); I2=find(yn>=1.5 & yn<2.5); yn(I2)=ones(size(I2))*2; I3=find(yn>=2.5); yn(I3)=ones(size(I3))*3; %一位四进制码元转换为两位二进制码元 T=[0 0;0 1;1 1;1 0]; n=length(yn); for i=1:n; xn(i,:)=T(yn(i)+1,:); end; xn=xn'; xn=xn(:); xn=xn'; constel.m %画出星座图 function c=constel(x,fs,fb,fc); N=length(x); m=2*fs/fb; n=fs/fc; i1=m-n; i=1; ph0=(i1-1)*2*pi/n; while i <= N/m; xi=x(i1:i1+n-1); y=2*fft(xi)/n; c(i)=y(2); i=i+1; i1=i1+m; 47

end; %如果无输出,则作图 if nargout<1; cmax=max(abs(c)); ph=(0:5:360)*pi/180; plot(1.414*cos(ph),1.414*sin(ph),'c'); hold on; for i=1:length(c); ph=ph0-angle(c(i)); a=abs(c(i))/cmax*1.414; plot(a*cos(ph),a*sin(ph),'r*'); end; plot([-1.5 1.5],[0 0],'k:',[0 0],[-1.5 1.5],'k:'); hold off; axis equal; axis([-1.5 1.5 -1.5 1.5]); end; 仿真结果2: 2.6心得 1.通过本次课程设计,我了解了有关二进制数字调制(2FSK)的设计原理及方法,进一步了解了些Matlab库函数,如:randn()、sign()和ones(),2FSK调制的设计方法很多,这里只用了其中一种方法进行设计仿真; 2.从这次二进制数字调制课程设计中,我学会了,熟悉了更多关于MATLAB的用法,掌握了用MATLAB实现2FSK调制的设计,以及在MATLAB中一些图形的画法,如NRZ 波形及频谱的画法、2FSK信号波形及频谱的画法等,48

我还学会了用MATLAB实现时域波形到频域波形的变换(用自定义函数实现); 3.通过本次二进制数字调制的设计,我对有关数字调制的理论知识的了解更加深刻和透彻了,实际上,2FSK信号就可以看成两个分别以f0和f1为载频、以an和/an为被传二进制序列的两种2ASK信号的合成;(其中/an是an的反码) 4. 二进制数字调制的基本方式有:控制载波信号的振幅变化的2ASK、控制载波信号的频率变化的2FSK、控制载波信号的相位变化的2PSK、在2PSK的基础上还发展了2DPSK(为了消除相位模糊度的影响) 5.通过本次通信综合系统课程设计,我学到了很多,对通信原理这门课程也了解得更深刻了,还学会了查找相关资料和相关文献,也熟悉地掌握了对一些信号的处理以及MATLAB作图的方法和MATLAB中自带的库函数的用法。 参考文献: 【1】 《通信原理》 樊昌信 曹丽娜 出版社:国防工业出版社 【2】 《通信系统》 西蒙.荷金 出版社:电子工业出版社

49

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

Top