0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用VHDL语言与FPGA器件设计数字日历

电子设计 来源:郭婷 作者:电子设计 2019-04-23 08:25 次阅读

基于FPGA设计数字日历可以实现以软件方式设计硬件的目的,无需购买专用数字芯片,从而克服了传统利用多片数字集成电路设计数字日历存在焊接麻烦、调试繁琐、成本较高等问题。而且,基于FPGA的数字日历与传统系统相比,在设计灵活、开发速度、降低成本、计时精度、功能实现上都得到大幅度提升,能够更好地满足人们日常生活的需要。

本文介绍如何利用VHDL硬件描述语言设计一个具有年、月、日、星期、时、分、秒计时显示功能,时间调整功能和整点报时功能的数字日历。在QuartusⅡ开发环境下,采用自顶向下的设计方法,建立各个基本模块,再构建成一个完整的基于FPGA设计的数字日历的顶层模块,然后对其进行编译、仿真、引脚锁定,最终下载到可编程逻辑器件上进行结果验证。

1数字日历整体设计方案

基于FPGA的数字日历设计分为硬件设计和软件设计两大部分。其原理框图如图1所示。整个数字日历由六个部分组成:显示控制部分,时分秒部分,年月日部分,定时与整点报时部分,星期部分,调整控制部分。秒、分、时分别由两个60进制的计数器和一个24进制的计数器组成。当个计数器达到进位的条件时向下一计数器进位。同样日、月、年也是由不同的计数器组成,当达到所需进位的条件时向下一计数器进位,各计数器在进位的同时分别把各自的结果输出给显示部分进行实时显示。

利用VHDL语言与FPGA器件设计数字日历

图1数字日历原理框图

2数字日历的工作原理

首先由外部振荡器产生稳定的高频脉冲信号,作为数字日历的时间基准,然后经过分频器输出标准秒脉冲,输入到FPGA的CLOCK端,实现计数。当秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24进1”规律计数。计满后各计数器清零,重新计数。日部分由于日有28天、29天、30天、31天4种情况,故日由年和月共同判断其天数,日计满后向月进位,月满后向年进位。计数器的输出分别经译码器送数码管显示。计时出现误差时,可以用校时电路校时、校分、校秒和校年、校月、校日。

设计中用到了6个按键K1,K2,K3,K4,ZHENG,NAO.其中K1用于切换显示,刚开始时显示日期,按两次K1显示星期+时间,再按两次K1显示定时时间,再按两次重新显示日期,以此循环。K2、K3和K4配合进行调节:开始正常显示不进行调节;当按两下K2键切换到对分钟进行调节,此时每按两下K3键分钟加1;再按两下K2键切换到对小时进行调节,此时每按两下K3键小时加1;依照分钟→小时→星期→天→月→年→定时→正常→分钟的次序循环调节,每按两下K2键切换到调节相应显示,此时每按下K3键两次,对应显示加1;当切换到定时调节时,每按两下K3键,定时的分钟加1,此时按两下K4键,切换到定时小时调节,每按两下K3键,定时的小时加1.按键ZHENG和NAO为整点报时和定时闹钟的使能端(低电平有效)。

3软件设计

软件设计分为秒分时、年月日、按键调整、控制显示、闹钟等几大模块。设计好各子模块,然后在原理图编辑窗口创建顶层原理图文件shuzirili.bdf,将各子模块按照逻辑关系连接起来得到数字日历电路核心部分的原理图。下面对各子模块设计及仿真进行介绍。

3.1时分秒模块

分和秒都是60进制的计数器,小时则是24进制的计数器,先对各个子模块进行设计编译,验证无误后再将其组织到一起。外部时钟信号通过秒模块的clk输入,产生的进位信号输送到分模块的clk,分模块产生的进位信号输送到小时模块的clk,构成时分秒模块。其结构图如图2所示。

利用VHDL语言与FPGA器件设计数字日历

图2时分秒原理图

3.2星期模块

星期模块为七进制计数器。其计数时钟信号来自于调时电路产生的星期进位脉冲信号,计数至6瞬间,计星期模块返回0重新开始计数。

3.3年月日模块

年月日模块有daycounter模块、days-control模块、monthcounter模块、yearcounter模块组成,具有大小月判断和闰年判断功能,其结构图如图3所示。

利用VHDL语言与FPGA器件设计数字日历

图3年月日连接框图

下面以年月日模块为例,连接好之后进行编译并仿真,闰/平年的2月仿真结果如图4,图5所示,年进位如图6所示。

利用VHDL语言与FPGA器件设计数字日历

图4仿真结果(2008年2月)

利用VHDL语言与FPGA器件设计数字日历

图5仿真结果(2005年2月)

利用VHDL语言与FPGA器件设计数字日历

图6仿真结果(2004年12月)

