基于FPGA任意倍数分频器设计_第1页
基于FPGA任意倍数分频器设计_第2页
基于FPGA任意倍数分频器设计_第3页
基于FPGA任意倍数分频器设计_第4页
基于FPGA任意倍数分频器设计_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、 第 III 页 目 录 1 绪论.1 1.1 课题分析.1 1.2 FPGA 概述 .2 1.3 VHDL 语言和 QUARTUS II 简介.4 1.3.1 VHDL 语言简介 .4 1.3.2 QUARTUS II 简介.6 2 分频基本原理.8 2.1 等占空比偶数分频方法.8 2.2 等占空比的奇数分频方法 .8 2.3 分数分频方法.9 2.4 小数分频方法.9 2.5 任意倍数分频器.10 3 任意倍数分频器设计.12 3.1 设计思想.12 3.2 顶层框图设计.13 3.3 顶层文件设计.13 3.4 模块设计.14 3.4.1 偶数分频模块的设计.14 3.4.2 奇数分频

2、模块的设计.15 3.4.3 半整数模块设计.16 3.4.4 占空比可调的分频模块设计.17 3.4.5 小数分频模块设计.18 3.4.6 encoder_35 模块的设计.19 3.4.7 led 模块的设计.20 第 IV 页 3.4.8 mux51 模块的设计 .21 结论.23 致谢.24 参考文献.25 附录 A VHDL 源程序.26 附录 A1:偶数分频实现的程序.26 附录 A2 奇数分频实现的程序.28 附录 A3 半整数分频实现的程序.30 附录 A4 占空比可调的分频实现的程序 .32 附录 A5 小数分频实现的程序 .34 附录 A6 ENCODER_35 模块实现

3、的程序.42 附录 A7 LED的实现程序.43 附录 A8 MUX51 模块的实现程序 .47 附录 B 顶层文件设计原理图.48 第 1 页 1 绪论 1.1 课题分析 随着电子技术的高速发展,FPGA/CPLD 以其高速、高可靠性、串并行工作方式等 突出优点在电子设计中受到广泛的应用,而且代表着未来 EDA 设计的方向。 FPGA/CPLD 的设计采用了高级语言,如 VHDL 语言 AHDL 语言等,进一步打破了软 件与硬件之间的界限,缩短了产品的开发周期。所以采用先进的 FPGA/CPLD 取代传 统的标准集成电路、接口电路已成为电子技术发展的必然趋势1。 EDA 技术代表了当今电子设

4、计技术的最新发展方向,采用 EDA 工具,电子设计 师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并 可以将电子产品从电路设计、性能分析到设计出 IC 版图或 PCB 版图的整个过程在计 算机上自动处理完成。由于现代电子产品的复杂度和集成度的日益提高,一般分离的 中小规模集成电路组合已不能满足要求,电路设计逐步地从中小规模芯片转为大规模、 超大规模芯片,具有高速度、高集成度、低功耗的可编程朋 IC 器件已蓬勃发展起来2。 分频器是数字系统设计中的一种基本电路,我们往往需要通过分频器得到我们所 需要的时钟频率,在 FPGA 的设计中也是使用频率非常高的一种基本设计。基于

5、 FPGA 实现的分频电路一般有两种方法:一种是使用 FPGA 芯片内部提供的锁相环电 路进行分频,如 ALTERA 提供的 PLL(Phase Locked Loop) ,Xilinx 提供的 DLL(Delay Locked Loop) ;第二种是使用硬件描述语言,如 VHDL、Verilog HDL 等。 使用锁相环电路进行分频有许多的优点,例如可以实现倍频、相位偏移以及占空比可 调等。但是由于 FPGA 内部提供的锁相环个数极为有限,不能满足使用时的要求。因 此使用硬件描述语言实现分频电路在数字电路设计较为常用,因为它消耗不多的逻辑 单元就可以实现对时钟的操作,具有成本低、可编程等优点

6、3。 在数字系统的设计中,设计人员会遇到各种形式的分频需求,如整数、小数、 分数分频等。 在某些数字系统设计中,系统不仅对频率有要求,而且对占空比也有着 很严格的要求。由计数器或计数器的级联构成各种形式的偶数分频及非等占空比的奇 第 2 页 数分频实现起来较为简单,但对半整数分频及等占空比的奇数分频实现较为困难,小 数分频和分数分频更困难。 本论文利用 VHDL 硬件描述语言,通过 Quartus7.2 开发平台,设计了一种能满 足偶数分频,奇数分频,半整数分频,占空比可调的分频,小数分频的任意倍数分频 器,并可以通过按钮来选择具体由哪一种分频器进行操作,而拨码开关则可以预置一 些分频系数,发

