基于FPGA分频器的研究与设计_第1页
基于FPGA分频器的研究与设计_第2页
基于FPGA分频器的研究与设计_第3页
基于FPGA分频器的研究与设计_第4页
基于FPGA分频器的研究与设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、基于FPGA分频器的设计摘要:分频器是数字系统设计中的基本电路,在复杂数字逻辑电路设计中,根据不同设计的需要,会遇到偶数分频、奇数分频、半整数分频等,有时要求等占空比,也有要求非等占空比。在同一个设计中有时要求多种形式的分频,通常由计数器或计数器的级联构成各种形式的偶数分频和奇数分频,实现较为简单,但是对半整数分频实现较为困难。设计师希望有一种比较方便实用的设计方法,根据情况的需要,在实验室就能设计分频器并且可以马上检测使用,只需要更改频率系数而不修改其他器件或是电路板。因此,本文利用verilog硬件描述语言,通过开发平台,使用FPGA,设计了一种能满足上述情况的通用分频器。只要在分频器的输

2、入端输入相应的分频系数,就可以得到所需的频率。关键词:分频器; 偶数; 奇数; 半整数; 分频系数; FPGASeparate frequency inverter based on FPGA designAbstract:Points are the frequency of an digital system design, the basic circuit in complex digital logic circuit design, according to different design needs, will meet even points frequency, an od

3、d number of points frequency, half integer points frequency etc, sometimes require 390v, such as the request 390v. In the same design sometimes require multiple forms of points frequency, usually by a counter or counter cascade constitute various forms of the frequency and the odd points even points

4、, to achieve comparatively simple frequency, but half-and-half integer points frequency division frequency realize more difficult. Designers hope to have a more convenient and practical design methods, according to the needs of the laboratory condition, can design points frequency device and can imm

5、ediately detection using, only need to change frequency coefficients and not modify other device or circuit board. Therefore, this paper use verilog hardware description language, through the development platform, use the FPGA, design a kind of can meet the above situation of practical points freque

6、ncy device. As long as the frequency of an in points corresponding points input input frequency coefficients, can get frequency required. Keywords: Points, frequency, manometers, Even, Odd, Half an integer, Points frequency coefficients, FPGA 目 录第一章绪论11.1 FPGA简介11.2 选题的意义和目的21.3 国内外应用现状及研究现状31.3.1 应

7、用现状31.3.2 研究现状41.4 本文组织结构5第二章 几类分频器的设计及其分频原理62.1 偶数倍分频62.1.1 分频原理62.1.2 软件简介72.1.3 软件仿真72.2 奇数倍分频92.2.1 分频原理92.2.2 软件仿真102.3 半整数分频122.4 小数分频器132.4.1 积分分频器132.4.2 累加器分频142.4.3 小数分频器的应用152.5 本章小结17第三章 通用分频器的设计183.1 设计方案183.1.1 设计方案一183.1.2 设计方案二183.2 系统设计193.2.1 电路工作流程图及部分程序203.2.2 时钟输出流程图及部分程序233.3 通

8、用分频器的应用253.3.1 等占空比的奇数分频器253.3.2 任意占空比的奇、偶数分频253.3.3 等占空比的偶数分频器263.3.4 半整数分频器263.4 本章小结26结论27致谢28参考文献29第一章 绪 论1.1 FPGA简介FPGA是现场可编程门阵列的简称,是可编程逻辑器件(PLD)问世以来的第四代产品,适合于时序、组合等逻辑电路的应用。它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数字系统设计的主要软件平台,其主要特点就是完全由用

9、户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需要额外的改变PCB电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统的设计周期,提高了实现的灵活性并降低了成本,因此获得了广大硬件工程师的青睐。对PROM、EPROM、E2PROM熟悉的人都知道这些可编程器件的可编程原理是通过加高压或紫外线导致三极管或者MOS管内部的载流子密度发生变化,实现所谓的可编程,但是这些器件或只能实现单次可编程或编程状态难以稳定。FPGA则不同,它采用了逻辑单元阵列这样一个概念,内部包括可配置逻辑模块CLB、输出输入模块IOB和内部连线三个部分。FPGA

10、的可编程实际上是改变了CLB和IOB的触发器状态。这样就可以实现多次重复的编程,由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好的满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找结构,也有一些军品和宇航级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。通过烧写文件改变查找表内容的方法来实现对FPGA的重复配置。根据数字电路的基本知识可以知道,对于一个N输入的逻辑运算,不管是与或运算还是异或运算等等,最多只可能存在2N种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现

