欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于FPGA的FSK调制与解调有详细代码和注释毕业设计.docx

    • 资源ID:10798130       资源大小:1.13MB        全文页数:32页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于FPGA的FSK调制与解调有详细代码和注释毕业设计.docx

    1、基于FPGA的FSK调制与解调有详细代码和注释毕业设计基于FPGA的FSK调制与解调有详细代码和注释毕业设计第一章 绪论在当今高度信息化的社会,信息和通信已成为现代社会的“命脉”。 信息作为一种资源,只有通过广泛地传播与交流,才能产生利用价值,促进社会成员之间的合作,推动社会生产力的发展,创造出巨大的经济效益。而通信作为传输信息的手段或方式,与计算机技术相互融合,已成为21世纪国际社会和世界经济发展的强大推动力。通信的目的就是从一方向另一方传送信息,给对方以信息,但是消息的传送一般都不是直接的,它必须借助于一定形式的信号才能便于远距离快速传输和进行各种处理。虽然基带信号可以直接传输,但是目前大

    2、多数信道不适合传输基带信号。现有通信网的主体为传输模拟信号而设计的,基带数字信号不能直接进入这样的通信网。基带信号一般都包含有频率较低,甚至是直流的分量,很难通过有限尺寸的天线得到有效辐射,因而无法利用无线信道来直接传播。对于大量有线信道,由于线路中多半串接有电容器或并接有变压器等隔直流元件,低频或直流分量就会受到很大限制。因此,为了使基带信号能利用这些信道进行传输,必须使代表信息的原始信号经过一种变换得到另一种新信号,这种变换就是调制。在无线通信中和其他大多数场合,调制一词均指载波调制。载波调制,就是用调制信号去控制载波参数的过程,使载波的某一个或某几个参数按照调制信号的规律而变化。调制信号

    3、是指来自信源的消息信号(基带信号),这些信号可以是模拟的,也可以是数字的。未受调制的周期性振荡信号称为已调信号,它可以是正弦波,也可以是非正弦波(如周期性脉冲序列)。载波调制后称为已调信号,它包含有调制信号的全部特征。而解调(也称检波)则是调制的逆过程,其作用是将已调信号中的调制信号恢复出来。二进制数字调制所用调制信号由代表“0”“1”的数字信号脉冲序列组成。因此,数字调制信号也称为键控信号。二进制振幅调制、频率调制和相位调制分别称为振幅键控(ASK)、频移键控(FSK)、相移键控(PSK)。数字调制产生模拟信号,其载波参量的离散状态是与数字数据相对应的,这种信号适宜于在带通型的模拟信道上传输

    4、。频移键控是利用载波的频率变化来传输信息的,其中最简单的一种方式是二进制频移键控(2FSK)调制,它是继振幅键控信号之后出现比较早的一种调制方式。由于它的抗衰减性能优于ASK,设备又不算复杂,实现也比较容易,所以一直在很多场合,例如在中低速数据传输,尤其在有衰减的无线信道中广泛应用。二进制频移键控(2FSK)用靠近在载波的两个不同频率表示两个二进制数。FSK信号有两种产生方法:载波调频法和频率选择法。载波调频法产生的是相位连续的FSK信号,相位连续FSK信号一般由一个振荡器产生,用基带信号改变振荡器的参数,使震荡频率发生变化,这时相位是连续的。频率选择法一般是相位不连续的FSK信号,相位不连续

    5、的FSK信号一般由两个不同频率的振荡器长生,由基带信号控制着两个频率信号的输出。由于这两个振荡器是相互独立的因此在转换或相反的过程中,不能保证相位的连续。传统的FSK调制解调器采用“集成电路+连线”的硬件实现方式进行设计,集成块多、连线复杂且体积较大,特别是相干解调需要提取载波,设备相对比较复杂,成本高。本文基于FPGA芯片,采用VHDL语言,利用层次化、模块化设计方法,提出了一种2FSK调制解调器的实现方法。VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,支持从系统级到门级所有层的设计。进行逻辑电路设计时,不需考虑特定电路制造工艺的影响,其设计覆盖所有的逻辑电路形式。

    6、从而有效的缩小了系统体积,提高了可靠性,并具有良好的可移植性。第二章EDA技术简介EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。应用可编程逻辑器件(Programmable Logic Dev

    7、ice, PLD)实现数字系统设计和单片系统的设计2,是目前利用EDA技术设计数字系统的潮流。这种设计方法以数字系统设计软件为工具,将传统数字系统设计中的搭建调试用软件仿真取代,对计算机上建立的系统模型,用测试码或测试序列测试验证后,将系统实现在PLD芯片或专用集成电路上,这样最大程度地缩短了设计和开发时间,降低了成本,提高了系统的可靠性。利用EDA技术进行电子系统的设计,具有以下几个特点:(1) 用软件的方式设计硬件;(2) 用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;(3) 设计过程中可用有关软件进行各种仿真;(4) 系统可现场编程,在线升级;(5) 整个系统可集成在

    8、一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势。2.1、Quartus II简介Quartus II是Altera公司自行设计的CAE软件平台,提供了完整的多平台设计环境,能满足各种特定设计的要求,是单片可编程系统(SOPC)设计的综合环境性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模块设计提供了集成综合环境。QuartusII可以在多钟平台上运行,其图形界面丰富,加上完整的、可即时访问的在线文档,使设计人员可以轻松地掌握软件的使用。2.1.1、QuartusII开发系统的特点(1)、界面开放Quartus II虽然是Altera公

    9、司设计的EDA软件,但它可以与其他工业便准的设计输入、综合与校验工具想连接,设计人员可以使用Altera或标准EDA工具设计输入工具来建立逻辑设计,用Quartus II编译器(Compiler)对Altera器件设计进行编译,并使用Altera或其他EDA校验工具进行器件或扳级仿真。目前,Quartus II支持与Candence、Exemplarlogic、Metro Graphics、Synopsys等公司所提供的EDA工具接口。(2)、与结构无关Quartus II系统的核心编译器支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、

    10、Classic、Stratix II等可编程逻辑器件系列,提供了与结构无关的可编程逻辑环境。Quartus II的编译器还提供了强大的逻辑综合与优化功能,使用户可以容易地把设计集成到器件中。(3)、丰富的设计库Quartus II提供丰富的库单元供设计者调用,其中包括74系列的全部器件和其他多种逻辑功能部件,调用库元件进行设计,可以大大减轻设计人员的工作量,缩短设计周期。此外,Quartus II含有许多用来构建复杂系统的参数化宏功能模块和LPM模块,它们可以与QuartusII普通设计文件一起使用,使非专业设计人员完成SOPC设计成为可能。(4)、模块化工具 设计人员可以从各种设计输入、处理

    11、和校验选项中进行选择,从而使Quartus II可以满足不同用户的需要,根据需要,还可以添加新功能。2.2、VHDL语言简介数字系统的设计输入方式有多种,通常是由线信号和表示基本设计单元的符号连在一起组成线路图,符号取自器件库,通过信号(或线条)连接在一起,信号使符号互连,这样设计的系统形成的设计文件是若干张电路元结构图,在图中详细标注了各逻辑单元、器件的名称和相互间的信号连接关系。对于小系统,这种原理电路图只要几十至几百张。但如果系统比较大,这样的原理电路图可能要几千张、几万张甚至更多。因此,人们考虑使用硬件描述语言进行硬件电路设计。VHDL的英文全名是Very-High-Speed Int

    12、egrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE代了原有的非标准的硬件描述语言和美国国防部确认为标准硬件描述语言。其语句结构上吸取了Fortran和C等计算机高级语言的语句,只要具备高级语言编程技能和数字逻辑电路的设计基础,就可以在较短时间内学会VHDL语言。2.2.1、VHDL 语言的特点(1)VHDL 语言功能强大,设计方式多样 VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持

    13、同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法。 (2)VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也

    14、支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3)VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。 (4)VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。 (5)VH

    15、DL 语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。2.2.2、VHDL语言的基本结构一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路,或者是一个计数器,也可以是一个CPU。一般情况下,一个完整的VHDL语言程序至少要包含实体、结构体和程序包三个部分。第一部分是程序包,程序包是用VHDL语言编写

    16、的共享文件,定义在设计结构体和实体中将用到的常数、数据类型、子程序和设计好的电路单元等,放在文件目录为IEEE的程序包库中。第二部分是程序实体,实体给出电路单元的外部输入/输出接口信号和引脚信息,程序的实体名称是任意取的,但必须与VHDL程序的文件名称相同。实体的标识符是entity,实体以entity开头,以end结束。第三部分是程序的结构体,具体描述电路内部结构和逻辑功能。结构体有三种描述方式,分别是行为(BEHAVIOR)描述方式、数据流(DATAFLOW)描述方式和结构(STRUCTURE)描述方式。结构体以标识符architecture开头,以end结尾。结构体的名称是任意取的。2.

    17、3、本章小结 随着EDA技术的普及,硬件设计开发变得越来越方便、快捷。所以了解并掌握EDA技术的理论和熟练使用相应的设计工具,更显得必不可少。本人通过翻阅各种资料,如:机械工业出版社出版的EDA与数字系统设计一书,详细的了解了EDA技术的发展过程并知道了目前较为流行的设计工具有哪些,为本次毕业设计做好了必要准备,并初步制定了设计方案。第三章 2FSK调制解调基本原理3.1、2FSK的调制原理频移键控是利用载波的频率变化来传递数字信息。在2FSK中,载波的频率随二进制基带信号在和两个频率点间变化。“1”对应于载波频率,“0”对应载波频率,但是它们的振幅和初始相位不变化。其表达式为1: (3-1)

    18、其波形图如下:图31 2FSK调制2FSK信号的产生方法主要有两种。一种可以常采用模拟调频电路来实现;另一种可以采用键控法来实现,既在二进制基带矩形脉冲序列的控制下通过开关电路对两个不同的独立频率源进行选通,使其在每一个码元周期Ts输出f1或f2两个载波之一。这两种方法产生的2FSK信号的差异在于:由调频法产生的2FSK信号在相邻码元之间的相位是连续变化的。而键控法产生的2FSK信号,是由电子开关在两个独立的频率源之间转换形成,故相邻码元之间的相位不一定连续。图32 键控法产生2FSK信号原理图3.2、2FSK的解调原理数字频率键控(FSK)信号常用的解调方法有很多种如:(1)、同步(相干)解

    19、调法在同步解调器中,有上、下两个支路,输入的 FSK信号经过和两个带通滤波器后变成了上、下两路ASK信号,之后其解调原理与ASK类似,但判决需对上、下两支路比较来进行。假设上支路低通滤波器输出为x1,下支路低通滤波器输出为x2,则判决准则是: (32)图33 相干解调法原理框图接收信号经过并联的两路带通滤波器进行滤波与本地相干载波相乘和包络检波后,进行抽样判决,判决的准则是比较两路信号包络的大小。假设上支路低通滤波器输出为,下支路低通滤波器输出为,则判决准则是:如果上支的信号包络较大,则判决为“1”;反之,判决为收到为“0”。 (2)、2FSK滤波非相干解调 输入的FSK中频信号分别经过中心频

    20、为、的带通滤波器,然后分别经过包络检波,包络检波的输出在t=kTb时抽样(其中k为整数),并且将这些值进行比较。根据包络检波器输出的大小,比较器判决数据比特是1还是0。图34 滤波非相干解调原理框图3.3、本章小结 FSK是数字通信中不可或缺的一种调试方式。其优点是抗干扰能力较强,不受信道参数变化的影响,因此FSK特别适合应用于衰落信道;缺点是占用频带较宽,频带利用率较低。目前,调频体制主要应用于中、低速数据传输中。随着新技术的应用,一些新型调制系统(如QAM)也随之出现,同时FSK的实现方法也有所革新,或许今后我们会迎来软件无线电的时代。第四章 基于VHDL语言的2FSK调制解调设计 图41

    21、为本调制解调设计的系统顶层。其中实体DIV为分频器,将频率为f的时钟信号clk,分为频率为1/2f的信号f1,与频率为1/12f的信号f2。实体signal1是一个信号发生器,循环产生110的数字信号。实体FSKmod是2FSK信号的调制器,通过信号发生器的date基带信号将频率为f1和f2的载波调制成2FSK信号。实体FSKdemod是2FSK信号的解调器,将收到的2FSK信号解调为基带信号。图41 调制解调系统框图 4.1、2FSK调制器设计4.1.1、基于VHDL语言的调制程序library ieee; -IEEE标准库use ieee.std_logic_arith.all;程序包 u

    22、se ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity FSKmod is - FSKmod是实体名称port(clk :in std_logic; -系统时钟(输入) start :in std_logic; -复位信号(输入) x :in std_logic; -基带信号(输入) f1 :in std_logic; -载波信号f1(输入) f2 :in std_logic; -载波信号f2(输入) fsk :out std_logic); -已调信号(输出)end FSKmod;architecture behav

    23、 of FSKmod is - behav是结构体名begin -此进程完成对基带信号的FSK调制process(clk,x) beginif clkevent and clk=1 then -下列操作都在时钟上升沿进行if start=0 then fsk=0; -当start1时fsk开始输出信号 elsif x=0 then fsk=f1; -当输入的基带信号x=0时,输出的调制信号y为f1 else fsk=f2; -当输入的基带信号x=1时,输出的调制信号y为f2 end if;end if;end process;end behav;此程序完成FSK信号的调制过程,实体共有6个端口

    24、,其中输入端口有5个,分别为:时钟输入clk、复位信号输入start、基带数据信号输入x、载波f1输入和载波f2输入。输出端口只有1个,为已调信号的输出端fsk。程序逻辑为:当且仅当start为1时,实体开始工作,否则信号输出端输出0。实体开始工作后,每当检测到一个时钟上升沿时,判断输入的基带数据信号,当信号为0时,将载波信号f1输出到输出端口fsk,当信号为1时,将载波信号f2输出到端口fsk。4.2、2FSK解调器设计4.2.1、基于VHDL语言的解调程序library ieee; -IEEE标准库程序包 use ieee.std_logic_arith.all; use ieee.std

    25、_logic_1164.all;use ieee.std_logic_unsigned.all;entity FSKdemod is - FSKdemod是实体名称generic -全局常量声明( PulseNum_TH : integer := 5; -已调信号判决值 CntNum_Bclk : integer := 11; -滑窗计数器最大值);port(clk :in std_logic; -系统时钟(输入) start :in std_logic; -复位信号(输入) x : in std_logic; -接收到的已调信号(输入) y : out std_logic; -解调后信号(输

    26、出) b_clk : out std_logic -数据时钟(输出),分析时用 ); end FSKdemod;architecture behav of FSKdemod is - behav是结构体名signal q :integer range 0 to CntNum_Bclk; -滑窗控制计数器signal q1:integer range 0 to CntNum_Bclk; -滑窗计数器1signal q2:integer range 0 to CntNum_Bclk; -滑窗计数器2signal q3:integer range 0 to CntNum_Bclk; -滑窗计数器3

    27、signal q12:integer range 0 to CntNum_Bclk; -滑窗计数器12signal m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12 :integer range 0 to 15;-已调信号脉冲计数器m1至m12,计数范围0至15signal y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12 :std_logic; -滑窗计数器q1至q12对应的解调输出、y1至y12signal x_dly1,x_dly2: std_logic; -信号延时寄存器beginprocess(clk) -此程序完成滑窗控制计数

    28、器0至11的循环计数,及数据时钟的输出beginif clkevent and clk=1 then -下列操作都在时钟上升沿进行 if start=0 then q=0; -当start1时计数器,q开始计数 elsif q=11 then q=0; -当q=11时,计数器清零 else q=q+1; -其余时候计数器1 end if; end if; if q= 5 then -当q= 5时,b_clk输出为1否则为0 b_clk =1; else b_clk = 0; end if;end process;process(clk,q,start) -此程序使滑窗计数器q1至q12分别进行

    29、循环计数begin if start=0 then q1=0; q2=0; q3=0; q4=0; q5=0; q6=0; q7=0; q8=0; q9=0; q10=0; q11=0; q12=0; -当start=0时,计数器清零 elsif clkevent and clk=1 then -下列操作都在时钟上升沿进行 if(q=0)then q1 = 0; -当滑窗控制计数器为0时,滑窗计数 else 器q1清零 q1=q1+1; -其它时候进行1计数 end if; if(q=1)then q2=0;- x2=x; -当滑窗控制计数器为1时,滑窗计数 else 器q2清零 q2=q2+

    30、1; -其它时候进行1计数 end if; 省略部分与前后相同,既完成滑窗计数器q3至q11的分别循环计数 if(q=11)then q12 = 0; -当滑窗控制计数器为11时,滑窗计数 else 器q12清零 q12=q12+1; -其它时候进行1计数 end if; end if;end process; process(x,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12) begin -此进程完成各个滑窗的判决输出,既解调if start=0 then -当start=0将判决计数器m1至m12清零m1=0; m2=0; m3=0; m4=0; m5=0; m6=0; m7=0; m8=0; m9=0; m10=0; m11=0; m12=0; elsif clkevent and clk=1 then -下列操作都在时钟上升沿进行 x_dly1 = x; -将接收到的已调信号赋值给x_dly1 x_dly2 =x_dly1; -将x_dly1赋值给x_dly2 if x_dly1 =1 and x_dly2 =0 -如果x_dly1 =1且x_dly2 =0


    注意事项

    本文(基于FPGA的FSK调制与解调有详细代码和注释毕业设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开