基于可编程逻辑器件的DDS设计-毕业设计论文任务书_第1页
基于可编程逻辑器件的DDS设计-毕业设计论文任务书_第2页
基于可编程逻辑器件的DDS设计-毕业设计论文任务书_第3页
基于可编程逻辑器件的DDS设计-毕业设计论文任务书_第4页
基于可编程逻辑器件的DDS设计-毕业设计论文任务书_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

PAGE62毕业设计(论文)任务书一、设计题目:1、题目名称基于可编程逻辑器件的DDS设计2、题目来源二、目的和意义正弦频率源是现代通讯电子系统,测试仪器仪表,电子抗干扰系统实现高性能指标的关键技术之一,很多电子设备的功能实现都直接依赖于所用频率源的性能,利用频率合成技术实现频率合成源的发展大致经历了三个阶段[1]:直接频率合成,锁相式频率合成,直接数字频率合成。直接数字频率合成(DDS-DigitalDirectFrequencySynthesis)是一种新的频率合成方法,DDS由于具有极高的频率分辨率,极快的频率切换速度,频率切换时相位连续,易于功能扩展和全数字化便于集成等优点,因此被广泛用于雷达,通信,电子对抗和仪器仪表等领域。本设计的目的是利用EDA技术和CPLD芯片对采用DDS技术的正弦信号发生器的实现方法进行研究,掌握DDS的原理和特点,了解集成DDS芯片的应用,同时掌握采用EDA技术中自顶向下的电子系统设计方法,对设计电路进行逻辑和时序仿真,完成整机印制电路板的设计和电源设计。通过设计使学生掌握查阅相关资料、综合所得资料来拓宽知识面;掌握解决工程实际问题的基本方法和步骤;培养学生独立思考和独立工作的能力;熟练掌握使用计算机进行电子系统设计的方法和步骤。三、设计要求本设计有两个方向的设计要求可选:①利用可编程逻辑器件和EEPROM、DAC实现DDS的基本功能,其中采用EEPROM芯片28C64储存波形数据,使用CPLD实现的控制器和DAC芯片DAC0832完成波形周期、幅度、相位的控制,应保证输出幅度不小于5V(有效值);②利用可编程逻辑器件设计DDS芯片AD9834的控制器,来实现直接数字频率合成。电路可以实现的波形有:正弦波,方波,三角波,正向锯齿波,反向锯齿波、脉冲波及各种调制波形。四、设计说明书应符合毕业论文撰写规范,包括的内容1.摘要、目录、前言、正文、参考文献、附录等。2.本次设计基本情况概述,各单元电路和整机的工作原理说明。3.设计内容的硬件原理图、程序清单、元件清单。4.逻辑仿真和时序仿真结果。5.工艺文件(印制电路板图、元器件工艺参数、机箱参数、配套开关电源)。6.结论五、设计应完成的图纸1.系统原理框图2.各仿真结果图3.详细电路原理图和印制电路板图六、主要参考资料1.DDS芯片原版资料2.全国大学生电子设计竞赛获奖作品选编北京理工大学出版社3.CPLD系统设计技术入门与应用黄正谨电子工业出版社4.公开发表的有关DDS技术及其实现方法的论文。七、进度要求1、实习阶段第8周(4月19日)至第10周(5月8日)共3周2、设计阶段第1周(3月1日)至第7周(4月17日)共7周第11周(5月8日)至第18周(7月7日)共8周3、答辩日期第18周(2010年7月3日)八、其它要求基于可逻辑编程器件的DDS设计摘要直接数字频率合成(DDS)技术采用全数字的合成方法,产生的信号具有频率高、频率切换速度快。频率切换时相位连续,输出相位噪声低和可以产生任意波形等诸多优点。本文在对现有DDS技术的大量文献调研的基础上,提示了符合FPGA结构的DDS设计方案并利用MAXPLUS=2\*ROMANII软件在EMPROM系列芯片上进行了实现,详细的介绍了本次设计的具体实现过程和方法,将现场可逻辑编程器件FPGA和DDS技术相结合,具体的体现了基于VHDL语言的灵活设计和修改方式是对传统频率合成实现方法的一次重要改进。FPGA器件作为系统控制的核心,其灵活的现场可更改性,可再配置能力,对系统的各种改进非常方便,在不更改硬件电路的基础上还可以进一步提高系统的性能。文章给出了仿真结果,经过验证本设计能够达到其预期性能指标。关键词:直接数字频率合成器(DDS)、硬件描述语言(VHDL)、现场可编程门阵列(FPGA)BasedonProgrammablelogicdevicesDDSdesignAbstractTheDDS(DirectDigitalFrequencySynthesis)techniqueaboptsfull-digitalsynthesismethods.Thegeneratedsignalshaveadvantagesofhighfrequencyresolutions,fastfrequencyswitching,continuousphasewhilefrequencyswitching,lownoisephaseandbeingabletogeneratearbitrarywaveforms.Inthiswork,afterreviewingalotofliteraturespublishedonDDStechnology,DDSschemebasedonFPGAstructureareproposed,andthenimplementedinAEMPROMseriesFPGAusingMAXPLUStoolthepaperintroducedtheconcrete.Implementationprocess,thiswayassociatesDDSwithfieldprogrammablegatearrav(FPGA)technology,thewaybasedonVHDLisflexibleindesigningandmodifying,whichisaimportantinnovationtothetradionsynthesizeway,FPGA.Devicecontrolcoreassystem,itsflexiblescenecanaltering,candisposeabilityagain,veryconvenienttovariouskindsofimprovementofthesystem,canalsoimprovesystematicperformancefurtheronthebasisofalteringhardwarecircuit.attheendofpaper,theauthordisplayssimulationsresult,afterverification,thedesignmeetsthedemandoforiginaldefinition.Keywords:DDS、FPGA、VHDL目录前言 9第1章绪论 91.1频率合成的发展历程 91.2DDS的优点与缺点 91.3发展前景 10第2章现场可编程门阵列(FPGA) 102.1EDA技术的介绍 102.1.1EDA的简介 102.2FPGA的介绍 102.2.1FPGA的概述 102.2.2FPGA的基本结构 102.2.3FPGA开发流程 112.3MAX+PlusII应用简介 112.3.1概述 112.3.2Max+plusⅡ功能简介 11第3章总体设计 113.1DDS的基本原理 113.2实现DDS的方案 123.2.1采用高性能DDS单片电路的解决方案 123.2.2采用低频正弦波DDS单片电路的解决方案 123.2.3自行设计的基于FPGA芯片的解决方案 12第4章用VHDL实现DDS 134.1VHDL语言简介 134.2频率控制 134.2.1频率控制原理 134.2.2频率采集原理 144.3数码显示数据处理 184.3.1数码位选信号 184.3.2译码 194.4正弦波信号 214.4.1相位累加器 214.4.2查表 224.5DDS设计的总体 24第5章硬件实现与外围电路 265.1数模转换 265.1.1DAC0832引脚及其功能 265.1.2DAC0832的工作方式 265.1.3DAC与FPGA的连接 275.2滤波电路 285.2.1滤波电路原理图 285.2.2滤波器与DAC的连接 295.3按键电路 295.4显示电路 305.4.1数码管的工作原理 305.4.2数码管与FPGA的连接 315.4.3位选信号的译码(3-8译码器) 31结束语 32参考文献 33附录AVHDL程序汇总 35附录B系统总电路图 39附录C元器件清单 40附录D英文原稿及翻译 41前言直接数字频率合成技术(DirectDigitalFrequencySynthesis),即DDFS,一般简称(DDS)是从相位直接合成所需波形的一种新的频率合成技术。近年来,DDS技术和器件水平的不断发展,使得DDS合成技术也得到了飞速的发展.目前,该技术在相对带宽、频率转换时间、相位连续性、正交输出、高分辨力以及集成化等一系列性能指标已经超过了传统的频率合成技术所能达到的水平,从而完成了频率合成技术的又一次飞跃,同时也已成为目前应用最广泛的频率合成技术。第1章绪论1.1频率合成的发展历程频率合成器是电子系统的心脏,是决定电子系统性能的关键设备。随着现代无线电通信事业的发展,移动通讯雷达武器和电子对抗等系统对频率合成器提出越来越高的要求。低相噪、高纯频谱和高速捷变的频率合成器一直是频率合成技术发展的主要目标。从频率合成技术的发展过程看频率合成的方法主要有三种:1)直接频率合成,它是最早由Finden首先提出的的合成方法。它是使基准信号通过脉冲形成电路来产生丰富谐波脉冲,随后通过混频、分频、倍频和带通滤波器完成频率的变换和组合,以产生我们需要的大量离散频率从而实现频率合成。2)锁相频率合成,是应用模拟或数字锁相环路的间接频率合成。它被称为第二代频率合成技术。早期的合成器使用模拟锁相环,后来又出现了全数字锁相环和数模混合的锁相环。数字鉴相器、分频器加模拟环路滤波压控振荡器的混合锁相环是目前最为普遍的PLL组成方式。与直接频率合成不同的是,锁相频率合成的系统分析重点放在PLL的跟踪、噪声、捕捉性能和稳定性的研究上,不放在组合频率的抑制上。3)直接数字频率合成(DDS)。随着数字技术的发展,人们重新想到了直接合成法,出现了直接数字频率合成器DDS,导致了第二次频率合成技术的飞跃,它是用数字计算机和数模变换器来产生信号该技术出现于七十年代,从而揭开了频率合成技术发展的新篇章,标志着频率合成技术迈进了第三代。1.2DDS的优点与缺点DDS是一种全数字化的频率合成方法。DDS频率合成器主要由频率寄存器、相位累加器、波形ROM、D/A转换器和低通滤波器组成。在系统时钟一定的情况下,输出频率决定于频率寄存器的中的频率字。而相位累加器的字长决定了分辨率。基于这样的结构DDS频率合成器具有以下优点:1)频率分辨率高,输出频点多,可达个频点(假设DDS相位累加器的字长是N);2)频率切换速度快,可达us量级;3)频率切换时相位连续;4)可以输出宽带正交信号;5)输出相位噪声低,对参考频率源的相位噪声有改善作用;6)可以产生任意波形;7)全数字化实现,便于集成,体积小,重量轻。虽然DDS有很多优点但也有其固有的缺点:1)杂散抑制差这是DDS的一个主要特点。由于DDS一般采用了相位截断技术,它的直接后果是给DDS的输出信号引入了杂散。2)工作频带受限。根据DDS的结构和工作原理,DDS的工作频率与器件速度和基准频率有直接的关系,但随着目前微电子技术水平的不断提高,DDS工作频率也有很大提高。3)相位噪声与其它频率合成器相比,DDS的全数字结构使得相位噪声不能获得很高的指标,DDS的相位噪声主要由于参考时钟信号的性质参考时钟的频率与输出频率之间的关系,以及器件本身的噪声基底决定。1.3发展前景近几年超数字电路的发展以及对DDS的深入研究,DDS的最高工作频率以及噪声性能已接近并达到锁相频率合成器相当的水平。随着这种频率合成技术的发展,现已广泛应于通讯、导航、雷达、遥控遥测、电子对抗以及现代化的仪器仪表等领域。直接数字频率合成器的优点是在微处理器的控制下能够准确而快捷地调节输出信号的频率、相位和幅度。此外,DDS具有频率和相位分辨率高、频率切换速度快、易于智能控制等突出特点。近几年来AD和Qualcomm等几家公司根据这些改进技术推出了一系列性能优良的DDS专用集成电路。其工作频率可达IGHZI频率分辨率可到MHZ,排除DAC的限制,杂散指标已达到-70dbc以下。其应用领域也不在限于频率合成,已有专门用于产生LFM信号的。第2章现场可编程门阵列(FPGA)2.1EDA技术的介绍2.1.1EDA的简介EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA设计可分为系统级、电路级和物理实现级.2.2FPGA的介绍2.2.1FPGA的概述FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。2.2.2FPGA的基本结构FPGA由6部分组成,分别为可编程I/O单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。每个单元如下:1)可编程输入/输出单元(I/O单元)2)基本可编程逻辑单元3)嵌入式块RAM4)富的布线资源5)底层嵌入功能单元6)内嵌专用硬核2.2.3FPGA开发流程FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。FPGA的开发流程一般如图所示,包括电路设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。FPGA开发的一般流程