11、了与非门电路的功能。FPGA的原理也是如此,它通过烧写文件区配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能【11】。FPGA作为未来数字系统的基础之一,是目前硬件设计研究的重点,它可以代替几十甚至上百种通用IC芯片,具有可编程和实现方案容易改动等特点。由于FPGA的现场可编程性及高密度性,使电路设计的大部分工作在微机上进行,FPGA的功能完全由用户编制的配置程序所决定,不改变其电路的逻辑功能。同时具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及实时在线检验等优点,因此,可广泛应用于产品的原理设计和产品生产之中。在现代电子系统中,数字系统所占的比例越

12、来越大。系统发展的优势是数字化和集成化,而FPGA作为可编程ASIC(专用集成电路)器件,它将在数字逻辑系统中发挥越来越重要的作用。1.2 选题的意义和目的自电子产品诞生之日起,电子产品开发流程和方法就随着电子元器件的不断演进而变化,从最早的电子管器件到晶体管再到集成电路,工程师在设计产品时,所采用的工具和方法都有所不同,但是总的来说贯穿电子设计的统一思路是:使用印刷电路板上的分立、现成元件、连接器或者IC创建物理平台实现所需要的功能。例如:在60年代,如果要设计一个收音机,工程师必须通过在PCB板上通过晶体管、电阻、电容、电感、电线、滤波器、二极管等电路搭建出一个物理平台,实现对RF信号的调

13、谐、滤波、放大等,最后实现收音机的功能。基础电路出现以后,一些分立器件被集成到一颗芯片上,但是总的设计思路没有变化,还是要在一个PCB板上通过无源器件和IC搭建出一个物理平台,实现信号的接收、处理和输出。但是,随着FPGA等可编程器件的诞生,设计思路正发生着微妙的变化,随着更多功能从分立器件移到可编程领域,各种不同的设计流程交汇到了一起。现在,有效的电子设计是将板卡设计、可编程逻辑设计和软件开发融合在一起,未来,随着FPGA融合处理、储存于一体,板卡设计将融合进可编程逻辑设计中,电子产品设计将演变为可编程逻辑设计和嵌入式软件设计。那时,电子设计将更体现为一种软设计,一种通过开发语言和工具实现的

14、设计。而FPGA将成为这种软设计的载体,以FPGA形式存在的低成本、大规模可编程器件可以随时的获得,这使设计者有可能将所有系统核心功能都转移到软件设计中,并利用这种设计的优势【3】。分频器是FPGA设计中使用频率非常高的基本设计之一,尽管在目前大部分设计中,广泛使用芯片厂家集成的锁相环资源,如altera的PLL,Xilinx的DLL.来进行时钟的分频,倍频以及相移。但是对于时钟要求不高的基本设计,通过语言进行时钟的分频相移仍然非常流行。首先这种方法可以节省芯片内部的锁相环资源;再者,消耗不多的逻辑单元就可以达到对时钟操作的目的。另一方面,通过语言设计进行时钟分频,可以看出设计者对设计语言的理

15、解程度。分频器是数字系统设计中的基本电路,根据不同设计的需要,会遇到偶数分频、奇数分频、半整数分频等,有时要求等占空比,也有要求非等占空比。在同一个设计中有时要求多种形式的分频。通常由计数器或计数器的级联构成各种形式的偶数分频及非等占空比得到奇数分频,实现较为简单。但对半整数分频、等占空比的奇数分频及小数分频实现较为困难。本文利用Verilog硬件描述语言,通过开发平台,使用FPGA,设计了一种能满足上述要求的分频器。只要在分频器的输入端输入相应的分频系数,就可以得到所需的频率。随着各种先进电子产品的推出,无线通讯网络的广泛应用,使得对晶源的要求越来越高。特别是在现在电子对抗站中,我们要求各种

16、器件工作在其固定的频率下。产品的工作频率在产品的研发阶段必须经过反复的调试才能确定,它既要能保证产品的工作效率又需要保证产品的稳定性。有些产品由于其工作区域比较广,我们还希望它在不同的工作环境下能够采用不同的工作频率,在恶劣的环境下保证其工作的稳定性,在环境比较好的情况下我们希望它的工作效率得到更好的提高。这就需要我们的工作频率能够随着我们环境的变化而变化。对于一个晶振源我们只能得到一个工作频率,但如果集成大量晶振来实现多频率输出,一方面要投入很大的成本,另一方面不同晶振间的相位延迟无法预测,而且在一个区间中集成大量晶振也容易引起串扰。如果我们仅通过分频,对较高的晶振源进行分频就能很容易的得到

