本科毕业设计(论文)-QPSK调制器的设计与实现.doc_第1页
本科毕业设计(论文)-QPSK调制器的设计与实现.doc_第2页
本科毕业设计(论文)-QPSK调制器的设计与实现.doc_第3页
本科毕业设计(论文)-QPSK调制器的设计与实现.doc_第4页
本科毕业设计(论文)-QPSK调制器的设计与实现.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

xxx 大学大学/学院学院 本科毕业设计(论文) 题 目 qpsk 调制器的设计与实现 学生姓名 专业班级 电子信息科学与技术 07-1 班 学 号 院 (系) 计算机与通信工程学院 指导教师 完成时间 2011 年 6 月 1 日 郑州轻工业学院 毕业设计(论文)任务书毕业设计(论文)任务书 题目题目 qpsk 调制器的设计与实现 专业专业 电子信息科学与技术 07-1 学号学号 姓名姓名 主要内容、基本要求、主要参考资料等:主要内容、基本要求、主要参考资料等: 主要内容主要内容:基于 matlab 与 visual c+混合程序设计,实现对 qpsk 的调制;学习使用通信仿真软 件 matlab 和 visual c+编程。 基本要求基本要求:1. 掌握 qpsk 的调制原理。 2掌握 matlab 与 c+混合调制的方法。 3编写仿真程序并调试。 主要参考资料主要参考资料: 1 樊昌信.通信原理m.北京:国防工业出版社,2001 2 张辉,曹丽娜. 现代通信原理与技术m. 西安:西安电子科技大学出版社,2008.7 3 matlab 程序设计与应用/刘卫国,陈昭平,张颖。-北京:高等教育出版社,2002.6 4 visual c+ 6.0实用教程/邹筝,康晓琳,袁建洲等编著,-北京:电子工业出版社,2008.1 5精通matlab与c+混合程序设计/刘维编著,-2版。北京:北京航空航天大学出版社,2008.1 完完 成成 期期 限:限: 2011 年 6 月 1 日 指指导导教教师师签签名名: 专业负责人签名:专业负责人签名: 年年 月月 日日 qpsk 调制器的设计与实现 目 录 摘 要.i abstract .ii 1 绪论.1 2 qpsk 调制工作原理3 2.1 qpsk 信号的矢量图 .3 2.2 双比特码元与载波相位的关系3 2.3 qpsk 信号产生的两种原理图.4 2.4 双比特码元所对应的图形 5 2.5 qpsk 的特点.6 3 设计中使用的工具软件简介.8 3.1 matlab 语言简介 8 3.2 matlab 的特点.9 3.3 visual c+简单介绍 9 3.4 c+主要特点9 4 用 matlab 与 visual c+混合编程设计 qpsk 调制器.11 4.1 wave 文件介绍 .11 4.2 visual c+中调用 matlab *.m函数编译后的动态链接库14 4.2.1 对 matlab 的编译环境进行配置,并编写*.m 文件和生成动态链接文 件.14 4.2.2 visual c+调用 matlab 生成的库文件.17 总结.23 qpsk 调制器的设计与实现 致 谢.24 参考文献.25 附录 mfc 程序.26 程序一26 程序二33 qpsk 调制器的设计与实现 i qpsk 调制器的设计与实现 摘 要 qpsk 调制全称 quadrature phase shift keying ,意为正交相移键控,是 一种数字调制方式。随着社会的发展,通信在生活中的地位越来越重要,目前 qpsk 通信系统已经广泛应用于无线通信中,成为现代通信中一种十分重要的调 制解调方式。 本文首先介绍了通讯系统中各种调制方式的原理,然后对 qpsk 的应用进行 了介绍,并与二进制调制相比说明其特点;重点是对 qpsk 的调制原理进行阐述。 首先,描述了 qpsk 的矢量图,然后介绍码元与载波相位的关系。再者,对 qpsk 的两种调制方法进行重点阐述。最后对 qpsk 的码元与波形的对应关系和 qpsk 的特点进行简单说明。通过用 matlab 和 visual c+对这一过程进行编程 设计来实现了 qpsk 调制的全过程。 使用 matlab 实现 qpsk 的调制,这部分是 程序的核心。由于 matlab 在对程序显示部分的控制有不足之处,所以这部分在 visual c+中实现,visual c+充分弥补了这一点,因此本文利用 matlab 和 visual c+混合编程实现 qpsk 调制。 关键词: qpsk/ matlab/ visual c+ qpsk 调制器的设计与实现 ii design and realization of qpsk modulator abstract qpsk stands for quadrature phase shift keying .it is a kind of digial modulation methods. with the development of the society, the place of communication system is becoming more and more important. now the qpsk communication system which is one of the communication systems has been widely used in wireless communications and has become a very important one in the modern communication. this paper introduces the various modulation communication system principles, and then introduces the application of qpsk, andc introduces its characteristics by comparing with the binary modulation; the key is to describe qpsk modulation principle. first, it describes the vector picture of qpsk, and then introduces the relationship of symbol and carrier phase. furthermore, the focus of the two qpsk modulation method are described highly. finally, the corresponding relations of the symbol of the qpsk and the characteristics of qpsk waveform and the character of the qpsk are simply introduced. by using matlab and visual c + + language, this process is designed and programmed to implement the entire process of qpsk modulation. this part that qpsk modulation using matlab implementation is the heart qpsk 调制器的设计与实现 iii of the program. because matlab is inadequate in the controllong of display, so visual c + + is used to implement the part of display. therefore, this paper combines matlab and visual c + + to achieve qpsk modulation. keywords : qpsk , matlab, visual c+ qpsk 调制器的设计与实现 1 1 绪论 随着通信技术日新月异的发展,尤其是数字通信的快速发展越来越普及, 研究人员对其相关技术投入了极大的兴趣。为使数字信号能在带通信道中传输, 必须用数字信号对载波进行调制,其调制方式与模拟信号调制相类似。根据数 字信号控制载波的参量不同也分为调幅、调频和调相三种方式。因数字信号对 载波参数的调制通常采用数字信号的离散值对载波进行键控,故这三种数字调 制方式被称为幅移键控(ask) 、频移键控(fsk)和相移键控(psk) 。经调制后 的信号,通过信道传输,在接收端解调后恢复成数字信号。因此,调制解调技 术是实现现代通信的重要手段,促进通信的快速发展。 四相相移键控(qpsk)方式已经在数字调制技术中占有越来越重要的地位, 该调制方式广泛应用于卫星通信、电缆调制解调、视频会议系统、蜂窝电话和 其他数字通信等领域。它具有适中的频谱利用率,很低的比特错误率。由于高 速数字信号处理器(如 ti 公司 tms320 系列)的广泛应用,为数字方式实现调制 解调器提供了有利的条件,同时省去了大量的硬件电路,如环型滤波器,vco 等。在 dsp 技术的支持下很容易实现。在卫星数字电视传输中普遍采用的 qpsk 调谐器,可以说是当今卫星数字电视传输中对卫星功率、传输效率、抗干扰性以 及天线尺寸等多种因素综合考虑的最佳选择。与二进制数字调相比,多进制调相 有以下两个特点 : (1) 在相同码元传输速率下,多进制调相的信息传输速率显然比二进制调相 的高,比如,四进制调相的信息传输的速率是二进制调相的两倍。 (2) 在相同的信息速率下,由于多进制码元的速率比二进制的低,因而多进 制信号码元的持续时间要比二进制的长。显然增大码元宽度,就会增加码元的能 量,并能减小由于信道特性引起的码间干扰的影响等,正是基于这些特点,使多进 制移相键控方式获得了广泛的应用。 通过此次的调制仿真,使我们对 qpsk 调制的工作原理以及仿真软件有了比 较深刻的认识和了解。 在当代社会中,信息的交换日益频繁,随着通信技术和计算机技术的发 qpsk 调制器的设计与实现 2 展及它们的密切结合,通信能克服对空间和时间的限制,大量的、远距离的信 息传递和存取已成为可能。展望未来,通信技术正在向数字化、智能化、综合 化、宽带化、个人化方向迅速发展,各种新的电信业务也应运而生,正沿着信 息服务多种领域广泛延伸。 本文首先对 qpsk 的调制原理进行详细地介绍,然后介绍了调制中使用的软 件 matlab 和 visual c+,最后重点介绍使用仿真软件实现 qpsk 调制的具体步 骤和过程。 qpsk 调制器的设计与实现 3 2 qpsk 调制工作原理 数字相位调制 psk 是角度调制、恒定幅度数字调制的一种方式,通过改变发 送波的相位来实现,除了其输入信号是数字信号以及输出的相位受限制以外,psk 与传统的相位调制相似。 2.1 qpsk 信号的矢量图 qpsk 信号的正弦载波有 4 个可能的离散相位状态,每个载波相位携带 2 个二 进制符号,其信号表示式为 : 图 2-1qpsk 信号的矢量图 若此载波初始相位为 0的 qpsk 信号的矢量图如图 2-1(a)。若初始相位为 45的 qpsk 信号的矢量图如图 2-1(b)。 2.2 双比特码元与载波相位的关系 qpsk 四相相移调制是利用载波的四种不同相位差来表征输入的数字信息1, 是四进制移相键控。qpsk 是在 m=4 时的调相技术,它规定了四种载波相位,分 别为 45,135,225,315或者 0,90,180,270,调制器输入 的数据是二进制数字序列,为了能和四进制的载波相位配合起来,则需要把二 进制数据变换为四进制数据,这就是说需要把二进制数字序列中每两个比特分 qpsk 调制器的设计与实现 4 成一组,共有四种组合,即 00,01,10,11,其中每一组称为双比特码元。每 一个双比特码元是由两位二进制信息比特组成,它们分别代表四进制四个符号 中的一个符号。qpsk 中每次调制可传输 2 个信息比特,这些信息比特是通过载 波的四种相位来传递的。如表 2-1 表 2-1 双比特 ab 与载波相位的关系 双比特码元载波相位 ab a 方式b 方式 0 1 1 0 0 0 1 1 0 90 180 270 225 315 45 135 2.3 qpsk 信号产生的两种原理图 图 2-2 相位选择法产生 qpsk 信号原理图 从表 2-1 可以看出,每一对码元对应 qpsk 信号为载波四个相位中的某一个。 因此,可以用相位选择法产生 qpsk 信号,其原理图如图 2-2 所示。图中,四相 载波产生器输出 qpsk 信号所需的四种不同相位的载波。输入二进制数据流经串 /并变换器输入双比特码元,逻辑选相电路根据输入的双比特码元,每个时间间 隔选择其中一种相位的载波作为输出,然后经带通滤波器滤除高频分量。 从表达式为:可以看出,qpsk 也可以采 qpsk cos( )sin cc ti tw tq tw t s 用正交调制的方式产生。式中 i(t)是同相支路信号,q(t)是正交支路信号。图 2-3 给出实现 qpsk 调制的原理。输入的二进制数字信号经过串并转换电路分为 qpsk 调制器的设计与实现 5 两路速率减半的双极性信号:同相信号 i(t)和正交信号 q(t),经低通滤波成形 后分别与相互正交的两路载波信号相乘,然后相加即可得到 qpsk 信号,也可以 采用相位选择法来实现 qpsk 信号,输入的二进制数字信号经串并转换后,成 为双比特码元,而载波发生器产生 4 种不同相位的载波波形,根据双比特码元 的不同组合每个比特周期从 4 种不同相位的载波中选择一种输出,然后经带 通滤波器滤除带外干扰信号,就得到 qpsk 信号,这种方式适用于载波频率较高 的场合。 图 2-3 qpsk 正交调制器 2.4 双比特码元所对应的图形 设原始数据流为 dk(t)=d0d2d2,取双极性脉冲序列。其值为+1 或一 12, 分别代表 o 或 1,dk(t)经数据分离器分成奇偶两路,di(t)=d0d2d4和 dq(t) =d1d3d5,每路的码元宽度扩展为 2t。其中,奇数路数据 d0(t)经过时延送入 o 信道,对载波 sinct 进行二相调制;偶数路数据 di(t)送入 i 信道,对载波 cosct 进行二相调制。然后 2 个信号相加得到四相信号。码元转换时,qpsk 信号的相位可能产生 90的跳变,也可能产生 180的跳变,前者发生在 2 个 信道的一路数据改变极性时,后者发生在 2 个信道的数据同时改变极性时。 图 2-4 为 f=2 时,双比特码元所对应的图形。 qpsk 调制器的设计与实现 6 图 2-4 双比特码元所对应的波形 2.5 qpsk 的特点 四相相移调制是利用载波的四种不同相位差来表征输入的数字信息,是四 进制移相键控。qpsk 是在 m=4 时的调相技术,它规定了四种载波相位,分别为 45,135,225,275,调制器输入的数据是二进制数字序列,为了能和 四进制的载相位配合起来,则需要把二进制数据变换为四进制数据,这就是说 需要把二进制数字序列中每两个比特分成一组,共有四种组合,即 00,01,10,11,其中每一组称为双比特码元。每一个双比特码元是由两位二 进制信息比特组成,它们分别代表四进制四个符号中的一个符号。qpsk 中每次 调制可传输 2 个信息比特,这些信息比特是通过载波的四种相位来传递的。解 调器根据星座图及接收到的载波信号的相位来判断发送端发送的信息比特。 数字调制用“星座图”来描述,星座图中定义了一种调制技术的两个基本 参数:(1)信号分布;(2)与调制数字比特之间的映射关系。星座图中规定 了星座点与传输比特间的对应关系,这种关系称为“映射” ,一种调制技术的特 qpsk 调制器的设计与实现 7 性可由信号分布和映射完全定义,即可由星座图来完全定义。 首先将输入的串行二进制信息序列经串并变换,变成 m=log2m 个并行数 据流,每一路的数据率是 r/m,r 是串行输入码的数据率。i/q 信号发生器将每 一个 m 比特的字节转换成一对(a,b)数字,分成两路速率减半的序列,电平 发生器分别产生双极性二电平信号 i(t)和 q(t),然后对 coswct 和 sinwct 进行 调制,相加后即得到 qpsk 信号。 qpsk 是一种频谱利用率高、抗干扰性强的数调制方式, 它被广泛应用于各 种通信系统中. 适合卫星广播。例如,数字卫星电视 dvb2s 标准中,信道噪声 门限低至 4. 5 db,传输码率达到 45m b/s,采用 qpsk 调制方式,同时保证了 信号传输的效率和误码性能。 qpsk 调制器的设计与实现 8 3 设计中使用的工具软件简介 3.1 matlab 语言简介介 简介简介 matlab 是一种用于算法开发、数据可视化、数据分析以及数值计算的高3级 技术计算语言和交互式环境。使用 matlab,您可以较使用传统的编程语言(如 c、c+ 和 fortran)更快地解决技术计算问题。 matlab 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、 测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱 (单独提供的专用 matlab 函数集)扩展了 matlab 环境,以解决这些应用领 域内特定类型的问题。 matlab 提供了很多用于记录和分享工作成果的功能。可以将您的 matlab 代码与其他语言和应用程序集成,来分发您的 matlab 算法和应用。 主要功能:主要功能: (1)此高级语言可用于技术计算 (2)此开发环境可对代码、文件和数据进行管理 (3)交互式工具可以按迭代的方式探查、设计及求解问题 (4)数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分 等 (5)二维和三维图形函数可用于可视化数据 (6)各种工具可用于构建自定义的图形用户界面 (7)各种函数可将基于 matlab 的算法与外部应用程序和语言(如 c、c+、fortran、java、com 以及 microsoft excel)集成 现在 matlab 已经正式发布了 matlab r2011a 最新版,功能是越来越强大。 qpsk 调制器的设计与实现 9 本实验用的是 matlab r2007a 版。 3.23.2 matlabmatlab 的特点的特点 matlab 具有以下几个特点: (1)功能强大的数值运算功能。 (2)强大的图形处理能力 。 (3)高级但简单的程序环境 。 (4)丰富的工具箱。 3.3 visual c+简单介绍 简介简介 microsoft visual c+是 microsoft 公司推出的开发 win32 环境程序,面向对象的 4可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写 和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成 的程序框架支持数据库接口、 ole2,winsock 网络、3d 控制界面。 它以拥有“语法高亮”,intellisense(自动编译功能)以及高级除错 功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户 在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编 译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明 显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。 3.4 c+主要特点 c+是一种混合型程序设计语言,它既不像 basic 那样是面向过程的程序设 5计,也不像 java 那样是面向对象的程序设计,而是将两者统一,既支持面向 对象又支持面向过程。c+既适合作为系统软件的描述语言,也适于编写应用软 件。作为程序设计语言,c+的目标是为程序员的程序开发提供一个优良的工具, 以编写出模块化程度高、可重用性和可维护性俱佳的程序,因此,可以说 c+ 是程序员的语言。 qpsk 调制器的设计与实现 10 对比 c 语言,c+的错误检查机制更胜一筹,它提供了专门的机制检查类, 更适合大、中型程序的开发,同时,c+非常强调代码的有效性和紧凑性。事实 表明,c+语言可用于 c 语言曾经使用的所有场合,且效果比 c 语言好的多。 利用 visual c+编制 c+程序。 visual c+提供了 win32 console application 项目类型,用它可以在 windows 环境中的 dos 环境下运行程序。建立 win32 console application 项 目的步骤如下: (1)执行“file”/“new”菜单命令,在弹出的“new”对话框中找到左 侧的项目类型列表,然后在列表中选择“win32 console application”列表项, 在右侧的“location”和“project name”编辑框中分别输入路径和项目名称, 单击“ok”按钮,进入“win32 console application step-1of1”对话框,选 择“an simple application”项。 (2)单击“finish”按钮完成项目的建立。 (3)此时,项目里只有 globals 中存在全局函数 main(),它也是程序的 入口,剩下的就是根据用户的需要编写代码了。 (4)代码编写完成后,执行“build”/“execute”菜单命令,如果没有 错误,就可以运行了。 qpsk 调制器的设计与实现 11 4 用 matlab 与 visual c+混合编程设计 qpsk 调制器 本设计是从 wav 文件中读取数据,转换为二进制数,然后实现 qpsk 的调制, 并显示其数字图像。 4.1 wave 文件介绍 wave 文件作为多媒体中使用的声波文件格式之一,它是以 riff 格式为标 准的。riff 是英文 resource interchange file format 的缩写,每个 wave 文 件的头四个字节便是“riff“。wave 文件由文件头和数据体两大部分组成。其中 文件头又分为 riffwav 文件 标识段和声音数据格式说明段两部分。wave 文 件各部分内容及格式见附表。 常见的声音文件主要有两种,分别对应于单声道(11.025khz 采样率、 8bit 的采样值)和双声道(44.1khz 采样率、16bit 的采样值) 。采样率是指: 声音信号在“模数“转换过程中单位时间内采样的次数。 采样值是指每一次采 样周期内声音模拟信号的积分值。 对于单声道声音文件,采样数据为八位的短整数(short int 00h-ffh) ; 而对于双声道立体声声音文件,每次采样数据为一个 16 位的整数(int) ,高八 位和低八位分别代表左右两个声道。 wave 文件数据块包含以脉冲编码调制(pcm)格式表示的样本。wave 文件 是由样本组织而成的。在单声道 wave 文件中,声道 0 代表左声道,声道 1 代表 右声道。在多声道 wave 文件中,样本是交替出现的。 表 4-1 wave 文件格式说明表 偏移地 址 字节数数据类 型 内容 00h4char “riff”标志 044long int 文件长度 084char “wave”标志 0ch4char “fmt”标志 头 10h4 过渡字节(不定) qpsk 调制器的设计与实现 12 14h2int 格式类别(10h 为 pcm 形式的声音数据) 16h2int 通道数,单声道为 1,双声道为 2 18h2int 采样率(每秒样本数) ,表示每个通道的播放速度 1ch4long int 波形音频数据传送速率,其值为通道数每秒数据位数 每样本的数据位数/8.播放软件利用此值可以估计缓 冲区的大小。 20h2int 数据块的调整数(按字节算的) ,其值为通道数每样 本的数据位值/8。播放软件需要一次处理多个该值大小 的字节数据,以便将其值用于缓冲区的调整, 22h2 每样本的数据位数,表示每个声道中各个样本的数据位 数。对每个声道而言,样本大小都一样。 24h4char 数据标记符“data” 文 件 28h4long char 语音数据的长度 表 4-2 pcm 数据的存放方式 样本 1样本 2 8 位单声 道 0 声道0 声道 8 位立体 声 0 声道(左)1 声道(右)0 声道(左)1 声道(右) 16 位单声 道 0 声道低字节0 声道高字节0 声道低字节0 声道高字 节 16 位立体 音 0 声道(左)低字 节 1 声道(右) 高字节 0 声道(左)低字节1 声道(右 高字节 wave 文件的每个样本值包含在一个整数 i 中,i 的长度为容纳指定样本长 度所需的最小字节数。首先存储低有效字节,表示样本幅度的位放在 i 的高有 效位上,剩下的位置为 0,这样 8 位和 16 位的 pcm 波形样本的数据格式如下所 示。 表 4-3 8 位和 16 位的 pcm 波形样本的数据格式 样本大小数据格式最大值最小值 8 位 pcm unsigned int2250 16 位 pcm int32767-32767 qpsk 调制器的设计与实现 13 分析 wave 头的代码 wave 文件头(pcm 格式) field size type description - chunkid 4 char “riff“标志 chunksize 4 long int 文件长度(wave 文件的大小, 不含前 8 个 字节) format 4 char “wave“标志 subchunk1id 4 char “fmt “标志 subchunk1size 4 过渡字节(不定) audioformat 2 short int 格式类别(1 为 pcm 格式的声音数据) numchannels 2 short int 通道数(单声道为 1, 双声道为 2) samplerate 4 long int 采样率(每秒样本数), 表示每个通道的播 放速度一般情况是每秒采样 44100 次 byterate 4 long int 波形音频数据传输速率, 其值为:通道数* 每秒数据位数*每样本的数据位数/8 播放软件可以利用该值估计缓冲区大小 blockalign 2 short int 每样本的数据位数(按字节算), 其值为:通 道数*每样本的数据位值/8, 播放软件需 要一次处理多个该值大小的字节数据, 以 便将其值用于缓冲区的调整 每样本占几个字节 : numchannels * 16/8 bitspersample 2 样本的数据位数, 表示每个声道中各个样 本的数据位数. 如果有多个声道, 对每个声道而言, 样本大小都一样 就是分辨率, 一般是 16 位, 8 位也有但是 要少一些. qpsk 调制器的设计与实现 14 subchunk2id 4 char 数据标记“data“ subchunk2size 4 long int 语音数据的长度 4.2 visual c+中调用 matlab *.m 函数编译后的动态链接库 matlab是当前应用最为广泛的数学软件,具有非常强大的数值计算、数据 分6析处理、系统分析、图形显示甚至符号运算等功能。它为用户提供了一种 比其它工具更为简洁、自由、移值性好的编程环境。利用这一完整的数学平台, 用户可以快速实现十分复杂的功能,极大地提高工程分析计算的效率。但与其 它高级程序相比,matlab程序是一种解释执行序,不用编译等预处理,因此 matlab程序运行速度较慢。 cc+语言是目前最为流行的高级程序设计语言之一。它可对操作系统和 应用程序以及硬件进行直接操作,cc+语言明显优于其它解释型高级语言, 一些大型应用软件如matlab就是用c语言开发的。在工程实践中,用户有时需要 在matlab环境中调用已编写的cc+代码,有时需要在cc+中调用matlab编 写的数值处理、矩阵运算等代码,这就产生了matlab和cc+混合编程的问题。 因此,本文基于常用的matlab2007和vc60开发环境,在windows平台下就它们 之间的混合编程问题cc+调用matlab方面进行深入研究。 4.2.1 对 matlab 的编译环境进行配置,并编写*.m 文件和生成动态 链接文件 在matlab与cch混合编程之前,必须先对matlab的编译应用程序mex和编 译器mbuild进行正确的设置: 一、对matlab编译应用程序mex的设置: mex -setup please choose your compiler for building external interface (mex) files: would you like mex to locate installed compilers y/n? y qpsk 调制器的设计与实现 15 select a compiler: 1 lcc-win32 c 2.4.1 in d:progra1matlab1syslcc 2 microsoft visual c+ 6.0 in d:program filesmicrosoft visual studio 0 none compiler: 2 please verify your choices: compiler: microsoft visual c+ 6.0 location: d:program filesmicrosoft visual studio are these correct?(y/n): y trying to update options file: c:usersxuappdataroamingmathworksmatlabr2007amexopts.bat from template: d:progra1matlab1binwin32mexoptsmsvc60opts.bat done . . . (按系统提示进行选择) 二、对matlab编译器mbuild的设置: mbuild -setup please choose your compiler for building standalone matlab applications: would you like mbuild to locate installed compilers y/n? y select a compiler: 1 lcc-win32 c 2.4.1 in d:progra1matlab1syslcc 2 microsoft visual c+ 6.0 in d:program filesmicrosoft visual studio 0 none compiler: 2 please verify your choices: compiler: microsoft visual c+ 6.0 location: d:program filesmicrosoft visual studio are these correct?(y/n): y qpsk 调制器的设计与实现 16 trying to update options file: c:usersxuappdataroamingmathworksmatlabr2007acompopts.bat from template: d:progra1matlab1binwin32mbuildoptsmsvc60compp.bat done . . . “d:progra1matlab1binwin32mwregsvr d:progra1matlab1binwin32mwcomutil.dll“ dllregisterserver in d:progra1matlab1binwin32mwcomutil.dll succeeded “d:progra1matlab1binwin32mwregsvr d:progra1matlab1binwin32mwcommgr.dll“ dllregisterserver in d:progra1matlab1binwin32mwcommgr.dll succeeded (按提示选择即可) 三、编写qpsk.m文件,并生成动态链接库文件 %qpsk.m文件 function qpsk(g) l=length(g); f=2; t=0:2*pi/99:2*pi; cp=;sp=; mod=;mod1=;bit=; for n=1:2:l if g(n)=0 die=sqrt(2)/2*ones(1,100); die1=-sqrt(2)/2*ones(1,100); se=ones(1,100); elseif g(n)=0 die=-sqrt(2)/2*ones(1,100); die1=-sqrt(2)/2*ones(1,100); se=zeros(1,100); elseif g(n)=1 die=-sqrt(2)/2*ones(1,100); die1=sqrt(2)/2*ones(1,100); se=2*ones(1,100); elseif g(n)=1 die=sqrt(2)/2*ones(1,100); die1=sqrt(2)/2*ones(1,100); se=3*ones(1,100); qpsk 调制器的设计与实现 17 end c=cos(f*t-pi/4); s=-sin(f*t-pi/4); cp=cp die; sp=sp die1; mod=mod c; %余弦载波(q) mod1=mod1 s; %正弦载波 (i) bit=bit se; end qpsk=cp.*mod+sp.*mod1; subplot(2,1,1); plot(bit,linewidth,1.5); title(binary signal) axis(0 50*l -0.2 3.2); grid on; subplot(2,1,2); plot(qpsk,color,r,linewidth,1.5) axis(0,50*l,-2.2,3.2) title(qpsk modulation) hold on plot(bit,color,g,linewidth,1.5); hold off grid on 在matlab命令窗口输入:mcc b csharedlib:libqpsk qpsk.m生成动态链 接库文件如图4-1: 图4-1 动态链接库文件 qpsk 调制器的设计与实现 18 4.2.2 visual c+调用 matlab 生成的库文件 一、创建一个visual c+单文档的工程wave,并对其选项进行设置 选择:工具-选项,属性页选择“目录”,在include files里面加入: d:program filesmatlabr2007aexterninclude, d:program filesmatlabr2007aexternincludewin32; 然后在library files里面加入: d:program filesmatlabr2007aexternlibwin32microsoft; 注意:根据用户的matlab安装位置,修改相应目录。 在vc中选择:工程设置,选择属性表link选项,下拉菜单中选择 input,在对象库模块中加入libemlrt.lib libmex.lib libut.lib mclmcrrt.lib libeng.lib libmwlapack.lib mclcom.lib mclxlmain.lib libfixedpoint.lib libmwservices.lib mclcommain.lib libdflapack.lib libmat.lib libmx.lib mclmcr.lib libqpsk.lib,注意用空格将它们格开;这 些库文件在externlibwin32microsoft目录下,其中 libqpsk.lib为上述步骤中由matlab编译器生成的文件之一。 将libqpsk.dll复制到windows系统目录(system或者system32)或者wave 工程的debug目录下,将libqpsk.h、 libqpsk.lib、 libqpsk.ctf文件复制到 wave工程的源文件目录下,并将libqpsk.h文件添加到工程中。 在wave按钮响应函数所在文件中添加如下的头文件:#include“libqpsk.h 。(这里是在cmainframe的头文件中) 为菜单栏添加两个下拉菜单“二进制”和“十六进制”,其id分别命名为 id_view_res和id_view_res2,如图4-2和图4-3所示。 通过classwizard在cmainframe中添加其消息响应。 qpsk 调制器的设计与实现 19 图4-2 二进制子菜单属性设置 图4-3 添加二进制与十六进制子菜单 在消息响应中分别加入的下列代码: (1)查看文件的二进制数据; (2)十六进制转化为二进制; (3)查看文件的十六进制数据; 其结果如图4-4和图4-5所示: qpsk 调制器的设计与实现 20 图4-4 读取的二进制数据 图4-5读取的十六进制数据 另外为工具栏添加一个按钮,其id分别命名为id_on_next,如图4-6所示。 通过classwizard在cmainframe中添加其消息响应 qpsk 调制器的设计与实现 21 图4-6 工具栏添加一个按钮并设置属性 在消息响应中加入调用mlfqpsk函数,其结果如图4-7所示: 图4-7 调制后码元对应的波形 此时还可以通过findwindow、modifystyle和movewindow函数将生成的 matlab图形绘制窗口嵌入到cwaveview窗口中,这样在某些情况下可以使整个程 序的运行风格更加协调。 qpsk 调制器的设计与实现 22 为此,添加一个工具栏按钮id_plotinview,并为cwaveview添加一个公有 变量hwnd m_ploth,通过选择view|classwizard菜单项为cwaveview添加一个按 钮id_plotinview的消息响应函数,并为此消息响应函 cwaveview:onplotinview()添加如下代码。 为了使matlab窗口的大小能够随其父窗口客户区大小的变化而变化,重载 cwaveview wm_size消息的处理函数onsize。 重新编译运行wave工程后,点击按钮“下一个”,再点击最后一个按钮, 将matlab图形嵌入到wave窗口中,继续点击“下一个”按钮,就会出现图4-8。 图 4-8 调制后码元对应的波形 qpsk 调制器的设计与实现 23 总结 通过半个学期的努力,终于在6月初完成了毕业设计。在做毕业设计期间, 我得到老师和同学的大力帮助,这使我深深的体会到团结协助的力量.通过做毕 业设计,锻炼了我独自完成一件事的能力,提高了自我约束力,为走上工作岗 位起到了桥梁作用。 通过这次毕业设计,使我得到许多心得和体会。首先,通过自己的积极动 手动脑,使我对matlab软件及visual c+软件有了进一步了解和掌握。其次,通 过自己的编程,使我更进一步掌握两种语言,充分利用两种的优势,形成优势 互补,使编程简单一些,效率更高。再者,使我体会到“尽信书则不如无书” 和“纸上得来终觉浅,绝知此事要躬行”的真谛。 在做matlab与visual c+混合编程时,我发现许多问题。 1)课本的前后联系问题。在做visual c+中调用matlab *.m函数编译后 的动态链接库时,动态库文件的路径设置这一点,书上没提到,但前 面提到了,所以前后结合,温故而知新。 2)课本的不全面。在调用mlfqpsk函数时,总是出现函数无定义的问题。 这个问题我调了好久才解决,通过对课本例子程序的查找,发现需要 在cmainframe的头文件添加#include”libqpsk.h”. 3)如果你按上述步骤做,是不是编译和链接都没有错误,但还是出现不 了结果。为什么呢?这一点耽误我的时间最长,让几个编程比较好的 同学查找问题,也没能解决。幸亏有例子源程序代码,通过对matlab 生成文件和工程文件的对比,发现在debug文件夹下缺少一个*.ctf文 件。最终才解决问题,出现结果。 qpsk调制器的设计和实现”对于老师来说可能是一个老题目,但对我来说 还是很新鲜,尽管以前学过qpsk调制的原理知识,但编程的方法对qpsk的设 计还是第一次,这不仅加深了我最对qpsk调制理论的认识和理解,也使我懂得 了如何对一个理论进行自己的研究或验证。 qpsk 调制器的设计与实现 24 致 谢 经历了一个学期的毕业设计,在这段时间里,它不仅仅使我学到了宝贵的 专业知识,更重要的是它使我学到了怎样去独立思考问题,解决问题,大大提 高了我自己的动手能力和操作能力,为我今后的工作奠定坚实的基础。 本文从选题的确定,论文的写作、修改到最后定稿得到了我的指导老师的 悉心指导。特别是她多次询问写作进程,并为我指点迷津,帮助我开拓思路, 精心点拨,热忱鼓励。她严肃的教学态度,严谨的治学精神,精益求精的工作 作风深深地感染和激励着我。在此,谨向何老师致以诚挚的谢意和崇高的敬意。 感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被 我引用或参考的论著的作者,谢谢! 在这次编写设计报告中,由于时间的紧促和编写者的专业知识的有限,再 加上我们缺少实践经验,对使得所写的毕业论文的知识覆盖面有很大的局限性, 而且报告中难免有很多不妥之处,所以我恳请各位指导老师能够给予

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论