《基于FPGA的任意小数分频器的设计(正文).doc》由会员分享,可在线阅读,更多相关《基于FPGA的任意小数分频器的设计(正文).doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于FPGA的任意小数分频器的设计(正文)第1章 绪论1。1课题背景 当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电路本身在不断地进行更新换代.它由早期的电子管、晶体管、小中规模集成电路,发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属
2、现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。1.2研究的目的及意义 目的是一方面使我们能够进一步理解课程内容,基本掌握EDA技术和系统知识,增加集成电路应用知识,培养我们的实际动手能力以及分析、解决问题的能力。另一方面也可以是我们更好地巩固和加深对基础知识的理解,学会设计中小型数字系统的方法,独立完成调试过程,增强我们理论联系实际的能力,提高电路分析和设计能力.通过实践引导我们在理论指导下有所创新,为专业课的学习和日后工程实践奠定基础。通过设计,一方面可以加深我们对理论知识的理解,另一方面也可以提高我们考虑问题的全面性,将理论知识上升到一个实践的阶段。1.3EDA的发展历程及
3、应用1。3.1 EDA的发展历程随着集成电路和计算机技术的飞速发展,EDA(Electronic Design Automation)应运而生,它是一种高级、快速、有效的电子设计自动化技术。EDA技术以计算机为工具,代替人完成数字系统的逻辑综合、布局布线和设计仿真等工作。设计者只需要完成对系统功能的描述,然后就可以由计算机来处理这些描述,得到设计结果,修改设计也很方便.利用EDA工具进行设计,可以极大的提高设计效率。EDA技术的发展经历了一个由浅到深的过程. 20世纪70年代,随着中小规模集成电路的开发与应用,传统的手工制图设计电路板和集成电路的方法已经无法满足设计精度和效率的要求,因此人们开
4、始进行二维平面图形的计算机辅助设计,以便解脱繁杂、机械的版图设计工作,这就是第一代的EDA工具。到了20世纪80 年代,为了适应电子产品在规模和制作上的要求,出现了以计算机仿真和自动布线为核心技术的第二代EDA 技术,其特点是以软件工具为核心,通过这些软件完成产品开发的设计、分析、仿真、测试等各项工作.20世纪90 年代后,随着EDA技术继续发展,出现了以高级语言描述、系统级仿真和综合技术为特征的第三代EDA技术,通常也称为ESDA(Electronic System Design Automation)阶段。在这个阶段,人们开始追求贯彻整个设计过程的自动化,可以从繁重的设计工作中彻底解放出来
5、,把精力集中在创造性的方案与概念构思上,从而可以提高设计效率,缩短产品的研制周期.1。3.2 EDA技术的概念EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的.EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动的完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作.1.3.3 EDA的应用用户需求功能
6、定义ASIC设计硬件语言编译工具逻辑综合工具功能分析工具布局布线工具版图生成工具形式验证工具半导体厂ICSOC设计逻辑综合工具功能分析工具布局布线工具时序分析工具编程下载工具可编程PLDPCB设计原理图编辑工具网表生成工具布局布线工具规则检查工具电子兼容分析工具热分析工具制板商PCB图1。1 EDA技术应用范围EDA技术应用范围见图1。1。当代的EDA技术应用于电子设计的方方面面。从一个角度来看,EDA技术可粗略分为系统级、电路级和物理实现级三个层次的辅助设计过程;从另一个角度来看,EDA技术应包括电子设计的各个领域:从低频电路到高频电路、从线形电路到非线形电路、从模拟电路到数字电路、从分立元
7、件电路到集成电路的全部设计过程。具体来说,EDA技术大体分为三方面的应用:(1)ASIC(Application Specific Integrated Circuit,专用集成电路)设计。(2)SOC(System On a Chip,系统芯片)设计。(3)PCB(Printed Circuit Board,印刷电路板)设计。可以说如果没有EDA技术,今天的电子设计就没办法进行。1.3.4 Verilog硬件描述语言随着EDA技术的飞速发展,也由于集成电路大规模、高密度、高速度的要求,产生了一种新的设计方法,那就是采用硬件描述语言来设计数字电路。Verilog HDL(Verilog Har
8、dware Description Language)作为IEEE工业标准的硬件描述语言的一种,不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义,而且Verilog语言从C语言中继承了多种操作符和结构。所以如果有C语言的基础,那么可以非常快的掌握Verilog HDL的设计方法。因此对于初学者来说,使用Verilog HDL进行电子设计是比较好的。通过使用结构级或行为级描述可以在不同的抽象层次描述设计。Verilog HDL采用自顶向下的数字电路设计方法主要包括行为领域、结构领域、物理领域这三个领域和系统级、算法级、积存器传输级、逻辑级和电路级这五个抽象层次。Verilog HD
9、L是并发的,即具有在同一时刻执行多任务的能力。一般来讲编程语言是非并行的,但在实际硬件中,很多操作都是在同一时刻发生的,所以Verilog HDL具有并发的特征。Verilog HDL有时序的概念,一般来讲编程语言是没有时序概念的,但在硬件电路中从输入到输出总是有延迟存在的.为描述这些特征,Verilog HDL语言需要建立时序的概念,因此使用Verilog HDL除了可以描述硬件电路的功能外,还可以描述其时序要求。1.4基于EDA的FPGA/CPLD开发随着数字集成电路和EDA技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担.系统设计师们更愿意自己设计专用集成电路(ASIC
10、)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件,其中应用最广泛的属现场可编程门阵列和复杂可编程逻辑器件。现场可编程门阵列FPGA(Field Programmable Gate Array)是20世纪80年代中期,由美国Xilinx公司首先推出的大规模可编程逻辑器件。由于FPGA器件采用标准化结构,体积小、集成度高、功耗低、速度快,可无限次反复编程,已成为开发电子产品的首选器件.运算器、乘法器、数字滤波器等具有复杂算法的逻辑单元和信号处理单元的逻辑设计都可选用FPGA来实现。Xilinx公司和Al
11、tera公司最新开发的先进IP CORE(IP核),使FPGA在EDA和DSP技术领域的应用更加方便.复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)是20世纪90年代可擦除的可编程逻辑器件EPLD(Erasable Programmable Logic Device)的改进器件。其具有更大的与阵列和或阵列,有大量的宏单元和布线资源。高速的译码器、多位计数器、寄存器、时序状态机、网络适配器、总线控制器等较大规模的逻辑设计可用CPLD来实现。FPGA/CPLD 本身作为一种新器件,可以由用户自行规定器件的逻辑功能,将大量的电路功能集成到一个芯片中,
12、提高了系统的集成度和可靠性。另一方面, FPGA/CPLD的设计方法又是采用EDA 的设计方式,是从手工设计到电子设计自动化的变换桥梁。1。5本课题研究内容FPGA/CPLD现在应用的非常广泛,其作为集成电路的一个研究方向,非常重要,而我们在这方面开展的学习并不多。本文作为一个探讨性的论文,为以后进行更深入的研究打下基础,本课题主要研究以下一些内容.首先,学习并基本掌握Verilog HDL的设计方法。然后,研究掌握任意小数的分频器设计基本工作原理与设计方案。第2章 设计方案分析论证2。1本课题的研究内容分频器是指使输出信号频率为输入信号频率整数数分之一的电子电路。在许多电子设备中如电子钟、频
13、率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器)逐渐取代了正弦分频器,即使在输入输出信号均为正弦波时也往往采用模数转换数字分频数模转换的方法来实现分频。正弦分频器除在输入信噪比低和频率极高的场合已很少使用。对于任何一个N次分频器,在输入信号不变的情况下,输出信号可以有N种间隔为2/N 的相位。这种现象是分频作用所固有的,与分频器的具体电路无关,称为分频器输出相位多值性。2.2设计思路频率合成技术是现代通讯系统的重要组
14、成部分,是对一个高精度和高稳定度的基准频率进行加、减、乘、除四则运算,产生具有同样稳定度和基准度的频率。分频器是数字逻辑电路设计中经常使用的一个基本电路.通常,整数分频可以很容易地用计数器或状态机来实现1。但在某些场合下,时钟源与所需要的频率并不成整数关系,此时便需要采用小数分频器进行分频.对于小数分频的FPGA设计,目前广泛采用的方法是双模前置小数分频,以及一种由双模前置小数分频改进而得到的小数分频-用一个半整数分频器和一个整数分频器代替双模前置小数分频中的两个整数分频器s-s。虽然这两种方案输出时钟的占空比误差和抖动性能方面有所差别,但其工作原理却是一致的。双模前置小数分频器在理论上可以实
15、现任意小数分频,但在实际的电路设计中,不可能真正实现任意小数分频,文献在其结论中就指出过,小数分频器的精度受控制计数器的影响,而控制计数器的设计会受硬件资源的限制,尽管FPGA有相当丰富的硬件资源。另外,基于FPGA实现的双模前置小数分频器在两个整数分频时钟之间的切换点上,有时候会出现毛刺。而时钟是不应该有毛刺存在的.下面将结合脉冲删除技术,提出一种可以进行任意小数分频且不会出现毛刺的小数分频方案,并通过编程实现。 第 3章 系统硬件设计3。1双模前置小数分频器假设时钟源的频率为Fo,期望得到的频率为Fi,则其分频比X有X =F0F1,其中,X1.当分频比X为无限小数时,例如把13MHz的时钟
16、信号分频11MHz时,x=1。18181818,此时,尽管在理论上可以设计这样的多位累加器,但在实际电路中却是不可实现的。因此,实际所设计的双模前置小数分频器的分频比,有时候与实际期望得到的分频比存在一个微小的偏差,当分频器长时间工作,就会导致累计误差.3。2双模前置小数分频器的电路组成双模前置小数分频器的电路如图3.1所示,此电路主要由两个整数分频器、一个选择器和一个控制逻辑电路组成。其中,两个整数分频器的分频比分别为M和M+1,而控制电路依据公式而设计,交替选择M分频器或M+1分频器的时钟输出。它的具体控制过程是:先选择让M分频器输出N,个脉冲之后,接着选择让M+1分频器输出N2个脉冲,然
17、后再选择让M分频器输出Nt个脉冲,如此循环。这样的设计在理论上是可行的,但在实际的电路设计中,却由于硬件电路的微小延时,在选择M分频和M+1分频时钟输出的切换点上,就可能存在竞争冒险而产生毛刺,这是时钟信号所不能容忍的。图3。1控制逻辑电路3。3一种改进的小数分频器的设计利用脉冲删除电路,有规律地删除时钟源中的一些脉冲,从而实现平均意义上的小数分频.在硬件电路的设计过程中,利用脉冲删除电路,就不会出现上述竞争冒险和毛刺的问题,而且可以很容易地用硬件实现任意小数分频。3。4电路组成 这个电路主要由脉冲删除电路和控制删除逻辑电路两个部分组成,见图3。2。其中,控制删除逻辑电路是根据P和Q的值,对时
18、钟源输入脉冲数进行计数控制,按照一定的规律发出脉冲删除控制信号.图3.2脉冲和控制电路脉冲删除电路(见图3。3)就是一个简单的或门,脉冲删除控制信号delete为高电平时,其中,P、Q均为整数.可以分析得到,当时钟源每输入P个脉冲,利用脉冲删除电路从这P个脉冲中按照一定的规律删除(PQ)个脉冲,输出Q个脉冲,便实现了平均意义上的X分频。表示从时钟源clk中删除一个脉冲.但脉冲删除控制信号delete必须由时钟源clk的上升沿触发产生,这是由于硬件电路具有微小延时的原因。图3.3脉冲删除电路3。5控制删除逻辑电路的工作过程设计控制删除逻辑电路的主要目的是,使所删除的(PQ)脉冲的位置相对均匀地分
19、布在时钟源相对应P个脉冲中。采用脉冲删除的方式实现平均意义上的小数分频 , 所以分频得到的时钟不会出现毛刺或不稳定的因素。而且 ,这种小数分频器的设计非常简单 ,很容易在硬件上实现 .其具体设计思路如下:设置一个计数器,令其初始值为0;在时钟源clk的每一个上升沿,计数器加上Q,若计数器里面的值小于P,则发出删除一个脉冲的信号,将delete置为高电平;若其值大于P,则将计数器的值减去P,并且,将delete置为低电平,不发出删除脉冲的信号。例如,假设要将一个13MHz的时钟源分频为11MHz的时钟信号,则Q=11,P=13,其工作过程见表3.1表3.1 分频器的工作过程第4章 系统软件设计4
20、.1软件设计点击桌面图标,启动Quartus II 9.0。进入界面,点击菜单栏File,在弹出的下拉菜单中选择New Project Wizard.弹出名叫New Project Wizard:Introduction对话框,点击Next.出现下面对话框图: 图4.1New Project Wizard:Introduction对话框 选择工程保存路径,工程名字,填写好后点击Next,进入下一步。出现名叫New Project Wizard:Add Files【page 3 of 5】对话框,点击Next。出现如下对话框图4。2New Project Wizard:Add Files对话框
21、图4。3New选项此对话框用于选择FPGA芯片型号,此小时分频器不设计实物,型号可随选,在这里我选着Cyclone II EP2C8Q208C7,接下来一路Next。工程建立好后,点击菜单栏File选项,在下拉菜单中选着New选项。弹出如下对话框(图4.3)在此我用的是Verilog HDL 选择Design Files 子文件中的Verilog HDL Files.此时就可以编写程序,点击工具按钮进行全编译。在仿真前学校配置管脚,点击菜单栏Assignments选项,在弹出的下拉菜单中选择Pins选项,弹出下面对话框在这里没有要求,管脚任意分配,分配好后点击退出自动保存。图4.4Design
22、 Files 子文件建立波形文件,点击菜单Files选项,图4.4 Design Files 子文件 在弹出的下拉菜单中选择New选项,选择Verification/Debugging Files子文件Vector Waveform File.点击菜单栏Edit选项,在弹出的下拉菜单中选择Insert选项弹出有菜单选择Insert Node or Bus选项,弹出如下对话框(图4.5)点击Node Finder按钮,出现如下对话框(图4.6)点击List按钮查找Node,从左边框添加所需查看的Node到右边框,点击OK按钮,保存退出。设置时钟频率。点击菜单栏Processing选项,在弹出的下
23、拉菜单中选择Generate Functional Simulation Netlist 选项,点击工具栏图标进行仿真.图4。5Insert Node or Bus选项图4.6设置时钟频率第5章 仿真与分析5。1波形仿真图在Quartus II环境下,对上述VerilogHDL程序进行编译、仿真之后,得到的波形图如图5.1所示图5.1波形图由图5.1可见,当delete为高电平时,时钟源elk便会被删除一个脉冲。否则便直接输出给clkoutCount_0和count_i分别对时钟源和分频时钟的脉冲进行计数,由图4可见,当时钟源clk每输入13个脉冲时,分频时钟clkout正好只输出11个脉冲,
24、此即13MHz时钟到1lMHz时钟的分频过程。结 论EDA技术已经成为电子设计的重要工具,并且应用于电子设计的各个方面。Verilog HDL作为一种顺应EDA发展潮流的设计方法,得到了迅速的发展。使用Verilog HDL可以用于复杂数字逻辑电路和系统的总体仿真、子系统仿真和具体电路综合等各个设计阶段。随着个人电脑平台上的EDA工具的发展,个人电脑平台上的Verilog HDL仿真综合性能已相当优越,这就为大规模普及这种新技术铺平了道路。本文重点探讨了以下一些方面:(1) 介绍了本课题的发展背景及对EDA的发展、Verilog HDL的一些特点和FPGA在EDA中的应用做了详细的介绍。(2)
25、任意小数分频器的设计原理和实现方法不存在精度误差的问题,从而可以保证小数分频器长时间工作时不会出现累计误差.另外,由于是采用脉冲删除的方式实现平均意义上的小数分频,所以分频得到的时钟不会出现毛刺或不稳定的因素。而且这种小数分频器的设计非常简单,很容易在硬件上实现。由于学习时间短,对EDA的研究以及使用Verilog HDL进行电子设计的方法并不是钻研的很透彻,但是通过一段时间的学习,已经基本掌握了使用Verilog HDL进行电子设计的步骤,为以后继续研究EDA技术打下了基础。参考文献1张奇志,武超,等基于Verilog HDL的分频嚣的优化设计J河南大学学报,37(4):3433462刘亚海
26、。林争辉基于FPGA的小数分频器的实现J现代电子技术,194(3):1131173黄海生一种可控分频比分频器的设计和研宄J计算机工程与设计,2002,23(3):8214王广叉,赵卫华,一种小数分频嚣的设计及性能分析j自动化技术与应用,26(9):1011025王建荣,李竹,溺洪明一种新的基于FPGA的小数分频器的参数化设计J太原科技大学学报,2007,28(3):191-1946周冬成,王永斌,郑亚平基于FPGA的小数分频频率合成器设计J 致 谢在论文即将完成之际,首先要对彭许红老师表示最真挚的感谢。在论文的写作期间,彭老师在百忙之中抽出时间指导我的论文写作,在很多关键的知识点上进行了讲解疏
27、通,给我论文写作的宏观框架提出了宝贵的意见,论文写作的时间比较仓促,为了能够顺利完成论文的写作,彭老师特别为我们安排了实验室作为论文的写作平台.我在论文写作之初,对很多的东西还比较陌生,彭老师特别给我们推荐了参考书籍,为我的论文写作提供了知识基础,我要特别提出感谢彭老师,感谢他无私的帮助。我很感谢给予我指导的彭许红老师,在设计过程中,我深切感受彭老师高度的责任感和严谨的治学态度,使我明白了学习就是一种态度,要抱着一丝不苟、严谨治学的态度才能完成设计内容.彭老师帮助完善我的设计思想和方案,以及在设计中仿真软件的使用,使我能顺利的完成软件及各单元电路的设计。在此,我对彭老师表示真诚的感谢和崇高的敬
28、意!由于本人学识有限,加之时间仓促,文中不免有错误和待改进之处,真诚欢迎各位师长、同学提供宝贵的意见。附录:module gp(clk_in,clk_out,count_i,count_o);input clk_in;output clk_out;output count_i;output count_o;reg clk_out;reg delete;parameter Q=11;parameter P=13;reg3:0 count;reg3:0 count_o;reg3:0 count_i;always (posedge clk_in)begincount=count+Q;count_i=count_i+1;if(count=P)begindelete=1b1;count=countP;endelsedelete=1b0;if(delete=1b0)count_o=count_o+1;if(count_i=13)begincount_i=0;count_o=0;endendalways (clk_in or delete)beginif(delete=1b1)clk_out=1b0;elseclk_out=clk_in;endendmodule20