1)电路设计2)设计输入3)功能仿真4)综合优化5)综合后仿真6)实现与布局布线7)实现与布局布线8)板级仿真与验证9)芯片编程与调试2.3MAX+PlusII应用简介2.3.1概述Max+plusⅡ是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。Max+plusⅡ开发系统的特点:1)开放的界面2)与结构无关3)完全集成化4)丰富的设计库5)模块化工具6)硬件描述语言(HDL)7)Opencore特征2.3.2Max+plusⅡ功能简介1)原理图输入(GraphicEditor)2)硬件描述语言输入(TextEditor)3)波形编辑器(WaveformEditor)4)管脚(底层)编辑窗口(FloorplanEditor)5)自动错误定位6)逻辑综合与适配7)设计规则检查8)多器件划分(Partitioner)9)编程文件的产生10)仿真11)分析时间(AnalyzeTiming)12)器件编程。第3章总体设计3.1DDS的基本原理DDS的基本原理是利用采样定理,通过查表法产生波形。DDS的结构有很多种,其基本的电路原理可用来表示。相位累加器由N位加法器与N位累加寄存器级联构成。每来一个时钟脉冲f,加法器将频率控制字k与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。用相位累加器输出的数据作为波形存储器(ROM)的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。DDS在相对带宽、频率转换时间、高分辨力、相位连续性、正交输出以及集成化等一系列性能指标方面远远超过了传统频率合成技术所能达到的水平,为系统提供了优于模拟信号源的性能。3.2实现DDS的方案3.2.1采用高性能DDS单片电路的解决方案随着微电子技术的飞速发展,目前市场上性能优良的DDS产品不断推出,主要有Qualcomm、AD、Sciteg和Stanford等公司单片电路(monolithic)。Qualcomm公司推出了DDS系列Q2220、Q2230,其中Q2368的时钟频率为130MHz,分辨率为0.03Hz,杂散控制为-76dBc,变频时间为0.1μs;美国AD公司也相继推出了他们的DDS系列:AD9850、AD9851、可以实现线性调频的AD9852、两路正交输出的AD9854,AD公司的DDS系列产品以其较高的性能价格比,目前取得了极为广泛的应用。3.2.2采用低频正弦波DDS单片电路的解决方案MicroLinear公司的电源管理事业部推出低频正弦波DDS单片电路ML2035以其价格低廉、使用简单得到广泛应用。ML2035特性:1)输出频率为直流到25kHz,在时钟输入为12.352MHz时频率分辨率可达到1.5Hz(-0.75~+0.75Hz),输出正弦波信号的峰-峰值为Vcc;2)高度集成化,无需或仅需极少的外接元件支持,自带3~12MHz晶体振荡电路;3)兼容的3线SPI串行输入口,带双缓冲,能方便地配合单片机使用;(4)增益误差和总谐波失真很低。3.2.3自行设计的基于FPGA芯片的解决方案DDS技术的实现依赖于高速、高性能的数字器件。可编程逻辑器件以其速度高、规模大、可编程,以及有强大EDA软件支持等特性,十分适合实现DDS技术。Altera是著名的PLD生产厂商,多年来一直占据着行业领先的地位。Altera的PLD具有高性能、高集成度和高性价比的优点,此外它还提供了功能全面的开发工具和丰富的IP核、宏功能库等,因此Altera的产品获得了广泛的应用。Max+plusII是Altera提供的一个完整的EDA开发软件,可完成从设计输入、编译、逻辑综合、器件适配、设计仿真、定时分析、器件编程的所有过程。QuartusII是Altera近几年来推出的新一代可编程逻辑器件设计环境,其功能更为强大。第4章用VHDL实现DDS4.1VHDL语言简介VHDL主要用于描述数字系统的结构、行为、功能和接口,非常适用于可编程逻辑芯片的应用设计。与其它的HDL相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等目标器件的网表文件己不成问题。4.2频率控制频率控制用于对基准频率的改变,以控制DDS发生信号的频率。为了更直观的看到当前频率,本文采用直接采集频率输出到数码管显示。4.2.1频率控制原理当基准频率输入时,分频器实现了频率的变化,以下程序实现了基准频率的1-16分频。频率的变化由外围的四个按键开关控制,当按键值为0000-1111(按键按下为1),可实现基准频率的1-16分频。具体实现程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYfenpinqiisPORT( iclk:IN STD_LOGIC;key:INSTD_LOGIC_VECTOR(3DOWNTO0);oclk:OUTSTD_LOGIC);ENDfenpinqi;ARCHITECTUREoneOFfenpinqiISsignalclk_i:std_logic;SIGNALcount:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(iclk)BEGINIFiclk'EVENTANDiclk='1'THEN IFcount>=keyTHENcount<="0000";clk_i<=notclk_i;ELSEcount<=count+1; ENDIF;ENDIF;ENDPROCESS;oclk<=clk_i;ENDone;生成的模块如图4-1:图4-1注:ICLK;输入基准频率,OCLK:输出频率,KEY:按键控制分频,为四位二进制数。仿真的时序图如图4.2:图4-2说明:当按键显示为0001时,输出频率是基准频率的二分之一,实现二分频。当为0010时,频率为基准的三分之一,实现三分频。以此按键就能实现分频了,直至十六分频为止。4.2.2频率采集原理为了采集即时频率,本文专门产生一个秒信号,用来计录脉冲个数。脉冲计数用八位十进制计数器,计数器在START置一时,秒信号的计数脉冲数清零同时计数器清零,当STARE置零时秒信号与计数器同时开始工作。当一秒时间到时(STOP为1)计数器把数据送出去以供显示。具体实现程序如下,频率采集程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityselecis port( num1,num2,num3,num4,num5,num6,num7,num8:outstd_logic_vector(3downto0); stop:instd_logic; start:instd_logic; reset:instd_logic; clk:instd_logic);endselec;architecturedaccofselecissignalq1,q2,q3,q4,q5,q6,q7,q8:std_logic_vector(3downto0);signaltem1,tem2,tem3,tem4,tem5,tem6,tem7,tem8:std_logic_vector(3downto0);beginprocess(clk,start,reset)beginifstart='1'orreset='1'then q1<="0000";q2<="0000";q3<="0000";q4<="0000";q5<="0000";q6<="0000";q7<="0000";elsifclk'eventandclk='1'thenifq1="1001"thenq1<="0000"; ifq2="1001"thenq2<="0000";ifq3="1001"thenq3<="0000";ifq4="1001"thenq4<="0000";ifq5="1001"thenq5<="0000";ifq6="1001"thenq6<="0000";ifq7="1001"thenq7<="0000"; ifq8="1001"thenq8<="0000";elseq8<=q8+1; endif;elseq7<=q7+1;endif;elseq6<=q6+1;endif;elseq5<=q5+1;endif;elseq4<=q4+1;endif;elseq3<=q3+1;endif;elseq2<=q2+1;endif;elseq1<=q1+1;endif;endif;endprocess;process(stop)begin ifstop='1'then tem1<=q1; tem2<=q2; tem3<=q3; tem4<=q4; tem5<=q5; tem6<=q6; tem7<=q7; tem8<=q8; endif;endprocess;num1<=tem1;num2<=tem2;num3<=tem3;num4<=tem4;num5<=tem5;num6<=tem6;num7<=tem7;num8<=tem8;enddacc;程序说明:当reset或start为1时,计数器q1-q8清零,然后开始计数,当秒信号计数结束标志位stop为1时停止计数,此时把当前的计数值保存到寄存器中,以备显示用。秒信号产生程序:useieee.std_lolibraryieee;gic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitysecondisport( clk:instd_logic; start:instd_logic; reset:instd_logic; stop:outstd_logic);endsecond;architecturedaccofsecondissignalq:integerrange0to100;signaltem:std_logic;beginprocess(clk,reset,start)begin if(reset='1')or(reset='0'andstart='1')then q<=0; elsifclk'eventandclk='1'then ifq=100then tem<='1'; else q<=q+1; tem<='0'; endif; endif;endprocess;stop<=tem;endarchitecture;程序说明:reset为复位信号,start为另一次秒信号的开始标志。当reset为1或者当start为1时计数信号清零。开始秒信号的计数,当计数个数到达预定的100时使stop(秒结束标志位)信号置1。再重新开始计数。程序生成模块下图所示4-3:生成的频率采集模块:生成的秒信号模块:图4-3频率采集模块时序仿真图如图4-4:图4-4A说明:由图可知,当stop置1时,num1至num8就会把脉冲个数送进寄存器,而当stop为0时,内部计数,此时寄存器内保存的是上一个秒内的计数值。秒信号时序仿真图如图4-5:图4-4B分析:上图显示的是reset(复位信号)为1时,q(计数信号)清零,即重新开始计数。直到reset或start为1停止计数。图4-4C说明:stop信号为秒计数结束信号,置1时,表示计时到,当计数信号计数到预定个数(根据基准频率而定),此仿真图为了检测程序的正确,以1100011为例进行仿真,stop信号值1,此时应该使记当前频率时钟脉冲个数的计数器停止计数。并采集当前计数值。图4-4D说明:当start信号为1时,开始下一秒的计数,并重新开始采集频率个数。4.3数码显示数据处理数码显示的数据为采集的频率值。采集的是十进制数,所以需要把它们转换成段显信号。由于设计中采用了闪烁点亮二极管的方式,所以还需要对位选进行处理。4.3.1数码位选信号 数码位选信号是用对当前工作数码管与当前显示数据进行选择,由于本文采用八位数码管,所以需要产生三位二进制数。具体实现程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityregistis port( num1,num2,num3,num4,num5,num6,num7,num8:instd_logic_vector(3downto0); start:outstd_logic; stop:instd_logic; numb:outstd_logic_vector(3downto0); sec:instd_logic_vector(2downto0));end;architecturedaccofregistissignaltemp:std_logic_vector(3downto0);signaltem:std_logic;beginprocess(sec,stop)begin ifstop='1'then tem<='1'; casesecis when"000"=>temp<=num1; when"001"=>temp<=num2; when"010"=>temp<=num3; when"011"=>temp<=num4; when"100"=>temp<=num5; when"101"=>temp<=num6; when"110"=>temp<=num7; when"111"=>temp<=num8; whenothers=>null; endcase; elsetemp<="0000"; tem<='0'; endif;endprocess;numb<=temp;start<=tem;enddacc;生成模块如图4-5:图4-5时序仿真结果如图4-6所示。图4-6说明:随着脉冲的到来,可以实现位选信号sec从0到7的变化,sec的变化经译码器可产生只有一位为零的低电平信号。4.3.2译码由于我们采集的频率值为十进制数所以我们需要把十进制数转换为二进制段显信号。具体转换见程序如下所示:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitychangisport( a:instd_logic_vector(0to3);--xianshishuzi dp:outstd_logic_vector(7downto0));end;architecturedaccofchangissignaltem:std_logic_vector(7downto0);beginprocess(a)begincaseais when"0000"=>tem<="11000000"; when"0001"=>tem<="11111001"; when"0010"=>tem<="10100100"; when"0011"=>tem<="10110000"; when"0100"=>tem<="10011001"; when"0101"=>tem<="10010010"; when"0110"=>tem<="10000011"; when"0111"=>tem<="11111000"; when"1000"=>tem<="10000000"; when"1001"=>tem<="10011000"; whenothers=>null;endcase;endprocess;dp<=tem;endarchitecture;生成模块如图4-7所示:图4-7注:译码的作用是把四位二进制数译成与数码管相适应的段显码。时序仿真图如图4-8:图4-8说明:当输入四进制0111时,输进数码管里为00000111,段显就是74.4正弦波信号我们本次设计所产生的信号以正弦波信号为例,我们正弦波的产生根据信号相位的增加查表产生。4.4.1相位累加器 相位累加器实现对待产生波形的信号相位累加,根据相位查表产生所需要的相位、幅度。相位累加程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityxiaweiaddisport(clk:instd_logic;q:outintegerrange63downto0);end;architecturedaccofxiaweiaddissignalqq:integerrange63downto0;beginprocess(clk)begin if(clk'eventandclk='1')then qq<=qq+1;endif;endprocess;q<=qq;endarchitecture;生成模块图程序说明:此时的频率为基准频率分频后的频率,当一个频率脉冲到来时相位加1,并时时把相位值输出。图4-7仿真图4-7说明:随着时钟脉冲的到来,相位值加1,可实现相位在0-63之间循环(本设计采集了64个点)。4.4.2查表 此表根据相位由公式y=[sin(x)+1]*127.5取整所得相位幅度表程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitysin4isport(q:inintegerrange63downto0;dd4:outintegerrange255downto0);end;architecturedaccofsin4isbeginprocess(q)begincaseqiswhen00=>dd4<=255;when01=>dd4<=254;when02=>dd4<=253;when03=>dd4<=250;when04=>dd4<=245;when05=>dd4<=240;when06=>dd4<=234;when07=>dd4<=226;when08=>dd4<=218;when09=>dd4<=208;when10=>dd4<=198;when11=>dd4<=188;when12=>dd4<=176;when13=>dd4<=165;when14=>dd4<=152;when15=>dd4<=140;when16=>dd4<=128;when17=>dd4<=115;when18=>dd4<=103;when19=>dd4<=90;when20=>dd4<=79;when21=>dd4<=67;when22=>dd4<=57;when23=>dd4<=47;when24=>dd4<=37;when25=>dd4<=29;when26=>dd4<=21;when27=>dd4<=15;when28=>dd4<=10;when29=>dd4<=5;when30=>dd4<=2;when31=>dd4<=1;when32=>dd4<=0;when33=>dd4<=1;when34=>dd4<=2;when35=>dd4<=5;when36=>dd4<=10;when37=>dd4<=15;when38=>dd4<=21;when39=>dd4<=29;when40=>dd4<=37;when41=>dd4<=47;when42=>dd4<=57;when43=>dd4<=67;when44=>dd4<=79;when45=>dd4<=90;when46=>dd4<=103;when47=>dd4<=115;when48=>dd4<=128;when49=>dd4<=140;when50=>dd4<=165;when51=>dd4<=176;when52=>dd4<=188;when53=>dd4<=198;when54=>dd4<=208;when55=>dd4<=218;when56=>dd4<=226;when57=>dd4<=234;when58=>dd4<=240;when59=>dd4<=245;when60=>dd4<=250;when61=>dd4<=253;when62=>dd4<=254;when63=>dd4<=255;whenothers=>null;endcase;endprocess;endarchitecture;程序说明:本设计采样点为64个,根据不同的采样相位点,输出不同的幅度值。生成模块图 说明:q值随着脉冲的到来实现0-63之间的循环变化,dd4(所产生信号的幅度)根据q的变化而变化,产生所需要的波形。图4-8仿真图4-8说明:如图所示,不同的相位输入,输出不同的幅度值。 说明:q值随着脉冲的到来实现0-63之间的循环变化,dd4(所产生信号的幅度)根据q的变化而变化,产生所需要的波形。4.5DDS设计的总体本设计有五个按键输入,其中四个用于分频器的控制信号输入,一个用于复位信号输入。一个三位的二进制位选信号输出,一个七位的段显信号输出,一个七位的正选信号输出。具体电路如下:第5章硬件实现与外围电路5.1数模转换5.1.1DAC0832引脚及其功能图5-1D0~D7:数字信号输入端。ILE:输入寄存器允许,高电平有效。CS:片选信号,低电平有效。WR1:写信号1,低电平有效。XFER:传送控制信号,低电平有效。WR2:写信号2,低电平有效。IOUT1、IOUT2:DAC电流输出端。Rfb:是集成在片内的外接运放的反馈电阻。Vref:基准电压(-10~10V)。Vcc:是源电压(+5~+15V)。AGND:模拟地NGND:数字地,可与AGND接在一起使用。DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。5.1.2DAC0832的工作方式DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。如图5-2它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。运算放大器输出的模拟量V0为:

图5-2由上式可见,输出的模拟量与输入的数字量(

)成正比,这就实现了从数字量到模拟量的转换。

一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。5.1.3DAC与FPGA的连接1)DAC0832接口电路原理图(如图5-3),2)FPGA与DAC0832接口电路设计(1)IO36、39、38、41、45、42、43和40向DAC0832的数据输入口(DI0~DI7)输送数据。(2)DAC0832数据锁存允许控制信号ILE,高电平有效。(3)CS(片选信号)、WR1(写信号1)、XFER(传送控制信号)和,WR2(写信号2),低电平有效。(4)Iout1、Iout2、Rfb与运算放大器LM324完成电流/电压的转换(DAC0832属电流输出型)。图5-35.2滤波电路5.2.1滤波电路原理图图中R1=R2=10kΩ,C=100PF,由公式:可算得低通滤波器的截止频率为160KHZ。电路图如图5-4所示:图5-45.2.2滤波器与DAC的连接 如图5-5所示,滤波电路与DAC0832模块的输出端连接,经LM358成为电压输出,再接上LM339放大信号,然后通过有源滤波器的滤波,最后就可以得到所需要的信号。图5-55.3按键电路在设计中共有五个按钮按键,分别是S1、S2、S3、S4和S5,S1-S4用于频率的控制,按下为高电平,弹起为低电平。即S1、S2、S3、keS4的输入信号为0000-1111,当输入为0000-1111时,可实现1-16分频。如图5-6可知,S1与IO37连接,S2与IO34连接,S3与IO35连接,S4与IO32连接。S5用于复位信号的输入,按下为高电平,弹起为低电平。当按下时秒信号计数器与八位十进制计数器同时清零复位,以保证两者的同步。有图5-6知,S5与IO33连接。电路图如下:图5-65.4显示电路5.4.1数码管的工作原理图5-7从图5-7中可以看出,7段荧光数码管有公共的地,即7个发光二极管的负极全部连接在了一起,只要给想点亮的二极管高电平就可以使其发光。这样做的好处是可以免去布线、相互间的干扰等很多麻烦。这种连接方式的数码管叫做共阴极数码管。7段数码管是由7个独立的二极管采用共阴的方法连接而成。通常将这7个独立的二极管做成a、b、c、d、e、f、g这7个笔划。5.4.2数码管与FPGA的连接图5-8如图5-8所示:FPGA的段显信号经74LS04非门与数码管段显信号端连接,位选信号经3-8译码器通过三极管的放大与数码管的位选信号连接。位选信号输入后,经3-8译码器译码给八位数码管只有一位是高电平,即只有一个数码管可以点亮。同时,段显信号又正好与位选信号同步。5.4.3位选信号的译码(3-8译码器)74LS138管脚图:74LS138为3-8译码器,共有54/74138和54/74LS138两种线路结构型式,其工作原理如下: 当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低平电译出。三八译码器的逻辑功能图当位选信号输入时就可以对八位二极管进行选择,在3-8译码器后面加一个非门就可以与共阴极,高电平驱动的数码管配合使用了。与数码管的连接如图5-7所示。结束语经过了两个多月的学习和工作,我终于完成了《基于可逻辑编程器件的DDS设计》的论文。从开始接到论文题目到系统的实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战,这也是我在大学期间独立完成的最大的项目。在这段时间里,我学到了很多知识也有很多感受,从对DDS一无所知,对FPGA,MAX-PLUSⅡ等相关技术很不了解的状态,我开始了独立的学习和试验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己非常稚嫩作品一步步完善起来,每一次改进都是我学习的收获,每一次试验的成功都会让我兴奋好一段时间。虽然我的论文作品不是很成熟,还有很多不足之处,但我可以自豪的说,这里面的每一段资料,都有我的劳动。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。这次做论文的经历也会使我终身受益,我感受到做论文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破,那也就不叫论文了。希望这次的经历能让我在以后学习中激励我继续进步。参考文献[1]张厥盛,曹丽娜.锁相与频率合成技术[M].成都:电子科技大学出版社,2000.[2]王金明.数字系统设计与VerilogHDL[M].北京:电子工业出版社,2002.[3]杨小牛,搂才义,徐建良.软件无线电原理与应用[M].京:电子工业出版社,2001.[4]潘松,黄继业,王国栋.现代DSP技术[M].西安:西安电科技大学出版社,2003.[5][美]UweMeyer-Baese著.刘凌,胡永生,译.数字信号处理的FPGA实现[M].北京:清华大学出版社,2003.[6]余孟尝.数字电子技术基础简明教程[M].北京:高等教育出版社,2005.[7]黄正谨,徐坚等.CPLD系统设计技术入门与应用[M].西安:电子工业出版社,2001.[8]潘松,王国栋.实用教程[M].西安:电子科技大学出版社,2001.[9]InagakiT,OkamotoY,“Findingtheunknownemis2sivityvalueofanobject”,NDT&EInternational[D],1996.[10]Xilinx,TheProgrammableLogicDataBook[M].2000附录AVHDL程序汇总1四位二进制显示数据转换为八位段显信号:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitychangisport( a:instd_logic_vector(0to3);--xianshishuzi dp:outstd_logic_vector(7downto0));end;architecturedaccofchangissignaltem:std_logic_vector(7downto0);beginprocess(a)begincaseais when"0000"=>tem<="11000000"; when"0001"=>tem<="11111001"; when"0010"=>tem<="10100100"; when"0011"=>tem<="10110000"; when"0100"=>tem<="10011001"; when"0101"=>tem<="10010010"; when"0110"=>tem<="10000011"; when"0111"=>tem<="11111000"; when"1000"=>tem<="10000000"; when"1001"=>tem<="10011000"; whenothers=>null;endcase;endprocess;dp<=tem;endarchitecture;2分频器原理:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYfenpinqiisPORT( iclk:IN STD_LOGIC;key:INSTD_LOGIC_VECTOR(3DOWNTO0);oclk:OUTSTD_LOGIC);ENDfenpinqi;ARCHITECTUREoneOFfenpinqiISsignalclk_i:std_logic;SIGNALcount:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(iclk)BEGINIFiclk'EVENTANDiclk='1'THEN IFcount>=keyTHENcount<="0000";clk_i<=notclk_i;ELSEcount<=count+1; ENDIF;ENDIF;ENDPROCESS;oclk<=clk_i;ENDone;3显示数据选择:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityregistis port( num1,num2,num3,num4,num5,num6,num7,num8:instd_logic_vector(3downto0); start:outstd_logic; stop:instd_logic; numb:outstd_logic_vector(3downto0); sec:instd_logic_vector(2downto0));end;architecturedaccofregistissignaltemp:std_logic_vector(3downto0);signaltem:std_logic;beginprocess(sec,stop)begin ifstop='1'then tem<='1'; casesecis when"000"=>temp<=num1; when"001"=>temp<=num2; when"010"=>temp<=num3; when"011"=>temp<=num4; when"100"=>temp<=num5; when"101"=>temp<=num6; when"110"=>temp<=num7; when"111"=>temp<=num8; whenothers=>null; endcase; elsetemp<="0000"; tem<='0'; endif;endprocess;numb<=temp;start<=tem;enddacc;4秒信号的产生:useieee.std_lolibraryieee;gic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitysecondisport( clk:instd_logic; start:instd_logic; reset:instd_logic; stop:outstd_logic);endsecond;architecturedaccofsecondissignalq:integerrange0to100;signaltem:std_logic;beginprocess(clk,reset,start)begin if(reset='1')or(reset='0'andstart='1')then q<=0; elsifclk'eventandclk='1'then ifq=100then tem<='1'; else q<=q+1; tem<='0'; endif; endif;endprocess;stop<=tem;endarchitecture;5、频率的采集程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityselecis port( num1,num2,num3,num4,num5,num6,num7,num8:outstd_logic_vector(3downto0); stop:instd_logic; start:instd_logic; reset:instd_logic; clk:instd_logic);endselec;architecturedaccofselecissignalq1,q2,q3,q4,q5,q6,q7,q8:std_logic_vector(3downto0);signaltem1,tem2,tem3,tem4,tem5,tem6,tem7,tem8:std_logic_vector(3downto0);beginprocess(clk,start,reset)beginifstart='1'orreset='1'then q1<="0000";q2<="0000";q3<="0000";q4<="0000";q5<="0000";q6<="0000";q7<="0000";elsifclk'eventandclk='1'thenifq1="1001"thenq1<="0000"; ifq2="1001"thenq2<="0000";ifq3="1001"thenq3<="0000";ifq4="1001"thenq4<="0000";ifq5="1001"thenq5<="0000";ifq6="1001"thenq6<="0000";ifq7="1001"thenq7<="0000"; ifq8="1001"thenq8<="0000";elseq8<=q8+1; endif;elseq7<=q7+1;endif;elseq6<=q6+1;endif;elseq5<=q5+1;endif;elseq4<=q4+1;endif;elseq3

温馨提示

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

评论

0/150

提交评论