您的当前位置:首页正文

基于FPGA电子万年历的设计与实现

2024-07-03 来源:步旅网
本科毕业设计(论文)

论文题目:基于FPGA的公农历显示系统设计

系 所:专 业:学生姓名:学生学号:指导教师:导师职称:完成日期:

电子工程系

讲 师 2013年 5月 2日

基于FPGA的公农历显示系统设计

摘 要

万年历是采用数字电路实现对、时、分、秒数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的功能。万年历具有读取方便、显示直观、功能多样、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

本设计基于 FPGA 芯片,系统集成化程度高,精度高,采用 Verilog HDL语言程,用软件的方式设计硬件,灵活性好,方便以后的产品升级。设计过程先对万年历进行系统分析确定需要的主要功能。然后对电子万年历进行系统分析,画出每个模块的流程图、数据通道等,最后对每个模块进行代码编写。

本论文分别介绍八个模块:电子万年历核心控制模块、时间计时及其调整模块、时间显示动态位选模块、数码管显示模块、秒表模块、日期计时与调整模块、闹钟模块、分频模块。在系统分析章节对整体设计的概况以及对每个模块进行描述,在系统实现章节每个模块具有单独的系统流程图,以及功能模块图。在系统测试章节有对每个模块的测试后的波形图。

关键词:FPGA芯片,Verilog HDL语言,电子万年历

Design of Calendar and Traditional Chinese

Calendar System Based on FPGA

Abstract

This calendar is the timing device that use of digital circuit to achieve, display the hours, minutes, seconds on digital display screen as well. Because of digital integrated circuit development and wide application of quartz crystal oscillators, the digital clock has become more accurate than the old-fashioned clocks. The digitalization of the clocks has brought great convenience to people, and also greatly expanded the original clock function. Calendar has plenty of advantages such as easy to read, displayed with intuition, low cost and so on. The calendar meet the nowadays' development trend of electronic instrumentation, and has a broad market prospect.

The design is based on FPGA chip with a high degree of system integration and precision. This design uses Verilog HDL, so it can be flexible and easy to update in the future. The first step of design process is analysis system and determine the system's main function. Then we should draw flow charts of each module and data channels of the system. Finally write the code for each module.

This thesis will introduce eight modules of the calendar system individually. Including electronic calendar center control module, Timing and adjustment module,dynamic time display selection module, LED display module, the stopwatch module, date and adjustment module, alarm module and frequency module. The chapter of systems analysis including the overall design of the profile and the description of each module. The chapter of system implementation has a separate section for each module system flowchart and functional block diagram. The chapters of system test will show the test waveform of each module.

Key words: FPGA chip , Verilog HDL language , Electronic Calendar

目 录

摘 要 ................................................................................................... II 第1章绪 论 ....................................................................................... 1

1.1选题原因 ..........................................................................................................1 1.2国内外产品研究综述 ......................................................................................1

第2章关键技术介绍 ........................................................................... 3

2.1电子万年历的发展 ..........................................................................................3 2.2 FPGA简介 .......................................................................................................3 2.3电子万年历的工作原理 ..................................................................................3

第3章系统分析 ................................................................................... 5

3.1计时流程 ..........................................................................................................5 3.2功能按键 ..........................................................................................................5 3.3功能框架 ..........................................................................................................6

第4章系统设计 ................................................................................... 8

4.1时钟问题 .......................................................................................................................... 8 4.2电子万年历的控制系统 .............................................................................................. 9 4.3主控制模块 MAINCONTROL ......................................................................................... 9 4.4时间及其设置模块 TIME_AUTO_AND_SET .....................................................9 4.5时间数据与时间设置数据多路选择模块 TIME_MUX ................................. 10 4.6时间显示动态位选模块 TIME_DISP_SELECT ................................................ 11 4.7显示模块 DISP_DATA_MUX ............................................................................ 11 4.8日期显示与设置模块 DATE_MAIN ................................................................ 12 4.9闹钟模块ALARMCLOCK ................................................................................. 12 4.10分频模块 FDIV ............................................................................................. 12

第5章系统实现 .................................................................................. 14

5.1电子万年历的控制系统 ................................................................................ 14 5.2主控制模块 MAINCONTROL ........................................................................... 14 5.3时间及其设置模块 TIME_AUTO_AND_SET ................................................... 15

5.3.1时间模块 timepiece_main ..................................................................................... 15 5.3.2时间设置模块 timeset ........................................................................................... 16

5.4时间数据与时间设置数据多路选择模块 TIME_MUX ................................. 17 5.5时间显示动态位选模块 TIME_DISP_SELECT ................................................ 18 5.6显示模块 DISP_DATA_MUX ............................................................................ 18 5.7闹钟模块ALARMCLOCK ................................................................................. 19 5.8分频模块 FDIV ............................................................................................... 20

第6章系统测试 .................................................................................. 21

6.1主控制模块 MAINCONTROL ........................................................................... 21 6.2时间及其设置模块 TIME_AUTO_AND_SET ................................................... 21 6.3时间设置模块 TIMESET ................................................................................. 22 6.4时间数据与时间设置数据多路选择模块 TIME_MUX ................................. 22 6.5时间显示动态位选模块 TIME_DISP_SELECT ................................................ 22 6.6显示模块 DISP_DATA_MUX ............................................................................ 23 6.7秒表模块 STOPWATCH .................................................................................... 24 6.8日期显示与设置模块 DATE_MAIN ............................................................... 24 6.9闹钟模块ALARMCLOCK ................................................................................. 24 6.10分频模块 FDIV ............................................................................................. 25