7、光二极管则显示具体由那种分频实现,数码管显示分频的系数。分频 系数设置:偶数分频:2,4,6,8,10,12,14 奇数分频:1,3,5,7,9,11,13,15 半整数分频:1.515.5 占空比可调的分频:1:1,1:2,1:3,2:1,2:2,2:3,3:1,3:2,3:3 小数分频:1.13.3 1.2 FPGA 概述 FPGA(Field Programmable Gate Array)现场可编程逻辑门阵列,它是在 PAL(Programmable Array Logic) 、GAL(generic array logic)、CPLD(Complex Programmable Log

8、ic Device)等可编程器件的基础上进一步发展的产物。它是作为专用 集成电路(Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,既 解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数 字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程, 从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需额外地改变 PCB 电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短 了系统设计的周期,提高了实现的灵活性并降低了成本 以硬件描述语言(Verilog 或 VHDL

9、)所完成的电路设计,可以经过简单的综合与 布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑 元件可以被用来实现一些基本的逻辑门电路(比如 AND、OR、XOR、NOT)或者更 复杂一些的组合功能比如解码器或数学方程式。在大多数的 FPGA 里面,这些可编辑 的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把 FPGA 内部的逻辑块连接起来,就 好像一个电路试验板被放在了一个芯片里。一个出厂后的成品 FPGA 的逻辑块和连接 第 3 页 可以按照设计者而改变,所以 FPGA 可以完成所需要

10、的逻辑功能。 FPGA 一般来说比 ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,但 是功耗较低。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中 的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的 FPGA。因为这 些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的 FPGA 上完成的,然 后将设计转移到一个类似于 ASIC 的芯片上。另外一种方法是用 CPLD(复杂可编程逻 辑器件备) 。 FPGA 采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个概念,内部包括 可配置逻辑模块 CLB(Configurable Logic Bl

11、ock) 、输出输入模块 IOB(Input Output Block)和内部连线( Interconnect)三个部分。目前主流的 FPGA 仍是基于 查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如 RAM、时钟管理和 DSP)的硬核(ASIC 型)模块:FPGA 芯片主要由 6 部分完成, 分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式 RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。FPGA 的基 本特点有: 1、采用 FPGA 设计 ASIC 电路(专用集成电路 ),用户不需要投片生产,就能得到 合用的芯片。 2、FPGA

12、 可做其它全定制或半定制 ASIC 电路的中试样片。 3、FPGA 内部有丰富的触发器和 IO 引脚。 4、FPGA 是 ASIC 电路中设计周期最短、开发费用最低、风险最小的器件之一。 5、FPGA 采用高速 CHMOS 工艺,功耗低,可以与 CMOS、TTL 电平兼容。 FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需 要对片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA 芯片将 EPROM 中数据读入片内编程 RAM 中,配置完成后, FPGA 进入工作状态 。掉电后,FPGA 恢复成白片,内部逻辑关系消失,因此,

13、FPGA 能够反复使用 。FPGA 的编程无须专用的 FPGA 编程器,只须用通用的 EPROM、PROM 编程器即可。当需要修改 FPGA 功能时,只需换一片 EPROM 即 可。这样,同一片 FPGA,不同的编程数据,可以产生不同的电路功能。因此, 第 4 页 FPGA 的使用非常灵活 。 早在 1980 年代中期,FPGA 已经在 PLD 设备中扎根。 CPLD 和 FPGA 包括了 一些相对大数量的可编辑 逻辑单元。CPLD 逻辑门的密度在几千到几万个 逻辑单 元之间,而 FPGA 通常是在几万到几百万。 CPLD 和 FPGA 的主要区别是他们的系统结构。 CPLD 是一个有点限制性

14、的结 构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定 的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑 单元对连接单元高比率的优点。而 FPGA 却是有很多的连接单元,这样虽然让它 可以更加灵活的编辑,但是结构却复杂的多。 CPLD 和 FPGA 另外一个区别是大多数的 FPGA 含有高层次的内置模块(比如 加法器和乘法器)和内置的 记忆体。因此一个有关的重要区别是很多新的FPGA 支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重 新配置而改变。一些 FPGA 可以让设备的一部分重新编辑而其他部分继续正常运行。 CPLD

