基于VHDL的2FSK的信号发生器_第1页
基于VHDL的2FSK的信号发生器_第2页
基于VHDL的2FSK的信号发生器_第3页
基于VHDL的2FSK的信号发生器_第4页
基于VHDL的2FSK的信号发生器_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信原理课程设计报告题目基于VHDL的2FSK的信号发生器学院电子信息工程学院专业电子信息工程〔本〕学生姓名XXX学号XXX年级XXX指导教师XX职称XXX二〇一〇年十二月基于VHDL的2FSK信号发生器摘要:二进制频移键控技术〔2FSK〕具有方法简单,易于实现,解调不需恢复本地载波,可以异步传输,抗噪声和抗衰落性能较强等优点。本文基于VHDL和MAX+plusⅡ软件开发平台,利用VHDL硬件描述语言,自上而下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件2FSK信号发生器的设计,介绍了具体设计方法和仿真分析结果。上述设计除了系统行为和功能描述以外,其他所有的功能都是由计算机自动完成。该设计容量大、速度快、体积小,在电子行业应用中,占有极其重要的地位。关键词:2FSK;VHDL;信号发生器目录第1章绪论11.1选题背景11.2研究的主要内容1第2章2FSK信号发生器的原理22.12FSK信号的调制与解调22.22FSK信号产生原理22.3VHDL语言特点32.4VHDL语言结构3第3章2FSK信号发生器建模与程序设计53.12FSK的核心程序段53.22FSK信号发生器各模块63.2.1分频器63.2.2m序列产生器7跳变检测73.2.4正弦信号的产生83.3仿真波形及分析8结论10参考文献11附录12绪论1.1选题背景随着电子计算机的普及,数据通信技术正在迅速开展。数字频率调制是数据通信中常见的一种调制方式。二进制频移键控方法简单,易于实现,解调不需恢复本地载波,支持异步传输,抗噪声和抗衰落性能也较强。因此2FSK调制技术在通信行业得到了广泛的应用,并且主要适用于低、中速数据传输。2FSK是用两个不同频率的正弦波信号构成,分别表示基带信号的0和1,通过发送这两正弦信号来实现对基带信号的传输。2FSK中M序列发生器可以看作是一个基带信号源,在实际应用中,可以由具体信号源来替代。12MHz时钟信号经过分频器产生240KHz、120KHz和1.2KHz三个频率信号,1.2KHz信号用来产生1.2KHz的M伪随机序列信号[1]。2选1数据选择器由M序列信号控制在240KHz和120KHz两个信号中选择一个输出。正弦波发生器根据输入信号的频率产生两个不同频率的数字正弦波信号,经过D/A后变成不同频率的正弦波信号输出。由于微电子技术的迅猛开展,使得VHDL的性能指标,例如规模、功能、时间等性能也越来越好。VHDL在数字系统设计中占据了越来越重要的位置。而随着器件的开展,开发环境也进一步得到优化。VHDL程序的设计可用Altera公司的MAX+PlusⅡ软件开发系统来实现,它为用户提供了良好的开发环境,包含有丰富的库资源,很容易实现各种电路设计,它支持多种输入方式,并有极强的仿真系统。它最大的优点是支持在线调试,这对于长期从事电路设计调试者来说极大地提高了效率。缩短了产品开发和市场之间的距离,这标志着EDA〔ElectronicDesignAutomation〕技术已经成熟。1.2研究的主要内容〔1〕研究VHDL的语言特点和根本结构。〔2〕研究2FSK根本原理。〔3〕基于VHDL硬件描述语言绘制2FSK信号发生器框图。〔4〕基于VHDL硬件描述语言的建模及程序设计,分析2FSK信号发生器各模块的实现。以及建立仿真图形。〔5〕对仿真图形进行分析总结。第2章2FSK信号发生器的原理2.12FSK信号的调制与解调2FSK是利用载波的频率变化来传递数字信息的一种非线性调制方法。在2FSK〔二进制频移键控〕系统中,使用两个不同频率的载波分别代表数字信号“0〞和“1〞,2FSK信号的解调和调制是一个相反的过程。2FSK信号的解调是将已调的载波信号中,恢复为调制前的基带信号“0〞和“1〞。2.22FSK信号产生原理数字频率调制又称频移键控〔FSK〕,二进制频移键控记作2FSK。数字频移键控是用载波的频率来传送数字消息,即用所传送的数字消息控制载波的频率。2FSK信号便是符号“1〞对应于载频,而符号“0〞对应于载频〔与不同的另一载频〕的已调波形,而且与之间的改变是瞬间完成的。从原理上讲,数字调频可用模拟调频法来实现,也可用键控法来实现。模拟调频法是利用一个矩形脉冲序列对一个载波进行调频,是频移键控通信方式早期采用的实现方法。2FSK键控法那么是利用受矩形脉冲序列控制的开关电路对两个不同的独立频率源进行选通。键控法的特点是转换速度快、波形好、稳定度高且易于实现,故应用广泛。2FSK信号的产生方法如图2-1所示。图中为代表信息的二进制矩形脉冲序列,即使2FSK信号[2]。s(t)s(t)模拟调频器s(t)010010图2-12FSK信号产生方法根据以上2FSK信号产生的原理,已调信号的数字表达式见式〔2-1〕:〔2-1〕其中,s(t)为单极性非零矩形脉冲序列,公式见式〔2-2〕:〔2-2〕其中表达式见式〔2-3〕:〔2-3〕为对逐码元取反而形成的脉冲序列,其表达式见式〔2-4〕:〔2-4〕其中,是的反码,即假设,那么;假设,那么。表达式见式〔2-5〕:〔2-5〕2FSK信号的功率谱公式见式〔2-6〕:〔2-6〕数字调频信号的解调方法很多,如鉴频法、相干检测法、包络检测法、过零检测法、差分检测法等。相干解调2FSK系统的抗噪声性能优于非相干的包络检测,但需要插入两个相干载波电路较为复杂。包络检测无需相干载波,因而电路较为简单。当输入信号的信噪比r很大时,两者的相对差异不是很明显。一般而言,大信噪比时常用包络检测法,小信噪比时才用相干解调法。2.3VHDL语言特点VHDL语言即超高速集成电路硬件描述语言。它是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。特别适合描述复杂的组合逻辑、组运算、状态机和真值表,是1980年美国国防部实施超高速集成电路VHSIC工程中开发形成的描述集成电路结构和功能的标准语言,并在1987年成立了IEEE的标准。和传统门级设计方法相比有以下几个特点:(1)设计层次高,用于在较复杂的运算时能尽快的发现问题,缩短设计周期,产品上市快,从而降低本钱;(2)与工艺无关,独立实现,修改方便,系统描述能力强;(3)可读性好,有利于交流,适合文档保存;(4)VHDL标准、标准并且可移植性强;(5)VHDL类型多并且支持用户自定义类型,支持自上而下的设计方法和多种电路设计。2.4VHDL语言结构一个完整的VHDL程序通常包括实体(Entity)、结构体(Architecture)、配置(Configuration)、程序包集合(Package)和库(Library)5个局部。前4局部是可分别编译的源设计单元。库存放已经编译的实体、结构体、配置和程序包集合。实体结构体VHDL程序结构的实体是VHDL的硬件抽象,它表示具有明确的输入、输出的硬件设计的一局部。结构体指定设计实体输入和输出之间的行为、逻辑关系或功能,并且可以采用行为风格、数据流风格、结构化风格或3种风格的混合形式进行描述。其VHDL的结构如图2-2中图a〕所示。VHDL允许设计者对单个实体定义多个结构,并提供一个配置管理器,负责管理在特定的编译和仿真间使用某个结构体,并对仿真的结果进行比拟,从中可以选出最正确的结构体,如图2-2中图b〕所示。实体说明实体结构体实体说明结构体1结构体2结构体3a〕VHDL结构图b〕有多个实体的VHDL程序结构图2-2VHDL程序结构图[3]第3章2FSK信号发生器建模与程序设计3.12FSK的核心程序段LIBRARYIEEE:USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYfskISPORT(clock:INSTD_LOGIC;正弦波发生器dout:OUTSTD_LOGIC_VECTOR(7DOWNTO0)并行数据DATACode:BUFFERSTD_LOGIC〕;输出m序列ENDfsk;SIGNALm:STD_LOGIC_VETOR(2DOWNTO0);m序列PROCESS(sinclk1)sinclk1100分频得到coderate码元速率M_sequence_from:产生“1110010〞m序列PROCESS(coderate)BEGINIF(coderate'eventANDcoderate'1')THENm(0)<=m(0);m(1)<=m(2);ENDIF;ENDPROCESS;PROCESS(sinclk,clock,code)BEGINIF(code='0')THENsinclk<=sinclk1;ELSEsinclk<=clock;选择正弦波发生器的时钟电路ENDIF;ENDPROCESS;Jump_high<=〔nottimp〕ANDcode;0到1跳变PROCESS〔sinclk〕2FSK跳变的不同处理BEGINIF(sinclk'eventANDsinclk='1')THENtemp<=code;IF((count100="1100011")OR(jump_high='1'))THENcount100<="000000";ELSEcount100<=count100+'1';ENDIF;ENDIF;ENDPROCESS;PROCESS(count100)产生正弦波的一个周期内的100个样点值BEGINCASEcount100ISWEEN"0000000"=>dout<=“01111111〞;WEENothers=>null;ENDCASE;EDNPROCESS;ENDfsk_arch;2FSK信号发生器完整程序见附录。3.22FSK信号产生器各模块整个2FSK系统共分为分频器、m序列产生器、跳变检测、正弦波信号发生器和DAC数模变换器等5局部,其中前4局部由FPGA器件完成。图3-1所示为2FSK信号发生器框图。1.21.2KHz120KHz时钟输入1.2MHz分频器M序列产生器正弦信号发生器DAC跳变检测图3-12FSK信号发生器框图3.2.1分频器本设计的数据速率为1.2kb/s,要求产生1.2KHz和2.4KHz两个正弦信号。对每个码元持续周期所对应正弦信号取100个采样点,因此要求能产生两个时钟信号:1.2KHz〔数据速率〕和120KHz〔正弦波信号发生器输入时钟〕。基准时钟由外部时钟输入,因此需设计一个100分频器产生120KHz信号,再设计一个100分频器产生1.2KHz信号[4,5]。m序列产生器m序列是伪随机序列的一种,它的显著特点是:〔1〕随机特性;〔2〕预先可确定性;〔3〕循环特性,从而在通信领域得到了广泛的应用。本设计用一种带有两个反应抽头的三级反应移位存放器得到一串“1110010〞循环序列,并采取措施防止进入全“0〞状态。通过更换时钟频率,可以方便地改变输入码元的速率。m序列产生器的电路结构如图3-2所示。1.21.2KHz时钟信号或门异或门或非门DQCLKDQCLKDQCLK图3-2“1110010〞伪随机m序列产生器图跳变检测将跳变检测引入正弦波的产生中,可以使每次基带码元上升沿或下降沿到来时,对应输出波形位于正弦波形的处[6]。基带信号的跳变检测可以有很多方法,图3-3所示为一种在可编程逻辑器件中实现的方案。时钟信号时钟信号跳变输出基带码元DQCLK异或门图3-3信号跳变检测电路图3.2.4正弦信号的产生用数字电路和DAC变换器可以产生要求的模拟信号。根据抽样定理可知,当用模拟信号最大频率两倍以上的速率对该模拟信号采样时,便可将原模拟信号不失真地恢复出来。本设计要求得到的是两个不同频率的正弦信号,其频率正好呈倍数关系。设计中对1.2KHz的正弦波一个周期采样100个点,即采样速率为原正弦信号频率的100倍。因此完全可以在接收端将原正弦信号不失真地恢复出来,从而可以在接收端对FSK信号正确地解调。本设计中每个采样点采用8位量化编码,即8位分辨率。采样点的个数与分辨率的大小主要取决于FPGA器件的容量,其中分辨率的上下还与DAC的位数有关。本设计中,数字基带信号与2FSK调制信号的对应关系为:“0〞对应1.2KHz,“1〞对应2.4KHz。具体的正弦波信号产生器可以用查找表来实现。按前面的设计思想,本方案需要设计有100个单元的查找表,其中每个单元分别保存100个正弦波采样的对应样值。当码元由1变为0时,为了产生1.2KHz的正弦信号,只需要将查找表中的内容逐一读出即可,直到将查找表中所有单元读取完毕,然后再从第一单元开始读取。这样,每个码元周期内将输出一个周期的正弦波信号。当码元由0变为1时,为了产生2.4KHz的正弦信号,就不能逐一读取所有单元了,而要每隔一个单元读取一个样值。这样,在每个码元周期内就会对整个查找表读取两次,即输出两个周期为2.4KHz的正弦波信号。3.3功能仿真波形及分析2FSK的总体波形如图3-4所示,其中CLOCK为正弦波发生器时钟MODE表示0:2FSK;1:2PSK,CLK120为用于产生一个1.2KHz的正弦波信号,CLK240为用于产生一个2.4KHz的正弦波信号,VALUE为正弦波的采样点峰值,M_MODE为输出m序列。图3-42FSK仿真波形图下列图3-5所示为产生的2FSK波形,可以明显地看到在M_MODE跳变前后VALUE的码元宽度相差一倍,实现了2FSK的频率变化来传递数字信息,即120KHz表示信号“0〞,240KHz表示信号“1〞。图3-52FSK仿真波形图下列图3-6可以看出传递信号“1〞的波形密度明显比传递信号“0〞的波形密度高。图3-62FSK仿真波形图2FSK的信号传递频率从下列图3-7中可以看出为240KHz,信号“1〞和“0〞的跳变是通过相位的改变来实现的。图3-72FSK仿真波形图结论本设计根本到达了设计要求所述的2FSK信号发生器的功能。模拟检测说明,在这个课程设计中,需要输入一个整周期内100个采样点的值,没有利用查找表的方法实现,而是直接在程序中输入100个采样点的值。2FSK信号发生器主要有分频器,m序列产生器,跳变检测,正弦信号发生器和DAC几个局部组成。2FSK的关键是通过判断信号跳变是来改变频率的变化,2PSK的关键是通过信号的跳变来改变相位的变化。并且我们通过仿真图能够看出设计的2FSK信号发生器符合要求。这次课程设计为2FSK信号发生器的设计,是在学习了VHDL语言后进一步对其灵活运用,进行的仿真设计。课程设计用了一周时间,首先,了解了该设计的要去,通过查找资料,学习了设计的方法,进而对设计分析。然后划定各个功能模块,并分别对各功能模块进行底层设计,并将各功能模块按需要连接起来进行顶层的设计。最在EDA课程学习的VHDL语言为根底上,通过MAX+plusⅡ软件开发环境对各功能模块分别进行调试、编译,实现模块的功能,并分别进行了仿真和分析。

另外,本次课程设计能够顺利完成,要感谢石老师课堂上给我们悉心地传授知识,以及班上优秀的同学给予的帮助。本次课程设计遇到了很多麻烦,比方:资料不好查找,图书馆该课题的书几乎没有,只有通过网络搜寻或查看其它的书籍,不懂的地方通过问同学和老师来获取帮助。而且对于MAX+plusⅡ软件的运用不是很熟悉,通过自己网上查询和同学帮助,最终能够将系统进行仿真。在仿真时问题最大,程序是自己参考其他论文资料的,但是程序出现了错误,仿真时M序列始终无法显示波形,最后也是通过自己和同组同学查阅很多资料,向同学请教等修改了程序,且能够完全进行仿真测试。通过该课程设计,我们了解到数字系统的设计可以直接面向需求,根据系统的行为和功能要求,自上自下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件。本设计过程除了系统原理介绍、VHDL语言结构描述、信号发生器建模,其它的所有设计过程都用MAX+PlusⅡ软件来完成。通过该设计,对MAX+PlusⅡ软件的运用更加熟练,同时对VHDL语言掌握更加熟悉。做到了电子设计自动化〔EDA〕。参考文献[1]吴海涛,梁迎春,陈英俊.基于FPGA的全数字FSK调制解调器.现代电子技术,2023,30(23):72-76[2]吴国增,李荣强,赵安邦.基于VHDL语言的2FSK信号发生器设计.电子元器件应用,2006,8(8):2[3]SimonHaykin.CommunicationSystemsFourthEdition通信系统.北京:电子工业出版社,2023[4]金凤莲.VHDL语言在EDA仿真的应用.现代电子技术,2005(197):115-122[5]梅灿华,张乾.基于FPGA的键控移频调制解调器的设计与实现.安徽大学报,2003,27(2):22-27[6]刘爱荣,王振成.EDA与CPLD开发应用简明教程.北京:清华大学出版社,2007附录LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.all;USEIEEE.std_logic_unsigned.all;USEIEEE.std_logic_arith.all;ENTITYPSKFSKISPORT(CLOCK:INSTD_LOGIC;--正弦波发生器时钟MODE:INSTD_LOGIC;--0:FSK;1:PSKCLK240:bufferSTD_LOGIC;--用于产生一个2.4KHz的正弦波信号CLK120:bufferSTD_LOGIC;--用于产生一个1.2KHz的正弦波信号VALUE:outstd_logic_vector(7DOWNTO0);--正弦波的采样点峰值M_CODE:BUFFERSTD_LOGIC);--输出m序列ENDPSKFSK;ARCHITECTUREPSKFSK_ARCHOFPSKFSKISSIGNALCOUNT100:INTEGERRANGE0TO99;--记录100个状态SIGNALCOUNT50:INTEGERRANGE0TO49;--记录50个状态SIGNALCOUNT:INTEGERRANGE1TO10;--记录10个状态,实现12M分频到240KHz得到CLK240时钟信号SIGNALSINCLK,CODERATE:STD_LOGIC;--正弦波信号的频率以及随机序列的编码速率SIGNALTEMP,JUMP_HIGH,JUMP_LOW:STD_LOGIC;--0,1跳变标志SIGNALM:std_logic_vector(2DOWNTO0);--m序列BEGINPROCESS(CLOCK)--分频为240KHz的CLK240信号BEGINIF(CLOCK'EVENTANDCLOCK='1')THENIF(COUNT=10)THENCOUNT<=1;--计数满时计数回复初值CLK240<=NOTCLK240;--输出时钟翻转一次ELSIF(COUNT=5)THENCOUNT<=COUNT+1;CLK240<=NOTCLK240;--输出时钟翻转一次ELSECOUNT<=COUNT+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK240)--分频为120KHz的CLK120信号BEGINIF(CLK240'EVENTANDCLK240='1')THENCLK120<=NOTCLK120;ENDIF;ENDPROCESS;PROCESS(CLK120)--LOAD_CLK1100分频得到CODERATE码元速率1.2KHzBEGINIF(CLK120'EVENTANDCLK120='1')THENIF(COUNT50=49)THENCOUNT50<=0;CODERATE<=NOTCODERATE;ELSECOUNT50<=COUNT50+1;ENDIF;ENDIF;ENDPROCESS;M_SEQUENCE_FORM:--产生"1110010"m序列PROCESS(CODERATE)BEGINIF(CODERATE'EVENTANDCODERATE='1')THENM(0)<=M(1);--实现移位功能M(1)<=M(2);ENDIF;ENDPROCESS;PROCESS(CODERATE)BEGINIF(CODERATE'EVENTANDCODERATE='1')THENM(2)<=(M(1)XORM(0))OR(NOT(M(0)ORM(1)ORM(2)));--逻辑表达式跟上面的移位功能产生m的随机序列“1110010〞ENDIF;ENDPROCESS;M_CODE<=M(0);PROCESS(MODE,CLK240,CLK120,M_CODE)BEGINIF(MODE='0'ANDM_CODE='0')THENSINCLK<=CLK120;ELSESINCLK<=CLK240;--选择正弦信号波产生器的时钟频率ENDIF;ENDPROCESS;JUMP_HIGH<=(NOTTEMP)ANDM_CODE;--0到1跳变JUMP_LOW<=(NOTM_CODE)ANDTEMP;--1到0跳变PROCESS(SINCLK)--2FSK与2PSK对跳变的不同处理BEGINIF(SINCLK'EVENTANDSINCLK='1')THENTEMP<=M_CODE;IF((COUNT100=99)OR(JUMP_HIGH='1'))THENCOUNT100<=0;--波形输出ELSIF((JUMP_LOW='1')AND(MODE='1'))THENCOUNT100<=50;ELSECOUNT100<=COUNT100+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(COUNT100)--产生sin周期波形的1个周期内的100个样点值BEGINCASECOUNT100ISwhen0=>value<="01111111";when1=>value<="10000111";when2=>value<="10001111";when3=>value<="10010111";when4=>value<="10011111";when5=>value<="10100110";when6=>value<="10101110";when7=>value<="10110101";when8=>value<="10111100";when9=>value<="11000011";when10=>value<="11001010";when11=>value<="11010000";when12=>value<="11010110";when13=>value<="11011100";when14=>value<="11100001";when15=>value<="11100110";when16=>value<="11101011";when17=>value<="11101111";when18=>value<="11110010";when19=>value<="11110110";when20=>value<="11111000";when21=>value<="11111010";when22=>value<="11111100";when23=>value<="11111101";when24=>value<="11111110";when25=>value<="11111111";when26=>value<="11111110";when27=>value<="11111101";when28=>value<="11111100";when29=>value<="11111010";when30=>value<="11111000";when31=>value<="11110110";when32=>value<="11110010";when33=>value<="11101111";when34=>value<="11101011";when35=>value<="11100110";when36=>value<="11100001";when37=>value<="11011100";when38=>value<="11010110";when39=>value<="11010000";when40=>value<="11001010";when41=>value<="11000011";when42=>value<="10111100";when43=>value<="10110101";when44=>value<="10101110";when45=>value<="10100110";when46=>value<="10011111";when47=>value<="10010111";when48=>value<="10001111";when49=>value<="10000111";when50=>value<="01111111";when51=>value<="01110111";when52=>value<="01101111";when53=>value<="01100111";when54=>value<="01011111";when55=>value<="01011000";when56=>value<="01010000";when57=>value<="01001001";when58=>value<="01000010";when59=>value<="00111011";when60=>value<="00110100

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论