摘要本课程设计给出了一种基于FPGA的多功能数字时钟方法,采用EDA作为开发工具,VHDL语言和图形输入为硬件描述语言,QuartusII9.0作为运行程序的平台,编写的程序经过调试运行,波形仿真验证,下载到EDA实验箱的FPGA芯片,实现了设计目该系统主要由分频模块、控制模块、计时模块、显示模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,能够在数码管上完成年、月、日和时、分、秒的分别显示,由按键输入进行数字时钟的校时、清零、暂停功能。关键词:EDA技术;FPGA;数码管AbstractThecoursedesigngivesaFPGA-basedmultifunctionaldigitalclockusingEDAasadevelopmenttool,VHDLlanguageandgraphicalinputhardwaredescriptionlanguage,theQuartusII9.0asaplatformforrunningtheprogram,writtenproceduresdebuggingandrunning,thewaveformsimulationdownloadedtotheFPGAchiptoachievethedesigngoals.Thedesignforamulti-functionaldigitalclock,withayear,month,day,hours,minutesandsecondscountdisplaytoa24-hourcyclecount,withthepausetime,clearfunctionandthehoursandminutessettingfunction.Themainsystemismadeupoffrequencymodule,controlmodule,timemodule,displaymodule.Aftercompilingthedesignandsimulationprocedures,theprogrammablelogicdevicetodownloadverification,thesystemcancompletetheyear,month,dayandthehours,minutesandsecondsrespectively,usingkeystomodify,clear,startandstopthedigitalclock.Keywords:EDAtechnology;FPGA;digitalclock;VHDLlanguage;digitaltube目录1绪论..........................................................................................................................................................11.1课程背景...........................................................................................................................................11.2设计目的...........................................................................................................................................12总体设计流程说明..................................................................................................................................22.1数字时钟的工作原理.......................................................................................................................23单元模块设计流程..................................................................................................................................53.1分频模块...........................................................................................................................................53.2计数模块...........................................................................................................................................53.3控制模块...........................................................................................................................................74系统调试说明及分析............................................................................................................................105总结........................................................................................................................................................116附录........................................................................................................................................................1211绪论1.1课程背景如今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显著区别师大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低.同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。EDA技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映射,编程下载等工作。最终形成集成电子系统或专用集成芯片的一门新技术。这次课程设计利用VHDL硬件描述语言结合可编程逻辑器件进行的,并通过数码管动态显示计时结果。利用可编程逻辑器件具有其他方式没有的特点,它具有易学,方便,新颖,有趣,直观,设计与实验项目成功率高,理论与实践结合紧密,体积小,容量大,I/O口丰富,易编程等特点,应用非常方便。所以,本次设计采用可编程逻辑器件实现。1.2设计目的现在电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人。数字化的钟表给人们带来了极大的方便。近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。研究数字时钟及其应用,有着非常现实的意义。22.总体设计流程说明2.1数字时钟的工作原理振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计满后各计数器清零,重新计数。日期部分由于日有28天、29天、30天、31天4种情况,故日由年和月共同判断其天数,日计满后向月进位,月满后向年进位。计数器的输出分别经译码器送数码管显示。计时出现误差时,可以用校时电路校时、校分、校秒和校年、校月和校日。在控制信号中除了一般的校时信号外,还有时钟使能信号、时钟清零信号。控制信号由4×4矩形键盘输入。时基电路可以由石英晶体振荡电路构成,如果晶振频率为1MHz,经过6次十分频就可以得到秒脉冲信号。译码显示电路由七段译码器完成,显示由数码管构成。3单元模块设计流程3.1分频模块图6分频模块图6分频模块设计的原理主要是计数分频,用了两种分频,一种是50MHZ变成200HZ的分频,用于扫描按键输入的时钟脉冲,另外一种是将200HZ分频为1HZ用于时间信号的脉冲。如200HZ的脉冲经过200次计数后溢出的时钟就是1HZ。程序仿真波形如图7所示。3图7仿真波形因为50MHZ的仿真太大,仿真的时候等待的时间很长,而且毛刺很多,不容易观察实验的结果,所以软件仿真的时候将分频改成了1000分频方便观察现象,波形中NEWCLK变成1的时候,CLK计数刚好满1000次,说明运行成功。3.2计数模块计数模块用到计数器包括年、月、日、时、分、秒,图8和图9分别为秒和日的计数模块。图8秒的计数模块计数器是这次设计的基本组成部分,但几个计数器的原理都基本一样,LD是预置数使能端,低电平有效,当LD为0时,DATA的值送给NUM。正常运作时CLK来一个上升沿,NUM输出加1。图9日的计数模块4LD是置数端、NIAN[6..0]和YUE[3..0]是当前的年月,DATA[4..0]是预置数,MAX_DAYS[4..0]是最大天数的输出端,连接到控制器的输入端,用于调节时间。仿真波形如图10所示。图10仿真波形3.3控制模块图11控制模块控制模块是本设计的核心模块,主要实现时间的设置,KEY1是调节时间的总控制,KEY2、KEY3主要负责指定数值的增与减。当KEY1输入低电平时,时钟暂停,开始调节时钟的秒,再输入多一次时开始调节时间的分钟数值,RES5是退出调节的按键,无论进行到哪一步,只要RES输入低电平,调节控制将跳出。SEC_EN、MIN_EN、HOUR_EN、DAY_EN、MON_EN、YEAR_EN是使能端,相应位为高电平时调节相应的目标。SEC[5..0]、MIN[5..0]、HOUR[4..0]、DAY[4..0]、MON[3..0]、YEAR[6..0]分别是秒、分、时、日、月、年的预置数,当调节按键KEY1按下时,这些置数将会送给对应的计数器进行显示。当SEC_EN为低电平时选择调节秒的数值。控制模块仿真如图12所示。图12控制模块仿真时间设置按键KEY1第一次按下时对秒SEC进行设置,SEC_EN有效,KEY2按键输入一个低跳变时,SEC加1,并且SEC的数值0、1、2、3等将会送到计数器的预置数端,这是计数器的LD有效即可将预置数直接送到数码管去显示。当KEY1再次按下时对分MIN