17、比较丰富的频率,有利于我们对产品的测试和应用在传统的FPGA设计方法中,为了能实现等占空比的奇数分频,常常采用对输入频率进行二倍频的电路,以及对倍频后的频率F进行偶数分频,这样就降低设计电路的最高工作频率,提高对硬件的要求。本设计在不改变设计要求的前提下,对常规的设计方法进行改进,实现了在不需要对输入频率进行二倍频的条件下实现等占空比分频,从而更好的利用频率资源,同时降低了设计的复杂性【2】。众所周知,分频器是FPGA设计中使用频率非常高的基本设计之一,尽管在目前大部分设计中,广泛使用芯片厂家集成的锁相环资源,如altera 的PLL,Xilinx的DLL.来进行时钟的分频,倍频以及相移。但是

18、对于时钟要求不高的基本设计,通过语言进行时钟的分频相移仍然非常流行,首先这种方法可以节省芯片内部的锁相环资源,再者,消耗不多的逻辑单元就可以达到对时钟进行操作的目的。1.3 国内外应用现状及研究现状 应用现状随着人类社会信息化进程的加快,在现代电子系统设计中,数字电子系统所占的比例越来越大,现代电子系统发展的趋势是数字化和集成化。而在数字系统中,时钟是各模块协同工作的根本保障,特别是时序数字系统,没有时钟根本无从工作。在数字系统设计中,经常需要对基准时钟进行不同倍数的分频而得到各模块所需的时钟频率,分频器是数字系统设计中最常见的基本电路之一。在此前提下,低功耗的高速通信电路设计近年来在集成电路

19、研究领域受到越来越多的关注。分频器作为通信系统的核心部件之一,广泛应用于频率合成器、正交信号生成以及时钟恢复电路中。如图1-1所示分频器用于无线接收机:图1-1分频器是频率合成器中工作在最高频率的模块之一。其工作速度往往决定了整个系统的最高工作速度,而且其性能往往对系统性能有决定性的影响,因此,许多科研单位都对分频器展开了广泛的研究。当前主要应用的分频器结构有以下三种:触发器结构,Miler再生环路结构,以及注入锁定结构。目前在通信系统中,大多数分频器都采用数字触发器结构。这种分频器虽然具有全宽带工作的优势,但是在系统中它们功耗往往是不能忽视的,而且其功耗随着系统工作频率的提高而增加。在一些应

20、用中,为了降低功耗,甚至会使用分立的分频器作为分频器组的第一级。 研究现状在数字逻辑电路设计中,分频器是一种基本电路,通常用来对某个给定频率的时钟进行分频,得到所需的时钟。时序电路设计中需要各种各样的分频器来获得不同频率的时钟,其中以整数分频器最为常见。整数分频可以简单的使用模N计数器实现,即随驱动时钟跳变N次后就输出一个进位脉冲,然后立即被清零或置位,再开始新一轮的循环的计数。模N计数器的进位脉冲的宽度一般与驱动时钟相同,这对于边沿驱动的时序逻辑并不会带来什么问题。但是在某些需要使用电平逻辑的设计中,我们更希望分频时钟拥有50%,或者与驱动时钟有相同的占空比。这时就需要通过另外的逻辑方法来进

21、行分频,或者使用PLL。在基于CPLD(复杂可编程逻辑器件)/FPGA(现场可编程门阵列)的数字系统设计中,很容易实现由计数器或其级联构成各种形式的偶数分频及非等占空比的奇数分频,但对等占空比的奇数分频及半整数分频的实现较为困难。对于分频器的研究,Adler最早对注入锁定分频器进行研究,他在注入信号强度很弱的情况下对此进行了精确的推导,并且在小注入情况下得到了注入锁定范围比较精确的表达式,由此可以推导出在弱注入锁定现象发生的范围。但是这个模型是不完善的,它的前提是注入信号的强度很弱,而在实际应用中,这个前提往往是不成立的。Stanford大学的Thomas H.Lee等人对其做出了改进,提高了