15、和 FPGA 还有一个区别: CPLD 下电之后,原有烧入的逻辑结构不会消 失;而 FPGA 下电之后,再次上电时,需要重新加载FLASH 里面的逻辑代码,需 要一定的加载时间。 FPFA 的主要生产商有: Altera,Xilinx,Actel,Lattice。其中 Altera 作为世 界老牌可编程逻辑器件的厂家,是当前世界范围内市场占有率最大的厂家,它和 Xilinx 主要生产一般用途 FPGA,其主要产品采用 RAM 工艺。Actel 主要提供非 易失性 FPGA,产品主要基于反熔丝工艺和 FLASH 工艺。 1.3 VHDL 语言和 QUARTUS II 简介 1.3.1 VHDL

16、语言简介 VHDL(VHSIC(Very High Speed Integrated Circuit)Hardware Description Language)是超高速集成电路硬件描述语言,是一种用于电路设计的高级语言。它出 现于 80 年代后期,刚开始时它是由美国国防部开发出来的,是为了供美军用来提高设 计的可靠性和缩减开发周期的一种使用范围比较小的设计语言 。VHDL 语言主要应用 于数字电路系统的设计。目前,国内对它的应用多数集中在 FPGA/CPLD/EPLD 的设 第 5 页 计当中,除此之外,一些较为有实力的单位,也将它用来设计 ASIC。 VHDL 语言具有多层次描述系统硬件功

17、能的能力,既可以描述系统级电路,又可 以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可 以采用三者混合的混合级描述。另外, VHDL 还支持惯性延迟和传输延迟,还可 以准确地建立硬件电路模型。 VHDL 支持预定义的和自定义的数据类型,给硬件描 述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。VHDL 语 言具有自顶向下和基于库的设计特点。其开发流程:在顶层用方框图或硬件语言对电 路的行为进行描述后,进行系统仿真验证和纠错,再用逻辑综合优化工具生成具体的 门级逻辑电路的网表,然后通过适配器将网表文件配置于指定的目标器件,产生最终 下载文件或配置文件。最后把

18、适配后生成的下载或配置文件通过编程器或编程电缆下 载到具体的 FPGA/CPLD 器件中去,以便进行硬件调试和验证,从而实现可编程的专 用集成电路 ASIC 的设计。 VHDL 主要用于描述数字系统的结构,行为,功能和接口,除了含有许多具有硬 件特征的语句外,VHDL 的语言形式和描述风格与句法是十分类似于一般的计算机高 级语言。VHDL 系统设计与其他硬件描述语言相比,具有比较强的行为描述能力,从 而决定了它成为系统设计领域最佳的硬件描述语言之一。强大的行为描述能力是避开 具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证4。 VHDL 语言能够成为标准化的硬件描述语言并获得广泛

19、应用,它自身必然具有很 多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点: 1、VHDL 语言功能强大,设计方式多样 VHDL 语言具有强大的语言结构,只需采用简单明确的 VHDL 语言程序就可以描 述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语 言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支 持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法5。 2、VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的

20、电路设计描述功能,既可描述系统级电路,也可以描述 门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采 用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准 第 6 页 确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类 型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会 给硬件描述带来较大的自由度。 3、 VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描 述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综

21、合器 上或者从一个工作平台移植到另一个工作平台上去执行6。 4、VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器 件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其 他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结 构来实现7。 5、VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立 各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步 地进行设计,而是一些模块的累加。这些模块可以预

22、先设计或者使用以前设计中的存 档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。 由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因 此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计 的工作量,缩短开发周期8。 1.3.2 QUARTUS II 简介 Quartus II 是 Altera 公司设计的综合性 PLD 开发软件,它支持原理图、 VHDL、VerilogHDL 以及 AHDL 等多种设计输入形式,内嵌有综合器以及仿真器,可 以完成从设计输入到硬件配置的完整 PLD 设计流程9。 Quartus II 可以在 XP、Lin

23、ux 以及 Unix 上使用,除了可以使用 Tcl 脚本完成设计 流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集 中,易学易用等特点。 此外,Quartus II 通过和 DSP Builder 工具与 Matlab/Simulink 相结合,可以方便地 第 7 页 实现各种 DSP 应用系统;支持 Altera 的片上可编程系统(SOPC)开发,集系统设计、 嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台10。 Quartus II 支持 Altera 的 IP 核,包含了 LPM/MegaFunction 宏功能模块库,这样可 以使用户充分的利用成

24、熟的模块,从而简化了设计的复杂性,进而加快了设计的速度。 Quartus II 支持的器件类型非常丰富,其图形界面也易于操作。Altera 在 Quartus II 中包 含了许多诸如 SignalTap II、Chip Editor 和 RTL Viewer 的设计辅助工具,集成了 SOPC 和 HardCopy 的设计流程,并且继承了 Maxplus II 友好的图形界面及简便的使用方法。 Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口, 越来越受到数字系统设计者的喜爱和欢迎11。 Quartus II 提供了完全集成且与电路结构无关的开发包环境