第7章结 论 ...................................................................................... 26 参考文献 .............................................................................................. 27 致 谢 .................................................................................................. 28

第1章 绪 论

1.1选题原因

万年历给人们日常生活带来极大的方便,而且扩展了原先的报时功能,例如日期提醒,整点报时等。这些功能,都是以万年历数字化为基础。所以,研究电子万年历并扩大他的功能,有非常大的意义。万年历是一种用数字电路技术实现时、分、秒计时的装置,比机械钟更精准并且鲜明,稳定性也更强,使用寿命也更长,因此被广泛的应用。电子万年历从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

我们设计这个电子万年历就是为了了解数字钟的原理,从而学会制作数字钟。而且通过万年历的制作进一步了解各种在制作中用到的中小规模集成电路的作用及使用方法,因为电子万年历包括组合逻辑电路和时序电路,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。

本设计基于 FPGA 芯片,系统集成化程度高,精度高,采用 Verilog HDL语言编程,用软件的方式设计硬件,灵活性好,方便以后的产品升级。

现如今繁忙的生活中,我们更加关注时间的精准,越来越多的人对时间更加重视。为了更好的关注时间,我们就需要拥有一个准确、清晰的标准,电子时钟便应运而生。而万年历则是电子时钟的更高级表现,然而人们越来越不满足万年历单一的及时功能,希望增加越来越多的功能。为了满足人们的需求,我们要在原有的功能上加入更多功能。

万年历是利用数字电路实现,对时,分,秒.数字显示的计时装置,应用于人们生活中,是人们日常生活不可缺少的一部分,而集成电路的发展更是推进了电子万年历的推广,数字钟的精度远超石英表,并且价格便宜。

因为电子万年历的广泛应用,拓展万年历的功能具有非常实际的意义。电子万年历可以很直观的显示年、月、日、时、分、秒。

万年历具有直观显示、功能多样、电路清晰、成本低廉等优点,符合电子仪器的发展趋势,具有广阔的市场前景。

1.2国内外产品研究综述

近年来,我国开始重视开发和设计的电子万年历,让更多的电子时钟能够走进人们的生活,让更多的人可以用上更先进的电子万年历。然而,许多问题仍然存在。

我国电子万年历存在很多问题,例如产业结构不合理,行业集中在劳动密集型产品,显著落后于发达工业国家的技术密集型产品,在生产要素的决定性作用正在被侵蚀,工

业能耗大,产量低,环境污染严重,对自然资源破坏力,公司的整体规模偏小,技术创新能力薄弱,管理水平落后。

我国的电子日历正在缓缓走向正轨,推进创新的新的电子日历产业“及替代品产业概念,在此基础上,从四个维度的“以人为本”,“科技创新”,“环境友好”和“面向未来”准确地定义一个新的电子万年历行业的意义。

随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。

第2章 关键技术介绍

2.1电子万年历的发展

在这个飞速发展的时代,越来越多的事物向着数字化发展,万年历也不例外。这使它不仅能拥有时间查看,日期查看等功能更有闹钟以及秒表等功能拓展。因此,研究电子万年历及扩大其应用,有非常现实的意义。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。电子万年历从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

因此,我们此次设计与制做电子万年历就是为了了解数字钟的原理,从而学会制作数字钟。而且通过万年历的制作进一步了解各种在制作中用到的中小规模集成电路的作用及使用方法,且由于电子万年历包括组合逻辑电路和时序电路,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。

2.2 FPGA简介

FPGA是近几年集成电路中发展最快的产品。由于PLD性能的高速发展以及设计人员自身能力的提高,可编程逻辑器件供应商将进一步扩大可编程芯片的领地,将复杂的专用芯片挤向高端和超复杂应用。据IC Insights的数据显示,PLD市场从1999年的29亿美元增长到去年的56亿美元,几乎翻了一番。Matas预计这种高速增长局

面以后很难出现,但可编程逻辑器件依然是集成电路中最具活力和前途的产业。 复杂可编程逻辑器件。 可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑(CPLD)。 在这两类可编程逻辑器件中,FPGA提供了最高的逻辑密度、最丰富的特性和最高的性能。

2.3电子万年历的工作原理

电子万年历的工作原理如图2.1所示:

可 编 功能键 程 调整键1 逻 调整键2 辑 器 件 FPGA 按键消抖 LED 显示模块 图2.1 电子万年历工作原理图

功能键用来选择不同的工作模式:

时间正常显示功能、时间调整与显示、秒表功能、闹钟设置与查看、日期显示、日期调整与设置。

调整键1:主要用于闹钟设置、日期显示与调整、秒表、时间调整与设置中的位置选择按钮,与功能键配合使用。

2号键功能模式,即时间调整与设置时,用作时、分、秒的移位,按一下,将会实现“时-分-秒”的依次移位,便于在特定位置进行调整;

4号键功能模式,即闹钟设置与查看时,同样用作时、分、秒的移位,按一下,将会实现“时-分-秒”的依次移位,便于在特定位置进行调整;