年月日模块计数设定为2000年~2999年,从图4中可以看出2008年2月,计数到29天;从图5得到2005年2月计数到28天;从图6看出2004年12月计数到31天,设计正确。

3.4定时模块

定时模块通过按键K4来切换调节定时的分钟和小时,调整功能由调时模块的按键K3来完成,每按两下K3对应的显示加1.

3.5调时模块

调时模块设计思想是:通过把整个设计中的上一个模块(比如:分的上一个模块是秒;年的上一个模块是月,等等)的进位输出接到本模块的输入in,out接到下一个模块的时钟输入。正常状态下sout=fin,fout=hin,hout=din,dout=min,mout=yin,win=hout;当每按下两次K2键,产生一个上升沿分别对fin,hin,win,din,min,yin,dingshi调节,调节信号由K3给出。其中定义一个信号w,计数到7返0,对应正常状态,fin,hin,win,din,min,yin,dingshi 7个状态。

当K2每来一个上升沿时,分别对分,时,星期,天,月,年以及定时调整,调整信号由K3给出,经仿真调时模块结果与系统设计要求符合。

3.6控制模块

控制模块通过K1按键进行切换显示调整,起初显示年月日,按下2次K1显示时间,再按下2次显示定时时间。

若仿真参数设置数值为:2013年05月15日,星期三,15:28(33 s),定时为07:19.仿真后结果如图7所示。

从图7可以看出,通过K1按键控制显示,开始显示年月日:20130515,当按下K1两下,显示星期+时间:03152833;再按两下显示定时时间:00000719.仿真结果与预期设计一致,设计正确。

利用VHDL语言与FPGA器件设计数字日历

图7仿真结果

3.7闹钟模块

闹钟模块设计为当定时时间到或者整点时闹铃响,分别有ZHENG,NAO两个控制端子控制,低电平有效。经验证,定时和整点报时仿真结果均符合设计要求。

3.8顶层模块

将各个子模块设计好之后,并创建各自文件的图元,以供原理图设计文件中调用。然后在原理图编辑窗口创建顶层原理图文件shuzirili.bdf,即将各图元的引线端子按照逻辑关系连接起来,得到如图8所示的完整原理图,也即顶层模块。

对顶层文件分别进行时间、日期、闹铃功能的波形仿真,得到的仿真结果和预想设计一致,表明设计正确。

利用VHDL语言与FPGA器件设计数字日历

图8顶层原理图

4硬件验证

在QuartusⅡ开发环境中完成上述软件设计及仿真后,最后还需将程序下载到FPGA器件中进行硬件测试,以进一步验证所设计程序是否正确。硬件验证时,还需对顶层文件进行管脚分配、并编译,然后将编译好的目标文件通过下载电缆下载到FPGA开发板中进行验证和调试。

采用GW48-SPOC/EDA实验开发系统并设置在工作模式0来验证设计结果。下面仅给出部分验证结果。刚完成下载,数码管显示20000000,按两下K1切换到时间显示,才刚刚开始计数,同时扬声器发出“滴答滴答”的频率为1 Hz的响声(为整点报时)60 s,然后通过按键8(K1)、键7(K2)、键6(K3)、键5(K4)对各个功能进行验证。首先调整时间,按两下K2键切换到分的调整,此时每按两下K3键,分钟加1,验证过程中看到加到59就变为00;再按两下K2键切换到小时的调整,此时每按两下K3键,分钟加1;用同样的方法调整星期,天,月,年以及定时的分钟和小时。

调整日期为2013年7月31号,当再调整天时,就变为2013年7月1号,结果如图9所示。其他月份实验结果也符合生活规律,与设计要求一致。

其他的测试结果,数码管能够正确显示计时时间,定时验证及时间调节、整点报时均能够正常工作,实验结果符合设计要求。

利用VHDL语言与FPGA器件设计数字日历

图9实际电路验证

5结语

本文基于FPGA环境设计了一个具有年、月、日、星期、时、分、秒计时显示功能,时间调整功能和整点报时功能的数字日历系统,并将之下载到FPGA芯片EP1C3T144-3上进行结果验证,实验验证表明:数码管能够正确显示计时时间,能够通过按键调整时间,能够设定时间并调整,整点报时能够正常工作,实验结果符合设计要求。由于设计中利用硬件描述语言和FPGA芯片相结合进行数字日历的研究,即利用EDA技术在一定程度上实现了硬件设计软件化,使设计过程变得相对简单,易于修改。

另外,随着电子技术的发展,数字日历的功能会更加多样化,诸如增加农历显示;加入温度采集系统,能够显示每时每刻的环境温度;加入节气、节日提醒及显示功能,提醒人们农耕及休息时间;还可以加入语音识别,方便人们不动手实现对数字日历的调节等等。相信功能日趋完善多样化的数字日历将能更好地满足人们的各种需要,为人类服务。


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

    关注

    1593

    文章

    21211

    浏览量

    592194
  • 芯片
    +关注

    关注

    445

    文章

    47496

    浏览量

    407910
  • vhdl
    +关注

    关注

    30

    文章

    814

    浏览量

    127619