25、,具有数字逻辑设计的 全部特性,包括: 1、可利用原理图、结构框图、VerilogHDL、AHDL 和 VHDL 完成电路描述,并将其 保存为设计实体文件; 2、芯片(电路)平面布局连线编辑; 3、LogicLock 增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影 响较小或无影响的后续模块; 4、功能强大的逻辑综合工具; 5、完备的电路功能仿真与时序逻辑仿真工具; 6、定时/时序分析与关键路径延时分析; 7、可使用 SignalTap II 逻辑分析工具进行嵌入式的逻辑分析; 8、支持软件源文件的添加和创建,并将它们链接起来生成编程文件; 9、使用组合编译方式可一次完成整体设计

26、流程; 10、自动定位编译错误; 11、高效的期间编程与验证工具; 12、可读入标准的 EDIF 网表文件、VHDL 网表文件和 Verilog 网表文件; 13、能生成第三方 EDA 软件使用的 VHDL 网表文件和 Verilog 网表文件。 Altera 的 Quartus II 可编程逻辑软件属于第四代 PLD 开发平台。该平台支持一个工 作组环境下的设计要求,其中包括支持基于 Internet 的协作设计。Quartus 平台与 Cadence、ExemplarLogic、 MentorGraphics、Synopsys 和 Synplicity 等 EDA 供应商的 第 8 页 开

27、发工具相兼容。改进了软件的 LogicLock 模块设计功能,增添了 FastFit 编译选项, 推进了网络编辑性能,而且提升了调试能力。支持 MAX7000/MAX3000 等乘积项器件 12。 2 分频基本原理 2.1 等占空比偶数分频方法 在设计偶数倍分频器时 ,常用的方法是:通过一个由待分频时钟上升沿所触发 的计数器循环计数来实现 N 倍(N 为偶数)分频的实现方法:通过由待分频的时钟 触发的模为(N/2)-1 的计数器计数,当计数器从 0 计数到(N/2)-1 时,输出时钟信号 进行翻转,同时给计数器一个复位信号 ,使得计数器在下一个时钟重新开始计数, 采用这种方法不断循环,就可得到

28、所需的N 倍分频器。这种方法可以实现占空比 为 50%的任意偶数分频 2.2 等占空比的奇数分频方法 占空比为 50%的 N 倍(N 为奇数)分频的实现方法 :首先通过时钟的上升沿触发 进行计数,当计数到某一个特定值时对计数输出进行翻转,然后经过(N-1)/2 个输 入时钟,再次对计数输出进行翻转,从而得到一个占空比非50%的 N 倍奇数分 频时钟。在此同时进行时钟的下降沿触发进行计数,当计数到和上升沿触发输出时 钟翻转时所选的特定值相同时,对计数输出进行翻转,同样经过(N-1)/2 个时钟时, 再次对计数输出进行翻转,从而得到另一个占空比非 50%的 N 倍奇数分频时钟。 然后对两个占空比非

29、 50%的 N 倍奇数分频时钟进行逻辑或运算,就能得到一个占 空比为 50%的 N 倍奇数分频时钟。如进行三倍分频时钟设计时,先通过待分频时钟 上升沿触发计数器进行模三计数, 当计数器计数到特定值时进行翻转,比如可以 在计数器计数到时,输出时钟进行翻转,当计数到2 时再次进行翻转 ,这样实际上 实现一个占空比为 1/3 的三分频时钟。然后通过待分频时钟下降沿触发计数,采用 和上升沿触发的计数相似的方法,可以产生另外一个三分频的时钟, 然后下降沿 产生的三分频时钟和上升沿产生的时钟进行逻辑或运算,就可得到占空比为 50% 第 9 页 的三分频时钟 6。 2.3 分数分频方法 数分频器的设计思想与

30、小数分频器类似。假设进行 .分频,总分频次数由分母 j n m m 决定,规律是进行 n 次 j+1 分频和 m-n 次 j 分频。两种分频交替进行的计算方法也和 小数分频类似。究竟是进行 j+1 分频还是 j 分频就看累加的结果是大于等于分母还是小 于分母。的分频计算过程见表 2.1 可见要进行 6 次 4 分频,5 次 3 分频,满足上面 6 311 的规律。分数分频器,其中 j、m、n 分别取 3、11、6,故实现了分频,参数 6 311 n1、n2 用来调节占空比。 表表 2.1 分频序列分频序列 6 311 分频次数累加器分频系数 163 2124 383 4144 5104 616