6号键功能模式,即日期调整与设置时,用作月、日的移位,按一下,将会实现“月-日”的依次移位,便于在特定位置进行调整。

调整键2:主要用于闹钟设置、日期显示与调整、秒表、时间调整与设置中的调整按钮,与功能键配合使用。

2号键功能模式,即时间调整与设置时,用作时、分、秒的调整,按一下,将会使得当前调整键1选择的位置数字增加1;

4号键功能模式,即闹钟设置与查看时,同样用作时、分、秒的调整,按一下,将会使得当前调整键1选择的位置数字增加1;

6号键功能模式,即日期调整与设置时,用作月、日的移位,按一下,将会使得当前调整键1选择的位置数字增加1。

第3章 系统分析

3.1计时流程

当计时开始时,每出现一次CLK,则秒个位计数加1,当秒个位计数到9时则向秒十位进1,当秒十位到达5且秒个位到达9时则分个位计数加1,当分个位计数到9时则向分十位进1,当分十位到达5切分个位到达9时则时个位计数加1,当时个位计数到达9时则向时十位进1,当时十位到达2切时个位到达3时则日期计时中的日个位计数加1.

3.2功能按键

本设计共有1个功能键以及两个调整键 功能键用来选择不同的工作模式:

时间正常显示功能、时间调整与显示、秒表功能、闹钟设置与查看、日期显示、日期调整与设置。

调整键1:主要用于闹钟设置、日期显示与调整、秒表、时间调整与设置中的位置选择按钮,与功能键配合使用。

2号键功能模式,即时间调整与设置时,用作时、分、秒的移位,按一下,将会实现“时-分-秒”的依次移位,便于在特定位置进行调整;

4号键功能模式,即闹钟设置与查看时,同样用作时、分、秒的移位,按一下,将会实现“时-分-秒”的依次移位,便于在特定位置进行调整;

6号键功能模式,即日期调整与设置时,用作月、日的移位,按一下,将会实现“月-日”的依次移位,便于在特定位置进行调整。

调整键2:主要用于闹钟设置、日期显示与调整、秒表、时间调整与设置中的调整按钮,与功能键配合使用。

2号键功能模式,即时间调整与设置时,用作时、分、秒的调整,按一下,将会使得当前调整键1选择的位置数字增加1;

4号键功能模式,即闹钟设置与查看时,同样用作时、分、秒的调整,按一下,将会使得当前调整键1选择的位置数字增加1;

6号键功能模式,即日期调整与设置时,用作月、日的移位,按一下,将会使得当前调整键1选择的位置数字增加1。

3.3功能框架

本设计的框架图如图3.1所示: 主控制模块 maincontrol

时间及其设置模块 timepiece_main 时间显示动态位选模块 time_disp_select 显示模块 disp_data_mux 秒表模块 stopwatch

日期显示与设置模块 date_main 闹钟模块 alarmclock 分频模块 fdiv

alarmclockENalarmalarmclock_disp_select[5..0]OUTPUTalarmstopwatchENF_outclk1fdivClockNPUTGNDtime_auto_and_setCLKTimepiece_ENTimeSet_ENSW1SW2Day_ENhour_1[3..0]hour_0[3..0]minute_1[3..0]minute_0[3..0]second_1[3..0]second_0[3..0]TimeSet_disp_drive[2..0]SW1SW2clk_200Hzhour1[3..0]hour0[3..0]minute1[3..0]minute0[3..0]second1[3..0]second0[3..0]clk2nst2clkf200Hzf60Hzf1Hznst5nst11nst1maincontrolSW3NPUTGNDSW3Timepiece_ENTimeSet_ENStopwatch_ENAlarmclock_ENDate_ENDateSet_ENdate_mainDate_ENdate_disp_clkday_ENDate_Set_ENmonth1[3..0]month0[3..0]day1[3..0]day0[3..0]Disp_select_date[5..0]time_disp_selectclk_1kHzclk_200HzTime_ENTimeSet_ENtimeset_disp_drive[2..0]nst6time_disp_select[5..0]nst3SW1SW2NPUTGNDNPUTGNDSW1SW2nst4disp_data_muxTimepiece_ENTimeSet_ENStopwatch_ENtime_disp_select[5..0]Alarmclock_ENalarmclock_disp_select[5..0]hour1[3..0]hour0[3..0]minute1[3..0]minute0[3..0]second1[3..0]second0[3..0]Date_ENDateSet_ENdate_disp_select[5..0]month1[3..0]month0[3..0]day1[3..0]day0[3..0]nst8disp_select[5..0]disp_data[6..0]OUTPUTOUTPUTdisp_select[5..0]disp_data[6..0] 图3.1 电子万年历框架图

第4章 系统设计

4.1时钟问题

不管是离散逻辑还是可编程逻辑,时钟的稳定性是很重要的。在FPGA设计中通常采用:全局时钟、门控时钟、多级逻辑时钟和波动时时钟。电子万年历是这四种时钟的任意组合。

4.1.1全局时钟

对于一个设计项目,全局时钟(或同步同步)是最简单和最稳定的时钟。在FPGA中最好的时钟设计方案是:由专用的时钟驱动主时钟来控制项目中的触发器。 FPGA一般都有专用的全局时钟引脚的设计计划,应尽量采用全局时钟,它可以提供一种装置,在最短的时钟至输出延迟。