22、模型的精度,重新推导了Adler的经典公式。由于注入锁定分频器各种优点,使之非常适合在毫米波通信领域担任分频角色,因此,近年来受到学术界的广泛重视。许多科研单位,如加州大学洛杉矶分校,斯坦福大学,明呢苏达双城分校,佛罗里达大学,香港科技大学,韩国科技大学,田纳西大学,台湾大学,东京大学等知名高校都纷纷加入关于此研究的行列。相比之下,国内对此的研究还比较少,主要集中在清华大学和浙江大学等高校。因此,为了缩小与国外研究的差距,在以后毫米通信的核心技术竞争上占据主动位置,积极展开这方面的研究显得很有必要。在应用研究方面,科研人员针对目前注入锁定分频器在应用中出现的主要问题进行了广泛的研究,主要的方向

23、有:扩大锁定范围,提高正交多相输出的精度,降低源电压和功耗,研究多模分频以及提高工作速度。多模分频的研究:在应用中,常常需要分频器有灵活的分频模式,比如小数频率合成器中就需要用到双模或多模的分频器。这种技术在数字触发器实现的分频器中已经比较成熟,但是在注入锁定分频器领域仍然需要深入研究【9】。1.4 本文组织结构本文讲述了一种可用于FPGA实现的可完成偶数分频、奇数分频、半整数分频和小数分频的分类设计和可以完成任意数分频的通用分频器,并通过FPGA实现证明其可行性。论文共分为三章,具体的组织结构如下:第一章 绪论 主要对FPGA进行了简单介绍,介绍了课题的研究背景,国内外研究现状及应用现状,并

24、且提出了文章的组织结构。第二章 几类分频器的设计及其分频原理 介绍了各种独立的分频器的分配原理,对偶数分频和奇数分频举例进行如何仿真,并介绍分频器在日常生活中的一些应用实例。第三章 通用分频器的设计 首先对通用分频器设计方案的提出并进行分析,最终选择可以实施的方案。方案选定后对通用分频器进行系统的设计,最后分析通用分频器的应用。第二章 几类分频器的设计及其分频原理2.1 偶数倍分频.1 分频原理偶数分频应该是大家都比较熟悉的分频,通过计数器计数是完全可以实现的。如进行N倍偶数分频,若要实现占空比为50%的偶数N分频,那么可以通过由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时,输出

25、时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数。以此循环下去,这种方法可以实现任意的偶数分频。 软件简介【5】Libero开发软件是一个非常人性化的开发环境,整个界面以流程图的方式指明了开发的步骤,它集合了众多第三方先进的EDA工具,包括Mentor公司提供的仿真工具ModeSim、Synplicity公司提供的综合工具Synplify,还有Aynapticad公司提供的波形激励生成工具Waveformer Lite等。Actel的Libero设计文件生成可以有四种方式:HDL语言生成、smartDesign输入、CoreConsole输入和ViewDraw原理图输入。其中应

26、该还有一种输入就是SmartGen输入,它已经集成在Libero开发环境左侧的Catlog窗口中。在这些输入方式中,HDL语言生成是最常用也是移植性最好的。如果想到Actel公司一些现成的模块就需要用到SmartGen,例如:RAM、FIFO、加法器等;对于HDL语言不熟悉或者习惯于用原理图来搭建顶层设计的用户可以使用原理图输入,例如:smartDesign、ViewDraw;如果想搭建系统级的平台,如8051、ARM7、CorexM1可以用CoreConsole作为输入。 软件仿真下面以十二分频为例进行介绍如何在Libero8.5软件下进行仿真。点击HDL Editor进入HDL输入方式,在

27、弹出文件类型选择框中选择Verilog Source File,如果用VHDL的用户可以选择VHDL Source File,然后在右边输入文件名称66。在弹出的新文件中,输入HDL代码。输入源文件后可以对刚才的程序进行功能仿真。首先要创建仿真用的激励文件,激励文件可以采用HDL文本输入或者画波形图的方式得到。然后点击WaveFormer图标打开WaveFomer,点击clk48M,从右键菜单中选择“Signal Clock“把这个信号设为时钟信号,再继续双击clk48M信号,从弹出的菜单中选择”Clock Propeties“把信号的时钟频率改成为48MHz,选中信号,先把HIGH图标选中,

28、画一段高电平信号,再把LOW图标选中,画一段低电平。画完好以后点击保存图标,保存类型选为Verilog w/Top Level Test Bench(*.V)类型,文件名不要更改,采用默认就就可以。保存.V类型的文件后再点击保存图标,把文件保存为.btim格式的文件。最后关闭WaveFormer,右击Simulus Editor,选择Organize stimulus,在弹出的窗口点击Add按钮把测试文件导入,如下图2-1所示:图2-1当把仿真激励文件加入后,WaveFormer会变成绿色,说明已经通过,然后点击ModelSim仿真就可以了,ModelSim的工程在调用的时候自动会建立。最后得

