课程设计课程名称专业课程设计课题名称基于FPGA的FSK数字调制解调器设计专业电子信息工程班级1381学号201313020109姓名彭坚指导老师贺富朋2016年12月25日等级:电气信息学院专业设计任务书课题名称基于FPGA的FSK数字调制器或解调器设计姓名彭坚专业电子信息工程班级1381学号09指导老师贺富朋课程设计时间2016年12月18日-2016年12月30日(17、18周)教研室意见意见:同意审核人:刘望军一、任务及要求设计任务:利用EDA技术,设计一套FSK数字通信传输系统,要求建立相应的EDA技术实现模型,主要完成2FSK调制器或解调器的编程,仿真与测试。设计要求:1、给出整体设计框图;2、完成各单元电路电路设计,完成仿真,出示仿真结果;3、写出设计报告;二、进度安排第一周:星期一:安排任务、讲课;星期二至星期五:查资料、设计;第二周:星期一至星期二:设计仿真及调试;星期三~星期四:写总结报告;星期五:答辩。三、参考资料1.刘昌华.数字逻辑EDA设计与实践.北京:国防工业出版社。2.苏青,张红.基于CPLD/FPGA技术的数字频率设计.北京:清华大学出版社。3.黄智伟.FPGA系统设计与实践.北京:电子工业出版社。4.张凤言.大规模逻辑器件与数字系统设计.北京:北京航空航天大学出版社。目录一、2FSK设计的基本原理………………………………………………11.12FSK的调制…………………………………………………………11.22FSK的解调…………………………………………………………2二、设计方案……………………………………………………………32.1调制程序……………………………………………………………32.2解调程序……………………………………………………………5三、仿真…………………………………………………………………63.1FSK调制仿真………………………………………………………63.2FSK解调仿真………………………………………………………8四、心得体会……………………………………………………………10一、2FSK调制和解调的基本原理二进制频移键控(2FSK)是由两种不同频率的正弦波来分别表示数字信号0和1,即通过频率的变化来传递信息。它的典型的调制方式有:键控法,直接调频法,差分检波算法。在接收端,2FSK信号的解调方法也有多种,其中同步解调和包络检波法较为常见,此外还有鉴频法,过零检测法等等。1.12FSK调制在2FSK信号中,载波频率随着f1和f2两个不同的频率间的变化因此其表达式为”当基带信号为“”当基带信号为“0)(cos1)cos()(212tAtAteFSK(2-1)即从表达式可以看出,一个2FSK可以写成两个不同载频的2ASK信号的叠加,由此可以看出2FSK的时域表达式可以写为)cos()()cos()()(212nnsnnnsnFSKtnTtgatnTtgate(2-2)式中:g(t)为单个矩形脉冲,宽度等于Tsppan101概率为概率为(2-3)an是an的反码其中,β和θ不携带任何信息,通常可令这两个变量为零,其波形图如下图1.22FSK解调1.2.1相干解调法相干解调法是将已调信号通过与其相同频率的本地载波相乘后再经过低通滤波器恢复原信号,2FSK信号的同步检测法是将已调信号分为两路,两路信号分别经过两路不同频率的带通滤波器,然后分别与两路不同的频率的载波信号相乘,其中f1对应“1”信号频率;f2对应“0”信号的频率,在解调器中,中心频率为f1的带通滤波器只允许中心频率为f1的信号通过,而滤除中心频率为f2的频率的信号;同时,中心频率为f2的带通滤波器只允许中心频率为f2的信号通过,而滤除中心频率为f1的频率的信号通过。【5】图2-4显示了2FSK信号的同步解调过程图。1.2.2非相干解调法非相干解调法即利用包络检波器从已调信号的波形的幅度中提取调制信号,我们说过,2FSK可以看做频率不同的两个2ASK信号的叠加而成,对于2ASK信号可以使用包络检波法,因此2FSK亦适用于这种非相干解调的方式,下图2-5显示了非相干解调的基本解调过程。图2-5二、设计方案2.1调制程序libraryieee;useieee.std_logic_arith.all;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityPPPL_FSKisport(clk:instd_logic;start:instd_logic;x:instd_logic;y:outstd_logic);endPPPL_FSK;architecturebehavofPPPL_FSKissignalq1:integerrange0to15;signalq2:integerrange0to3;signalf1,f2:std_logic;beginprocess(clk)beginifclk'eventandclk='1'thenifstart='0'thenq1=0;elsifq1=7thenf1='1';q1=q1+1;elsifq1=15thenf1='0';q1=0;elsef1='0';q1=q1+1;endifendif;endprocess;process(clk)beginifclk'eventandclk='1'thenifstart='0'thenq2=0;elsifq2=0thenf2='1';q2=q2+1;elsifq2=1thenf2='0';q2=0;elsef2='0';q2=q2+1;endif;endif;endprocess;process(clk,x)beginifclk'eventandclk='1'thenifx='0'theny=f1;elsey=f2;endif;endif;endprocess;endbehav;2.2解调程序libraryieee;useieee.std_logic_arith.all;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityDL_FSKisport(clk:instd_logic;start:instd_logic;x:instd_logic;y:outstd_logic);endDL_FSK;architecturebehavofDL_FSKissignalq:integerrange0to15;signalxx:std_logic;signalm:integerrange0to5;beginprocess(clk)beginifclk'eventandclk='1'thenxx=x;ifstart='0'thenq=0;elsifq=15thenq=0;elseq=q+1;endif;endif;endprocess;process(xx,q)beginifq=15thenm=0;elsifq=10thenifm=3theny='0';elsey='1';endif;elsifxx'eventandxx='1'thenm=m+1;endif;endprocess;endbehav;三、仿真3.12FSK信号的调制波形仿真工程编译通过后,有必要对其功能和时序性进行详细的仿真测试,已验证设计结果是否满足设计要求。整个时序仿真测试流程有,建立波形文件、输入信号、设置波形参数编辑输入信号、波形文件存盘、运行仿真器和分析仿真波形等步骤。[1]建立仿真波形文件。即选择File菜单的New选项,在弹出的文件类型编辑对话框中,选择OtherFiles中的VectorWeaveformFile项,单击OK按钮,即出现波形文件窗口。[2]设置仿真时间区域。对于时序仿真测试来说,将仿真时间设置在一个合理时间区域是十分重要的,一般视实际情况具体而定。本设计调制部分将仿真时间区域设为6us、周期为40ns其设计步骤实在Edit菜单中选择EndTime,在弹出的Time处填上6,同理在GrideSize中Timeperiod输入40ns,单击OK按钮。[3]输入各工程信号的节点。即选择View菜单中的UtilityWindows项的NodeFinder,即可弹出如图3-6所示的对话框,在此对话框Filter项中选Pins:all&Registers:Post-fitting,然后单击List按钮,于是在下方的NodesFound窗口中出现设计中的PPPL_FSK工程的所有端口的引脚注明。用鼠标将时钟信号节点clk、start、x、q1、f1、q2、f2和y分别拖到波形编辑窗口,如下图所示。图3-62FSK调制波形编辑器输入信号窗口[4]设计信号波形,首先单击左侧的全屏显示按钮,使之处于适当的位置。单击时钟信号clk使之变成蓝色条,再单击右键,选择Value设置中的CountValue项,设置clk为连续变化的二进制数值,初始值为0,。单击start使之成为蓝色,再单击右键,选择Value设置中的ForcingHigh项,使得start变成高电平信号。单击x使之变成蓝色,再单击WaveformEditing按钮,把x变成高低电平连续变化的信号。[5]文件存盘。选择File中的SaveAs项,将波形文件以默认名PPPL_FSK.vwf存盘即可。[6]所有设置完毕后,即可启动仿真器Processing/startsimulation直到出现Simulationwassuccessful,仿真结束。仿真波形输出文件PPPL_FSKSimulationReport将自动弹出仿真图形。注意,Quartus‖的仿真波形文件中,波形编辑文件与波形仿真报告输出文件是分开的。图3-7显示了2FSK信号的调制仿真结果。图3-72FSK信号的调制仿真结果图3.22FSK信号的解调波形仿真[1]建立仿真波形文件。即选择File菜单的New选项,在弹出的文件类型编辑对话框中,选择OtherFiles中的VectorWeaveformFile项,单击OK按钮,即出现波形文件窗口。[2]设置仿真时间区域。对于时序仿真测试来说,将仿真时间设置在一个合理时间区域是十分重要的,一般视实际情况具体而定。本设计调制部分将仿真时间区域设为6us、周期为40ns其设计步骤实在Edit菜单中选择EndTime,在弹出的Time处填上6,同理在GrideSize中Timeperiod输入40ns,单击OK按钮。[3]输入各工程信号的节点。即选择View菜单中的UtilityWindows项的NodeFinder,即可弹出下图所示的对话框,在此对话框Filter项中Pins:allRegisters:Post-fitting,然后单击List按钮,于是在下方的NodesFound窗口中出现设计中的DL_FSK工程的所有端口的引脚明。用鼠标将时钟信号节点clk、start、x、q、y、xx、m分别拖到波形编辑窗口,如图3-14所示。图3-14解调波形编辑窗口[4]设计信号波形,首先单击左侧的全屏显示按钮,使之处于适当的位置。单击时钟信号clk使之变成蓝色条,再单击右键,选择Value设置中的CountValue项,设置clk为连续变化的二进制数值,初始值为0。单击start使之成为蓝色条,再单击右键,选择Value设置中的ForcingHigh项,使得start变成高电平信号。单击x使之变成蓝色条,再单击WaveformEditing按钮,把x变成高低电平连续变化的信号。[5]文件存盘。选择File中的SaveAs项,将波形文件以默认名DL_FSK.vwf存盘即可。[6]所有设置完毕后,即可气筒仿真器Processing/startsimulation直到出现Simulationwassuccessful,仿真结束。仿真波形输出文件DL_F