4.1.2门控时钟

在许多应用中,整个设计项目,使用一个外部的全局时钟是不可能或不实际的,它通常是阵列时钟构成门控时钟。门控时钟经常与微处理器的接口。每当组合逻辑控制触发,都会存在门控时钟。在门控时钟,时钟功能等方面应该多注意,以避免不同时钟的的影响。旨在满足以下两个条件,可以保证时钟信号不出现危险的毛刺,门控时钟可以像全局时钟工作。

4.1.3多级逻辑时钟

无论是用离散逻辑、可编程逻辑,还是用其他器件实现的任何数字设计,稳定可靠的时钟是设计成功与否的关键。不稳定的时钟在不良条件下回产生不必要的偏差导致最终数据出错。 在利用FPGA芯片时通常采用几种固定的时钟类型。

4.1.4波动式时钟

大部分系统都会在设计中采用多时钟。例如,两个异步处理器之间的接口使用微处理器或者异步通信通道。两个时钟之间需要保持时间关系,因此引入一些附加的约束条件。他们会将信号同步。,

在许多应用中,只有异步信号同步是不够的,当系统有两个或两个以上的非同源时钟,数据的建立和保持时间是很难得到保证,将面临与一个复杂时间analysisproblem的。最好的办法是所有非同源时钟同步。 FPGA内部锁相环(PLL)是一个很好的方法,但并非所有FPGA与PLL,但有PLL功能的芯片大多很昂贵。因此,你需要使用有使能端D触发器,和高频率的时钟来使信号同步。

时钟的稳定性对于系统来说很重要,所以设计中不能将任何有毛刺的输出当做时钟

信号。而且尽量只是用一个全局时钟。对多时钟的系统要特别注意异步信号的同步问题。

使用FPGA内部的时钟资源主要是为了获得高驱动能、低抖动时延、以及稳定的占空比的时钟信号。专用时钟主要有两部分,一部分是布线资源,另一部分是FPGA内部的PLL。

4.2电子万年历的控制系统

本万年历系统共有8个模块,分别进行仿真以下是8模块: 主控制模块 maincontrol

时间及其设置模块 timepiece_main 时间显示动态位选模块 time_disp_select 显示模块 disp_data_mux 秒表模块 stopwatch

日期显示与设置模块 date_main 闹钟模块 alarmclock 分频模块 fdiv

接下来分别描述一下每个模块的功能以及流程图

4.3主控制模块 maincontrol

该模块实现了整体控制各种模块的功能,包括时间显示和调整,年月日显示和调整,闹钟和调整,秒表控制。该模块的按键影响相应的输出用于控制其他模块工作。每次按下功能键,则按照时钟自动显示使能,时钟设置与调整使能,秒表功能使能,闹钟时间设置使能,日期显示使能,日期显示与设置使能,的顺序依次输出,对相应的模块输入有效使能,从而实现相应的功能。

4.4时间及其设置模块 time_auto_and_set

时间及其设置模块主要完成时间的自动正常运行与显示,以及在相应的功能号下,

实现时间的调整与设置。

该模块主要完成对时间的设置相关的闪烁显示控制以及时间中的小时、分钟、秒等数据的改变。流程图如图4.1所示:

图4.1 时间设置流程图

当时间使能为1时,即处于时间自动工作状态,即每出现一次时钟信号clk,计数一次,先计数秒的个位,当计数到9时,向秒的十位发出一个计数信号,此时秒的十位进行一次计数,类推,秒的十位计数到5,且秒的个位计数到9时,分的个位则进行一次计数,按照此规律进行时间的计数。当计满24小时,向日期发出一个计数信号,即此使能端输出有效信号1,进行日期的计数。

4.5时间数据与时间设置数据多路选择模块 time_mux

该模块用来分时向显示单元传输显示数据,流程图如图4.2所示:

图4.2 多路选择模块的流程图

该模块用来判定是进入自动显示时间状态还是显示调整后的的时间,当时间设置使能为1时则显示调整后时间,反之则显示自动模式时的时间。

4.6时间显示动态位选模块 time_disp_select

该模块用来分时显示时间数据,但是在选择合适的时间间隔下,人眼并不能分辨出是分时显示的,这样显示的方式可以降低功耗。

当时间设置使能为0,时间自动显示使能为1时,以clk_1kHz为时钟信号,输出自动显示的时间,按位依次显示;当时间设置使能为1,时间自动显示使能为0时,则以clk_200Hz为时钟信号,输出以时间设置数据显示的同步信号对应的位置。

4.7显示模块 disp_data_mux

模块是时间、日期等数据用数码管显示的控制与数据传输模块,包括数据的传输以及BCD码的译码等。

显示原理采用的是七段数码管的现实原理,原理图如图4.3所示:

图4.3 七段数码管原理图

4.8日期显示与设置模块 date_main

该模块实现日期的显示和日期的调整与设置。

当时间模块的时十位为2个位为23且分十位为5个位为9秒十位为5个位为9时则日期日位加1,当月位为1、3、5、7、8、10、12时则日位为31时月份加1。

4.9闹钟模块alarmclock

该模块实现的功能包括闹钟的设置以及闹钟时间到后的提示,流程图如图4.4所示:

图4.4 闹钟模块的流程图

闹钟一直处于工作状态,当前时间与设置的闹钟时间相比较,当小时、分钟、秒钟的时间完全相同时,则闹铃响,输出信号为有效信号1。SW1和SW2是调整键,分别控制位选和数值的调整。

4.10分频模块 fdiv

该模块完成全局时钟信号分频输出200Hz、60Hz、1Hz的三种时钟信号,不同的时钟信号负责不同的模块时钟。 流程图如图4.5所示:

图4.5 分频模块的流程图

第5章 系统实现

5.1电子万年历的控制系统

本万年历系统共有8个模块,分别进行仿真以下是8模块: 主控制模块 maincontrol

时间及其设置模块 timepiece_main 时间显示动态位选模块 time_disp_select 显示模块 disp_data_mux 秒表模块 stopwatch

日期显示与设置模块 date_main 闹钟模块 alarmclock 分频模块 fdiv

5.2主控制模块 maincontrol

该模块实现了整体控制各种模块的功能,包括时间显示和调整,年月日显示和调整,闹钟和调整,秒表控制。该模块的按键影响相应的输出用于控制其他模块工作。功能图如图5.1所示:

图5.1 主控制模块的结构功能图

部分代码:

module

maincontrol(clk,SW3,Timepiece_EN,TimeSet_EN,Stopwatch_EN,Alarmclock_EN,Date_EN,DateSet_EN);

output Timepiece_EN; //时间自动显示使能 output TimeSet_EN; //时间调整与设置使能 output Stopwatch_EN; //秒钟功能使能 output Alarmclock_EN; //闹钟时间设置使能 output Date_EN; //时期显示使能

output DateSet_EN; //日期调整与设置使能 input SW3; //功能号选择 input clk;

SW3:为功能按键当输入SW3改变时,相应的输出也会做出改变。 Timepiece_EN:为时钟自动显示使能,输出为1时则进行正常的时间计时。 TimeSet_EN:为时钟设置与调整使能,输出为1时则开始进行时间的调整。 Stopwatch_EN:为秒表功能使能,输出为1时则秒表开始运行。 Alarmclock_EN:为闹钟时间设置使能,输出为1时则闹钟运行。 Date_EN:为日期显示使能,输出为1时则调整为日期显示。

DateSet_EN:为日期显示与设置使能,输出为1时则进行日期的调整。

5.3时间及其设置模块 time_auto_and_set

该模块又时间模块以及时间设置模块组成。

5.3.1时间模块 timepiece_main

时间及其设置模块主要完成时间的自动正常运行与显示,以及在相应的功能号下,实现时间的调整与设置。结构功能图如5.2

图5.2 时间及其设置模块的结构功能图

CLK:为时钟使能端,每出现一次时钟信号clk,计数一次。

Timepiece_EN:为时钟自动显示使能,输入为1时则进行正常的时间计时。 TimeSet_EN:为时钟设置与调整使能,输入为1时则开始进行时间的调整。 SW1:为功能按键当输入SW1改变时,相应的输出也会做出改变。 SW2:为功能按键当输入SW2改变时,相应的输出也会做出改变。

Second_0[3.0]:为时间秒个位计时,当时钟CLK计数一次则加1当加到1001(即十进制的9)则向second_1发出计数信号。

Second_1[3.0]:为时间秒十位计时,当second_0发出一次计数信号则second_1加1当加到0101(即十进制的5)且second_0计数到1001(即十进制的9)时,则向minute_0发出计数信号。

Minute_0[3.0]:为时间分个位计时,当second_1加到0101(即十进制的5)且second_0计数到1001(即十进制的9)时发出信号,则minute_0加1,当加到1001(即十进制的9)则向minute_1发出计数信号。

Minute_1[3.0]:为时间分十位计时,当minute_0发出一次计数信号则minute_1加1,当加到0101(即十进制的5)且minute_0计数到1001(即十进制的9)则向hour_0发出计数信号。

Hour_0[3.0]:为时间时个位计时,当minute_1加到0101(即十进制的5)且minute_0计数到1001(即十进制的9)时发出信号,则hour_0加1,当加到1001(即十进制的9)则向hour_1发出技术信号。

Hour_1[3.0]:为时间时十位计时,当hour_0发出一次计数信号则minute_1加1,当加到0010(即十进制的2)且hour_0计数到0011(即十进制的3)则向day_EN发出计数信号。

Day_EN:为日期时能,当hour_1加到0010(即十进制的2)且hour_0计数到0011(即十进制的3)时发出计数信号,则day_EN向date_main模块发出信号。

5.3.2时间设置模块 timeset

该模块主要完成对时间的设置相关的闪烁显示控制以及时间中的小时、分钟、秒等数据的改变。结构模块图如图5.3所示:

图5.3 时间设置模块的结构功能图

Time_set_EN:为时间设置使能,当time_set_EN为1时则该模块开始工作,可以对时间进行调整。

SW1:为功能按键当输入SW1改变时,相应的输出也会做出改变。 SW2:为功能按键当输入SW2改变时,相应的输出也会做出改变。 Hour_1[3.0]:为时间的小时十位调整,输入为调整之后的输出。 Hour_0[3.0]:为时间的小时个位调整,输入为调整之后的输出。 Minute_1[3.0]:为时间的分钟十位调整,输入为调整之后的输出。 Minute_0[3.0]:为时间的分钟个位调整,输入为调整之后的输出。 Second_1[3.0]:为时间的秒十位调整,输入为调整之后的输出。

