基于fpga的数字钟设计的两款方案(含程序)

FPGA/ASIC技术

190人已加入

描述

  采用FPGA进行的数字电路设计具有更大的灵活性和通用性,已成为目前数字电路设计的主流方法之一。本文给出一种基于FPGA的数字钟设计方案。该方案采用VHDL设计底层模块,采用电路原理图设计顶层系统。整个系统在QuartusⅡ开发平台上完成设计、编译和仿真,并在FPGA硬件实验箱上进行测试。测试结果表明该设计方案切实可行。

  EDA(Electronic Design Automation)又名电子设计自动化,其基本特征是:以超大规模可编程逻辑器件,如FPGA,为设计载体,以硬件描述语言,如VHDL,为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,完成电子系统的设计。使用EDA进行电子系统设计具有以下特点:1)用软件方式设计硬件;2)用软件方式设计的系统到硬件系统的转换是由有关开发软件自动完成的;3)设计过程中可用有关软件进行各种仿真;4)系统可现场编程,在线升级;5)整个系统可集成在一个芯片上,体积小、功耗低、可靠性高;6)设计的移植性好、效率高;7)适合分工设计、团队协作。因此,EDA技术是现代电子设计的发展趋势。

  1 数字钟的设计方案

  本文以FPGA平台为基础,采用VHDL语言在QuartusⅡ开发环境下设计开发多功能数字钟,具有计时、校时、蜂鸣闹铃的功能,具体功能为:

  1)能够对秒、分、小时进行正常计时,每日按24小时计时制,能用八个七段数码管进行友好界面的显示;

  2)具有复位功能,可以对当前时间进行清零;3)能够对电子时钟进行时分秒设置,方便在时钟跑错时进行校正;

  4)能够设定电子闹钟,在指定的时间驱动蜂鸣器等外设工作,引起使用者注意;

  5)电子钟具有溢出警报功能,当小时数超过24时,用一个LED小灯进行溢出警报说明,然后从00—00—00开始从新计时,此功能可以使电子钟很方便的扩展为万年历。

  我们采用自顶向下的层次化设计方法进行设计,其输入为状态选择信号(使用一个2位二进制表示选择,00正常运行或显示闹铃信息,01设置秒,10设置分,11设置时)、复位信号、闹铃开关(配合状态选择信号进行闹铃的设置)、1 Hz的计时时钟信号和1 kHz的扫描时钟信号;输出为时、分、秒数字显示(这里使用了8个共阴极的七段数码管作为显示输出)、闹钟蜂鸣、溢出信号。系统由状态选择模块、时、分、秒计时校时模块、显示与闹铃模块组成。数字钟的系统框图图如图1所示。

  FPGA

  2 核心模块设计

  2.1 状态选择模块设计

  该模块主要功能其实是对输入端的汇总,然后根据设置方法对不同的模块进行使能和参数传递,输出不同的信令signaling控制到各个模块,使每个模块工作在一个有序的状态。状态选择模块的电路描述如图2所示,具体说明如下:当输入一个脉冲到复位键reset时,数字钟启动并对时间清零。闹铃键clock=0时,模块根据状态选择键IS_SET输出不同秒、分、时信令到秒、分、时计时校时模块,控制这些模块的运行状态。此时,当IS_SET=00时为正常计时状态,秒、分、时的输出信令均为80;IS_SET=01时为秒校时状态,输出秒信令S_signaling为时间输入Time(显然该输出小于60),而输出分信令M_signaling和时信令H_signaling均为100,表示暂停分、时计时;IS_SET=10和11时则分别为分和时的校时状态。闹铃键clock=1时,当IS_SET=10和11时分别设置闹铃的分、时为时间输入Time并将设置的闹铃时间输出到“显示与闹铃模块”中保存;当IS_SET=00时,输出out_clock=1,控制显示与闹铃模块显示设置的闹铃时间。注意,当闹铃键clock=1时,计时正常运行,不论IS_SET如何设置,秒、分、时的输出信令均为80。

  FPGA

  2.2 计时校时模块设计

  该模块用于时、分、秒的计时校时,根据状态选择模块传输过来的信令signaling分别进行计时和校时。时、分、秒计时校时模块是一样的,只是分秒的进位为60,而小时的进位为24。我们在实体声明中的使用generic变量定义一个numn,该值设置进制为60或24,通过修改numn值就完成分、秒计时模块到小时计时模块的转换。模块的输入为扫描时钟、计时时钟和信令signaling,输出为输出时间高位time_h和输出时间低位time_l,以及进位clk_jin。

  FPGA

  计时校时模块的电路描述如图3所示,具体说明如下:每当扫描时钟上升沿时,启动进程,并根据信令signaling执行不同操作,1)当signaling

  2.3 显示、闹铃模块设计

  本模块是数字钟系统中的输出模块,用于输出LED数字显示和闹铃,其输入为扫描时钟,从计时校时模块输出的秒低位、秒高位、分低位、分高位、时低位、时高位信号和状态选择模块输出的闹铃显示Nao_En闹铃时间Nan_In。如果Nao_En=0则正常显示时间,当Nao_En=1时,在LED数码管上显示闹钟时间。当当前时间与保存的闹铃时间Nan_In相同时,蜂鸣器鸣响1 min。这里我们使用了八个共阴极的七段数码管显示时间,当选位信号sel=“01111111”时,第一个数码管显示数字,其他七位不显示。我们通过动态扫描,轮流显示秒低位sec_ge、秒高位sec_shi、分低位min_ge、分高位min_shi、时低位hour_ge、时高位hour_shi共6路信号,当扫描时钟sanc_clk频率高于28 Hz时,由于人眼的视觉残留效果,使得这6路信号看上去是同时显示在6个七段数码管上。显示、闹铃模块电路描述如图4所示。

  FPGA

  3 结束语

  在QuartusⅡ软件开发平台上,采用“自顶向下设计,自底向上实现”的方法完成了数字钟的设计与实现。其基本过程如下:1)完成数字钟的总体设计;2)完成各个底层模块的设计和波形仿真:底层模块采用VHDL语言编写,在编译和仿真成功后,对其进行封装;3)完成数字钟的顶层电路设计:根据数字钟的系统框图(图1)在QuartusⅡ中采用电路原理图方式,调用封装好的底层模块,完成顶层电路图的设计;4)对顶层电路进行编译和仿真,结果表明仿真波形符合设计要求;5)进行引脚分配,再编译后,将下载文件下载到FPGA开发板中进行验证和调试。测试结果表明数码管能正确的显示计时时间,能通过按键调整时间,能实现整点报时,完全符合设计要求。

  本设计为一个多功能的数字钟,具有时、分、秒计数显示功能,以24小时的循环计数:具有校对功能。本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在Quartus 工具软件下,采用自顶向下的设计方式,由各个基本模块共同构建了一个基本FPGA的数字钟。

  系统主芯片采用EP2C70F896C6,有时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的校时、清零、启停功能。

  随着电子技术的发展,数字电路朝着速度快、容量大、体积小、重量轻的方向发展。人们对时间计量的精度要求越来越高,钟表的数字化给人们生产生活带来了极大的方便。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

  本次设计以数字电子为主,实现对时、分、秒数字显示的计时装置,周期为24小时,显示满刻度为23时59分59秒,并具有校时功能和报时功能的数字电子钟。课程设计所采用的开发平台:Quartus II是可编程片上系统的综合性设计环境,它支持CPLD和FPGA器件的开发。FPGA (Field Programmable Gate Array)现场可编程门阵列,内部主要由许多可编程逻辑模块组成,靠纵横交错的分布式可编程互连线连接起来,可构成极其复杂的逻辑电路。本次课程设计所采用的FPGA芯片 Cyclone II系列的EP2C70F896C6。 2.2工作原理及系统框图

  利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。电子时钟扩展功能为倒计时流水灯。数字电子钟的电路组成框图片如下图:

FPGA
 

 1.数字钟电路系统由主体电路和扩展电路两大部分所组成。

  2. 数字电子时钟电路具有时、分、秒计时,秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。

  3. 准确计时,以数字形式显示时、分、秒的时间,计数器的输出经译码器送显示器。

  4. 具有分、时校正功能,校正输入脉冲频率为1Hz 5. 复位功能,时、分、秒计时清零。

  6.扩展功能为:具有仿广播电台整点报时的功能,即每逢59分51秒、52秒、53秒、54秒、55秒及57秒,LED绿灯依此点亮,59分59秒时,LED红灯亮,形成倒计时流水灯报时。

  三.软件方案

  3.1 程序流程图

  3.1.1 24进制

  小时采用24进制计时,当CP↑,EN和nCR为高电平时计数,计数范围为[0,23],使能信号EN等于0时,计时器保持。当高位大于2或高位等于2且低位大于3时,计时器清零,否则继续计时。流程图见下图。

FPGA
 

  3.1.2 10进制流程图

  当CP↑,EN和nCR为高电平时计数,计数范围为[0,9],使能信号EN等于0时,计时器保持。当计时到9的时候,计时器清零,否则继续计时。流程图见下图。

FPGA

  3.1.3 6进制

  当CP↑,EN和nCR为高电平时计数,计数范围为[0,5],使能信号EN等于0时,计时器保持。当计时到5的时候,计时器清零,否则继续计时。流程图见下图。
 

FPGA

FPGA

FPGA

FPGA

  3.1.7 总流程图

FPGA

FPGA

  图22 总流程图

FPGA

FPGA

FPGA

FPGA

FPGA

FPGA
FPGA

FPGA
FPGA
FPGA

FPGA

FPGA

FPGA


 

  4.3分析运行结果

  4.3.1 设计总结

  本次大型作业我们所研究的课题是基于FPGA的数字电子时钟的设计与实现。时钟设计的方法是通过计时模块、分频模块、校时模块、译码显示模块和倒计时报时模块来构成该电子时钟。计时模块为时分秒计时,采用24进制计时。因此该模块中调用了24进制和60进制两个程序,其中60进制采用的是调用6进制和10进制的方法来实现。

  分频模块输入一频率为50MHz的信号,经过四次10^2分频,将信号逐次分为500KHz、5KHz、50Hz直至0.5Hz。计时模块就由分频器分频出来的标准秒脉冲进行计时,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。我们还进行了扩展功能设计——倒计时流水灯功能,从59分55秒至59分59秒,每秒亮一盏灯报时,55秒至58秒,依此亮绿灯,59秒亮红灯。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分