基于FPGA的电子钟设计
c.选择配置器件和编程方式 d.选择输出设置
e.选择目标器件闲置引脚的状态 4.全程编译
QuartusII编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错、逻辑综合、结构综合、输出结果的编辑配置,以及时序分析。在这一过程中,将设计项目适配到FPGA目标器中,同时产生多种用途的输出文件。编译器首先检查出工程设计文件中可能的错误信息,供设计者排除。然后产生一个结构化的以网表文件表达的电路原理图文件。
如果编译成功,可以见到工程管理窗口左上角显示了工程(例如工程div)的层次结构和其中结构模块耗用的逻辑宏单元数;在此栏下是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析等;最下栏是编译处理信息;中栏式编译报告项目选择菜单,单击其中各项可以详细了解编译与分析结果。 5.时序和功能仿真
工程编译通过后,必须建立VWF文件对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。可以自己设置输入信号,再由功能仿真出输出信号。这能在软件上实现硬件的功能,大大提高了硬件电路调试成功率。 6.编程下载
编程下载指将编程数据放到具体的可编程器件中去。如果以上所有的过程都没有发现问题,即满足设计要求,就可以将适配器产生的配置/下载文件通过FPGA编程器或下载电缆载入目标芯片FPGA中。对FPGA来说就是将数据文件“配置”到FPGA中去。
3 总体设计方案
数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。
11
基于FPGA的电子钟设计
图2所示为数字钟的一般构成框图。主要包括晶振电路、复位电路、按键电路、译码扫描和显示电路、报时电路。
按键电路 复位电路 FPGA LED数码管译码电路 LED数码管显示电路 LED数码管扫描电路 晶振电路 整点报时电路 图2 数字钟硬件构成框图
晶振电路产生稳定的10MHZ的高频脉冲信号,作为数字钟的时间基准,然后经过软件分频10000次输出标准秒脉冲1HZ。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计满后各计数器清零,重新计数。计数器的输出分别经译码器送数码管显示。计时出现误差时,可以用校时电路校时、校分。在控制信号中除了一般的校时信号外,还有时钟清零信号,可以使数字钟复位清零。控制信号由3个按键S1、S2、S3输入,分别实现校时、校分、复位清零功能。扫描译码显示电路由七段译码器完成,显示由8位数码管构成。
4 软件设计与功能实现
4.1 分频模块功能的软件设计与实现
晶体振荡器是构成数字式时钟的核心,晶振的稳定度及频率的精度决定了
12
基于FPGA的电子钟设计
数字钟计时的准确程度,它保证了时钟的走时准确及稳定。
石英晶体的选频特性非常好,只有某一频率点的信号可以通过它,其它频率段的信号均会被它所衰减,而且,振荡信号的频率与振荡电路中的R、C元件的数值无关。因此,这种振荡电路输出的是准确度极高的信号。然后再利用分频电路,将其输出信号转变为秒信号,其组成框图如图3。
图3秒信号产生电路框图
本系统使用的晶振电路给数字钟提供一个频率稳定准确的10MHz的方波信号,其输出至分频电路。经分频后输出1HZ的标准秒信号CLK1HZ,用于秒信号,校时电路和报时电路。
石英晶体 振荡电路 分频电路 秒信号秒信号 4.2 计时校时模块功能的软件设计与实现
时间计数模块由60进制的秒计数,60进制的分计数和24进制的小时计数分别实现。当数字钟处于正常计数状态时,秒计数器对1Hz 的标准信号进行计数,在其进位输出信号作为分计数器的使能端,而分计数器的进位输出信号又作为时计数器的使能端。
数字钟除了正常计时外,通过两个按键S1,S2分别实现对小时、分钟的调整。这两个按键的作用,就是用来产生时计数器、分计数器的另一路使能信号按键使能信号.由于它们的基准信号都是1Hz ,故有按键使能信号时,它们会迅速增加,达到调整时间的目的。
4.3 整点报时模块功能的软件设计与实现
整点报时模块是根据秒、分的输出数值,与程序设定的时间作比较,当时间为59分55 秒、56 秒、57 秒、58 秒、59秒时,整点报时模块的LED灯控制信号有输出,LED灯闪烁。
4.4 扫描译码显示模块功能的软件设计与实现
动态扫描电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且输出数码管的片选信号和位选信号。所谓动态扫描显示方式是在显示某一
13
基于FPGA的电子钟设计
位LED显示块的数据的时候,让其它位不显示,然后在显示下一位的数据,同时关闭其他显示块。这样做可以使每一个显示块显示与自己相对应的数据。只要保证每一位显示的时间间隔不要太大,利用人眼的视觉暂留的现象,就可以造成各位数据同时显示的假象。
显示译码电路,选择八位七段数码管作为显示单元电路。计数器实现了对时间的累计并以8421BCD码的形式输送到动态扫描模块,由译码电路将8421BCD码转换为七段码,再由数码管显示出来。
4.5 顶层模块功能的软件设计与实现
将分频模块,计时校时模块,报时模块和显示模块创建的符号文件在新建的顶层模块图形编辑文件中调用,进行模块符号间的连线,设置输入,输出引脚。编写好顶层模块后,进行编译仿真,验证程序的正确性。
5 系统功能调试及分析
本系统只含有FPGA自编程硬件设计电路,整个系统比较简单。因此在系统调试中采用自低向上的调试方法,也就是先进行各个单元模块的软件编译,在各个单元模块调试好后再把各个单元模块综合起来进行系统的整体的编译和功能仿真。数字钟系统的整体功能仿真波形图如下图4。功能仿真无误后,通过下载电缆将设计文件加载到目标器件——FPGA,通过控制按键观察LED显示是否达到数字钟的设计要求。
14
基于FPGA的电子钟设计
图4数字钟系统的整体功能仿真波形图
6 结论
本文提出了一种基于FPGA的数字钟设计方案,从硬件和软件两个方面详细地介绍了设计思想和过程,最终设计出了数字钟,将设计程序加载到实验箱上运行调试后,时、分、秒能够正常计数,并能由控制键分别校正时、分的显示,整点报时功能正常。最终结果与预期效果一致,完成了预期的设计任务。
论文取得了如下结果:
1.采用了FPGA芯片CycloneII系列EP2C35F672C8作为核心器件。设计的数字钟系统的硬件电路,能够完成数字钟的校时,计时,报时,显示等实时任务。
2.运用自顶向下的思想。将整个系统分成几个模块分别设计,再用顶层模块块将它们联系起来,实现数字钟整体的功能,降低了系统设计的难度。
3.采用了VHDL语言为主,图形输入为辅的编程方法。优点是编程方法灵活,而且编写的程序具有很好的移植性,同样适用于其他FPGA芯片的数字钟设计。
15