Second_0[3.0]:为时间的秒个位调整,输入为调整之后的输出。 Hour_set1[3.0]:为时间小时的十位调整,Hour_1的输入为输出。 Hour_set0[3.0]:为时间小时的个位调整,Hour_0的输入为输出。 Minute_set1[3.0]:为时间分钟的十位调整,Minute_1的输入为输出。 Minute_set0[3.0]:为时间分钟的个位调整,Minute_0的输入为输出。 Second_set1[3.0]:为时间秒的十位调整,Second_1的输入为输出。 Second_set0[3.0]:为时间秒的个位调整,Second_0的输入为输出。

5.4时间数据与时间设置数据多路选择模块 time_mux

该模块用来分时向显示单元传输显示数据,功能模块图如图5.4所示:

图5.4 多路选择模块的结构功能图

TimeSet_EN:时间设置使能信号。

hour1:自动模式中当前时间的时十位数输入。 hour0:自动模式中当前时间的时个位数输入。 minute1:自动模式中当前时间的分十位数输入。 minute0:自动模式中当前时间的分个位数输入。 second0:自动模式中当前时间的秒个位输入。 second1:自动模式中当前时间的秒十位输入。 hour_set1:时间设置后的时十位数输入。 hour_set0:时间设置后的时个位数输入。 minute_set1:时间设置后的分十位数输入。 minute_set0:时间设置后的分个位数输入。 second_set1:时间设置后的秒十位输入。 second_set0:时间设置后的秒个位输入。 hour_1:当前需要显示的时十位输出。 hour_0:当前需要显示的时个位输出。

minute_1:当前需要显示的分十位输出。 minute_0:当前需要显示的分个位输出。 second_0:当前需要显示的秒个位输出。 second_1:当前需要显示的秒十位输出。

5.5时间显示动态位选模块 time_disp_select

该模块用来分时显示时间数据,但是在选择合适的时间间隔下,人眼并不能分辨出是分时显示的,这样显示的方式可以降低功耗。结构图如图5.5所示:

图5.5 时间显示动态位选模块的结构功能图

clk_1kHz:动态显示时间。 clk_200Hz:闪烁显示时间。 Time_EN:时间自动显示使能。 TimeSet_EN:时间设置使能。

Timeset_disp_drive[2..0]:时间设置数据显示的同步信号。 Time_disp_select[5..0]:显示动态位选输出信号。

5.6显示模块 disp_data_mux

模块是时间、日期等数据用数码管显示的控制与数据传输模块,包括数据的传输以及BCD码的译码等。功能图如图5.6所示:

图5.6 显示模块的结构功能图

显示原理采用的是七段数码管的现实原理,原理图如图5.7所示:

图5.7 七段数码管的显示原理

Timepiece_EN:为时钟自动显示使能 TimeSet_EN:为时钟设置与调整使能 Stopwatch_EN:为秒表功能使能 Alarmclock_EN:为闹钟时间设置使能 Date_EN:为日期显示使能

DateSet_EN:为日期显示与设置使能 hour1:时间显示当前时间的时十位数输入。 hour0:时间显示当前时间的时个位数输入。 minute1:时间显示当前时间的分十位数输入。 minute0:时间显示当前时间的分个位数输入。 second0:时间显示当前时间的秒个位数输入。 second1:时间显示当前时间的秒十位数输入。 Mouth0:日期显示当前时间的月个位输入。 Mouth1:日期显示当前时间的月十位输入。 Day0:日期显示当前时间的日个位输入 Day1:日期显示当前时间的日十位输入。

5.7闹钟模块alarmclock

该模块实现的功能包括闹钟的设置以及闹钟时间到后的提示,结构功能图如图5.8所示:

图5.8 闹钟模块的结构功能图

EN:为闹钟设置使能

clk_200Hz:用于设置中的闪烁显示的时钟 hour_set1:为已经设置好的闹钟时间时十位。 hour_set0:为已经设置好的闹钟时间时个位。 minute_set1:为已经设置好的闹钟时间分十位。 minute_set0:为已经设置好的闹钟时间分个位。 second_set1:为已经设置好的闹钟时间秒十位。 second_set0:为已经设置好的闹钟时间秒个位。 SW1:为调整键控制位选的调整 SW2:为调整键控制数值的调整

5.8分频模块 fdiv

该模块完成全局时钟信号分频输出200Hz、60Hz、1Hz的三种时钟信号功能模块图如图5.9所示:

图5.9 分频模块的结构功能图

Clk:为时钟使能。

f200hz:为时间显示与调整,日期显示与调整的输入时钟。 f60Hz,f1Hz:为秒表的时钟。

第6章 系统测试

6.1主控制模块 maincontrol

该模块实现对各个功能模块的整体控制,包括对时间显示与调整、日期显示与调整、闹钟显示与调整、秒表操作等的控制,波形图如图6.1所示:

图6.1 主控模块波形图