31、3 7124 883 9144 10103 11164 2.4 小数分频方法 小数分频器是通过可变分频和多次平均的方法得到的4-5。假设要进行 m,n 分频 (m、n 都是整数,且 n10) ,因为只有一位小数,所以总共要进行 10 次分频,总的 第 10 页 规律是进行 n 次 m+1 分频,10-n 次分频。假设要进行 j,m,n 分频(j、m、n 都足整 数且 m、n10) ,由于小数是 2 位,所以总共要进行 100 次分频,分频的规律是进行 行 mn 次 j+1 分频,100-mn 次 j 分频。不管是几位小数总要进行两种系数的分频,两种 分频究竟如何交义进行,可以根据一定的规律计算

32、出来,下面以 3.6 分频为例进行讲解。 由上面的分析知道 3.6 分频要进行 6 次 4 分频,4 次 3 分频。将小数部分 6 按倍累加, 假设累加的值为 a,如果 a10 则进行 3 分频,a10 的话下一次则加上 6,此后,如 果 a10 则进行 4 分频,4 分频过后再将累加值减去 4 后与 10 比较以决定下一次分频 是 4 分频还是 3 分频,计算过程见表 2.2。 表表 2.2 3.6 分频序列分频序列 分频次数累加器分频系数 163 2124 383 4144 5104 663 7124 883 9144 10104 从表 2.2 中看出分频规律是:首先进行 3 分频,然后进

33、行 4 分频,接着 1 次 3 分频 和 2 次 4 分频,如此循环下去。 2.5 任意倍数分频器 加入控制模块就可以将上述 4 种分频器集成到一起,变成任意数值分频器,顶层 原理见图 2.1 第 11 页 图 2.1 任意倍数分频器框图 当输入的二进制数 a=00 时实现偶数和占空比不等于 50的奇数分频,a=01 时实 现占空比为 50的奇数分频,a=10 和 ll 时分别实现小数和分数分频。其中 m、j 分别 控制整数分频的分频系数和占空比。小数分频时 m、n 分别调整整数部分和小数部分; 分数分频时 j 调整整数部分,而 m、n 分别控制分母和分子值。nl 和 n2 用于调节分数 和小

34、数分频的占空比。因为有小数和分数分频,所以预置端口较多,但是可调性也达 到了最大。 任意倍数分频器 clk a(1 downto 0) m j n n1 n2 y 第 12 页 3 任意倍数分频器设计 3.1 设计思想 本设计的设计思想是:把偶数分频,奇数分频,半整数分频,占空比可调的分频, 小数分频这 5 种比较常见的分频器集成在一块芯片之上,并可以通过按钮来选择具体 由哪一种分频器进行操作,而拨码开关则可以预置一些分频系数,发光二极管则显示 具体由那种分频实现,数码管显示分频的系数。具体功能如下: 1、p,q,v:功能选择按钮。f1,f2,f3,f4,f5:表明功能的序号。 P=0,q=0

35、 ,v =0 :偶数分频,f1=1,f2=f3=f4=f5=0; P=0,q=0,v =1 :奇数分频,f2=1,f1=f3=f4=f5=0; P=0,q=1 ,v =0:半整数分频,f3=1,f1=f2=f4=f5=0; P=0,q=1 ,v =1:可预置占空比分频,f4=1,f1=f2=f3=f5=0; P=1,q=0 ,v =0:小数分频,f5=1,f1=f2=f3= f4=0; 2、clk:时钟信号。Rst:复位信号。 3、a,b,c,d:表明分频系数 偶数分频:2,4,6,8,10,12,14 奇数分频:1,3,5,7,9,11,13,15 半整数分频:1.515.5 占空比分频:1

36、:1,1:2,1:3,2:1,2:2,2:3,3:1,3:2,3:3 小数分频:1.13.6 4、y:输出信号。 y5:段选择信号。 y6:位选择信号。 5、y6=fb 选中第三个数码管 y6=fd 选中第二个数码管 y6=fe 选中第一个数码管,数码 管显示分频系数。 第 13 页 3.2 顶层框图设计 图3.1 顶层框图设计原理图 该顶层框图主要由六个部分组成:选择按钮,拨码开关,二极管,分频器种类选择, 信号输出。各部分的功能如下: 选择按钮:设置输入的方式,选择需要实现何种分频。 拨码开关:提供分频的系数。 发光二极管:显示第几种分频被选择。 FPGA:根据前面的输入来确定何种分频器进