29、到的十二分频等占空比的仿真效果图如图2-2下:图2-2 2.2 奇数倍分频 分频原理【7】奇数倍分频有两种实现方法,其中之一完全可以通过计数器来实现,如进行三分频,就可通过待分频时钟上升沿触发计数器来进行模三计数,当计数器计数到邻近值时进行两次翻转。比如可以在计数器计数到1时,输出时钟进行翻转,计数到2时再次进行翻转。这样,就在计数值邻近的1和2进行了两次翻转。如此便实现了三分频,其占空比为13或23。如果要实现占空比为50的三分频时钟,则可通过待分频时钟下降沿触发计数,并以和上升沿同样的方法计数进行三分频,然后对下降沿产生的三分频时钟和上升沿产生的时钟进行相或运算。即可得到占空比为50的三分

30、频时钟,这是奇数分频的三种方法。这种方法可以实现任意的奇数分频。如将其归类为一般的方法:对于实现占空比为50的N倍奇数分频,首先要进行上升沿触发以进行模N计数,计数选定到某一个值再进行输出时钟翻转,然后通过(N-1)2再次进行翻转,就可得到一个占空比非50的奇数N分频时钟。再同时进行下降沿触发的模N计数,当其到达与上升沿触发输出时钟翻转选定值相同时,再进行输出时钟翻转,同样,经过(N-1)2时,输出时钟再次翻转以生成占空比非50的奇数N分频时钟。将这两个占空比非50的N分频时钟相或运算,就可以得到占空比为50的奇数分频时钟。原理图见下图2-3:clkqoutresetclkqoutresetc

31、ount3count3clk_outclkresetornot图2-3 软件仿真在Libero开发软件下,如等占空比三分频的仿真图如图2-4下:图2-4仿真结果如下图2-5:图2-52.3 半整数分频【1】首先讲讲如何进行N+0.5分频,这种分频需要对输入时钟进行操作。基本的设计思想:对于进行N+0.5分频,首先进行模N的计数,在计数到N-1时,输出时钟赋为1,回到计数0时,又赋为0,因此,可以知道,当计数值为N-1时,输出时钟才为1。因此,只要保持计数值N-1为半个输入时钟周期,即实现了N+0.5分频时钟,因此保持N-1为半个时钟周期是一个难点。从中可以发现,因为计数器是通过时钟上升沿计数,

32、因此可以在计数为N-1时对计数触发时钟进行翻转。那么时钟的下降沿变成了上升沿。即在计数值为N-1期间的时钟下降沿变成了上升沿,则计数值N-1只保持了半个时钟周期,由于时钟翻转下降沿变成上升沿,因此计数值变为0。因此,每产生一个N+0.5分频时钟的周期,触发时钟都是要翻转一次。电路图见下图2-6,原理图见下图2-7:异或门模N计数器2分频器ff0/(N-0.5)F0/(2N-1)图2-6M分频M+1分频选择输出控制计数器时钟源输出时钟图2-72.4 小数分频器小数分频器的实现方法很多,但其基本原理一样:在若干个分频周期中采取某种方法使某几个周期少计一个或几个数,即吞脉冲原理,从而在整个计数周期的

33、总体平均意义上获得一个小数分频比。以下简要说明两种比较常用的小数分频电路的原理及设计方法。积分分频器是比较常见的小数分频器,其基本原理是将小数分频比转换为整数比值,再采用计数器对输入时钟进行计数,根据计数值吞掉一些脉冲,从而得到所需的频率输出;累加器分频则是一种基于相位累加器基本原理的一种分频技术,将累加器最高位作为分频输出,根据送入累加器中不同的累加步长改变分频倍数。 积分分频器积分分频器的设计首先需将小数分频比转换为整数比值,再采用计数器对输入时钟进行计数,根据计数值对输入时钟及插入脉冲进行选择分配,从而得到需要的频率输出脉冲,如图2-8所示。计数器多路选择器输入时钟频率控制字插入脉冲分布