SW3是功能键,从波形图中可知,SW3每出现一次上升沿,输出都会发生相应的变化,即按照Timepiece_EN(时钟自动显示使能),TimeSet_EN(时钟设置与调整使能),Stopwatch_EN(秒表功能使能),Alarmclock_EN(闹钟时间设置使能),Date_EN(日期显示使能),DateSet_EN(日期显示与设置使能)的顺序依次输出有效波形“1”,对相应的模块输入有效使能,从而实现相应的功能。

6.2时间及其设置模块 time_auto_and_set

时间及其设置模块主要完成时间的自动正常运行与显示,以及在相应的功能号下,实现时间的调整与设置。波形图如图6.2:

图6.2 时间设置模块

当Timepiece_EN为1时,即处于时间自动工作状态,即每出现一次时钟信号clk,计数一次,先计数second0,当计数到1001(即十进制的9)时,向second1发出一个计数信号,此时second1进行一次计数,类推,second1计数到0101(即十进制的5),且second0计数到1001(即十进制的9)时,minute0则进行一次计数,按照此规律进行时间的计数。当计满24小时,向day_EN发出一个计数信号,即此使能端输出有效信

号1,进行日期的计数。

6.3时间设置模块 timeset

该模块主要完成对时间的设置相关的闪烁显示控制以及时间中的小时、分钟、秒等数据的改变,如图6.3所示:

图6.3 时间设置模块的波形仿真图

当Timeset_EN为1时,即实现时间设置功能。SW1实现时间格式中小时高、低位,分钟高、低位,秒钟高、低位的位选,即每出现一个SW1上升沿,disp_drive的相应数值加1(选择具体的需要调整的位置)。SW2实现相应得位的数值得调整,即每出现一个SW2上升沿,相应位的数值增加1。

6.4时间数据与时间设置数据多路选择模块 time_mux

该模块用来分时向显示单元传输显示数据,波形图如图6.4所示:

图6.4 多路选择模块的波形仿真图

6.5时间显示动态位选模块 time_disp_select

该模块用来分时显示时间数据,但是在选择合适的时间间隔下,人眼并不能分辨出是分时显示的,这样显示的方式可以降低功耗,波形图如图6.5、6.6所示:

图6.5 时间显示动态位选模块的波形仿真图

图6.6 时间显示动态位选模块的波形仿真图

TimeSet_EN表示时间设置使能,Time_EN表示时间自动显示使能,clk_1kHz用于动态显示时间,clk_200Hz用于闪烁显示时间,timeset_disp_drive表示时间设置数据显示的同步信号,time_disp_select表示显示动态位选输出信号。当TimeSet_EN为0,Time_EN为1时,以clk_1kHz为是时钟信号,输出自动显示的时间,按位依次显示;当TimeSet_EN为1,Time_EN为0时,则以clk_200Hz为时钟信号,输出以timeset_disp_drive对应的位置。

6.6显示模块 disp_data_mux

模块是时间、日期等数据用数码管显示的控制与数据传输模块,包括数据的传输以及BCD码的译码等,波形图如图6.7所示:

图6.7 显示模块的波形仿真图

6.7秒表模块 stopwatch

该模块实现秒表的功能,在实际中,可以通过改变自动工作模式下的时间的计数时钟的频率来实现秒表的功能,波形图如图6.8所示:

图6.8 秒表模块波形图

EN表示秒表使能控制信号,clk1表示自动工作模式的时钟信号,clk2表示秒表工作模式的时钟信号,故当EN为有效信号1时,输出F_out与clk2同,即处于秒表工作状态,同理EN为0时,输出F_out与clk1同,即处于自动工作状态。

6.8日期显示与设置模块 date_main

该模块实现的是日期的自动工作功能,两种不同的波形图如图6.9、6.10所示:

图6.9 日期自动工作模块的波形图

图6.10 日期自动工作模块的波形图

6.9闹钟模块alarmclock

该模块实现的功能包括闹钟的设置以及闹钟时间到后的提示,波形图如图6.11所示:

图6.11 闹钟模块的波形图

EN为闹钟设置使能,clk_200Hz用于设置中的闪烁显示的时钟,其中还定义了hour_set1,hour_set0,minute_set1,minute_set0,second_set1,second_set0,用来表示已经设置好的闹钟时间。闹钟一直处于工作状态,当前时间(hour1,hour0,minute1,minute0,second1,second0)与设置的闹钟时间相比较,当小时、分钟、秒钟的时间完全相同时,则闹铃响,输出信号alarm为有效信号1。SW1和SW2是调整键,分别控制位选和数值的调整。

6.10分频模块 fdiv

该模块完成全局时钟信号分频输出200Hz、60Hz、1Hz的三种时钟信号,波形图如图6.12所示:

图6.12 分频模块的波形图

第7章 结 论

在这个飞速发展的时代,越来越多的事物向着数字化发展,万年历也不例外。这使它不仅能拥有时间查看,日期查看等功能更有闹钟以及秒表等功能拓展。因此,研究电子万年历及扩大其应用,有非常现实的意义。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。电子万年历从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

通过对本课题的研究我有以下几个方面的收获:

(1)学习与掌握了FPGA的基本原理及其各种应用,对它的软件设计方法有较深入的认识。

(2)通过对电路原理图设计绘制,对数字电路有了更加清晰的了解,学到了以前没注意到的知识。