37、行工作。 数码管:显示分频系数。 信号输出:把分频后的信号进行输出。 3.3 顶层文件设计 分频器的顶层文件是一个原理图文件,它包含 8 个模块 8 个模块 encoder-35 模块, led 模块,fenpin-e 模块,fenpin-o 模块,fenpin-m 模块,fenpin-h 模块,fenpin-x 模块, mux51 模块。模块的正确性已在上面的介绍中进行验证了。通过将各个模块用具有电 气性质的导线将各个模块连接起来,这样原理图文件就建好了。保存编译。在建立一 个.vwf 波形文件,保存并仿真。原理图见附录 B 所示,以 8 分频为例子进行仿真,其 仿真结果如图 3.3 所示:

38、 选择按钮拨码开关FPGA输出信号 发光二级 管 数码管 第 14 页 图3.3 顶层文件波形仿真结果图 P=0,q=0 ,v =0:偶数分频,f1=1(表明第一个发光二极管亮) ,f2=f3=f4=f5=0; Rst=0 时,不分频。 Rst=1 时: 当 y5=99 时,数码管 1 显示 4。 当 y5=ff 时,数码管 2 不显示。 当 y5=c0 时,数码管 3 显示 0。 最终结果为: 三个数码管显示为:0,不显示,4。 3.4 模块设计 3.4.1 偶数分频模块的设计 偶数分频模块根据拨码开关选择分频系数(count) ,对输入的 clk 信号进行偶数分 频。本设计偶数分频的关键是

39、对 clk 信号的上升信号进行计数(temp) 。当 temp 小于 count/2 时 clout 输出 1,否则输出 0,从而实现偶数分频。只有当 35 译码器的输出选中 偶数分频且 rst=1 时偶数分频才工作。偶数分频实现的程序见附录 A1。 偶数分频(4 分频)模块程序仿真结果如图 3.4 所示: 第 15 页 图3.4 偶数分频 从仿真结果可以看出: 本设计的优点是:当 rst=0,sel=0 时,输出信号为低电平;当 rst 或者 sel 中有一个 为低电平时,计数器停止计数,但保持上一状态继续输出,当恢复 rst=1,sel=1 时继续 计数,执行分频。 3.4.2 奇数分频模

40、块的设计 奇数分频模块根据拨码开关选择分频系数(count1) ,对输入的 clk 信号进行偶数分 频。本设计奇数分频的关键是对 clk 信号的上升沿信号进行计数(p)和对 clk 信号的 下降沿信号进行计数(q) 。当 p (count1-1)/2 或者 q(count1-1)/2 时 clout 输出 1,否 则输出 0,从而实现奇数分频。只有当 35 译码器的输出选中偶数分频且 rst=1 时奇数 分频才工作。奇数分频实现的程序见附录 A2。 奇数分频(7 分频)模块程序仿真结果如图 3.5 所示: 第 16 页 异或门模 N 计数 器 二分频器 f0/(N-0.5)f0/(2N-1)f

41、0 图 3.5 奇数分频 从仿真结果可以看出: 这种设计的优点是:当 rst 与 sel 当中任意一个为 0 时,即放弃对本次的计数并保 持输出为低电平,在下一次 rst 与 sel 都等于 1 时,重新开始计数,执行分频。 3.4.3 半整数模块设计 半整数分频模块根据拨码开关选择分频系数(count1) ,对输入的 clk 信号进行偶数 分频。本设计偶数分频的思想如图 3.6 所示: 图 3.6 半整数分频原理图 只有当 35 译码器的输出选中偶数分频且 rst=1 时半整数分频才工作。半整数分频 实现的程序见附录 A3。 半整数分频(6.5 分频)模块程序仿真结果如图 3.7 所示: 第

42、 17 页 图 3.7 半整数分频 从仿真结果可以看出: 本设计的优点是:在 rst 或者 sel 有一个为低电平时,计数器停止计数,维持上一 状态输出,当 rst 和 sel 都为高电平的时,重新开始计数,执行分频。 3.4.4 占空比可调的分频模块设计 占空比可调的分频模块根据拨码开关选择占空比(m1:n1) ,对输入的 clk 信号进 行占空比可调的分频。本设计占空比可调的分频的关键是对 clk 信号的上升沿信号进行 计数 temp。当 temp m1 时 clkout2 输出 1,否则输出 0,从而实现占空比可调的分频。 只有当 35 译码器的输出选中偶数分频且 rst=1 时占空比可

