基于FPGA的奇偶分频器的设计与实现.docx
《基于FPGA的奇偶分频器的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于FPGA的奇偶分频器的设计与实现.docx(34页珍藏版)》请在冰豆网上搜索。
基于FPGA的奇偶分频器的设计与实现
基于FPGA的奇偶分频器的设计与实现
摘要
分频器作为一种最基本的数字电路,广泛的应用在各种复杂的逻辑电路设计中,对于FPGA芯片来说,虽然能用自带的锁相环来产生一部分我们所需的频率,但是,用VHDL语言实现分频能从同一时钟较为方便、快捷的生成多个所需要的频率,同时能够实现信号的同步,因此,分频器的应用非常广泛。
本设计应用软件为开发平台,运用VHDL语言编程实现整数的奇偶分频的设计,在本设计中实现了0、2、4、6、8、10、12、14偶数的整数分频器设计和1、3、5、7、9、11、13、15奇数的整数分频器设计。
通过仿真结果,验证了设计的正确性。
关键词:
FPGA;分频器;VHDL语言;QuartusⅡ
DesignandimplementationofFPGA-basedparitydivider
Abstract
Dividerasabasicdigitalcircuits,widelyusedinavarietyofcomplexlogiccircuitdesign,theFPGAchip,althoughabletoownapartofourphase-lockedlooptoproducethedesiredfrequency,butusingVHDLlanguagedividefromthesameclockfrequencyismoreconvenientandefficienttogeneratemultipleneeds,whileabletoachievesynchronizationsignal,andtherefore,thedivideriswidelyused.
Thedesignofapplicationsoftwaredevelopmentplatform,theuseofVHDLlanguageprogrammingoddintegerdividerdesign,thedesignisimplementedinanevenintegerdivider0,2,4,6,8,10,12,14designand1,3,5,7,9,11,13,15oddintegerdividerdesign.Thesimulationresultsverifythecorrectnessofthedesign.
Keywords:
FPGA;divider;VHDLlanguage;QuartusⅡ
第一章绪论
一.1课题来源
分频器作为数字系统设计中一类重要的电子电路,在数字电路的迅速发展历程中,通常要运用分频器来实现设计中希望获取的时钟频率。
在遇到实际问题时,人们一般运用到的是整数分频,所以在实际情况中时而体现出等占空比,时而体现出非等占空比。
相同的系统设计有时也会运用不同形式的频率,此时,一般由定时器或定时器的级联模式组成不同形式的任意占空比偶数分频和不等占空比的奇数分频,这样的设计较为容易,而对比等占空比的奇数分频和小数分频设计就没有那么容易了。
本设计是运用VHDL硬件叙述语言,通过QuartusⅡ9.0软件编程,应用Altera公司的FPGA内核,实现了一种不仅可以满足以上需求,并且能够共用的可控分频器。
只要将分频器的输入接入对应的拨码开关,就能够获取希望得到的频率。
电子技术飞速更新的历程中,FPGA/CPLD以它的可靠性强、运行快、串并行运行模式等多重优点在电子设计中具有更广泛的意义,并且标志着将来EDA发展的趋向。
FPGA/CPLD系统的设计运用了高级语言,例如当前常用的也比较成熟的VHDL语言和AHDL语言等,从而联接了软件与硬件之间的相互的运用和融洽,减少了设计产业的开发周期。
因此应用先进的FPGA/CPLD替换旧式的通用集成电路、接口电路将使得电子技术走向更成熟的道路,为电子技术的迅速发展奠定了基础[1]。
EDA技术的发展推进了当代电子设计和数字技术的迅速发展,熟练地运用EDA工具,人类从此能够应用最基本的原理、实用算法、协议等进行对电子和数字系统的设计和发明,所有的工作几乎都能够通过计算机进行计算和分析,而且能够把电子产品从电路设计、性能分析到设计出IC版图或PCB版图的全部流程在计算机上智能分析和控制。
再加上当今电子产品日新月异的发展和集成技术功能强大的变化后,旧式阶段技术体现的中小规模集成电路结构已经不能满足人类的需求量,因此电路设计也逐渐地从中小规模芯片升级为大规模及超大规模芯片,且拥有高集成度、运行快、功耗小的可编程IC单一设备蓬勃发展起来了。
分频器应用在FPGA系统设计中具有相当高的工作效率,使用硬件描述语言完成设计消耗较少的逻辑地址就能够完成对时钟的操作,其成本很低,并且可编程等优点[2]。
一.2选题的意义和目的
自信息时代快速发展开始,电子产品已经日益在现实生活中占据越来越重要的作用对其的研发也随着电子元器件的快速发展而变化,相比最早的电子管器件和晶体管,到现在的集成电路占据市场,工程师在产品开发时,运用的工具和方法都日益先进快捷,但不管什么时候电子设计的思路一直是:
利用印刷电路板上的分立、现成元件、连接器或者IC创建物理平台实现所需要的功能。
例如:
在60年代,假设要制作一台收音机,工程师就必须在PCB板上利用晶体管、电感、电阻、电容、电线、滤波器、二极管等电路搭建出一个物理平台,然后对RF信号的调谐、滤波、放大等,最后收音机才具有全部功能。
在实现基础电路后,大部分分立器件将被统一集成到一颗芯片上,但是总的来说设计的思路没有任何变化,关键还是在于在一个PCB板上利用无源器件和IC搭建出一个物理平台,然后该电子产品即可成功接收信号并且实现对信号的处理和输出。
但是,随着可编程器件的出现,例如FPGA,不同于之前传统设计思路,设计思路从此发生了巨大的变化,工程师将大部分功能全部集中到可编程领域,设计流程也发生了巨大变化,更多样式的设计流程被统一到一起。
至于现在,更为快捷有效的电子设计是融合办卡设计、软件开发和可编程逻辑设计到一起,而将来,FPGA将融合处理、储存一体,板卡设计全部集中到可编程逻辑设计中,电子产品设计也将变成两种设计,即可编程逻辑设计和嵌入式软件设计。
那时,电子设计会更专注于软件设计,即一种由开发语言和工具实现的设计。
而FPGA也会演变为这种软件设计的载体,以FPGA形式存在的低成本、大规模可编程器件将可以随时随地的得到,这将使得工程师可以将所有系统核心功能都集中到软件设计中,并且充分利用这种设计得天独厚的优势[3]。
分频器是FPGA设计中最常见也是最基本的设计之一,虽然在当前大部分设计中,使用芯片厂家集成的锁相环资源居多,例如altera的PLL,Xilinx的DLL.来进行时钟的倍频,分频以及相移。
但是对于一些对时钟要求不高的基本设计,利用语言对时钟进行分频和相移仍然十分流行。
首先运用这种方法可以大幅度节省芯片内部的锁相环资源;再者,在达到对时钟操作的目的的同时将减少逻辑单元的消耗。
另一方面,利用语言设计进行时钟分频,可以体现出设计者对设计语言理解程度的深浅。
数字系统设计中的基本电路就是分频器,根据设计需要的不同,设计者会碰到偶数分频、奇数分频、半整数分频等等,有时需要等占空比,也有要求非等占空比。
在同一个设计中有时要求多种形式的分频。
一般由计数器或计数器的级联构成各种各样的偶数分频及非等占空比得到奇数分频,实现较为简单。
但对半整数分频、等占空比的奇数分频及小数分频实现较为困难。
本文通过VHDL硬件描述语言,通过开发平台,使用FPGA,设计了一种能够完美满足上述所有要求的分频器。
只需要在分频器的输入端输入相应的分频系数,便可以获得所需的频率。
随着各种各样先进电子产品的快速推出,无线通讯网络的广泛应用,导致对晶源的要求变得越来越高。
特别是在现代电子对抗战中,我们要求各种器件尽量工作我们要求的频率下。
电子产品的工作频率在其研发阶段就必须经过反复的调试才能确定下来,它既要必须保证电子产品具有较高的工作效率又需要保证电子产品的稳定性必须过关。
有一些产品要求其工作区域比较广,并且我们还希望它能够在不同的工作环境下采用不同的工作频率,在及其恶劣的环境下也必须保证其工作的稳定性,而在环境比较好的情况下我们希望它的工作效率得到更好的提高。
上述的条件就要求我们的工作频率可以随着我们环境的变化进行不断调整。
对于一个晶振源我们只能得到唯一的一个工作频率,但如果集成大量晶振来实现多频率输出,一方面要投入很大的成本,另一方面不同晶振间的相位延迟也无法预测,并且在一个区间中集成大量晶振也容易引起串扰。
假如我们能够通过分频,对较高的晶振源进行分频就可以比较容易的获得丰富的频率,这有利于我们对产品的测试和应用。
在传统的FPGA设计方法中,为了能够实现等占空比的奇数分频,通常采用通过对输入频率进行二倍频的电路,以及对倍频后的频率F进行偶数分频,这样就能够降低设计电路的最高工作频率,提高对硬件的要求。
本设计在不改变设计要求的前提下,通过对常规的设计方法进行适当的改进,实现了在不需要对输入频率进行二倍频的条件下实现等占空比分频,并且更好的利用了频率资源,同时降低了设计的复杂性[4]。
一.3课题研究现状
在数字逻辑电路设计中,分频器是一种基本电路,通常用来对某个给定频率的时钟进行分频,得到所需的时钟。
时序电路设计中需要各种各样的分频器来获得不同频率的时钟,其中以整数分频器最为常见。
整数分频可以简单的使用模N计数器实现,即随驱动时钟跳变N次后就输出一个进位脉冲,然后立即被清零或置位,再开始新一轮的循环的计数。
模N计数器的进位脉冲的宽度一般与驱动时钟相同,这对于边沿驱动的时序逻辑并不会带来什么问题。
但是在某些需要使用电平逻辑的设计中,我们更希望分频时钟拥有50%,或者与驱动时钟有相同的占空比。
这时就需要通过另外的逻辑方法来进行分频,或者使用PLL。
在基于CPLD(复杂可编程逻辑器件)/FPGA(现场可编程门阵列)的数字系统设计中,很容易实现由计数器或其级联构成各种形式的偶数分频及非等占空比的奇数分频,但对等占空比的奇数分频及半整数分频的实现较为容易[5]。
对于分频器的研究,Adler最早对注入锁定分频器进行研究,他在注入信号强度很弱的情况下对此进行了精确的推导,并且在小注入情况下得到了注入锁定范围比较精确的表达式,由此可以推导出在弱注入锁定现象发生的范围。
但是这个模型是不完善的,它的前提是注入信号的强度很弱,而在实际应用中,这个前提往往是不成立的。
Stanford大学的ThomasH.Lee等人对其做出了改进,提高了模型的精度,重新推导了Adler的经典公式。
由于注入锁定分频器各种优点,使之非常适合在毫米波通信领域担任分频角色,因此,近年来受到学术界的广泛重视。
许多科研单位,如加州大学洛杉矶分校,斯坦福大学,明呢苏达双城分校,佛罗里达大学,香港科技大学,韩国科技大学,田纳西大学,台湾大学,东京大学等知名高校都纷纷加入关于此研究的行列。
相比之下,国内对此的研究还比较少,主要集中在清华大学和浙江大学等高校。
因此,为了缩小与国外研究的差距,在以后毫米通信的核心技术竞争上占据主动位置,积极展开这方面的研究显得很有必要[6]。
在应用研究方面,科研人员针对目前注入锁定分频器在应用中出现的主要问题进行了广泛的研究,主要的方向有:
扩大锁定范围,提高正交多相输出的精度,降低源电压和功耗,研究多模分频以及提高工作速度。
多模分频的研究:
在应用中,常常需要分频器有灵活的分频模式,比如小数频率合成器中就需要用到双模或多模的分频器。
这种技术在数字触发器实现的分频器中已经比较成熟,但是在注入锁定分频器领域仍然需要深入研究[7]。
一.4本文组织结构
本文主要讲解了基于FPGA的奇数偶数分频器的设计,并把这二种功能模块集成到一起,通过QuartusⅡ软件验证设计的正确性并最终下载到实验箱上进行最终验证。
本文分为六章讲述,分别如下:
第一章:
主要介绍了课题的来源,选这个课题有何意义,目的是什么?
分析查阅国内外研究这个设计已到什么地步。
第二章:
主要是对整个设计过程应该会用到的一些工具和软件的介绍,比如,FPGA的介绍,QuartusⅡ软件的基本功能介绍,VHDL语言的特点,组成部分等。
第三章:
主要介绍偶数分频模块和奇数分频模块的原理分析,具体实现方法,流程图分析,程序实现以及波形仿真。
第四章:
主要介绍了设计的整个系统,顶层文件。
各个模块所实现的功能是什么,包括程序设计以及波形仿真。
第五章:
主要介绍了整个试验箱的功能,程序的验证,并观察出最终结果。
验证设计的正确性。
第六章:
主要对论文进行了总结与归纳,与已有结果进行了一个简明比较,概括了仍然存在的一些问题,包括进一步开展研究的见解和建议等。
第二章EDA技术
现场可编程门阵列FPGA(Field-Programmable–Gate-Array)是美国Xilinx公司在二十世纪八十年代年最先开发出的一种通用型用户可编程器件。
FPGA既具有门阵列器件的高度集成性能和通用性,又可以通过可编程逻辑器件使得用户编程的时候具有灵活性。
二.1FPGA技术
FPGA利用了逻辑单元阵列LCA(LogicCellArray)中的一个概定义,内部是由可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分构成。
当前流行的FPGA仍然是建立在查找表技术上的,已经有很大一部分超越了之前版本的基础性能特性,而且结合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块,FPGA芯片基本上是由六个部分完成,分别是:
可编程输入和输出单元、基本的可编程逻辑单元、完整的时钟管理单元、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
FPGA的基本特性有:
(1)用户在采用FPGA设计ASIC电路(专用集成电路)的时候,不需要投片去制作,就能够获取到适用的芯片。
(2)FPGA能够制作出其它全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有多样的触发器与I/O引脚。
(4)FPGA是ASIC电路设计中周期最短、开发资费最低、危险性能最小的器件之一。
(5)FPGA利用高速的CHMOS工艺,做功耗能低,能够被CMOS、TTL电平支持。
(6)FPGA是通过放置在片内RAM中的程序来设定它工作状态的,所以,工作的时候需要对片内的RAM程序进行编程。
用户可以通过配置模式的不同,采纳不同的编程方式。
配电时,FPGA芯片将EPROM中数据读取到片内编程RAM中,配置完成之后,FPGA随即进入工作状态。
去电后,FPGA将恢复成白片,内部逻辑的关系也同时取消,因此,FPGA能够反复被运用。
FPGA的编程不需要特定的FPGA编程器,只需用通用的EPROM、PROM编程器就可以。
当需要更改FPGA的功能时,只需要更换一片EPROM就行。
如此,同一片FPGA,不一样的编程数据,就可以产生不尽相同的电路功能。
因此,FPGA的运用是非常灵活的。
FPFA的主要生产厂商主要有:
Altera,Xilinx,Actel,Lattice。
其中Altera作为世界上最先开发可编程逻辑器件的厂家,是目前世界范围内市场占有率最大的厂家,它和Xilinx主要生产常用功能的FPGA,其主要生产的产品是采用了RAM工艺。
Actel主要制作生产非易失性的FPGA,产品主要采用了反熔丝工艺和FLASH工艺[8]。
二.2QuartusⅡ软件简介
QuartusⅡ是Altera公司开发的一种PLD综合性的研发软件,它能够通过原理图、VHDL、VerilogHDL以及AHDL等多种输入形式来设计,它里边包括了综合器和仿真器,可以完成一个较为完整PLD设计流程,从输入到硬件配置的设计流程。
QuartusⅡ能够在XP、Linux以及Unix等系统上运用,不但可以利用Tcl脚本去完成设计的流程,而且还提供了较为完善的用户图形界面设计形式。
它的特点有能够使运行的速度加快,界面的完美统一,功能能够集中起来,容易学习而且能够快速上手操作等。
QuartusⅡ能够兼容Altera的IP核,包括了LPM/MegaFunction宏功能模块数据库,这样就可以使用户充分的运用已有的模块,从而解决了设计的复杂性,最后使得设计的流程速度加快。
此外,QuartusⅡ通过与DSPBuilder工具还有Matlab/Simulink相互结合,使得设计人员能够很容易地设计出各种DSP应用操作系统。
它可以通过Altera的片上可编程系统(SOPC)来研发,将系统级的设计、嵌入式软件开发和可编程逻辑设计三种过程结合为一体,成为一种综合性的开发平台。
QuartusⅡ能够运用的器件类型是丰富多样的,其图形界面也很容易去操作。
Altera在QuartusⅡ中囊括了很多例如SignalTapII、ChipEditor和RTLViewer等的辅助设计工具,结合了SOPC和HardCopy的设计流程,而且传承了MaxplusII优美的图形界面以及简单的操作方法。
QuartusⅡ在不断利用的同时,受到设计人员的高度评价和欢迎,因为它作为可编程逻辑其中的一种设计环境,有强大的设计功能和简易实用的接口,在实际设计当中能够展现出它强大的特性,使得设计过程简单方便,流程简易清晰[9]。
二.3VHDL语言
VHDL全名Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,在1982年被研究出。
该语言被研究出直到1987年底,VHDL被IEEE电子电气工程师协会和美国国防部所确认,作为标准的硬件使用语言。
自IEEE-1076称为87版之后,各EDA公司先后进行推出各自的VHDL设计使用环境,或着宣布各自的设计使用器具可以与VHDL接口对接完成。
在20世纪90年代中期,IEEE对VHDL完成了修改任务,从两方面完成修改,一是提高了抽象层次的高度;二是扩展了VHDL整体描述的能力。
宣布了新的VHDL型号,就是IEEE标准的1076-1993版本,通俗称为93版。
VHDL是工业标准的研究硬件的语言,同时Verilog也作为IEEE的工业规定的硬件描述语言,得到大多数EDA公司的支持,在电子项目建设领域,已作为事实上的通用硬件叙述的语言[10]。
二.3.1VHDL简介
VHDL语言是一种高等级语言,用于电子设计和建设项目中。
80年代的后期它被成功应用。
最开始是通过美国国防部研究出来的,为美军所使用。
主要是为增加设计的可靠能力和减小研究周期的一种应用范围很广的设计语言。
VHDL被译成中文的意思是,超高速综合电路硬件叙述语言,主要在数字电路的设计中完成任务。
他在中国的应用领域是,FPGA/CPLD/EPLD的建设。
当然在大多数实力资源很雄厚的单位,它也被用来完成ASIC的建设。
VHDL主要用于叙述数字系统的构造、行动、功能和连接端口。
除了具有很多具有硬件特点的语句外,VHDL的语言方式、诉述风格和语言是十分相似于大多数的计算机高等语言。
VHDL的程序框架特点是使工程项目设计,或叫做设计实体(是一个元器件,电路单元或系统)。
外部(或称看见的部分,及接口)和内部(或称不可以看到部分),内部功能和实际计算功能就是他应用的部分。
设计的物理实体定义与内部相反窗口后,只要内部环境完成建设开发,其他的建设内容就完成调用,使得实体完成设计。
这种将设计实体内外部分的定义就是VHDL系统设计的重要支出,他的优点如下方所叙:
(1)VHDL语言是种丰富层次的硬件叙述语言,覆盖面扩大,叙述能力增加了。
就是设计的原始叙述可以是很精简的表示,通过层次之间的提高,结果可生成能够应用原始生产的电路,完成版图和系统的刷新和表示,完整的过程是可以通过VHDL环境下检测的。
(2)VHDL的设计描述就有扩展和谈性能力,就可以被计算机认识识别,是他被计算机容易识别,用VHDL生成的原件就是程序文件,我们应用的文档文件,就是工程设计人员的交互信息的文件,又能作为合同签约人员之间使文件。
(3)VHDL本身使用生命期较长。
因为VHDL的硬件叙述和使用的工艺技术没有关系与联系,不会因为技术的不同而被滞后使用。
当技术任务和特点变化时,需要改成相应程序文件的属性和参数就行。
(4)支持大规模设计的分离和原来拥有设计的多次重复应用。
单个大规模设计是项目组共同完成,单个人对于整体项目是不能完成的。
支持大规模设计的分离和原来拥有设计的多次重复应用提供有力支持。
(5)VHDL已经成功作为电子电气工程师协会承认的一个工业的基准,实际上已作为通用硬件叙述的语言[11]。
二.3.2VHDL特点
与其他硬件描述语言相比,VHDL具有以下特点:
(1)功能强大、设计灵活
VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。
它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。
VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。
VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。
(2)支持广泛、易于修改
由于VHDL已经成为IEEE标准所规范的硬件描述语言,大多数EDA工几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。
在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。
(3)强大的系统硬件描述能力
VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。
而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。
另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。
VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。
(4)独立于器件的设计、与工艺无关
设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。
当设计描述完成后,可以用多种不同的器件结构来实现其功能。
(5)很强的移植能力
VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。
(6)易于共享和复用
VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。
这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计[12]。
二.3.3VHDL组成
VHDL作为EDA技术的设计入门语言,包括实体、结构体、程序包、库和配置几个部分,实体用来描述设计单元的外部接口信号;结构体用于秒速设计单元内部结构和行为;程序包用来存放各个设计模块共享的数据类型、常数、子程序;库是专门用于存放程序包的地方;配置语句是在一个实体对应有多个结构体时,按照设计的要求指定实体所要配置的结构体,已支持正确编译。
在各个组成部分中,实体、结构体是必不可少的,其余的部分可以根据需要选用。
下面主要介绍实体和结构体。
(1)entity实体:
用来描述设计的对外端口信息,如输入和输出端口的描述,也可以描述参数化的数值。
entity实体描述格式如下:
entity实体名is
[generic(类属表)
[port(端口表);]
[begin
实体语句部分];
end