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

下载本文档

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

文档简介

1、 目 录1 绪论11.1 课题分析11.2 FPGA概述21.3 VHDL语言和QUARTUS II简介42 分频基本原理82.1 等占空比偶数分频方法82.2等占空比的奇数分频方法82.3 分数分频方法92.4 小数分频方法92.5 任意倍数分频器103 任意倍数分频器设计123.1 设计思想123.2 顶层框图设计133.3 顶层文件设计133.4 模块设计14结论23致谢24参考文献25附录A VHDL源程序26附录A1:偶数分频实现的程序26附录A2 奇数分频实现的程序28附录A3 半整数分频实现的程序30附录 A4 占空比可调的分频实现的程序32附录 A5 小数分频实现的程序34附录

2、A6 encoder_35模块实现的程序42附录A7 led的实现程序43附录A8 mux51模块的实现程序47附录B顶层文件设计原理图481 绪论1.1 课题分析随着电子技术的高速发展,以其高速、高可靠性、串并行工作方式等突出优点在电子设计中广泛应用,代表着未来EDA设计的方向。的设计采用了高级语言如VHDL语言,进一步打破了之间的界限,。采用先进的取代传统的标准集成电路、接口电路电子技术发展的必然趋势。分频器是数字系统设计中的基本电路,。本文利用VHDL硬件描述语言,通过Quartus开发平台3.31.2 FPGA概述FPGA Field?Programmable?Gate?Array 现

3、场可编程逻辑门阵列,它是在PAL(Programmable Array Logic)generic array logic 、CPLD Complex Programmable Logic Device 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路 Application Specific Integrated Circuit 领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需额外地改变PC

4、B?电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电

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

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

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

8、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而

9、FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。因此一个有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。CPLD和FPGA还有一个区别:CPLD下电之后,原有烧入的逻辑结构不会消失;而FPGA下电之后,再次上电时,需要重新加载FLASH里面的逻辑代码,需要一定的加载时间。Altera,Xilinx,Actel,Lattice。

