您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于FPGA的多功能电子万年历设计
基于FPGA的多功能电子万年历第1页共28页一、电子万年历简介...............................................................................................................1二、电子万年历的工作原理...................................................................................................1三、多功能电子万年历各功能模块实现...............................................................................33.1时钟问题.....................................................................................................................33.2电子万年历的控制系统.............................................................................................53.3主控制模块maincontrol..........................................................................................63.4时间及其设置模块time_auto_and_set...................................................................73.3时间显示动态位选模块time_disp_select.............................................................123.4显示模块disp_data_mux.......................................................................................133.5秒表模块stopwatch...............................................................................................143.6日期显示与设置模块date_main...........................................................................153.7闹钟模块alarmclock...............................................................................................173.8分频模块fdiv..........................................................................................................18四、附录.................................................................................................................................20附录一电子万年历系统的VerilogHDL语言程序.................................................20一、电子万年历简介钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭路灯等。所有这些,都是以钟表数字化为基础的。因此,研究电子万年历及扩大其应用,有非常现实的意义。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。电子万年历从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。本次所设计的电子万年历能显示日期、星期、时间,具有闹钟功能。二、电子万年历的工作原理基于FPGA的多功能电子万年历第2页共28页功能键用来选择不同的工作模式:时间正常显示功能、时间调整与显示、秒表功能、闹钟设置与查看、日期显示、日期调整与设置。调整键1:主要用于闹钟设置、日期显示与调整、秒表、时间调整与设置中的位置选择按钮,与功能键配合使用。2号键功能模式,即时间调整与设置时,用作时、分、秒的移位,按一下,将会实现“时-分-秒”的依次移位,便于在特定位置进行调整;4号键功能模式,即闹钟设置与查看时,同样用作时、分、秒的移位,按一下,将会实现“时-分-秒”的依次移位,便于在特定位置进行调整;6号键功能模式,即日期调整与设置时,用作月、日的移位,按一下,将会实现“月-日”的依次移位,便于在特定位置进行调整。按键消抖可编功能键程调整键1逻调整键2辑器件CPLD/FPGALED显示模块基于FPGA的多功能电子万年历第3页共28页调整键2:主要用于闹钟设置、日期显示与调整、秒表、时间调整与设置中的调整按钮,与功能键配合使用。2号键功能模式,即时间调整与设置时,用作时、分、秒的调整,按一下,将会使得当前调整键1选择的位置数字增加1;4号键功能模式,即闹钟设置与查看时,同样用作时、分、秒的调整,按一下,将会使得当前调整键1选择的位置数字增加1;6号键功能模式,即日期调整与设置时,用作月、日的移位,按一下,将会使得当前调整键1选择的位置数字增加1。三、多功能电子万年历各功能模块实现3.1时钟问题无论是用离散逻辑、可编程逻辑,还是用全定制器件实现任何数字电路,设计不良的时钟在极限温度、电压或制造工艺存在偏差的情况下将导致系统错误的行为,所以可靠的时钟设计是非常关键的。在FPGA设计时通常采用四种时钟:全局时钟、门控时钟、多级逻辑时钟和波动式时钟,多时钟系统是这四种时钟类型的任意组合。3.1.1全局时钟对于一个设计项目来说,全局时钟(或同步时钟)是最简单和最可预测的时钟。在FPGA设计中最好的时钟方案是:由专用的全局时钟输入引脚驱动单个主时钟去控制设计项目中的每一个触发器。FPGA一般都具有专门的全局时钟引脚,在设计项目时应尽量采用全局时基于FPGA的多功能电子万年历第4页共28页钟,它能够提供器件中最短的时钟到输出的延时。3.1.2门控时钟在许多应用中,整个设计项目都采用外部的全局时钟是不可能或不实际的,所以通常用阵列时钟构成门控时钟。门控时钟常常同微处理器接口有关,例如用地址线去控制写脉冲。每当用组合逻辑来控制触发器时,通常都存在着门控时钟。在使用门控时钟时,应仔细分析时钟函数,以避免毛刺的影响。如果设计满足下述两个条件,则可以保证时钟信号不出现危险的毛刺,门控时钟就可以像全局时钟一样可靠工作:驱动时钟的逻辑必须只包含一个“与门”或一个“或门”,如果采用任何附加逻辑,就会在某些工作状态下出现由于逻辑竞争而产生的毛刺。逻辑门的一个输入作为实际的时钟,而该逻辑门的所有其他输入必须当成地址或控制线,它们遵守相对于时钟的建立和保持时间的约束。3.1.3多级逻辑时钟当产生门控时钟的组合逻辑超过一级,即超过单个的“与门”或“或门”时,该设计项目的可靠性将变得很差。在这种情况下,即使样机或仿真结果没有显示出静态险象,但实际上仍然可能存在危险,所以我们不应该用多级组合逻辑区作为触发器的时钟端。不同的系统需要采用不同的方法消除多级时钟,并没有一个固定的模式。基于FPGA的多功能电子万年历第5页共28页3.1.4波动式时钟许多系统要求在同一设计内采用多时钟,最常见的例子是两个异步微处理器之间的接口,或微处理器和异步通信通道的接口。由于两个时钟信号之间要求一定的建立和保持时间,所以上述应用引进了附加的定时约束条件,它们会要求将某些异步信号同步化。而在许多应用中只将异步信号同步化还是不够的,当系统中有两个或两个以上非同源时钟时,数据的建立和保持时间很难得到保证,设计人员将面临复杂的时间分析问题。最好的方法是将所有非同源时钟同步化。使用FPGA内部的锁相环(PLL)是一个效果很好的方法,但并不是所有FPGA都带有PLL,而且带有PLL功能的芯片大多价格昂贵。这时就需要使用带使能端的D触发器,并引入一个高频时钟来实现信号的同步化。稳定可靠的时钟是保证系统可靠工作的重要条件,设计中不能够将任何可能含有毛刺的输出作为时钟信号,并且尽可能只使用一个全局时钟,对多时钟系统要特别注意异步信号和非同源时钟的同步问题。为了获得高驱动能、低抖动时延、稳定的占空比的时钟信号,一般使用FPGA内部的专用时钟资源产生同步时序电路的主工作时钟。专用时钟资源主要指两部分,一部分是布线资源,包括全局时钟布线资源和长线资源等,另一部分则是FPGA内部的PLL。3.2电子万年历的控制系统基于FPGA的多功能电子万年历第6页共28页此电子万年历系统主要有8个模块分别设计仿真,分别是以下8个模块:1.主控制模块maincontrol2.时间及其设置模块timepiece_main3.时间显示动态位选模块time_disp_select4.显示模块disp_data_mux5.秒表模块stopwatch6.日期显示与设置模块date_main7.闹钟模块alarmclock8.分频模块fdiv3.3主控制模块maincontrol该模块实现对各个功能模块的整体控制,包括对时间显示与调整、日期显示与调整、闹钟显示与调整、秒表操作等的控制,结构功能图如3-1所示,波形仿真图如3-2所示。图3-1主控制模块的结构功能图基于FPGA的多功能电子万年历第7页共28页图3-2主控制模块的波形仿真图SW3是功能键,从波形图中可知,SW3每出现一次上升沿,输出都会发生相应的变化,即按照Timepiece_EN(时钟自动显示使能),TimeSet_EN(时钟设置与调整使能),Stopwatch_EN(秒表功能使能),Alarmclock_EN(闹钟时间设置使能),Date_EN(日期显示使能),DateSet_EN(日期显示与设置使能)的顺序依次输出有效波形“1”,对相应的模块输入有效使能,从而实现相应的功能。3.4时间及其设置模块time_auto_and_set时间及其设置模块主要完成时间的自动正常运行与显示,以及在相应的功能号下,实现时间的调整与设置。3.2.1时间模块timepiece_main该模块主要完成时间的自动增加与显示功能,即为正常的自动模式运行,其结构功能图如3-3所示,波形仿真图如3-4所示。图3-3时间及其设置模块的结构功能图图3-4时间模块的结构功能图基于FPGA的多功能电子万年历第8页共28页秒自动计时子模块second_counter,结构功能图如3-5所示,图3-5秒自动计时子模块的结构功能图分自动计时子模块minute_counter,结构功能图如3-6示。图3-6分自动计时子模块的结构功能图小时自动计时子模块hour_counter,结构功能图如3-7所示。图3-7小时自动计时子模块的结构功能图图3-8时间模块的波形仿真图当Timepiece_EN为1时,即处于时间自动工作状态,即每出现一次时钟信号clk,计数一次,先计数second0,当计数到1001(即基于FPGA的多功能电子万年历第9页共28页十进制的9)时,向second1发出一个计数信号,此时second1进行一次计数,类推,second1计数到0101(即十进制的5),且se
本文标题:基于FPGA的多功能电子万年历设计
链接地址:https://www.777doc.com/doc-6919449 .html