《基于VHDL语言的2FSK调制解调.doc》由会员分享,可在线阅读,更多相关《基于VHDL语言的2FSK调制解调.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 基于VHDL语言的2FSK调制解调设计课程:CPLD/FPGA设计设计内容:2FSK的调制解调涉及专业:通信工程实验人员:指导教师:刘明珠基于VHDL语言的2FSK调制解调摘要:在数字通信系统中,数字调制与解调技术占有非常重要的地位。本人通过对FSK调制解调的基本原理了解,用VHDL语言实现了2FSK调制解调器的设计,仿真结果表明此设计方案是可行的,系统具有较高的实用性和可靠性。加深了对VHDL语言的了解和掌握,特别是对于通信工程的学生进一步理解通信原理,对提高个人对通信工程的兴趣和动手、思考能力有很大的帮助。一, 实验目的:1, 通过实验加深对VHDL语言基本语句的理解和掌握; 2,培养自
2、主思考独立完成VHDL程序设计的能力; 3,加深学生(尤其通信工程)对所学专业知识的掌握;4,培养学生的专业兴趣和独立思考能力。二, 设计原理:1,FSK频移键控:FSK又称频移键控,它是利用载频频率的变化来传递数字信息。数字调频信号可以分为相位离散和相位连续两种。若两个载频由不同的独立振荡器提供,它们之间的相位互不相关,就称为相位离散的数字调频信号;若两个频率由同一振荡器提供,只是对其中一个载频进行分频,这样产生的两个载频就是相位连续的数字调频信号。本实验中,二进制的基带信号是用两电平来表示的。1对应于载波频率F1,0对应于F2。2,2FSK的调制FSK就是利用载波信号的频率变化来传递数字信
3、息。在2FSK中,载波的频率随二进制基带信号在f1和f2两个频率点之间变化。故其表达式为:所以2FSK的调制波形如下:实现数字频率调制的一般方法有两种, 直接调频法和键控法。直接调频法:即连续调制中的调频(FM) 信号的产生方法,是将输入的基带脉冲去控制一个振荡器的参数而改变振荡频率,这种方法实现容易,输出的波形相位是连续的,但电路的振荡频率稳定性较差。键控法:是用数字信号去控制两个独立振荡器,两个门电路按数字信号的变化规律通断。 3,2FSK的解调2FSK频移键控信号的解调方法有多种,有模拟鉴频法德数字检测法,有非相干解调方法和相干解调方法。然而在数字系统中倡议使用数字检测法较为方便和有效,
4、具体的原理和方法我们将会在第三部分详细介绍。三,研究内容:这一部分我们会详细研究和讨论怎样用数字方式和VHDL语言来实现2FSK的调制和解调。12FSK调制器设计1.1 分频法实现2FSK调制器 在数字系统中我们可以借用调制方法中开闭开关的键控法莱实现2FSK的调制。利用分频器的知识来求取不同频率的两列方波f1,f2来作为信号的载波,通过对信号的检测,判断信号是否为0或1来决定信号f1或f2通过,实现2FSK的调制。实现2FSK调制的原理方框图如图1所示。图1 2FSK调制实现原理框图其中FSK调制的核心部分包括分频器、二选一选通开关等,图中的两个分频器分别产生两路数字载波信号;二选一选通开关
5、的作用是以基带信号作为控制信号,当基带信号为0时,选通载波f1;当基带信号为1时,选通载波f2。从选通开关输出的信号就是数字FSK信号。这里的调制信号为数字信号。22FSK解调器的设计2.1 分频法实现2FSK解调器通过调制过程我们里了解到2FAK利用载波频率的不同来实现信号01的区分和传输,所以我们也同样可以利用传出信号频率的大小来识别原始信号的值,一般情况下我们利用高频来代表信号1时准确度较高,详细的证明在这里不做解释了。 利用信号波形在单位时间内(例如clk信号的n个周期,一般去f1,f2信号周期的最小公倍数)上升沿的次数来测定信号频率。显而易见,只要是在单位时间内上升沿次数高的频率一定
6、就大,次数可能会呈现倍数关系,然后判断决定让次数大的那个单位时间里输出1,反之输出0。实现2FSK解调器的原理方框图如图2所示。图2 2FSK解调实现原理框图。3,2FSK调制解调器整体设计对于2FSK调制解调的整体设计,通过前两个过程的分析就变得十分简单,只要保证两个过程时钟信号一致,且调制的输出信号作为解调的输入信号即可。在整体设计过程中,整体电路如图3所示,其中x为基带信号,y为经过调制解调后的解调信号。图3 2FSK调制解调整体电路。四,源程序代码:1.FSK调制VHDL程序Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_lo
7、gic_arith.all;Use ieee.std_logic_unsigned.all;Entity fsk is Port(clk:in std_logic; Start:in std_logic; x:in std_logic; y:out std_logic);end fsk;architecture behave of fsk is signal q1:integer range 0 to 11; signal q2:integer range 0 to 3; signal f1,f2:std_logic;begin process(clk,start) begin if(clke
8、vent and clk=1)then if(start=0)then q1=0; elsif(q1=5)then f1=1;q1=q1+1; elsif(q1=11)then f1=0;q1=0; else f1=0;q1=q1+1; end if; end if;end process; process(clk,start) begin if(clkevent and clk=1)then if(start=0)then q2=0; elsif(q2=1)then f2=1;q2=q2+1; elsif(q1=3)then f2=0;q2=0; else f2=0;q2=q2+1; end
9、 if; end if;end process;process(clk,x)beginif(clkevent and clk=1)then if(x=1)then y=f1; else y=f2; end if;end if;end process;end behave;2.FSK解调VHDL程序Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_arith.all;Use ieee.std_logic_unsigned.all;Entity fsk2 is Port(clk:in std_logic; Start:in st
10、d_logic; x:in std_logic; y:out std_logic);end fsk2;architecture behave of fsk2 is signal q:integer range 0 to 11; signal xx:std_logic; signal m:integer rang 0 to 4;begin process(clk,start) beginif(clkevent and clk=1)then xx=x; if(start=0)then q=0; elsif(q=11)then q=0; else q=q+1; end if;end if; end
11、process; process(xx,q) begin if(q=11)then m=0;elseif(q=10)then if(m2)theny=0; else y=1;end if; end if;if(xxevent and xx=1)then m=m+1;end if;end if;end process;end behav;3.FSK调制解调VHDL程序Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_arith.all;Use ieee.std_logic_unsigned.all;Entity fsk is
12、Port(clk:in std_logic; Start:in std_logic; x:in std_logic; y:out std_logic);end fsk;architecture behave of fsk is signal q1:integer range 0 to 11; signal q2:integer range 0 to 3; signal f1,f2:std_logic; signal xx:std_logic;begin process(clk,start) begin if(clkevent and clk=1)then if(start=0)then q1=
13、0; elsif(q1=5)then f1=1;q1=q1+1; elsif(q1=11)then f1=0;q1=0; else f1=0;q1=q1+1; end if; end if;end process; process(clk,start) begin if(clkevent and clk=1)then if(start=0)then q2=0; elsif(q2=1)then f2=1;q2=q2+1; elsif(q1=3)then f2=0;q2=0; else f2=0;q2=q2+1; end if; end if;end process;process(clk,x)b
14、eginif(clkevent and clk=1)then if(x=1)then xx=f1; else xx=f2; end if;end if;end process; process(xx,q1) begin if(q1=11)then m=0;elseif(q1=10)then if(m2)theny=0; else y=1;end if;end if;if(xxevent and xx=1)then m=m+1;end if;end if;end process;end behave;五,结果仿真1.2FSK调制器仿真结果2FSK调制器仿真结果2.2FSK解调仿真结果2FSK解调
15、仿真结果3.2FSK调制解调仿真结果2FSK调制解调仿真结果六,实验结论基于2FSK的基本原理,进行二进制调制解调器的设计。运用VHDL语言对器件进行功能描述,进行仿真。设计过程中调制阶段的基带信号,经调制仿真得到解调所需的输入信号。解调阶段对来自调制阶段得到的信号进行解调,所得解调信号即为原来调制基带信号,起到了调制解调的作用。整个设计过程采用VHDL语言实现,设计灵活、修改方便,具有良好的可移植性及产品升级的系统性。七,参考文献1. 罗朝霞,高书莉.CPLD/FPGA设计及应用.北京:人民邮电出版社2. 谭会生,张昌. EDA技术及运用(第二版).西安:西安电子科技大学出版社3. 张辉,曹丽娜. 现代通信原理与技术(第二版).西安:西安电子科技大学出版社4. 百度文库相关知识材料个人声明:此实验报告成果归本人所有,仅供互相学习参考,任何集体和个人不得转载使用!