10、其中Altera作为世界老牌可编程逻辑器件的厂家,是当前世界范围内市场占有率最大的厂家,它和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。VHDL语言和QUARTUS II简介VHDL(VHSIC(Very High Speed Integrated Circuit)Hardware Description Language是超高速集成电路硬件描述语言是一种用于电路设计的高级语言。出现由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL主要应用数字电路的

11、设计。目前,应用多数在FPGA/CPLD/EPLD的设计中一些较为单位,用来设计ASIC。VHDL语言具有多层次描述系统硬件功能的能力,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的。FPGA/CPLD器件中去,以便进行硬件调试和验证,从而实现可编程的专用集成电路ASIC的设计。VHDL主要用于描述数字系统的结构,行为,功能和接口除了含有许多具有硬件

12、特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL系统设计与其他硬件描述语言相比,具有强的行为描述能力,从而决定了成为系统设计领域最佳的硬件描述语言。强大的行为描述能力避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点:VHDL语言功能强大,设计方式多样VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,V

13、HDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法。VHDL语言具有强大的硬件描述能力VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,

14、也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 VHDL语言具有很强的移植能力VHDL语言很强的移植能力主要体现在: 对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。VHDL 语言的设计描述与器件无关采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。VHDL语言程序易于共享和复用VHDL语言

15、采用基于库 library 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。QUARTUS II简介Quartus II是Altera公司综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入

16、形式,内嵌有综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。此外,Quartus II通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Quartus II支持Altera的IP核,包含了LPM/MegaFunct

17、ion宏功能模块库,使用户充分利用成熟的模块,简化了设计的复杂性加快了设计速度Quartus II支持器件类型丰富图形界面。Altera在Quartus II中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了plus II友好的图形界面及简便的使用方法。Quartus II作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图

18、、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第

19、三方EDA软件使用的VHDL网表文件和Verilog网表文件。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持7000/3000等乘积项器件N倍 N为偶数 分频的实现方法:通过由待分频的时钟触发的模为 N/2

20、 -1的计数器计数,当计数器从0计数到 N/2 -1时,输出时钟信号进行翻转,同时给计数器一个复位信号,使得计数器在下一个时钟重新开始计数,采用这种方法不断循环,就可得到所需的N倍分频器。这种方法可以实现占空比为50%的任意偶数分频2.2等占空比的奇数分频方法占空比为50%的N倍 N为奇数 分频的实现方法:首先通过时钟的上升沿触发进行计数,当计数到某一个特定值时对计数输出进行翻转,然后经过 N-1 /2个输入时钟,再次对计数输出进行翻转,从而得到一个占空比非50%的 N 倍奇数分频时钟。在此同时进行时钟的下降沿触发进行计数,当计数到和上升沿触发输出时钟翻转时所选的特定值相同时,对计数输出进行翻

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

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

23、数分频器是通过可变分频和多次平均的方法得到的4-5。假设要进行m,n、n10 3.6分频序列分频次数累加器分频系数1632124383414451046637124883914410104从表2.2中看出分频规律是:首先进行3分频,然后进行4分频,接着1次3分频和2次4分频,如此循环下去。2.5 任意倍数分频器加入控制模块就可以将上述4种分频器集成到一起,变成任意数值分频器,顶层原理见图2.1图2.1 任意倍数分频器框图当输入的二进制数a 00时实现偶数和占空比不等于50,a 0150a 10和ll时分别实现小数和分数分频。其中m、jm、nj调整整数部分,而m、nnl和n2用于调节分数和小数分

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

25、4 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:1,1:2,1:3,2:1,2:2,2:3,3:1,3:2,3:3小数分频:1.13.64、y:输出信号。y5:段选择信号。 y6:位选择信号。5、y6

26、 fb 选中第三个数码管y6 fd 选中第二个数码管y6 fe选中第一个数码管,数码管显示分频系数。3.2 顶层框图设计 图3.1 顶层框图设计原理图该顶层框图主要由六个部分组成:选择按钮,拨码开关,二极管,分频器种类选择,信号输出。各部分的功能如下:选择按钮:设置输入的方式,选择需要实现何种分频。拨码开关:提供分频的系数。发光二极管:显示第几种分频被选择。FPGA:根据前面的输入来确定何种分频器进行工作。数码管:显示分频系数。信号输出:把分频后的信号进行输出。3.3 顶层文件设计分频器的顶层文件是一个原理图文件,它包含8个模块8个模块encoder-35模块,led模块,fenpin-e模块

27、,fenpin-o模块,fenpin-m模块,fenpin-h模块,fenpin-x模块,mux51模块。模块的正确性已在上面的介绍中进行验证了。通过将各个模块用具有电气性质的导线将各个模块连接起来,这样原理图文件就建好了。保存编译。在建立一个.vwf波形文件,保存并仿真。原理图见附录B所示,以8分频为例子进行仿真,其仿真结果如图3.3所示:图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

28、显示0。最终结果为:三个数码管显示为:0,不显示,4。3.4 模块设计偶数分频模块根据拨码开关选择分频系数(count),对输入的clk信号进行偶数分频。本设计偶数分频的关键是对clk信号的上升信号进行计数(temp)。当temp小于count/2时clout输出1,否则输出0,从而实现偶数分频。只有当35译码器的输出选中偶数分频且rst 1时偶数分频才工作。偶数分频实现的程序见附录A1。偶数分频(4分频)模块程序仿真结果如图3.4所示:图3.4 偶数分频从仿真结果可以看出:本设计的优点是:当rst 0,sel 0时,输出信号为低电平;当rst或者sel中有一个为低电平时,计数器停止计数,但保

29、持上一状态继续输出,当恢复rst 1,sel 1时继续计数,执行分频。奇数分频模块根据拨码开关选择分频系数(count1),对输入的clk信号进行偶数分频。本设计奇数分频的关键是对clk信号的上升沿信号进行计数(p)和对clk信号的下降沿信号进行计数(q)。当p count1-1 /2 或者 q count1-1 /2时 clout输出1,否则输出0,从而实现奇数分频。只有当35译码器的输出选中偶数分频且rst 1时奇数分频才工作。奇数分频实现的程序见附录A2。奇数分频(7分频)模块程序仿真结果如图3.5所示:图3.5 奇数分频从仿真结果可以看出:这种设计的优点是:当rst与sel当中任意一个

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

31、的分频模块根据拨码开关选择占空比(m1:n1),对输入的clk信号进行占空比可调的分频。本设计占空比可调的分频的关键是对clk信号的上升沿信号进行计数temp。当temp m1时 clkout2输出1,否则输出0,从而实现占空比可调的分频。只有当35译码器的输出选中偶数分频且rst 1时占空比可调的分频才工作。占空比可调的分频实现的程序见附录A4。占空比可调的分频(1:3分频)模块程序仿真结果如图3.8所示:图3.8 占空比可调分频从仿真结果可以看出:这种设计的优点是:在rst或者sel有一个为低电平时,可以保持前一状态和计数结果,使其具有记忆功能。在恢复工作时,继续计数,具有有良好的性能。小

32、数分频模块根据拨码开关选择分频系数(n.x),对输入的clk信号进行小数分频。本设计小数分频的关键是实现(10-x)次n分频和x次的n+1分频的交替进行,从而实现小数的分频。只有当35译码器的输出选中偶数分频且rst 1时占空比可调的分频才工作。小数分频实现的程序见附录A5.小数分频(1.3分频)模块程序仿真结果如图3.9所示:图3.9 小数分频从仿真结果可以看出:这种设计的有优点是: 在rst或者sel有一个为低电平时,可以保持低电平输出,并保持计数。在恢复工作时,继续计数,具有有良好的性能。3.4.6 encoder_35模块的设计encoder_35模块的功能见表:表 3.1 encod

33、er_35模块的功输入信号输出信号pqvabcde0000000100100010010001000110100010010000101000001100000011100000例如:当p 0,q 0,v 0时,e端输出高电平1,而其他输出低电平0,表明e端被选中。encoder_35模块的作用是:提供给mux51模块的输入信号,mux51模块根据输入信号,判断是哪路信号后输出信号。encoder_35模块实现的程序见附录A6encoder_35模块程序仿真结果如图3.10所示:图3.10 encoder_35仿真图该仿真是通过设置p 0,q 0,v 0,来实现的,结果为e 1,其余为0;数码

34、管接成共阳极,只有当低电平时才有效。Led-out为段选信号,led-bie为位选信号。m,n,o链接p,q,v根据输入的信号,选择a5,b5,c5,d5的结合形式。具体功能如下: 表 3.2 led模块功能输入信号结合形式p m q n v o 000x 8*d5+4*c5+2*b5+1*a5001x 8*d5+4*c5+2*b5+1*a5010x 8*d5+4*c5+2*b5+1*a5011x 2*d5+1*c5,y 2*b5+1*a5100x 2*d5+1*c5,y 2*b5+1*a5101无操作110无操作111无操作led的实现程序见附录A7led模块程序仿真结果如图3.11所示:图

35、3.11 led仿真图从仿真结果可以看出:当m 0,n 0,o 0时,选中的是偶数分频,由于d5等于1,故分频系数为8,3个数码显示的顺序为0,不显示,8。mux51模块的作用是:根据输入的信号,选择输出的信号是那种分频形式,并点亮相应的发光二极管。mux51模块的实现程序见附录A8mux51模块程序仿真结果如图3.12所示:图3.12 mux-51仿真图从仿真结果可以看出:该仿真结果是通过设置e 1(第一种分频选中),其结果为第一个发光二极管亮,y输出第一种分频。结论通过各种方式查阅大量资料,首先了解已经很成熟的分频技术,大致上都是先将不同分频形式的分频器列举出来,然后创建一个模块,将不同形

36、式的分频器集成在一起。本次设计不同于其他的分频器设计,本设计继承了将不同分频集成在一起的思想,但是本设计完全运用了模块设计,并且通过按钮,拨码开关可以选择分频器和分频系数,做到随意的变频。而数码管则可以显示分频的系数,发光二极管则可以显示何种分频器让人一幕了然。本课题大大降低了分频工作的工作量,方便了分频器的使用。本设计还有不足之处,分频系数设置的小,导致分频系数的输入存在局限性,而时钟频率设置的较小,导致输出频率低。通过改变分频系数的设置和调高时钟频率从而扩大分频系数的输入范围提高输出频率。致谢本次设计,在陈万里老师的帮助下顺利的完成了设计,在设计的过程中,陈老师给我提了很多的设计思想和一些

37、资料,刚开始的时候,我只会设计单一功能的分频器,后来在陈老师的帮助下完成了本次设计,让我有了进一步学习设计的机会。再此要谢谢陈万里老师给予的帮助,如果没有老师的帮助,这次设计很难完成。参考文献1 擦光辉.CPLD/TPGA的开发与应用M. 北京:电于工业出版社,2002.2 吴玉吕,胡水强,王文娟.基于CPLD/FPGA的多功能分频器的设计与实现L.世界电子元器件,2007 03 .3 潘松,黄继业.EDA技术实用教程(第三版)M.北京:科学出版社,2006.5 李洪伟,袁斯华.基于Quartus II的FPGA/CPLD设计.北京:电子工业出版社,2006.6 ALTERA,Introduc

38、tion to Quartus,2007.7 张静亚.FPGA系统设计中资源分配的分析和研究 J.信息化研究,2009,35 3 : 37239.8 聂小燕.数字电路EDA设计与应用. 北京:人民邮电出版社,2010.9 白雪皎基于CPLD半整数分频器的设计J长春大学学报,2006,116 1 :1315Robert K. Dueck编著.数字系统设计:CPLD应用与VHDL编程,清华大学出版社,200612 Liu Yanfei,Sen P C.Digital Control of Switching Power Converters.IEEE Conference on Control A

39、pplications Toronto,Canada,August.28-31,2005:635-640.附录A VHDL源程序 附录A1:偶数分频实现的程序library ieee;entity fenpin_e isport 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 issignal temp:integer range 16 downto 0;si

40、gnal count:integer range 16 downto 0; begincount 8*d+4*c+2*b;process clkin beginif rst '1' thenif sel '1' then if clkin 'event and clkin '1' thenif temp count-1 thentemp 0;elsetemp temp + 1;end if;end if; else null;end if;elsenull;end if;end process;process temp beginif r

41、st '1' thenif sel '1' then if temp count/2 thenclout '1'else clout '0'end if; else null;end if;elseclout '0'end if;end process;end rtl;附录A2 奇数分频实现的程序library ieee;entity fenpin_o isport clk,rst:in std_logic; sel:in std_logic; a2,b2,c2,d2:in integer range 1 down

42、to 0; clkout1:out std_logic ;end fenpin_o;architecture rtl of fenpin_o issignal p,q ,count1:integer range 18 downto 0;begincount1 8*d2+4*c2+2*b2+1*a2;process clk beginif rst '1' thenif sel '1' then if clk'event and clk '1' thenif p count1-1 thenp 0;else p p+1;end if;end i

43、f; else null;end if;elsep count1-1;end if;end process;process clk beginif rst '1' thenif sel '1' then if clk 'event and clk '0' thenif q count1-1 thenq 0;else q q+1;end if;end if; else null;end if;elseq count1-1;end if;end process;clkout1 '1' when p count1-1 /2 or

44、 q count1-1 /2 else '0'end rtl;附录A3 半整数分频实现的程序library ieee;entity fenpin_m isport clkin,rst:in std_logic; sel:in std_logic; a3,b3,c3,d3:in integer range 1 downto 0; clkout3:buffer std_logic ;end fenpin_m;architecture rtl of fenpin_m is signal clk, div2:std_logic;signal count:integer range 0

45、to 16 ;signal set:integer range 16 downto 0 ;beginset 8*d3+4*c3+2*b3+1*a3;clk clkin xor div2; process clk beginif rst '1' thenif sel '1' thenif clk 'event and clk '1' thenif count 0 then count set-1; clkout3 '1'elsecount count - 1; clkout3 '0'end if;end if

46、; else count 1;end if;elsenull;end if;end process;process clkout3 beginif sel '1' thenif clkout3'event and clkout3 '1' thendiv2 not div2; end if; else null;end if;end process;end rtl;附录 A4 占空比可调的分频实现的程序library ieee;entity fenpin_h isport clk,rst:in std_logic; sel:in std_logic; a4

47、,b4,c4,d4:in integer range 1 downto 0; clkout2:out std_logic ;end fenpin_h;architecture rtl of fenpin_h issignal temp,m1,n1:integer range 5 downto 0;beginm1 2*d4+1*c4;n1 2*b4+1*a4;process clk,temp,sel beginif rst '1' thenif sel '1' thenif rising_edge clk thenif temp n1 -1 thentemp 0;

48、else temp temp +1;end if;end if;else null;end if;elsetemp n1-1;end if;end process;clkout2 '1' when temp m1 else '0'end rtl;附录 A5 小数分频实现的程序library ieee;use ieee.std_logic_1164. all;use ieee.std_logic_unsigned. all;entity fenpin_x isport clkin: in std_logic;rst:in std_logic;sel1:in std

49、_logic;a,b,c,d:in integer range 1 downto 0;clk_out:out std_logic ;end fenpin_x;architecture arch of fenpin_x iscomponent numberport n : in std_logic_vector 3 downto 0 ;number0:out std_logic_vector 3 downto 0 ;number1:out std_logic_vector 3 downto 0 ;end component;component fdnport clock_in:in std_lo

50、gic;enable:in std_logic;n_of_fd:in std_logic_vector 3 downto 0 ;clock_out:out std_logic ;end component;component selport clock_in:in std_logic;Xnumber:in std_logic_vector 3 downto 0 ;sel_out:out std_logic ;end component;component mux1port a:in std_logic;b:in std_logic;s:in std_logic;y:out std_logic

51、;end component;signal l:integer range 16 downto 0 ;signal n,x:std_logic_vector 3 downto 0 ;signal selt :std_logic;signal selt_not: std_logic;signal clock_1 : std_logic;signal clock_2 : std_logic;signal clock_sel: std_logic;signal n_fd : std_logic_vector 3 downto 0 ;signal n1_fd : std_logic_vector 3

52、downto 0 ;beginprocess rst,sel1 beginif rst '1' thenif sel1 '1' thenl 8*d+4*c+2*b+a;elsel 4;end if;elsel 3;end if;end process;process l begincase l iswhen 5 n "0001"x "0001"when 6 n "0001"x "0010"when 7 n "0001"x "0011"when

53、9 n "0010"x "0001"when 10 n "0010"x "0010"when 11 n "0010"x "0011"when 13 n "0100"x "0001"when 14 n "0100"x "0010"when 15 n "0100"x "0011" when others n "0000"x "000

54、0"end case;end process;number0:number port map n,n_fd,n1_fd ;fdn0:fdn port map clkin,selt_not,n_fd,clock_1 ;fdnl:fdn port map clkin,selt,n1_fd,clock_2 ;mux21:mux1 port map clock_2,clock_1,selt,clock_sel ;sel0:sel port map clock_sel,x,selt ;selt_not not selt;clk_out clock_sel;end arch;library ieee;entity fdn isport clock_in:in std_logic;enable:in std_logic;n_of_fd:in std_logic_vector 3 downto 0 ;clock_out:out std_logic ;end entity;architecture bhv of fdn issig

温馨提示

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

评论

0/150

提交评论