基FPGA的数字时钟实现

时间:2022-07-20 07:44:45

基FPGA的数字时钟实现

【摘 要】EDA技术使得电子线路的设计人员能在计算机上完成电路的功能设计、逻辑设计、时序测试直至印刷电路板的自动设计。本文介绍了以VHDL语言和硬件电路为表达方式,以Quartus II软件为设计工具,最终通过fpga器件实现数字时钟的设计过程。

【关键词】EDA;Quartus II;FPGA;数字时钟

0.前言

随着电子技术和计算机技术的发展,电子设计的规模越来越大,电路的集成度和复杂度也越来越高,产品的更新周期越来越短,以计算机为工作平台的CAD技术已经在高速、复杂的数字系统设计中得到了广泛的应用。近年来,在数字系统的设计领域融入了一种新型的设计技术:EDA技术。EDA技术是以硬件描述语言为系统逻辑的主要表达方式,以计算机相应开发软件及实验开发系统为设计工具,以大规模可编程逻辑器件为设计载体,自动完成由软件描述的电子系统到硬件系统的逻辑编译、化简、仿真、对目标芯片的编程下载等工作,最终形成集成电子系统或专用集成芯片的一门多学科融合的技术。该技术优越之处在于系统设计的效率高、保密性强、集成度好、易于修改和实现等,因此,一跃成为当下数字系统设计领域的主流技术,并被越来越广泛地应用到相关领域中。

随着EDA技术的发展,利用计算机进行电子线路的辅助设计 可有效地节省产品开发的时间与成本,极大地提高电路设计的效率。本文以Quartus II 软件为设计工具,以ALTERA公司的ACEX系列3万门的FPGA器件EP1K30QC208-2为载体,介绍了数字电子时钟的实现方法。

1.设计工具

Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用TCL脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点,Quartus II支Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度,而且它对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。本文就是以Quartus II为开发平台,实现了由软件描述系统到硬件系统的逻辑编译、化简、仿真以及编程下载等工作。

最终的电路实现和验证本文采用的是众友科技份有限公司推出的ZY11EDA13BE型EDA实验平台,其核心处理芯片为ALTERA公司ACEX系列3万门的FPGA器件EP1K30QC208-2。EP1K30是ACEX1K系列FPGA器件之一,提供1968个寄存器,24576个存储位,30000个典型门,这些使得EP1K30非常适合于构建复杂逻辑功能和存储功能,在需要高性能处理的通信领域内的数字信号处理、宽通道数据操作、数据转换和微控制器等方面应用广泛。该开发平台有丰富的扩展模块,例如本文要用到的数字时钟源模块、数码管显示模块等。

2.数字时钟实现方案

数字时钟主要由时钟基准信号模块、计数器模块、译码显示模块、和功能扩展模块几部分组成,具体结构如图1所示。时钟基准信号模块负责产生秒信号;计数器模块分别用于实现小时信号(12或24进制)、分信号(60进制)和秒信号(60进制);译码显示模块负责将小时、分和秒信号进行译码最终通过六个数码管将具体时间显示出来;功能扩展模块主要是在普通计时的基础上通过增加一些模块如调时、闹钟等,使得该时钟电路的功能进一步完善。

图1 数字时钟的结构

2.1单个数码管的计数加显示实现

时间最终一共需要六个数码管显示结果,这六个数码管只需要显示0-9这十个数字即可,而且每个显示译码器的输入信号需要四位输入,因此小时、分钟和秒信号的计数器这里采用8421编码的形式产生输出信号。另一方面,由于各计数信号的产生方式、显示译码器的译码实现几乎相同,因此,这里我们先介绍一个数码管的显示实现过程。

首先在QuartusII软件中建立一个工程,目标芯片选择与开发板对应的EP1K30QC208-2,然后添加文件编写两段落VHDL语言源程序,分别实现十进制计数功能和译码显示功能,并利用软件的创建元件功能创建出这两段程序对应的两个元件,然后利用原理图输入的方式调出这两个元件并进行连接,具体的连接图及引脚的分配情况如图2所示。十进制计数和译码显示的原理为:cnt16模块只需要实现10进制计数器功能即可,具体的VHDL源程序比较简单,这里不再介绍;sm模块主要实现四位二进制的显示译码功能,从而驱动数码管显示0-9是个数字,具体的VHDL译码源程序也比较简单,这里不再介绍。

图2 一位数码管的计数器加译码器电路

原理图电路搭建好之后,紧接着利用QuartusII软件进行编译、波形仿真、引脚分配、重新编译等功能,一方面检查电路设计的准确性,另一方面可以生成相应的下载文件(.sof文件),最后连接开发板,接通开发板电源,将.sof文件下载到目标芯片中,从而完成单个数码管的计数加显示电路的设计。

2.2其它模块的实现

数字时钟需要的基准信号为标准的秒信号,这里不需要专门实现,我们使用开发板的数字时钟源模块提供的1HZ信号;小时信号、分信号和秒信号的计数显示译码功能的实现,可以利用上面单个数码管的计数加显示电路,通过级联扩展加以实现,具体的实现方法是:

在设计cnt16元件时,增加一个输出端口(CO端),该端口的功能是,计满十个数时输出一个1,利用这个输出口为扩展端,与另外一cnt16单元的clk端连接,通过异步计数的方式实现n进制计数功能。通过修改VHDL程序中的计数终值,既可以创建出三个单元电路,分别实现两个六十进制计数器(分信号和秒信号)和一个24进制计数器(小时信号),进而实现数字时钟的计数加显示功能。

通过以上的方法实现了一个基本的数字电子时钟功能,但是其功能比较单一,只实现了电子时钟的显示,为了使该电路的功能更加完善,可以增加调时、闹钟、整点报时等模块来增加该电子时钟的功能,这里不再讨论。

3.结束语

计算机技术和大规模的可编程器件技术相结合,使得电子线路的设计更加方便快捷,节省了产品开发的时间与成本,极大地提高电路设计的效率。本文利用Quartus II软件作为开发工具,通过以VHDL语言源程序和硬件电路原理图相结合的输入方式,介绍了数字时钟电路的设计过程,并将设计结果下载到了FPGA芯片上,最终实现了数字时钟的功能。在此基础上增加一些扩展模块,可实现一个功能更加完善的电子手表,具有很强的实用性。

【参考文献】

[1]任爱锋,初秀琴.基于FPGA的嵌入式系统设计[M].西安:西安电子科技大学出版社,1999.

[2]王志敏,李杰.一种用QuartusII实现的电子钟系统 [J].承德石油高等专科学校学报,2007(12).

[3]时述有,张昕, 毕娟.EWB在电工电子实验教学中的应用 [J].丹东纺专学2004(4).

[4]褚振勇,齐亮.FPGA设计及应用[M].西安电子科技大学出版社,2006.

上一篇:电子工程系统中电磁干扰诊断和控制技术 下一篇:打穴播种机研究的发展与现状