陕西理工学院毕业论文(设计)第1页共19页基于VHDL的闹钟系1整体方案设计闹钟不仅具有数字钟的功能,还具有定时响铃的功能,是人们不可缺少的日程生活用品之一。闹钟是一个具有“时”、“分”、“秒”显示的计时装置,其周期为24小时,显示满刻度为23时59分59秒,当计时至满刻度时,系统自动清0,开始新的一天的计时。除此之外,该系统的时间可以进行调整,当闹钟计数至我们预先设定的时间时,闹钟的铃声响起,以提示人们时间到了。1.1系统的功能设计在一个完整的闹钟系统设计中,我们采用的是自顶向下的设计思想,整个系统由若干个模块组合来实现,包括计数器模块、控制模块、译码模块、动态扫描输出模块、闹钟控制模块。设计闹钟时应考虑的问题有:闹钟能否正常计数、能否对计时时间进行调整,定时闹铃功能是否正常,动态扫描显示是否正常等等。1.2设计方案1.2.1方案一:使用VHDL语言编程实现。其结构框图如图1-1所示。图1-1系统结构框图(1)计数模块:按照时钟模式完成一天24小时的计时功能。(2)译码模块:根据计时模块的状态输出值来确定对应位的数据的,其输出是7段高低电平,以点亮相应的数码管;(3)计数控制模块:根据外部控制信号,进行时钟计数的调整和计时的控制;(4)响铃控制模块:根据外部闹钟控制信号完成闹钟的定时,当计数模块技术到和该模块所设定时间一致时,该模块将驱动蜂鸣器响铃;扫描频率计数时钟译码输出计数输出计数模块译码模块七段显示数码管组计数控制模块响铃控制模块蜂鸣器外部时钟分频器外部控制信号闹钟控制信号陕西理工学院毕业论文(设计)第2页共19页(5)分频器:根据外部的输入时钟,将外部时钟成两路信号,一路用于正常的计数,一路用于七段显示数码管的动态扫描输出;1.2.2方案二将12MHz的晶振与AT89C51单片机相连,通过芯片编程以及适当的外围控制电路和显示电路实现以24小时为周期的计时功能,同时显示“时”、“分”、“秒”,并且具有闹铃和时钟调整功能。流程图如图1-2所示:图1-2单片机设计闹钟的流程图1.3方案论证闹钟设计与制作可采用VHDL语言编程实现,也可以采用单片机来完成。方案一是利用EDA工具、可编程逻辑器件和VHDL硬件描述性语言编程实现闹钟系统,使之成为专用集成电路(ASIC),并加上少许显示电路便可实现闹钟系统所要求的功能。这样不仅节省了设计时间,而且设计者不用考虑集成电路的结构以及制造工艺。方案二用单片机来设计制作完成,其功能的实现主要通过软件编程来完成,降低了硬件电路的复杂性,且其成本也有所降低,但目前市场上的单片机主要采用C语言或者汇编语言进行编程,使用汇编语言编程需要考虑单片机内部各种存储器及寄存器的结构,其语言本身也比较晦涩难懂,编写起来比较困难,这对程序开发人员的要求比较高;C语言虽然较汇编语言相比较容易理解,但相比起直接描述硬件逻辑功能的VHDL语言来,其直观性没有VHDL语言好。YesNoYes闹钟控制No显示计时初始化是否调整时钟时钟调整是否到设定时间陕西理工学院毕业论文(设计)第3页共19页鉴于以上对的对比,我采用VHDL语言编程来实现闹钟系用的设计。2、VHDL语言简介近年来,随着数字集成电路技术的发展,用以前传统的方法进行芯片或系统设计已不能满足要求,迫切需要提高设计效率。能大大降低设计难度的VHDL设计方法正在被越来越广泛的采用。VHDL即超高速集成电路硬件描述语言,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订。从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了1076-1993版本。现在,VHDL作为IEEE的工业标准硬件描述语言,已成为通用硬件描述语言。VHDL语言主要用于描述数字系统的结构、行为、功能和接口,与其他硬件描述语言相比,VHDL语言有如下优越之处:(1)VHDL语言支持自上向下(TopDown)和基于库(Library-Base)的设计方法,还支持同步电路、异步电路、FPGA以及其他随即同步电路设计;(2)VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路,其高层次的行为描述可以与低层次的RTL描述和结构描述混合使用,还可以自定义数据类型,给编程人员带来较大的自由和方便;(3)VHDL语言对设计的描述具有相对独立性,设计者可以不懂硬件结构,也不必关心最终设计实现的目标器件是什么;(4)VHDL具有电路仿真与验证功能,可以保证设计的正确性,用户甚至不必编写如何测试相量便可以进行源代码级的调试,而且设计者可以非常方便地比较各种方案之间的可行性及其优劣,不需做任何实际的电路实验;(5)VHDL语言可以与工艺无关编程;(6)VHDL语言标准、规范、易于共享和复用。随着信息技术、计算机技术、大规模集成电路的发展和硬件描述语言的出现。数字系统的硬件设计作用于软件设计完全可以实现。VHDL语言具有与具体硬件无关和设计平台无关的特性。并具有很强的电路描述和建模能力,从而大大简化了硬件设计任务,提高了设计效率和可靠性。作为一种重要的高层次设计,VHDL已成为当代电子设计师设计数字硬件时必须掌握的一种方法。陕西理工学院毕业论文(设计)第4页共19页3、MAX+plusⅡ概述MAX+plusⅡ是Altera提供的FPGA/CPLD开发集成环境,Altera是世界最大的可编程逻辑器件供应商之一。MAX+plusⅡ界面友好,使用敏捷,被誉为业界最易用易学的EDA软件,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。图3-1MAX+plusⅡ的设计界面MAX+plusⅡ编译器支持的硬件描述性语言有VHDL、VerilogHDL、及AHDL(Altera年HDL)。MAX+plusⅡ允许第三方的EDIF文件输入,这可以与其他EDA工具进行接口。MAX+plusⅡ支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的工程模块(元件)进行调用,从而解决了原理图与HDL混合输入设计的问题。在设计输入之后,MAX+plusⅡ的编译器将给出设计输入的错误报告。MAX+plusⅡ拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。在进入编译网表提取功能块后,MAX+plusⅡ将从适配文件中提取SNF时许仿真文件SimulationNetlistFile(仿真网表文件)。SNF文件详细记录了当前适配的延时和逻辑功能信息,可用于对设计进行时序仿真。在作仿真前,需要利用波形编辑器编辑一个波形激励文件,用于仿真验证时的激励。编译和仿真经检测无误后,便可以将下载信息通过MAX+plusⅡ提供的编程器下载目标器件中了。4、系统模块化设计系统总体可分为五大部分:计数模块、分频模块、闹钟控制模块、数码转换模块以及扫描输出模块,如图4-1所示。其中计数模块包括“秒”位计数器(SECOND)、“分”位计数器(MINUTE)、“时”位计数器(HOUR);分频模块包括分频器(F),闹钟控制模块包括闹钟控制器(LINGSHENG);数陕西理工学院毕业论文(设计)第5页共19页码转换模块包括时位输出数码转换器(BCD_SHI)、分位输出数码转换器(BCD_FEN)、秒位数码转换器(BCD_MIAO)、七段显示码输出器(SE71)、输入数值转换器(F_S)和(X_S);扫描输出模块包括数据选择输出器(SAOMIAO)。其中,计数部分采用同步时钟。以下对各模块做详细介绍。源程序:“秒”计数器(SECOUND)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitysecondisport(clk:instd_logic;ens:instd_logic;cos:outstd_logic;times:outintegerrange0to59);endsecond;architecturearchofsecondissignalt1:integerrange0to59;beginprocess(clk,ens)beginifrising_edge(clk)thenifens='1'thent1=0;elsift1=58thencos='1';t1=59;elsift1=59thent1=0;扫描输出模块数码转换模块闹钟控制模块计数控制模块计数模块陕西理工学院毕业论文(设计)第6页共19页cos='0';elset1=t1+1;endif;endif;endprocess;times=t1;endarch;“分”计数器(MINUTE)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityminuteisport(clk:instd_logic;ena:instd_logic;enm:instd_logic;clr:instd_logic;inm:inintegerrange0to59;com:outstd_logic;timem:outintegerrange0to59);endminute;architecturearchofminuteissignalt2:integerrange0to59;beginprocess(clk,enm,clr)beginifrising_edge(clk)thenifclr='1'thent2=0;elsifenm='1'thent2=inm;elsifena='1'thenift2=58thencom='1';t2=t2+1;elsift2=59thencom='0';t2=0;elset2=t2+1;陕西理工学院毕业论文(设计)第7页共19页endif;endif;endif;endprocess;timem=t2;endarch;“时”计数器(HOUR)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityhourisport(clk:instd_logic;ena:instd_logic;enb:instd_logic;enh:instd_logic;clr:instd_logic;innumber:inintegerrange0to23;timeh:outintegerrange0to23);endhour;architecturearchofhourissignalt3:integerrange0to23;beginprocess(clk,enh,clr)beginifrising_edge(clk)thenifclr='1'thent3=0;elsifenh='1'thent3=innumber;elsifena='1'andenb='1'thenift3=23thent3=0;elset3=t3+1;endif;endif;endif;陕西理工学院毕业论文(设计)第8页共19页endprocess;timeh=t3;endarch;分频器(F)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityfisport(clk:instd_logic;clr:instd_logic;clk_1hz:outstd_logic;clk_2:outstd_logic);endf;architectureartof