34、输出图2-8设“1010101010”代表5KHz 信号中的一段信号。在同样长的时间内设法得到另一脉冲串“1010100000”信号,若其0、1宽度与5KHz信号中的0、1宽度相同,即为输入时钟的宽度,则可得到3kHz 的时钟信号。这样,多路选择器可在前三个周期中选择输入时钟直接输出,而在后两个周期选择输出0,就可以得到脉冲串“1010100000”,从而完成3/5倍的分频,得到3KHz的信号。 累加器分频在DDS技术中经常采用相位累加器来进出频率控制,对于频率不变的输入基准时钟,可采用对相位累加器置不同的累加步长来得到不同的寻址速率。从中得到启示,可采用累加器进行小数分频,如图2-9所示。数

35、据转换加法器并行数据寄存器频率控制字寄存器最高位分频输出时钟输入图2-9累加器由加法器与并行数据寄存器组成,频率控制字经数据转换模块转换为累加器的累加步长,将并行数据寄存器的高位作为时钟输出。设输入时钟为频率Fin,相位累加器的位数为N,输出频率的分辨率(当送入的频率控制字K为1时的输出频率)为F2=Fin/2N从式可看出,在累加器位数足够高时,最小输出频率(频率分辨率)可接近零频。实际设计过程中,可根据分频倍数的要求来选择累加器的位数。若设频率控制字为K,则输出频率为Fout=(K*Fin)/2N。以上三种小数分频器各有其特点,采用4527的分频电路比较复杂,适用于频率为10的幂的输入;积分

36、分频器首先需把分频倍数转换为两整数之比值,故在使用中,对分频倍数要求比较严格,灵活性受到一定限制;累加器分频则对频率为2的幂的输入时钟分频效果比较好,而且输出时钟有一定的抖动,但还是可以应用于一些特殊场合。 小数分频器的应用【12】小数分频器在数字系统设计中的应用非常广泛,经常是各个模块需要的频率不相同,这就需要对时钟进行分频得到各模块需要的时钟频率。但常规的整数分频器(实际就是计数器)不能满足要求。例如,若基准时钟频率为100MHz,对其进行整数分频,只能得到50MHz、25MHz等频率值,如想得到30MHz、20MHz等频率值,就需要应用小数分频器对基准时钟进行小数分频。在DDS波形发生器

37、设计和步进电机驱动中,需要对输出信号频率进行控制,若采用一般计数器来进行分频,由上述分析可知,输出信号频率值的连续性就受到限制。为了使输出信号频率值能连续可控,就需进行小数分频。在DDS技术中的应用:图2-10为DDS技术基本原理图,频率控制字送入分频器。设基频频率为Fin,分频倍数为W,则计数器的时钟频率为为Fin/W。计数器在频率Fin/W的时钟作用下计数对查找表寻址输出波形数据。若查找表存储深度为M(一个周波存储M个点),则输出波形的频率为Fo=Fin/WM式中,Fin为基频频率、存储深度M为一定值,这样就只需控制分频倍数K来控制合成波形的频率。分频器可编程数据转换计数器查找表基频输出频

38、率控制字图2-10在DDS技术中,常用的技术是采用累加器对查找表寻址。但采用这种方法时,在输出高频与低频波形时的寻址点数不同。在高频寻址点数较少,而在低频时点数较多,为保证在频率较高时输出的波形失真度小,在低频阶段,寻址的点数就比较多,需要较深的存储深度。而采用图2-10所示的方法,则不管在低频或高频,寻址点数一样,这样就可以采用一致的存储深度,节约存储器。特别是采用CPLD进行系统设计时,查找表也可采用CPLD来设计,易于系统集成。在步进电机驱动中的应用:步进电机是一种用电脉冲信号进行控制,将电脉冲信号转换为相应的角位移或线位移的控制电机。在步进电机的驱动中,需要对步进电机转速进行控制。图2

39、-11为步进电机驱动电路原理图。基准时钟在频率控制字作用下分频得到所需频率的脉冲作为脉冲分配器的时钟,这样即可控制脉冲分配器输出驱动脉冲的速率,经功率放大后驱动步进电机。小数分频器功率放大器脉冲分配器步进电机控制信号频率控制字基准时钟图2-112.5 本章小结通过对以上几种分频器的设计可知,如果需要的分频形式较少,只需要偶数分频、奇数分频、半整数分频或者小数分频中的一种,就可以参考用本章所设计的分频器来进行分配,从而满足需要,利用各个独立的分频器,可以节省资源。第三章 通用分频器的设计3.1 设计方案【12】针对现有的常用分频器的使用局限性,介绍了一种可以实现任意小数、分数分频的新型分频器。由