43、调的分频才工作。占空比可 调的分频实现的程序见附录 A4。 占空比可调的分频(1:3 分频)模块程序仿真结果如图 3.8 所示: 第 18 页 图 3.8 占空比可调分频 从仿真结果可以看出: 这种设计的优点是:在 rst 或者 sel 有一个为低电平时,可以保持前一状态和计数 结果,使其具有记忆功能。在恢复工作时,继续计数,具有有良好的性能。 3.4.5 小数分频模块设计 小数分频模块根据拨码开关选择分频系数(n.x) ,对输入的 clk 信号进行小数分频。 本设计小数分频的关键是实现(10-x)次 n 分频和 x 次的 n+1 分频的交替进行,从而 实现小数的分频。只有当 35 译码器的输

44、出选中偶数分频且 rst=1 时占空比可调的分频 才工作。小数分频实现的程序见附录 A5. 小数分频(1.3 分频)模块程序仿真结果如图 3.9 所示: 图 3.9 小数分频 第 19 页 从仿真结果可以看出: 这种设计的有优点是: 在 rst 或者 sel 有一个为低电平时,可以保持低电平输出,并 保持计数。在恢复工作时,继续计数,具有有良好的性能。 3.4.6 encoder_35 模块的设计 encoder_35 模块的功能见表: 表表 3.13.1 encoder_35encoder_35 模块的功模块的功 输入信号输出信号 pqvabcde 00000001 00100010 010

45、00100 01101000 10010000 10100000 11000000 11100000 例如:当 p=0,q=0,v=0 时,e 端输出高电平 1,而其他输出低电平 0,表明 e 端被 选中。 encoder_35 模块的作用是:提供给 mux51 模块的输入信号,mux51 模块根据输入 信号,判断是哪路信号后输出信号。encoder_35 模块实现的程序见附录 A6 encoder_35 模块程序仿真结果如图 3.10 所示: 第 20 页 图 3.10 encoder_35 仿真图 该仿真是通过设置 p=0,q=0,v=0,来实现的,结果为 e=1,其余为 0; 3.4.7

46、 led 模块的设计 数码管接成共阳极,只有当低电平时才有效。Led-out 为段选信号,led-bie 为位选 信号。m,n,o 链接 p,q,v 根据输入的信号,选择 a5,b5,c5,d5 的结合形式。具 体功能如下: 表表 3.23.2 ledled 模块功能模块功能 输入信号结合形式 p(m)q(n)v(o) 000 x=8*d5+4*c5+2*b5+1*a5 001x=8*d5+4*c5+2*b5+1*a5 010 x=8*d5+4*c5+2*b5+1*a5 011x=2*d5+1*c5,y=2*b5+1*a5 100 x=2*d5+1*c5,y=2*b5+1*a5 101无操作

47、110无操作 111无操作 led 的实现程序见附录 A7 led 模块程序仿真结果如图 3.11 所示: 第 21 页 图 3.11 led 仿真图 从仿真结果可以看出: 当 m=0,n=0,o=0 时,选中的是偶数分频,由于 d5 等于 1,故分频系数为 8,3 个数码显示的顺序为 0,不显示,8。 3.4.8 mux51 模块的设计 mux51 模块的作用是:根据输入的信号,选择输出的信号是那种分频形式,并点 亮相应的发光二极管。mux51 模块的实现程序见附录 A8 mux51 模块程序仿真结果如图 3.12 所示: 图 3.12 mux-51 仿真图 第 22 页 从仿真结果可以看出

48、: 该仿真结果是通过设置 e=1(第一种分频选中) ,其结果为第一个发光二极管亮,y 输出第一种分频。 结论 通过各种方式查阅大量资料,首先了解已经很成熟的分频技术,大致上都是先将 第 23 页 不同分频形式的分频器列举出来,然后创建一个模块,将不同形式的分频器集成在一 起。本次设计不同于其他的分频器设计,本设计继承了将不同分频集成在一起的思想, 但是本设计完全运用了模块设计,并且通过按钮,拨码开关可以选择分频器和分频系 数,做到随意的变频。而数码管则可以显示分频的系数,发光二极管则可以显示何种 分频器让人一幕了然。本课题大大降低了分频工作的工作量,方便了分频器的使用。 本设计还有不足之处,分

49、频系数设置的小,导致分频系数的输入存在局限性,而时钟 频率设置的较小,导致输出频率低。通过改变分频系数的设置和调高时钟频率从而扩 大分频系数的输入范围提高输出频率。 第 24 页 致谢 本次设计,在陈万里老师的帮助下顺利的完成了设计,在设计的过程中,陈老师 给我提了很多的设计思想和一些资料,刚开始的时候,我只会设计单一功能的分频器, 后来在陈老师的帮助下完成了本次设计,让我有了进一步学习设计的机会。再此要谢 谢陈万里老师给予的帮助,如果没有老师的帮助,这次设计很难完成。 第 25 页 参考文献 1 擦光辉.CPLD/TPGA 的开发与应用M. 北京:电于工业出版社,2002. 2 吴玉吕,胡水