本电子万年历虽然能够完成现有的时间、日期计时,但是还有着一些不足如:技术限制还不能进行农历计算,不过在之后的升级中会对此进行修改。

参考文献

[1] 夏宇闻.VERILOG HDL数字设计与综合[M],电子工业出版社,2004,6 [2] 褚振勇.FPGA设计与应用[M],西安电子科技大学出版社,2006,7 [3] 侯伯亨.VHDL硬件描述语言[M],西安电子科技大学出版社,2004,5 [4] 赵曙光.可编程逻辑器件原理[M],西安电子科技大学出版社,2000,9 [5] 徐志军.CPLD/FPGA的开发与应用[M],电子工业出版社,2002,10

[6] 冼进.Verilog HDL数字控制系统设计实例[M],中国水利水电出版社,2007,4 [7] 夏宇闻.Verilog HDL数字系统设计教程[M],北京航空航天大学出版社,2003,3 [8] 黄智伟.FPGA系统设计与实践[M],电子工业出版社,2003,3 [9] 王金明.数字系统设计与verilog HDL[M],电子工业出版社,2002,4 [10] 黄正瑾.在系统编程技术及其应用[M],东南大学出版社,1997,7 [11] 彭介华.电子技术课程设计指导[M],高等教育出版社,1997,6 [12] 李国丽.电子技术实验指导书[M],中国科技大学出版社,2000,3 [13] 潘松.EDA技术实用教程[M],科学出版社,2002,4

[14] 郑家龙.章安元.集成电子技术基础教程[M],高等教育出版社,2002,5 [15] 宋万杰.CPLD技术及其应用[M],西安电子科技大学出版社,1999,1 [16] 张昌凡.可编程逻辑器件及VHDL设计技术[M],华南工学院出版社,2001,11 [17] 卢杰.VHDL与数字电路设计[M],科学出版社,2001,8

[18] 王金明.数字系统设计与Verilog HDL[M],电子工业出版社,2002,5

[19] J.Bhasker.Verilog HDL Synthesis:A Practical Prime[M],Star Galaxy Publishing,1998 [20] Sunrise Telec.Debug a microcontroller-to-FPGA [EB/OL],Martin Rowe,2009,9 [21] Grout.Digital Systems Design with FPGAs and CPLDs[M],Newnes,2008 ,9

致 谢

通过这半年来的忙碌和学习,本次毕业论文设计已接近尾声,作为一名在校学生,由于经验的匮乏,难免有许多考虑不周全的地方,在这里衷心感谢指导老师的督促指导,以及一起学习的同学们的支持,让我按时完成了这次毕业设计。

在毕业论文设计过程中,我遇到了许许多多的困难。在此我要感谢我的指导老师田华老师给我悉心的帮助和对我耐心而细致的指导,我的毕业论文较为复杂烦琐,但是田华老师仍然细心地纠正图中的错误。除了敬佩田华老师的专业水平以外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作,我才得以解决毕业设计中遇到的种种问题。同时感谢我院、系领导对我们的教导和关注;感谢大学四年传授我们专业知识的所有老师。还有谢谢我周围的同窗朋友,他们给了我无数的关心和鼓励,也让我的大学生活充满了温暖和欢乐。如果没有他们的帮助,此次毕业论文的完成将变得困难。他们在我设计中给了我许多宝贵的意见和建议。同时也要感谢自己遇到困难的时候没有一蹶不振,取而代之的是找到了最好的方法来解决问题。最后,感谢生我养我的父母。谢谢他们给了我无私的爱,为我求学所付出的巨大牺牲和努力

毕业设计(论文)原创承诺书

1、本人承诺:所提交的毕业设计(论文)是认真学习理解学校的《毕业设计(论文)工作规范》后,在教师的指导下,独立地完成了任务书中规定的内容,不弄虚作假,不抄袭别人的工作内容。

2、本人在毕业设计(论文)中引用他人的观点和研究成果,均在文中加以注释或以参考文献形式列出,对本文的研究工作做出重要贡献的个人和集体均已在文中注明。

3、在毕业设计(论文)中对侵犯任何方面知识产权的行为,由本人承担相应的法律责任。

4、本人完全了解学校关于保存、使用毕业设计(论文)的规定,即:按照学校要求提交论文和相关材料的印刷本和电子版本;同意学校保留毕业设计(论文)的复印件和电子版本,允许被查阅和借阅;学校可以采用影印、缩印或其他复制手段保存毕业设计(论文),可以公布其中的全部或部分内容。

5、本人完全了解《毕业(设计)论文工作规范》关于“学生毕业设计(论文)出现购买、他人代写、或者抄袭、剽窃等作假情形的,取消其学位申请资格;已经获得学位的,依法撤销其学位。取消学位申请资格或者撤销学位者,从处理决定之日起3年内,学校不再接受学生学位申请”的规定内容。

6、本人完全了解《学生手册》中关于在“毕业设计(论文)等环节中被认定抄袭他人成果者”不授予学士学位,并且“毕业学年因违纪受处分影响学位的学生不授予学士学位,并且无学士学位申请资格”的规定内容。

以上承诺的法律结果、不能正常毕业及其他不可预见的后果由学生本人承担!

学生本人签字: 年 月 日

因篇幅问题不能全部显示,请点此查看更多更全内容