40、预先设置的分频参数,通过使用的一个带余数输出的除法器,计数出其商和余数,确定两个分频器的分频系数和分频次数。通过控制两个分频交替工作,从而实现任意分频。分析了这种分频器的工作原理,提出了一种简单的实现电路,并用Verilong-HDL语言描述了该分频器。 设计方案一频率合成器是数字系统设计中的基本电路,在数字系统特别是无线通信系统中有着广泛的应用,如载波恢复、上下变频、比特同步、时隙同步等等,都需要各种不同性能指标的频率合成器。他是现代数字通信中必不可少的部分。频率合成器可由锁相环实现,完成频率的捕获、跟踪和锁定,再通过倍频或分频得到所需要的频率。在实现分频过程中,有时会遇到分数或者小数分频,

41、这种分频器一般不好用单个计数器实现,而需要用两个或多个整数计数器交替分频,得到一个平均分频系数。其原理为:控制整数分频器按照一定的规则变化,比如,若要得到5.3的小数分频,只要在10次分频中,作7次5分频,再作3次6分频,就可以实现小数分频。上述的分频原理能够实现任意的分频要求,但是必须事先算好两个分频器的分频值和各自的分频次数。文献中阐述了能够实现任意小数分频的分频器的实现方法。其原理为:如果原先设置的分频系数K能够转化成有穷小数,通过一个控制器控制N和N+1分频器交替工作,使每10个脉冲中,有X个为N+1分频所得,10-X个脉冲为N分频所得,从而能够实现预置分频值为K的任意分频,即能够实现

42、任意小数分频。这种分频器在K值为分数时,比如3/2,就无法计算出对应的X和N值。这就是这种电路的局限性所在。文献中还提到一种能够实现占空比为50%的分频电路,但是,该电路只用于整数分频或半整数分频,使用局限性更大。 设计方案二上面介绍的分频器均存在一定的局限性,这里介绍一种新型的分配方法。假定需要对输入频率进行任意分频,为了表示其通用性,这里用分数M/N(其中M、N均属于非0正整数)表示分频系数。假定使用两个分频系数分别为K和K+1的分频器交替工作,每个分频器的工作周期分别为N-X次和X次,若通过这种方式,能够得到所需的M/N分频的频率输出,则K、X、M和N必将满足一下关系式:M/N=(K*(

43、N-X)+(K+1)*X)/N。要实现M/N分频,则当有N个脉冲输出时,必须对应M个脉冲输入,即输入时钟经过M个周期,上式右边表示,M个输入脉冲分别进行了N-X次K分频和X次K+1分频。每次分频得到一个输出脉冲,共得到N-X+X=N个输出脉冲。显然等式左右相等。将上面公式化简可得:M=K*N+X上式说明了分数分频的分子M、分母N、分频系数K和分频次数X的等式关系。从另一个角度看,如果把两个预置值M、N分别当作被除数和除数,则N和X就可以分别看成是商和余数,如下式所示:(M-X)/N=K即如果输出需要得到一个任意M/N的分数频率,只要事先预置其分子M和分母N,经过一个带余数输出的除法器,即可以得

44、到两个分频器的分频系数K、K+1和对应的分频次数N-X和X,从而实现任意的分数分频。3.2 系统设计下面介绍如何利用FPGA实现该分频器分频次数和复位选择等,几个部分组成,如图所示:由上面介绍可知,该分频器可由一个带余数输出的触发器、可置位的K/K+1分频器、分频器分频次数和复位选择等几个部分组成,如图3-1所示:除法器复位选择分频器分频次数计数输入时钟输入系数M、N商、K频率输出图3-1图3-1中为了合理利用硬件资源,提高系统工作频率,除法器可以采用多级流水线的移位减方法实现,每次计算完一位商,将被除数左移一位,最后得到所需要的商K和余数X。分频器可以使用一个最大计数值为K的计数器实现,其中

45、K为M/N所得到的商。通过复位选择模块,控制计数器复位到0或者1,从而通过使用一个计数器同时完成K+1分频和K分频。每次计数器溢出,分频次数计数器加1,通过分频次数计数器的值决定分频器的复位值。当分频计数器的值大于X时,分频器复位值为0,否则为1。当分频次数计数器计数到N时,该计数器复位到1,从而实现周期为N的计数。 电路工作流程图及部分程序上述电路的工作流程如图3-2所示:开始无法分频K值不为0?分频次数大于等于N?计数器计数到K值?值?输入分数分母M和分子N分频计数器复位到1值分频计数器复位到0值K+1分频计数置分频数K和分频次数X分频次数加1分频次数加1分频次数计数器复位到1值分频次数大