收藏 人收藏

    评论

    相关推荐

    FPGA毕业论文选题大全

      基于VHDL语言数字钟系统设计  基于FPGA的交通灯控制  采用可编程器件(FPGA/C
    发表于 02-10 10:40

    FPGAVHDL有哪些优点?怎么理解VHDL

    VHDL 主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL语言形式、描述风格和句法上与一般的计算机高级
    发表于 09-07 09:04

    基于CPLD和FPGAVHDL语言电路优化设计

    成为描述、验证和设计数字系统中最重要的标准语言之一。由于VHDL在语法和风格上类似于高级编程语言,可读性好,描述能力强,设计方法灵活,可移植性强,因此它已成为广大EDA工程师的首选。目
    发表于 06-18 07:45

    怎么设计优化VHDL语言电路?

    可编程逻辑器件(PLD)的发展而发展起来的。它是一种面向设计、多层次的硬件描述语言,是集行为描述、RTL描述、门级描述功能为一体的语言,并已成为描述、验证和设计数字系统中最重要的标准
    发表于 08-08 07:08

    怎么利用CPLD/FPGAVHDL语言优化电路?

    (PLD)的发展而发展起来的。它是一种面向设计、多层次的硬件描述语言,是集行为描述、RTL描述、门级描述功能为一体的语言,并已成为描述、验证和设计数字系统中最重要的标准语言之一。由于
    发表于 08-28 08:05

    如何利用VHDL语言实现FPGA与单片机的串口异步通信电路?

    本文介绍利用VHDL语言实现 FPGA与单片机的串口异步通信电路。
    发表于 04-29 06:34

    如何利用FPGAVHDL语言实现PCM码的解调?

    利用现场可编程门阵列(FPGA)和VHDL 语言实现了PCM码的解调,这样在不改变硬件电路的情况下,能够适应PCM码传输速率和帧结构变化,从而正确解调数据。
    发表于 05-07 06:58

    浅析嵌入式FPGA与HDL硬件描述语言

    )领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。HDL硬件描述语言(HDL)是一种用来设计数字逻辑系统和描述数字电路的
    发表于 12-22 07:39

    VHDL语言描述数字系统

    VHDL语言描述数字系统:本章介绍用 VHDL 描述硬件电路的一些基本手段和基本方法。   VHDL
    发表于 09-01 09:02 37次下载

    VHDL语言FPGA/CPLD开发中的应用?

    【摘 要】 通过设计实例详细介绍了用VHDL(VHSIC Hardware DescriptionLanguage)语言开发FPGA/CPLD的方法,以及与电路图输入和其它HDL语言
    发表于 05-10 19:47 1113次阅读
    <b class='flag-5'>VHDL</b><b class='flag-5'>语言</b>在<b class='flag-5'>FPGA</b>/CPLD开发中的应用?

    采用CPLD/FPGAVHDL语言电路优化原理设计

    采用CPLD/FPGAVHDL语言电路优化原理设计 VHDL(Very High Speed Integrated Circuit Hardware Description Lan
    发表于 03-19 11:38 2323次阅读
    采用CPLD/<b class='flag-5'>FPGA</b>的<b class='flag-5'>VHDL</b><b class='flag-5'>语言</b>电路优化原理设计

    基于CPLD的VHDL语言数字钟(含秒表)设计

    利用一块芯片完成除时钟源、按键、扬声器和显示器(数码管)之外的所有数字电路功能。所有数字逻辑功能都在CPLD器件上用VHDL
    发表于 09-27 15:08 366次下载
    基于CPLD的<b class='flag-5'>VHDL</b><b class='flag-5'>语言</b><b class='flag-5'>数字</b>钟(含秒表)设计

    基于Xilinx FPGAVHDL数字秒表设计与仿真实现

    文中着重介绍了一种基于FPGA利用VHDL硬件描述语言数字秒表设计方法,在设计过程中使用基于VHDL
    发表于 12-25 11:19 6075次阅读

    基于FPGA数字跑表的设计

    基于FPGA数字跑表的设计 VHDL语言
    发表于 10-30 10:39 25次下载

    基于VHDL语言FPGA开发板实现数字秒表的设计

    应用VHDL语言计数字系统,很多设计工作可以在计算机上完成,从而缩短了系统的开发时间,提高了工作效率。本文介绍一种以FPGA为核心,以VHDL
    的头像 发表于 07-24 08:05 3127次阅读
    基于<b class='flag-5'>VHDL</b><b class='flag-5'>语言</b>和<b class='flag-5'>FPGA</b>开发板实现<b class='flag-5'>数字</b>秒表的设计