数控分频器的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数控分频器的设计摘要:此设计以quartusII为开发平台,用VHDL语言设计了数控分频器,并生成原理图,完成了分频的功能,并在quartusII上仿真,验证通过。关键词:QuartusIIVHDL语言数控分频器仿真DesignicationoftheNumericalControlFrequencyDivisionMachineAbstract:Keywords:QuartusIIVHDLlanguageNumericalControlFrequencyDivisionMachineEmulation0引言随着EDA技术的高速发展,以大规模和超大规模器件FPGA/CPLD为载体、以VHDL(硬件描述语言)为工具的电子系统设计越来越广泛。在数字逻辑电路设计中,分频器是一种基本电路。通常用来对某个给定频率进行分频,以得到所需的频率。数控分频器的功能是在输入端输入不同数据时,对输入时钟产生不同的分频比,使输出信号的频率为输入数据的函数。他可广泛应用于数字电子系统中。用传统的设计方法设计数控分频器时,采用具有预置数据输入端的通用计数器芯片,按设计要求完成设计,其设计过程和电路都比较复杂,尤其是当分频系数比较大时,需用多片集成计数器和设计更复杂的控制电路来实现,且设计成果的可修改性和可移植性都较差。基于VHDL的数控分频器设计,采用用软件的方法设计硬件的EDA(电子设计自动化)技术。作为EDA技术重要组成部分的硬件描述语言,VHDL是一种IEEE工业标准的建模语言。由于VHDL具有很强的电路行为描述、系统描述能力和层次化的程序结构,用他设计的数控分频器作为一个模块,可移植到很多数字电路系统中,且极易修改,只要修改程序中的某几条语句,就可使最大分频系数得到改变。整个设计过程简单、快捷。另外由于VHDL具有与硬件和设计平台无关的特点,设计结果可通过众多EDA平台下载到各种CPLD或FPGA可编程器件中,实现单片化的数字电路,使得工作稳定、可靠。1实验的方法步骤1.1设计原理实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,其基本的框图如图1所示。图1分频器基本框图1.2设计流程(1)创建工程,并命名位fenpinqi。(2)打开QuartusII,建立VHDL文件,并输入设计程序。保存为DVF.(3)选择目标器件。Acex1k—EP1K100QC208-3。(4)启动编译。(5)建立仿真波形图。(6)仿真测试和波形分析。(7)引脚锁定编译。(8)编程下载。(9)硬件测试。1.3设计程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDVFISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(7DOWNTO0);FOUT:OUTSTD_LOGIC);END;ARCHITECTUREoneOFDVFISSIGNALFULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)VARIABLECNT8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFCNT8=11111111THENCNT8:=D;--当CNT8计数计满时,输入数据D被同步预置给计数器CNT8FULL='1';--同时使溢出标志信号FULL输出为高电平ELSECNT8:=CNT8+1;--否则继续作加1计数FULL='0';--且输出溢出标志信号FULL为低电平ENDIF;ENDIF;ENDPROCESSP_REG;P_DIV:PROCESS(FULL)VARIABLECNT2:STD_LOGIC;BEGINIFFULL'EVENTANDFULL='1'THENCNT2:=NOTCNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反IFCNT2='1'THENFOUT='1';ELSEFOUT='0';ENDIF;ENDIF;ENDPROCESSP_DIV;END;此程序有QuartusII进行仿真测试,仿真后用RTLViewer观测其原理图如图2所示。图2Viewer观测的原理框图将上面的程序稍作修改,扩展成16位的分频器,其原理程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDVFISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(15DOWNTO0);FOUT:OUTSTD_LOGIC);END;ARCHITECTUREoneOFDVFISSIGNALFULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)VARIABLECNT15:STD_LOGIC_VECTOR(15DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFCNT15=1111111111111111THENCNT8:=D;--当CNT8计数计满时,输入数据D被同步预置给计数器CNT15FULL='1';--同时使溢出标志信号FULL输出为高电平ELSECNT15:=CNT15+1;--否则继续作加1计数FULL='0';--且输出溢出标志信号FULL为低电平ENDIF;ENDIF;ENDPROCESSP_REG;P_DIV:PROCESS(FULL)VARIABLECNT2:STD_LOGIC;BEGINIFFULL'EVENTANDFULL='1'THENCNT2:=NOTCNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反IFCNT2='1'THENFOUT='1';ELSEFOUT='0';ENDIF;ENDIF;ENDPROCESSP_DIV;END;1.4仿真结果和下载测试结果分析其仿真结果是正确无误的,其仿真结果如图3所示。图3八位分频器仿真时序图16位分频器的仿真结果如图4所示。图4十六位分频器仿真时序图下载后,改变输入不同的输入数D的数值时,蜂鸣器发出不同频率的声音,例如输入11111011时,蜂鸣器发出声音的时间间隔非常短,当输入00010110时,蜂鸣器发出的声音的时间间隔就变长了。图5下载测试图2总结和心得体会这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难。但是经过我的缜密的分析后,重新输入clock和D的值,最后成功了。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。总的来说,这次设计的数控分频器还是比较成功的,在设计中遇到了很多问题,最后在同学的帮助下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认。参考文献【1】电子技术应用.2009年11期【2】潘松,黄继业.EDA技术实用教程(第三版).科学出版社.2010-07【3】王金明,冷自强.EDA技术与Verilog设计EDATechnologyandVerilogDesign.科出版社.2008-08

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功