ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:179.67KB ,
资源ID:3886940      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3886940.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(大院PSK讲稿wjj.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

大院PSK讲稿wjj.docx

1、大院PSK讲稿wjj2012年数字通信计算机仿真图1 数字通信系统框图首先,在发送端将输入的数字序列通过编码器转换为二进制,形成数字基带号,接着通过低通滤波器滤除高频干扰信号,再通过调制器进行振幅调制。其次,将信号发送即经过信道进行传输,在传输过程中有噪声的加入。最后,在接收端将收到的信号先通过带通滤波器滤除低、高频干扰信号,接着进行同步解调,再进行低通滤波,最后进行抽样判决得到发送的信号。1低通滤波器窗函数(1)汉宁(Hanning)窗升余弦窗 (1)主瓣宽度为8/N,第一旁瓣比主瓣低31dB。(2)哈明(Hamming)改进的升余弦窗 (2)主瓣宽度为8/N,第一旁瓣比主瓣低40 Db。(

2、3)布莱克曼(Blackman)窗 (3) 主瓣宽度为12/N,第一旁瓣比主瓣低57dB。2. 调制调制信号可以看成一个双极性矩形脉冲序列与正弦载波相乘即 (4)其中g(t)持续时间为Ts的脉冲序列,而an的取值服从下述关系 (5)若令 (6)则上式变为 (7) 图2数字线性调制方框图基带信号形成器把数字序列an转换成所需的基带矩形脉冲序列,与载波相乘后即把其频谱搬移到fc附近,实现了ASK/PSK。3. 频率采样法设待设计的滤波器的传输函数用H(ej)表示,对它在=0和=2之间等间隔采样N点,得到Hd(k) (8)再对N点Hd(k)进行IDFT,得到h(n) (9)4. 解调图3 ASK信号

3、的相干解调 (10)5MFC概述MFC是用来编写Windows应用程序的C+类库,该类以层次结构组织起来,其中封装了大部分Windows API函数和Windows控件,它所包含的功能涉及到整个Windows操作系统。不仅为用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件。使用MFC类库和Visual C+提供的高度可视的应用程序开发工具,可使应用程序变得更简单,开发周期极大地缩短,提高了代码的可靠性和可重用性。Visual C+6.0为了减轻程序员的工作量,特别增强了应用程序向导的功能。应用程序向导为程序员提供了一个基于MFC的应用程序框架,程序员可以在此基础

4、上添加实现特定功能的代码。通过应用程序向导建立应用程序框架一般可以通过以下步骤来实现:(1)在File菜单下选择New,在New对话框中选择MFC AppWizard(exe),在Project Name文本输入框中输入新建的项目名,如Huangweitong后单击按钮。(2)在弹出的MFC AppWizard-Step 1对话框中可以设置应用程序的类型,指定应用程序的结构是否采用文档视图结构,以及资源文件所使用的语种等。应用程序的类型包括以下几种:Single document 单文档应用程序。Multiple document 多文档应用程序。Dialog document 基于对话框的应

5、用程序。应用程序资源文件所使用的语种可以通过下拉列表选择,在中国一般都选择中文作为资源文件的语种。(3)在设置好上述选项后,单击Next按钮,将弹出MFC AppWizard-Step 2 of 6对话框。在MFC AppWizard-Step 2 of 6对话框中可以设置应用程序所使用的数据库支持,它可以是以下值之一:None 在应用程序中忽略所有的数据库支持。Header files only 包括定义基本数据库类的头文件,但不创建对应订制表的数据库类或视图类。Database view without file support 创建对应指定表的一个数据库类和一个视图类,不附加标准文件支持

6、。Database view with file support 创建对应指定表的一个数据库类和一个视图类,并附加标准文件支持。(4)设置好应用程序的数据库支持后,单击Next按钮,将弹出MFC AppWizard-Step 3 of 6对话框。在MFC AppWizard-Step 3 of 6对话框中可以设置应用程序所支持的复合文档类型。这一步使程序员可以向应用程序中加入OLE支持。设置好应用程序对OLE的支持后,用户单击Next按钮将进入MFC AppWizard-Step 4 of 6对话框。(5)在MFC AppWizard-Step 4 of 6对话框中用户可以设置应用程序的外观,

7、其中可以配置的选项如下:Docking toolbar 一个工具栏。Initial status bar 一个初始状态栏。Printing and print preview 打印和打印预览支持。Context-sensitive Help 上下文相关帮助。3D controls 使用3D控件。MAPI(Messaging API) 是否使用消息API。Windows Sockets 是否使用Windows套接字。在MFC AppWizard-Step 4 of 6对话框中还可以设置工具栏的外观,它可以是以下两个值之一:Normal 普通的工具栏。Internet Explorer ReBar

8、s 具有风格的工具栏。同时还可以在MFC AppWizard-Step 4 of 6对话框中设置需要显示的最近使用的文件个数。在设置好上述选项后,单击Next按钮将弹出MFC AppWizard-Step 5 of 6对话框。(6)在MFC AppWizard-Step 5 of 6对话框中可以设置应该用程序的风格,它可以是下面两个值之一:MFC Standard 标准的MFC应用程序。Windows Explorer 具有Windows Explorer风格的应用程序。在MFC AppWizard-Step 5 of 6对话框中还可以设置是否在应用程序向导生成的代码中加注释。它可以是下面两个

9、值之一:Yes,please 在向导生成的代码中加注注释。No,thank you 在向导生成的代码中不加注释。同时在MFC AppWizard-Step 5 of 6对话框中还可以设置使用MFC库文件的方式,它可以是下面两个值之一:As a shared DLL 以共享动态链接库的方式使用MFC库文件。As a statically linked library 以静态链接库的方式使用MFC库文件。(7)在设置好上述选项后,单击Next按钮将进入AppWizard-Step 6 of 6对话框。在MFC AppWizard-Step 6 of 6对话框中可以设置向导生成的文件名和类名。(8)

10、在设置好文件名和类名后,单击Finish按钮,弹出New Project Information对话框,在该对话框中列出了关于新建立的应用程序项目文件的相关信息。这样应用程序向导所有的工作就全部完成了,这时向导已经为用户生成了一个可执行的应用程序框架。6基于对话框的应用程序的创建对话框(Dialog)在Windows应用程序中无处不在,起着非常重要的作用,它是用户与应用程序的主要交互途径。它主要用来接收用户输入,对话框实际上是一个真正的窗口,不但可以接收消息,而且还可以被移动和关闭,甚至可以在它的用户区中进行绘图操作。在MFC中对话框被封装在CDialog类中,CDialog类是CWnd类的派

11、生类。对话框分为模态对话框和非模态对话框两种。当程序建立一对话框时,就必须决定该对话框是模态的还是非模态的。从编程的观点看,意味着要在建立和撤消两个对话框之间进行选择;从用户观点来看,对话框的模式影响到在对话框可见的情况下是否可进行其他工作的问题。模式是指对话框不同状态的一个术语。模态对话框垄断了用户的输入,当一个模态对话框打开时,它建立自己的消息循环,使得用户只能与计算机进行交互,而其它的用户界面对象收不到输入信息。我们平时所遇到的大部分对话框都是模态对话框。非模态对话框不垄断用户的输入,当一个非模态对话框打开时,它不建立自己的消息循环,而是和应用程序共用同一个消息循环,这样一来用户不仅能与

12、该对话框进行交互,而且能与其它用户界面对象进行交互。第一,建立应用程序的项目文件。用MFC的AppWizard建立一个应用程序时,首先要生成该应用程序的项目文件。其步骤如下:(1)在Visual C+的主菜单栏中选择File菜单中的New选项。出现一个New对话框,该窗口中有4个选项卡:Files、Projects、Workspaces和Other Documents。(2)选择Projects选项卡,并在该选项卡中选择MFC AppWizard(exe)项。(3)在Project Name编辑框中输入要创建的项目的名称。(4)Location编辑框中描述的是存放该项目文件的路径(位置),这可

13、以根据用户需要,输入自己希望存放该文件的位置。(5)在Platforms编辑框中选择Win32,我们使用的是在32位操作系统。(6)确定项目文件的类型、名称和路径选项后,单击OK按钮,就可以开始制作该项目文件了。(7)Visual C+显示MFC AppWizard-Step 1的窗口。这是生成项目文件的第一步,在这一步中,用户将选择创建什么类型的应用程序以及资源文件使用什么语言。首先因为我们要生成的应用程序是基于对话框的应用程序,所以在“What type of application would you like to creat?”中,选择Dialog based选项。然后在“What

14、language would you like to your resources in?”中,选择“中文【中国】APPWZCHS.DLL”项。最后单击Next按钮,进入下一步。(8)Visual C+显示一个MFC AppWizard-Step 2 of 4的窗口,该窗口是生成项目文件的第二步。首先在“What features would you like to include?”问题中,选择About Box(关于About对话框)和3D Controls(使用三维图形控件)选项。然后在“Please enter a title for your dialog ”编辑框中可以给应用程序主

15、窗口命名。最后确定以上各项后,单击Next按钮,进入下一步。(9)Visual C+显示一个MFC AppWizard-Step 3 of 4 的窗口。首先在“Would you like to generate source file comments?”中,询问是否在生成源代码文件中加注释,应选择Yes。因为在MFC AppWizard 生成的应用程序源代码文件(.cpp文件)中加上代码的注释,有助于阅读和理解源代码的含义。然后在“How do you like to use the MFC library?”问题中,选择MFC使用的动态链接库(DDL),而不是静态链接库。使用动态链接库可

16、以在应用程序程序运行的时侯链接起来,而不是在编译的时候就链接,使生成的应用程序exe文件比较小。最后单击Next按钮,进入最后一步。(10)Visual C+ 显示出生成项目文件的最后一步,出现一个MFC AppWizard-Step 4 of 4 的窗口,可以看到AppWizard 给出的所创建的类名和文件名,如果用户愿意,可以改变类的名称,但一般不必改变它。(11)单击Finish 按钮,显示一个New Project Information 的窗口,该窗口显示了前面几步所选择的全部设置,包括应用程序类型、新创建的类以及应用程序的全部特征,还显示了该应用程序将生产在哪个路径之中。通过这些用

17、户可以最后检查一下应用程序的设置是否完全正确,如果发现不对的地方,可以单击Cancel 键取消前面的操作,用AppWizard 重新制作。检查后若完全正确,则单击Exit按钮。AppWizard完成应用程序的自动生成工作,在指定的目录下生成应用程序框架所必需的全部文件。第二,应用程序的可视化编程部分。因为应用程序是基于对话框的,所以AppWizard生成一个的对话框窗口作为应用程序的主窗口,现在要做的就是在这个对话框中进行界面设计。(1)添加并编辑控件 创建对话框的第一步就是添加控件到对话框中。可以添加到对话框中的控件主要有图片(Picture)、静态文本(Static Text)、编辑框(E

18、dit Box)、成组框(Group Box)、按钮(Button)、复选框(Check Box)、单选钮(Radio Box)、组合框(Combo Box)、列表框(List Box)、水平滚动条(Horizontal Scroll Bar)、垂直滚动条(Vertical Scroll Bar)、微调(Spin)、进展条(Progress)、轨道条(Slider)、热键(Hot Key)、列表控件(List Control)、制表控件(Tab Control)和动画(Animate)等。这些控件类型都显示在控件工具栏中。添加控件最简单的方法就是将控件从控件工具栏拖到对话编辑窗口的指定位置后释

19、放鼠标。此外,还可以先从控件工具栏单击要添加的控件类型(如果要添加多个同一类型的控件,则应同时按住Ctrl键),然后将光标移到要添加控件的位置,单击并拖到鼠标,当控件大小满足要求时释放鼠标。添加控件后可以单击来选择要修改的控件,或者使用控件工具栏的选择工具或按住Shift键再单击来选择多个控件,选择控件后,就可以对其进行移动、复制、删除和调整。此外,还可以使用控件的属性窗口来修改控件属性。即将鼠标移到控件上,单击鼠标右键,在弹出的快捷菜单中选择属性命令,显示一个属性窗口,在此窗口中输入控件的ID标识符(这个标识符将成为识别该空间的依据)以及控件的标题。(2)给界面对象链接变量 每个控件实际上就

20、是一个对象,对MFC类库中的函数调用都是通过对象实现的。将鼠标移到要连接变量的控件上,单击鼠标右键,在弹出的快捷菜单中选择Class Wizard命令,Visual C+显示一个MFC Class Wizard的对话框窗口,在此窗口选择Member Variables选项卡。在Control IDs列表框中单击要连接变量的控件的ID号,使之亮度显示,单击右边的Add Variables按钮,设置其变量名、类别及变量类型。这样就把变量加到了该对话框类中。如图4所示。图4 给控件链接变量(3)给控件链接代码 要给控件映射一个消息处理函数,当事件发生时(如“单击该按钮”或编辑框里的内容发生变化时等)

21、,发送一个消息,应用程序收到消息后就执行相应的消息处理函数。首先将鼠标移到控件上,单击鼠标右键,在弹出的快捷菜单中选择Class Wizard命令,Visual C+显示一个MFC Class Wizard的对话框窗口。然后在Object IDs列表里选择要添加消息处理函数的那一控件的ID标识符,在Message列表里选择相应的命令方式。这个命令方式决定用户与用程序之间交互的方式,即用户以何种方式发送消息给应用程序,使其执行相应的消息处理函数。接着单击右边的Add Function按钮。在弹出的窗口Add Member Function中接受建议的函数名,则在Class Wizard窗口的Me

22、mber Function列表框中增加了一个成员函数,如图5所示。最后单击Class Wizard窗口中的Edit Code按钮,此时Visual C+显示源代码文件(.cpp),并将光标停在刚生成的函数处,等待用户定义函数的内容。在函数体中输入要实现的功能代码即可。图5 给控件添加响应函数(3)初始化对话框中的控件 运行所建立的应用程序时,往往要求对话框窗口中的控件有一定的初始功能(如编辑框里有一定的初始值),故可以对函数OnInitDialog()进行代码编辑,此函数中的内容为程序开始运行时需要初始化的相关内容。7ASK数字通信系统的软件实现表1 对话框中个对象的属性对象IDCaption

23、基本输入组合框IDC_STATIC基本输入“学号”编辑框IDC_ID无“噪声强度”编辑框IDC_ Intensity无表2 对话框的控件变量控件名称控件ID对应的控件变量控件变量类型学号IDC_IDnMyIDint噪声强度IDC_IntensitynIntensityint表3 控件对应的响应函数控件名称控件ID响应的消息响应消息的函数学号IDC_IDEN_CHANGEOnChangeId噪声强度IDC_IntensityEN_CHANGEOnChangeIntensity低通滤波器IDC_LpfBN_CLICKEDOnLpf带通滤波器IDC_BpfBN_CLICKEDOnBpf基带信号IDC

24、_BaseSignalBN_CLICKEDOnBaseSignal过低通IDC_PassLpf1BN_CLICKEDOnPassLpf1调制IDC_ModulateBN_CLICKEDOnModulate噪声IDC_NoiseBN_CLICKEDOnNoise信道IDC_ChannelBN_CLICKEDOnChannel过带通IDC_PassBpfBN_CLICKEDOnPassBpf解调IDC_DemodulateBN_CLICKEDOnDemodulate过低通IDC_PassLpf2BN_CLICKEDOnPassLpf2恢复判决IDC_AdjustBN_CLICKEDOnAdjust

25、SigTranmit类的生成及功能在ASK_Pro的主菜单栏中选择插入菜单中的新建类选项,出现一个New Class对话框,在该对话框的Class type中选择Generic Class,在Name中输入类名SigTranmit,单击右边的OK按钮。此时在ASK_Pro项目中生成了一个名为SigTranmit的类,该类用于实现ASK数字通信系统的全过程,包括发送端对信号进行编码、滤波(过低通滤波器)、和调制,信号传输的过程(即过信道),和接收端对信号的滤波(过带通滤波器)、解调、滤波(过低通滤波器)、和恢复判决。在SigTranmit.h中定义SigTranmit类的两个int类型的私有数据

26、成员myID和myIntensity。它们分别分别为该ASK数字通信系统中将要传输的信号及信道中噪声的强度,需要用户设置,即将它们同对话框中用来接收用户输入的学号信息和噪声强度信息的控件变量nMyID和nIntensity连接起来,将nMyID的值赋給myID,将nIntensity的值赋給myIntensity。SigTranmit.h中还定义了三个int 类型和十二个float类型的私有数据成员,具体如下所示:Int c:用来存放窗函数选择结果的变量。int S016:用来存放在Basesignal函数中对数字信息编码后的信号。int S116: 用来存放在Adjust函数中对信号抽样取平

27、均后的信号。float Mod16*M:用来存放生成的载波信号。float Sa16*M:用来存放通过系统中每一个环节后的信号。float Sal16*M: 用来存放在 Basesignal函数对信号进行采样后的信号。float AR16*M:用来存放在Dft函数中对传入的数组进行DFT运算后的实部。float AI16*M:用来存放在Dft函数中对传入的数组进行DFT运算后的虚部。float A16*M:用来存放在Dft函数中对传入的数组进行DFT运算后的频域幅值。float Hl16*M:用来存放生成的低通滤波器的单位取样响应。float H216*M:用来存放在Idft数中对传入的数组进

28、行IDFT运算后的数据。float No16*M:用来存放生成的噪声float HbN:用来存放带通滤波器的频域单位取样响应。float PN: 用来存放在Idft数中进行IDFT运算所需要的数据。float WnN:用来存放窗函数的单位取样响应。在SigTranmit.h中声明SigTranmit类的二十五个公有成员函数,并在SigTranmit.cpp中对它们进行定义。各函数原型及功能如下所示:CSigTranmit(void):系统自动生成的构造函数,我在函数体内给私有变量c赋值,使得用户没有进行创函数选择时,c有默认值。void SetDigtal(int ID, int Intens

29、ity):该函数用于设置SigTranmit类的共有数据成员myID和myIntensity的初始值。void Basesignal():该函数用于对学号信息进行编码、采样,生成数字基带信号;接着调用void Dft(float x,int m)函数对采样后的信号进DFT运算,得到信号的频域特性。 void Lpf():该函数体里首先用窗函数法生成低通滤波器;接着调用函数void Conv(float array1,float array2)对低通滤波器和数字基带信号的进行卷积运算,实现信号过低通的模拟;最后调用void Dft(float x,int m)函数对过低通滤波器后的信号进行DFT

30、运算,得到信号的频域特性。void modulate():该函数实现对滤波后的信号的振幅调制,并调用void Dft(float x,int m)函数对过调制后的信号进行DFT运算,得到信号的频域特性。void Channel():该函数体里首先调用void Noise(float inten)函数生成高斯白噪声;接着将调制后的信号与高斯白噪声相加以模拟信号过信道的过程,最后调用void Dft(float x,int m)函数对过信道后的信号进行DFT运算,得到信号的频域特性。void Bpf():该函数体里首先用频率采样法生成带通滤波器,并调用函数void Idft(float h)得到其

31、时域的特性;接着调用函数void Conv(float array1,float array2)对带通滤波器和数字信号的卷积,以模拟接收到的信号过带通;最后调用void Dft(float x,int m)函数对过带通滤波器后的信号进行DFT运算,得到信号的频域特性。void Demodulate():该函数首先实现对过带通后的信号进行同步解调;其次调用void Dft(float x,int m)函数对解调后的信号进行DFT运算,得到信号的频域特性。void Adjust():该函数首先实现对解调后的信号进行恢复判决,即取平均后再采样;最后调用void Dft(float x,int m)函数对过带通滤波器后的信号进行DFT运算,得到信号的频域特性。void Dft(float x,int m):该函数实现对传入的参数x的m点DFT运算,得到

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2