基于FPGA的FSK调制与解调有详细代码和注释毕业设计.docx
- 文档编号:8810402
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:33
- 大小:1.13MB
基于FPGA的FSK调制与解调有详细代码和注释毕业设计.docx
《基于FPGA的FSK调制与解调有详细代码和注释毕业设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的FSK调制与解调有详细代码和注释毕业设计.docx(33页珍藏版)》请在冰豆网上搜索。
基于FPGA的FSK调制与解调有详细代码和注释毕业设计
基于FPGA的FSK调制与解调有详细代码和注释毕业设计
目录
摘要I
AbstractII
第一章绪论1
第二章EDA技术简介3
2.1、QuartusII简介3
2.1.1、QuartusII开发系统的特点3
2.2、VHDL语言简介4
2.2.1、VHDL语言的特点4
2.2.2、VHDL语言的基本结构5
2.3、本章小结6
第三章2FSK调制解调基本原理7
3.1、2FSK的调制原理7
3.2、2FSK的解调原理8
3.3、本章小结9
第四章基于VHDL语言的2FSK调制解调设计10
4.1、2FSK调制器设计10
4.1.1、基于VHDL语言的调制程序10
4.2、2FSK解调器设计12
4.2.1、基于VHDL语言的解调程序12
4.3、分频器与信号发生器设计17
4.3.1、基于VHDL语言的分频程序17
4.3.2基于VHDL语言的信号发生器程序18
4.4、本章小结20
第五章基于VHDL语言的2FSK调制解调的仿真21
5.1、2FSK调制器波形仿真21
5.2、2FSK解调器波形仿真22
5.3、分频器与信号发生器波形仿真23
5.3.1、分频器波形仿真23
5.3.2、信号发生器波形仿真23
5.4、本章小结23
第六章上机测试25
6.1、程序下载25
6.2、波形测试25
6.3、本章小结27
总结28
参考文献29
致谢30
第一章绪论
在当今高度信息化的社会,信息和通信已成为现代社会的“命脉”。
信息作为一种资源,只有通过广泛地传播与交流,才能产生利用价值,促进社会成员之间的合作,推动社会生产力的发展,创造出巨大的经济效益。
而通信作为传输信息的手段或方式,与计算机技术相互融合,已成为21世纪国际社会和世界经济发展的强大推动力。
通信的目的就是从一方向另一方传送信息,给对方以信息,但是消息的传送一般都不是直接的,它必须借助于一定形式的信号才能便于远距离快速传输和进行各种处理。
虽然基带信号可以直接传输,但是目前大多数信道不适合传输基带信号。
现有通信网的主体为传输模拟信号而设计的,基带数字信号不能直接进入这样的通信网。
基带信号一般都包含有频率较低,甚至是直流的分量,很难通过有限尺寸的天线得到有效辐射,因而无法利用无线信道来直接传播。
对于大量有线信道,由于线路中多半串接有电容器或并接有变压器等隔直流元件,低频或直流分量就会受到很大限制。
因此,为了使基带信号能利用这些信道进行传输,必须使代表信息的原始信号经过一种变换得到另一种新信号,这种变换就是调制。
在无线通信中和其他大多数场合,调制一词均指载波调制。
载波调制,就是用调制信号去控制载波参数的过程,使载波的某一个或某几个参数按照调制信号的规律而变化。
调制信号是指来自信源的消息信号(基带信号),这些信号可以是模拟的,也可以是数字的。
未受调制的周期性振荡信号称为已调信号,它可以是正弦波,也可以是非正弦波(如周期性脉冲序列)。
载波调制后称为已调信号,它包含有调制信号的全部特征。
而解调(也称检波)则是调制的逆过程,其作用是将已调信号中的调制信号恢复出来。
二进制数字调制所用调制信号由代表“0”“1”的数字信号脉冲序列组成。
因此,数字调制信号也称为键控信号。
二进制振幅调制、频率调制和相位调制分别称为振幅键控(ASK)、频移键控(FSK)、相移键控(PSK)。
数字调制产生模拟信号,其载波参量的离散状态是与数字数据相对应的,这种信号适宜于在带通型的模拟信道上传输。
频移键控是利用载波的频率变化来传输信息的,其中最简单的一种方式是二进制频移键控(2FSK)调制,它是继振幅键控信号之后出现比较早的一种调制方式。
由于它的抗衰减性能优于ASK,设备又不算复杂,实现也比较容易,所以一直在很多场合,例如在中低速数据传输,尤其在有衰减的无线信道中广泛应用。
二进制频移键控(2FSK)用靠近在载波的两个不同频率表示两个二进制数。
FSK信号有两种产生方法:
载波调频法和频率选择法。
载波调频法产生的是相位连续的FSK信号,相位连续FSK信号一般由一个振荡器产生,用基带信号改变振荡器的参数,使震荡频率发生变化,这时相位是连续的。
频率选择法一般是相位不连续的FSK信号,相位不连续的FSK信号一般由两个不同频率的振荡器长生,由基带信号控制着两个频率信号的输出。
由于这两个振荡器是相互独立的因此在转换或相反的过程中,不能保证相位的连续。
传统的FSK调制解调器采用“集成电路+连线”的硬件实现方式进行设计,集成块多、连线复杂且体积较大,特别是相干解调需要提取载波,设备相对比较复杂,成本高。
本文基于FPGA芯片,采用VHDL语言,利用层次化、模块化设计方法,提出了一种2FSK调制解调器的实现方法。
VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,支持从系统级到门级所有层的设计。
进行逻辑电路设计时,不需考虑特定电路制造工艺的影响,其设计覆盖所有的逻辑电路形式。
从而有效的缩小了系统体积,提高了可靠性,并具有良好的可移植性。
第二章EDA技术简介
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
应用可编程逻辑器件(ProgrammableLogicDevice,PLD)实现数字系统设计和单片系统的设计[2],是目前利用EDA技术设计数字系统的潮流。
这种设计方法以数字系统设计软件为工具,将传统数字系统设计中的搭建调试用软件仿真取代,对计算机上建立的系统模型,用测试码或测试序列测试验证后,将系统实现在PLD芯片或专用集成电路上,这样最大程度地缩短了设计和开发时间,降低了成本,提高了系统的可靠性。
利用EDA技术进行电子系统的设计,具有以下几个特点:
(1)用软件的方式设计硬件;
(2)用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;(3)设计过程中可用有关软件进行各种仿真;(4)系统可现场编程,在线升级;(5)整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋势。
2.1、QuartusII简介
QuartusII是Altera公司自行设计的CAE软件平台,提供了完整的多平台设计环境,能满足各种特定设计的要求,是单片可编程系统(SOPC)设计的综合环境性环境和SOPC开发的基本设计工具,并为AlteraDSP开发包进行系统模块设计提供了集成综合环境。
QuartusII可以在多钟平台上运行,其图形界面丰富,加上完整的、可即时访问的在线文档,使设计人员可以轻松地掌握软件的使用。
2.1.1、QuartusII开发系统的特点
(1)、界面开放
QuartusII虽然是Altera公司设计的EDA软件,但它可以与其他工业便准的设计输入、综合与校验工具想连接,设计人员可以使用Altera或标准EDA工具设计输入工具来建立逻辑设计,用QuartusII编译器(Compiler)对Altera器件设计进行编译,并使用Altera或其他EDA校验工具进行器件或扳级仿真。
目前,QuartusII支持与Candence、Exemplarlogic、MetroGraphics、Synopsys等公司所提供的EDA工具接口。
(2)、与结构无关
QuartusII系统的核心编译器支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、Classic、StratixII等可编程逻辑器件系列,提供了与结构无关的可编程逻辑环境。
QuartusII的编译器还提供了强大的逻辑综合与优化功能,使用户可以容易地把设计集成到器件中。
(3)、丰富的设计库
QuartusII提供丰富的库单元供设计者调用,其中包括74系列的全部器件和其他多种逻辑功能部件,调用库元件进行设计,可以大大减轻设计人员的工作量,缩短设计周期。
此外,QuartusII含有许多用来构建复杂系统的参数化宏功能模块和LPM模块,它们可以与QuartusII普通设计文件一起使用,使非专业设计人员完成SOPC设计成为可能。
(4)、模块化工具
设计人员可以从各种设计输入、处理和校验选项中进行选择,从而使QuartusII可以满足不同用户的需要,根据需要,还可以添加新功能。
2.2、VHDL语言简介
数字系统的设计输入方式有多种,通常是由线信号和表示基本设计单元的符号连在一起组成线路图,符号取自器件库,通过信号(或线条)连接在一起,信号使符号互连,这样设计的系统形成的设计文件是若干张电路元结构图,在图中详细标注了各逻辑单元、器件的名称和相互间的信号连接关系。
对于小系统,这种原理电路图只要几十至几百张。
但如果系统比较大,这样的原理电路图可能要几千张、几万张甚至更多。
因此,人们考虑使用硬件描述语言进行硬件电路设计。
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE代了原有的非标准的硬件描述语言和美国国防部确认为标准硬件描述语言。
其语句结构上吸取了Fortran和C等计算机高级语言的语句,只要具备高级语言编程技能和数字逻辑电路的设计基础,就可以在较短时间内学会VHDL语言。
2.2.1、VHDL语言的特点
(1)VHDL语言功能强大,设计方式多样
VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。
同时,它还具有多层次的电路设计描述功能。
此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。
VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。
(2)VHDL语言具有强大的硬件描述能力
VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。
同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。
VHDL语言的强大描述能力还体现在它具有丰富的数据类型。
VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。
(3)VHDL语言具有很强的移植能力
VHDL语言很强的移植能力主要体现在:
对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。
(4)VHDL语言的设计描述与器件无关
采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。
这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。
当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。
(5)VHDL语言程序易于共享和复用
VHDL语言采用基于库(library)的设计方法。
在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。
这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。
2.2.2、VHDL语言的基本结构
一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路,或者是一个计数器,也可以是一个CPU。
一般情况下,一个完整的VHDL语言程序至少要包含实体、结构体和程序包三个部分。
第一部分是程序包,程序包是用VHDL语言编写的共享文件,定义在设计结构体和实体中将用到的常数、数据类型、子程序和设计好的电路单元等,放在文件目录为IEEE的程序包库中。
第二部分是程序实体,实体给出电路单元的外部输入/输出接口信号和引脚信息,程序的实体名称是任意取的,但必须与VHDL程序的文件名称相同。
实体的标识符是entity,实体以entity开头,以end结束。
第三部分是程序的结构体,具体描述电路内部结构和逻辑功能。
结构体有三种描述方式,分别是行为(BEHAVIOR)描述方式、数据流(DATAFLOW)描述方式和结构(STRUCTURE)描述方式。
结构体以标识符architecture开头,以end结尾。
结构体的名称是任意取的。
2.3、本章小结
随着EDA技术的普及,硬件设计开发变得越来越方便、快捷。
所以了解并掌握EDA技术的理论和熟练使用相应的设计工具,更显得必不可少。
本人通过翻阅各种资料,如:
机械工业出版社出版的《EDA与数字系统设计》一书,详细的了解了EDA技术的发展过程并知道了目前较为流行的设计工具有哪些,为本次毕业设计做好了必要准备,并初步制定了设计方案。
第三章2FSK调制解调基本原理
3.1、2FSK的调制原理
频移键控是利用载波的频率变化来传递数字信息。
在2FSK中,载波的频率随二进制基带信号在
和
两个频率点间变化。
“1”对应于载波频率,“0”对应载波频率,但是它们的振幅和初始相位不变化。
其表达式为[1]:
(3-1)
其波形图如下:
图3-12FSK调制
2FSK信号的产生方法主要有两种。
一种可以常采用模拟调频电路来实现;另一种可以采用键控法来实现,既在二进制基带矩形脉冲序列的控制下通过开关电路对两个不同的独立频率源进行选通,使其在每一个码元周期Ts输出f1或f2两个载波之一。
这两种方法产生的2FSK信号的差异在于:
由调频法产生的2FSK信号在相邻码元之间的相位是连续变化的。
而键控法产生的2FSK信号,是由电子开关在两个独立的频率源之间转换形成,故相邻码元之间的相位不一定连续。
图3-2键控法产生2FSK信号原理图
3.2、2FSK的解调原理
数字频率键控(FSK)信号常用的解调方法有很多种如:
(1)、同步(相干)解调法
在同步解调器中,有上、下两个支路,输入的FSK信号经过
和
两个带通滤波器后变成了上、下两路ASK信号,之后其解调原理与ASK类似,但判决需对上、下两支路比较来进行。
假设上支路低通滤波器输出为x1,下支路低通滤波器输出为x2,则判决准则是:
(3-2)
图
3-3相干解调法原理框图
接收信号经过并联的两路带通滤波器进行滤波与本地相干载波相乘和包络检波后,进行抽样判决,判决的准则是比较两路信号包络的大小。
假设上支路低通滤波器输出为
,下支路低通滤波器输出为
,则判决准则是:
如果上支的信号包络较大,则判决为“1”;反之,判决为收到为“0”。
(2)、2FSK滤波非相干解调
输入的FSK中频信号分别经过中心频为、的带通滤波器,然后分别经过包络检波,包络检波的输出在t=kTb时抽样(其中k为整数),并且将这些值进行比较。
根据包络检波器输出的大小,比较器判决数据比特是1还是0。
图3-4滤波非相干解调原理框图
3.3、本章小结
FSK是数字通信中不可或缺的一种调试方式。
其优点是抗干扰能力较强,不受信道参数变化的影响,因此FSK特别适合应用于衰落信道;缺点是占用频带较宽,频带利用率较低。
目前,调频体制主要应用于中、低速数据传输中。
随着新技术的应用,一些新型调制系统(如QAM)也随之出现,同时FSK的实现方法也有所革新,或许今后我们会迎来软件无线电的时代。
第四章基于VHDL语言的2FSK调制解调设计
图4-1为本调制解调设计的系统顶层。
其中实体DIV为分频器,将频率为f的时钟信号‘clk’,分为频率为1/2f的信号f1,与频率为1/12f的信号f2。
实体signal1是一个信号发生器,循环产生‘110’的数字信号。
实体FSKmod是2FSK信号的调制器,通过信号发生器的‘date’基带信号将频率为f1和f2的载波调制成2FSK信号。
实体FSKdemod是2FSK信号的解调器,将收到的2FSK信号解调为基带信号。
图4-1调制解调系统框图
4.1、2FSK调制器设计
4.1.1、基于VHDL语言的调制程序
libraryieee;--IEEE标准库
useieee.std_logic_arith.all;
程序包useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityFSKmodis--FSKmod是实体名称
port(clk:
instd_logic;--系统时钟(输入)
start:
instd_logic;--复位信号(输入)
x:
instd_logic;--基带信号(输入)
f1:
instd_logic;--载波信号f1(输入)
f2:
instd_logic;--载波信号f2(输入)
fsk:
outstd_logic);--已调信号(输出)
endFSKmod;
architecturebehavofFSKmodis--behav是结构体名
begin--此进程完成对基带信号的FSK调制
process(clk,x)
begin
ifclk'eventandclk='1'then--下列操作都在时钟上升沿进行
ifstart='0'thenfsk<='0';--当start='1'时fsk开始输出信号
elsifx='0'thenfsk<=f1;--当输入的基带信号x='0'时,输出的调制信号y为f1
elsefsk<=f2;--当输入的基带信号x='1'时,输出的调制信号y为f2
endif;
endif;
endprocess;
endbehav;
此程序完成FSK信号的调制过程,实体共有6个端口,其中输入端口有5个,分别为:
时钟输入clk、复位信号输入start、基带数据信号输入x、载波f1输入和载波f2输入。
输出端口只有1个,为已调信号的输出端fsk。
程序逻辑为:
当且仅当‘start’为‘1’时,实体开始工作,否则信号输出端输出‘0’。
实体开始工作后,每当检测到一个时钟上升沿时,判断输入的基带数据信号,当信号为‘0’时,将载波信号f1输出到输出端口‘fsk’,当信号为‘1’时,将载波信号f2输出到端口‘fsk’。
4.2、2FSK解调器设计
4.2.1、基于VHDL语言的解调程序
libraryieee;--IEEE标准库
程序包useieee.std_logic_arith.all;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityFSKdemodis--FSKdemod是实体名称
generic--全局常量声明
(PulseNum_TH:
integer:
=5;--已调信号判决值
CntNum_Bclk:
integer:
=11;--滑窗计数器最大值
);
port(clk:
instd_logic;--系统时钟(输入)
start:
instd_logic;--复位信号(输入)
x:
instd_logic;--接收到的已调信号(输入)
y:
outstd_logic;--解调后信号(输出)
b_clk:
outstd_logic--数据时钟(输出),分析时用
);
endFSKdemod;
architecturebehavofFSKdemodis--behav是结构体名
signalq:
integerrange0toCntNum_Bclk;--滑窗控制计数器
signalq1:
integerrange0toCntNum_Bclk;--滑窗计数器1
signalq2:
integerrange0toCntNum_Bclk;--滑窗计数器2
signalq3:
integerrange0toCntNum_Bclk;--滑窗计数器3
…………
signalq12:
integerrange0toCntNum_Bclk;--滑窗计数器12
signalm1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12:
integerrange0to15;
--已调信号脉冲计数器m1至m12,计数范围0至15
signaly1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12:
std_logic;
--滑窗计数器q1至q12对应的解调输出、y1至y12
signalx_dly1,x_dly2:
std_logic;--信号延时寄存器
begin
process(clk)--此程序完成滑窗控制计数器0至11的循环计数,及数据时钟的输出
begin
ifclk'eventandclk='1'then--下列操作都在时钟上升沿进行
ifstart='0'thenq<=0;--当start='1'时计数器,q开始计数
elsifq=11thenq<=0;--当q=11时,计数器清零
elseq<=q+1;--其余时候计数器+1
endif;
endif;
ifq<=5then--当q<=5时,b_clk输出为‘1’否则为‘0’
b_clk<='1';
elseb_clk<='0';
endif;
endprocess;
process(clk,q,start)--此程序使滑窗计数器q1至q12分别进行循环计数
begin
ifstart='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'时,计数器清零
elsifclk'eventandclk='1'then--下列操作都在时钟上升沿进行
if(q=0)then
q1<=0;--当滑窗控制计数器为0时,滑窗计数
else器q1清零
q1<=q1+1;--其它时候进行+1计数
endif;
if(q=1)then
q2<=0;--x2<=x;--当滑窗控制计数器为1时,滑窗计数
else器q2清零
q2<=q2+1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA FSK 调制 解调 详细 代码 注释 毕业设计