46、于X?移位除法器算出商K和余数X计数器计数到K值?K+1分频计数NYYNNN图3-2用FPGA实现K/K+1分频器的部分Verilog-HDL源代码如下所示: Always (posedge clkin)begin if (reset)countk<=4b0000;else if(countnice)beginif(divfreqken)countk<=4b0001;elsecountk<=countk+4b0000;endelse用FPGA实现分频次数计数器的部分Verilog-HDL源代码如下所示:Always (posedge clkin)beginif (reset)

47、countn<=4b0000;else if (countninc)beginif(countn=dcnominator)countn<=4b0001;else countn<=countn+4b0001;endendK分频使能assign divfreqken=(countn>divtimesx);assign countninc = (countk= =divfreqk); 时钟输出流程图及部分程序时钟输出的流程如图所示。当分频计数器计数到分频值K的1/2倍和1倍时,输出脉冲反转,以保证分频计数器工作在一个周期,输出时钟也为一个周期。从而实现所需的分频功能。当分频系

48、数K为1时,输出时钟直接等于输入时钟,当K为0时,这是个倍频器,不是本文讨论的范围。时钟输出的电路工作流程图如图3-3下:开始输出时钟任意分数计数值为K/2或K?K值为1且为K+1分频计数?K值为1,且为K分频计数?K值不为0?输出时钟为输入时钟输出时钟电平值取反NNNYNY图3-3用FPGA实现频率输出功能的部分Verilog-HDL源代码如下: /当计数到K/2时,输出时钟反转标志 Assign clkreverse = (count = =1b0 ,divfreqk3:1);always (posedge clkin)beginif(reset)clkdiv<= 1b0;/计数到K

49、或K/2时,输出时钟反转Else if (clkreverse countninc)Clkdiv <=clkdiv;End/当K值为0或1时,输出时钟等于输入时钟Assign clkoutcn = (divfreqken && (divfreqk = = 4b0001) ¶(divfreqk = = 4b0000);/时钟输出Assign clkout = clkoutcn?clkin:clkdiv;3.3 通用分频器的应用【9】综上可以看出,只需要对带预置的模N计数器的初值进行设定,以及对控制端口control的电平高低进行设定,就可以利用这个基于FPGA的实

50、用分频器来得到我们所需要的频率。 等占空比的奇数分频器如果需要得到分频系数为M的等占空比的奇数分频,那么只需要将带预置的模N计数器的初值N设定为N=M+1/2,然后根据N的值调整带预置的模N计数器模块的程序中位宽就可以在输出端口Qdeng得到所需要的分频系数为M的等占空比的奇数分频。 任意占空比的奇、偶数分频 如果需要得到分频系数为M的任意占空比的奇、偶数分频,那么只需将带预置的模N计数器的初值N设定为N=M,然后根据N的值调整带预置的模N计数器模块的程序中的位宽就可以在输出端口Qban得到所需要的分频系数为M的任意占空比的奇、偶数分频。 等占空比的偶数分频器 如果需要得到分频系数为M的等占空

51、比的偶数分频,那么只需要将带预置的模N计数器的初值N设定为N=M/2,然后根据N的值调整带预置的模N计数器模块的程序中的位宽就可以在输出端口Qdeng得到所需的分频系数为M的等占空比的偶数分频。 半整数分频器如果需要得到分频系数为M-0.5的半整数分频,那么只需要将带预置的模N计数器的初值N设定为N=M,然后根据N的值调整带预置的模N计数器模块的程序中位宽就可以在输出端口Qban得到所需的分频系数为M-0.5的半整数分频。3.4 本章小结本章介绍了一种进行FPGA开发式,所需多种分频的实现方法。如果设计中所需要的分频形式较多。可以直接利用本章的设计,通过对程序的稍微改动来满足自己的设计要求,该设计具有很强的通用性。结论经过本次课程设计,让我更加深刻的学习和巩固了Verilo数字系统设计这门课程,不仅从理论上掌握了课堂上没有学懂的知识,还从实践中拓宽了我的知识面,让我对我们专业的知识有了更加全面的认识,更加清晰的认识到我们专业知识的实用性是如此的强。可以通过

温馨提示

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

评论

0/150

提交评论