50、强,王文娟.基于 CPLD/FPGA 的多功能分频器的设计与实现L.世 界电子元器件,2007(03). 3 潘松,黄继业.EDA技术实用教程(第三版)M.北京:科学出版社,2006. 4 何宾.EDA 原理及应用.北京:清华大学出版社,2010. 5 李洪伟,袁斯华.基于 Quartus II 的 FPGA/CPLD 设计.北京:电子工业出版社, 2006. 6 ALTERA,Introduction to Quartus,2007. 7 张静亚.FPGA 系统设计中资源分配的分析和研究 J.信息化研究,2009,35(3): 37239. 8 聂小燕.数字电路 EDA 设计与应用. 北京:

51、人民邮电出版社,2010. 9 白雪皎基于 CPLD 半整数分频器的设计J长春大学学报,2006,116(1):13 15 10 赵雅兴.FPGA 原理、设计与应用,天津大学出版社, 2005. 11 Robert K. Dueck 编著.数字系统设计: CPLD 应用与 VHDL 编程,清华大学出 版社,2006 12 Liu Yanfei,Sen P C.Digital Control of Switching Power Converters.IEEE Conference on Control Applications Toronto,Canada,August.28-31,2005:

52、635-640. 第 26 页 附录 A VHDL 源程序 附录 A1:偶数分频实现的程序 library ieee; use ieee.std_logic_1164.all; entity fenpin_e is port ( clkin,rst:in std_logic; a,b,c,d:in integer range 1 downto 0; sel:in std_logic; clkout:out std_logic ); end fenpin_e; architecture rtl of fenpin_e is signal temp:integer range 16 downto

53、0; signal count:integer range 16 downto 0; begin count=8*d+4*c+2*b; process(clkin) begin if rst=1 then if(sel=1) then if (clkin event and clkin = 1) then if temp = count-1 then 第 27 页 temp = 0; else temp = temp + 1; end if; end if; else null; end if; else null; end if; end process; process(temp) beg

54、in if rst=1 then if(sel=1) then if temp count/2 then clout = 1; else clout = 0; end if; else null; end if; else clout = 0; end if; end process; end rtl; 第 28 页 附录 A2 奇数分频实现的程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpin_o is port( clk,rst:in std_logic; s

55、el:in std_logic; a2,b2,c2,d2:in integer range 1 downto 0; clkout1:out std_logic ); end fenpin_o; architecture rtl of fenpin_o is signal p,q ,count1:integer range 18 downto 0; begin count1=8*d2+4*c2+2*b2+1*a2; process(clk) begin if rst=1 then if(sel=1) then if (clkevent and clk = 1 ) then if p=count1

56、-1 then p=0; else p=p+1; end if; 第 29 页 end if; else null; end if; else p=count1-1; end if; end process; process(clk) begin if rst=1 then if(sel=1) then if (clk event and clk = 0 ) then if q=count1-1 then q=0; else q=q+1; end if; end if; else null; end if; else q=count1-1; end if; end process; clkou

57、t1 = 1 when p (count1-1)/2 or q(count1-1)/2 else 0; end rtl; 第 30 页 附录 A3 半整数分频实现的程序 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use ieee.std_logic_unsigned.all; entity fenpin_m is port( clkin,rst:in std_logic; sel:in std_logic; a3,b3,c3,d3:in integer range 1 downto 0; clkou

58、t3:buffer std_logic ); end fenpin_m; architecture rtl of fenpin_m is signal clk, div2:std_logic; signal count:integer range 0 to 16 ; signal set:integer range 16 downto 0 ; begin set=8*d3+4*c3+2*b3+1*a3; clk = clkin xor div2; process(clk) begin if rst=1 then if sel=1 then if (clk event and clk = 1)

59、then if (count = 0 ) then 第 31 页 count = set-1; clkout3 = 1; else count = count - 1; clkout3 = 0; end if; end if; else count=1; end if; else null; end if; end process; process(clkout3) begin if sel=1 then if (clkout3event and clkout3=1) then div2 = not div2; end if; else null; end if; end process; e

60、nd rtl; 第 32 页 附录 A4 占空比可调的分频实现的程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; use ieee.std_logic_unsigned.all; entity fenpin_h is port( clk,rst:in std_logic; sel:in std_logic; a4,b4,c4,d4:in integer range 1 downto 0; clkout2:out std_logic ); en

温馨提示

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

评论

0/150

提交评论