毕业设计(论文)-基于fpga的多功能万年历.

合集下载

【优秀WORD论文】基于FPGA的全功能万年历电子钟的设计

【优秀WORD论文】基于FPGA的全功能万年历电子钟的设计

基于FPGA的全功能万年历电子钟的设计提要本文主要介绍了基于FPGA的万年历电子钟的设计方案,从而介绍了可编程逻辑器件的发展及应用。

基于FPGA的电子钟的设计与实现介绍了基于FPGA芯片的系统设计,并对系统的软硬件构成、FPGA内部逻辑设计工作原理等进行了详细说明。

论文第一部分对FPGA进行概述,讲述了可编程逻辑器件的发展与应用及论文题目的意义、目的和内容编排;第二部分:叙述了系统设计方案,介绍了FPGA应用的特点和电子钟的方案概述及实现语言和调试平台MAX+plusⅡ开发工具;第三部分:叙述了基于FPGA的电子钟系统的设计的硬件设计和软件设计;第四部分:对系统实现的外围电路进行概述。

第五部分:再次说明本设计的系统方案和得到的结论。

目录第一章序论 (1)1.1研究目的和意义: (1)1.2可编程逻辑器件的发展与应用: (1)1.2.1可编程逻辑单元CLB (3)1.2.2输入/输出模块IOB (3)1.2.3可编程内部连线PI (4)1.2.4 FPGA芯片的特点 (4)1.3FPGA国内外的发展状况及应用 (5)1.4本课题所能实现的功能: (8)第二章总体方案的设计 (9)2.1万年历电子钟的设计原理: (9)2.2FPGA的设计方法 (11)2.2.1 FPGA的器件设计流程 (11)2.2.2 MAX+plusⅡ开发工具 (13)2.2.3 VHDL语言 (17)2.3系统设计方案 (18)第三章系统的硬件设计与实现 (19)3.1功能模块设计 (19)3.2系统功能实现 (21)3.2.1底层元件设计 (22)3.2.2顶层元件设计 (32)3.3芯片的选择 (41)第四章设计应用电路 (45)4.1整体电路 (45)4.2电源电路 (46)4.3键盘部分 (49)4.4主动配置电路 (53)第五章总结 (61)5.1概述: (61)5.2设计方案: (62)参考文献 (64)致谢 (67)摘要 (I)ABSTRACT (II)第一章序论1.1研究目的和意义:通过对FPGA的了解,我们要应用FPGA来设计全功能万年历的设计,主要实现电子钟的所有功能,万年历是一种应用非常广泛的日常计时工具,具有时分秒计时功能,还有日历、年历功能,涉及计数、显示、参数输入技术,能够实时显示年、月、日和时间,并具有校准和闹铃等功能。

多功能万年历毕业设计

多功能万年历毕业设计

多功能万年历毕业设计多功能万年历毕业设计在现代社会,人们对时间的管理变得越来越重要。

为了更好地规划和安排生活,人们需要一个方便实用的工具来帮助他们追踪日期、计划活动和提醒重要事件。

在这个背景下,我决定设计一个多功能的万年历,以满足人们对时间管理的需求。

首先,我的多功能万年历将具备传统日历的基本功能,包括显示年、月、日、星期和节假日。

用户可以通过触摸屏幕或旋转按钮来切换日期和月份,方便快捷。

同时,为了满足不同用户的需求,我还将提供多种显示模式,例如数字模式、文字模式和图标模式,用户可以根据自己的喜好选择合适的显示方式。

其次,我的万年历还将配备提醒功能。

用户可以设置重要的事件或活动,并在指定的日期和时间收到提醒。

这将帮助人们更好地规划和安排生活,不再错过重要的事情。

同时,为了提高用户体验,我还将为提醒功能设计多种提醒方式,例如声音、震动和闪光灯,用户可以根据自己的喜好选择合适的提醒方式。

除了基本的日期和提醒功能,我的多功能万年历还将提供一些额外的实用功能。

首先,它将配备天气预报功能,用户可以实时查看当地的天气情况,以便更好地安排出行和活动。

其次,它还将具备健康管理功能,用户可以记录自己的健康数据,例如体重、血压和运动情况,以便更好地掌握自己的健康状况。

此外,我的万年历还将提供备忘录功能,用户可以随时记录重要的事项和想法,方便日后查看和回顾。

为了使我的多功能万年历更加实用和便捷,我还将设计一个与手机或电脑的同步功能。

用户可以通过无线连接将万年历与手机或电脑同步,以便更好地管理和分享自己的日程安排和健康数据。

这将使用户可以随时随地访问自己的日历和数据,无需携带额外的设备。

总的来说,我的多功能万年历将成为人们生活中不可或缺的工具。

它不仅具备传统日历的基本功能,还提供了提醒、天气预报、健康管理和备忘录等实用功能。

通过与手机或电脑的同步,它将帮助人们更好地规划和安排生活,提高工作和生活的效率。

我相信,这个多功能万年历的毕业设计将为人们的时间管理带来全新的体验。

基于PFGA的万年历的设计

基于PFGA的万年历的设计

郑州大学西亚斯国际学院本科毕业论文(设计)题目基于FPGA的万年历的设计指导教师周晓平职称讲师学生姓名陈重学号20111521131 专业电子信息工程班级电信(1)班院(系)电子信息工程学院完成时间2015年4月7号基于FPGA的万年历的设计摘要基于FPGA的万年历的设计,基本功能是用来显示年月日时分秒及时间修改功能。

数字日历是采用数字电路实现对ho、mi、se计时的装置,主要包括组合逻辑电路与时序电路,主要完成的功能是使用VerilogHDL语言,在QuartusII上完成电路设计,模拟程序开发,基本功能是能够显示/修改ho、mi、se,主要有:主要遥控模块、时间及其数据显示调设、时间多路选择、显示调整、日期的自动工作与设置、秒表计时模块、钟表模块、频率选取模块、译码器组成万年历的系统电路设计。

软件模拟直接在FPGA软件上进行编译仿真与实验开发板共同完成。

对于程序的编写使用VerilogHDL语言,根据不同模块的功能和各个模块之间的相互作用控制关系进行编译仿真。

电子万年历是采用的是以秒表计时显示时间的工具,大量运用于居室、办公室、商场、汽车站、火车站等场合。

与古老的钟表进行比较拥有较好的精准性、灵活性、美观性、并拥有较长的使用年限。

数字万年历主要包括组合逻辑电路与时序电路,还能展现自动报警、定时广播信息等功能。

数字电子万年历采用软件开发模拟,使开发生产的成本大大降低,而且功能上有很强的灵活性,如果想改变它的功能只需要在软件上进行修改就能完成。

相对于老式钟表来讲精度大大增加,并且维修改动更为方便,也不用像日历一样每天翻页,使人们的的生活更加方便。

因此研究数字万年历有非常重要现实意义,匹配当前电子仪器的开发优势,对于当前市场也有相当大的潜力。

关键词FPGA /万年历/VerilogHDL/QuartusIIBASED ON THE DESIGN OF THECALENDARFPGA CIRCULTABSTRACTCalendar design based on FPGA, which basic function is to display date with the change of time. Digital calendar is realized by using digital circuit to record time . Digital circuits mainly includes the combinational logic and sequential circuits , Its main task is to use VerilogHDL language to complete circuit design and simulation on the QuartusII .its basic function is to be able to display or modify time Circuit is divided into combination logic andsequential,mainlyincludefrequency division ,control ,adjustment of time display ,date ,time ,display control ,code translator.software simulation directly conducted on QuartusII and FPGA adaptor .For the writing of the program use VerilogHDL language ,according to the features of different modules and interaction control of the relationship between various modules compiled simulation.The digital Calendar is realized by using digital circuit minutes and seconds for timing device .it is widely used in home .office shopping malls ,railway stations etc .Compared with the old clock has better accuracy ,flexibility ,beautiful and has a longer life ,The digital calendar mainly includes the assembly logic circuit and sequential circuits ,also can show the function such as automatic alarm, timing ,broadcast , information. The digital calendar adopts the model of software develop the modifications will finish on the software ,it makes the cost greatly reduced and the function has a strong flexibility .If you want to change its function as long as modifying on the software.Relative to the old clock precision is greatly precision and the maintenance is more convenient to change ,also need not every day turn over a calendar page ,making people’s life more convenient .So significance to research the digital calendar its application has a broad market prospect.KEYWORDS FPGA ,C alendar ,VerilogHDL ,QuartusII目录中文摘要 (Ⅰ)英文摘要 (II)1 FPGA及数字电子万年历简介 (3)1.1 FPGA简介 (3)1.2 数字电子万年历的未来发展 (4)2 数字电子万年历的工作原理 (5)3 数字电子万年历各功能模块的实现 (6)3.1 时钟类型 (6)3.2 数字电子万年历的主要系统 (8)3.3 数字电子万年历主控制模块 (8)3.4 时间及其数据设置模块 (9)3.4.1 时间模块 (9)3.4.2 时间设置模块 (11)3.4.3 时间数据与时间设置数据多路选择模块 (12)3.5 时间显示动态位选模块 (14)3.6 显示模块 (15)3.7 秒表模块 (16)3.8 日期显示设置模块 (17)3.8.1 日期自动工作模块 (17)3.8.2 日期设置模块 (18)3.9 闹钟模块 (19)3.10 分频模块 (20)致谢 (23)参考文献 (24)附录 (25)1 FPGA及数字电子万年历简介1.1FPGA简介FPGA是现场可编程门列阵(Field programmable gates array)的简单缩写,是CPLD、PAL等数字元器件原有上的进步,是由可编程模块组成的专用进制式线路,属于半定制的电路。

基于FPGA的数字日历设计

基于FPGA的数字日历设计

基于FPGA的数字日历设计
基于FPGA设计数字日历可以实现以软件方式设计硬件的目的,无需购买专用数字芯片,从而克服了传统利用多片数字集成电路设计数字日历存在
焊接麻烦、调试繁琐、成本较高等问题。

而且,基于FPGA的数字日历与传统系统相比,在设计灵活、开发速度、降低成本、计时精度、功能实现上都得到
大幅度提升,能够更好地满足人们日常生活的需要。

本文介绍如何利用VHDL硬件描述语言设计一个具有年、月、日、星期、时、分、秒计时显示功能,时间调整功能和整点报时功能的数字日历。

在QuartusⅡ开发环境下,采用自顶向下的设计方法,建立各个基本模块,再构建成一个完整的基于FPGA设计的数字日历的顶层模块,然后对其进行编译、仿真、引脚锁定,最终下载到可编程逻辑器件上进行结果验证。

1数字日历整体设计方案
基于FPGA的数字日历设计分为硬件设计和软件设计两大部分。

其原理框
2数字日历的工作原理
首先由外部振荡器产生稳定的高频脉冲信号,作为数字日历的时间基准,然后经过分频器输出标准秒脉冲,输入到FPGA的CLOCK端,实现计数。

当秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照24进1规律计数。

计满后各计数器清零,重新计数。

日部分由于
日有28天、29天、30天、31天4种情况,故日由年和月共同判断其天数,日计满后向月进位,月满后向年进位。

计数器的输出分别经译码器送数码管显示。

计时出现误差时,可以用校时电路校时、校分、校秒和校年、校月、校日。

多功能万年历毕业设计(终稿)

多功能万年历毕业设计(终稿)

目录引言 (2)1 系统功能与方案论证 (2)1.1系统功能 (2)1.2 系统基本方案选择和论证 (2)1.2.1 单片机芯片的选择方案和论证 (2)1.2.2 显示模块选择方案和论证 (3)1.2.3 时钟芯片的选择方案和论证 (3)1.2.4 温度传感器的选择方案与论证 (4)1.3 电路设计最终方案决定 (4)2 系统的硬件设计与实现 (4)2.1 电路设计框图 (4)2.2 系统硬件概述 (5)2.3 各系统电路及工作原理 (5)2.3.1 AT89S52单片机最小系统设计 (5)2.3.2 时钟电路模块的设计 (7)2.3.3 温度采集电路的设计 (8)2.3.4 LCD1602液晶显示模块设计 (8)2.3.5 电源电路 (10)2.3.6 闹钟电路设计 (10)2.3.7 键盘输入电路 (11)3 软件设计 (11)3.1 主程序框图 (12)3.2 DS1302时间处理 (12)3.3 环境温度采集 (15)3.4 键盘扫描 (15)3.5 音乐播放 (15)3.6 公历转农历 (15)结束语 (17)参考文献 (18)附录 (19)附录A 程序 (19)附录B 原理图 (41)致谢 (41)多功能万年历的设计摘要:本设计采用了以广泛使用的单片机技术为核心,软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LCD显示电路、键盘电路,使人机交互简便易行,此外还结合音乐闹铃电路、温度采集电路和供电电路。

本方案设计出的万年历可以显示日期、时间、温度、农历,并且设置了音乐闹铃功能。

该万年历可以应用于一般的生活和工作中,也可以通过改装,提高性能,增添新功能,从而给人们的生活和工作带来方便。

关键词:万年历;A T89S52;LCD1602;时钟日历芯片DS1302;音乐闹钟The Multi-functional Calendar DesignnaAbstract: This design has adopted by the extensive use of single chip microcomputer as the core. Hardware and software combination make the hardware parts greatly simplified and improve the stability of the system.The use of LCD display circuit, keyboard circuit makes the information exchange simple. In addition, the design is combined with music alarm circuit, temperature acquisition circuit and power supply circuit. It can show a calendar date, time, temperature, the lunar and set up music alarm function. On one hang the calendar can be applied to general life and work, on the other hang, it can improve performance by modification to add new functions, so that it can bring more convenience to people's life and work.Key words: calendar;AT89S52;LCD1602; clock calendar chip DS 1302; music alarm clock.引言电子万年历是实现对年、月、日、时、分、秒数字显示的计时装置,广泛用于个人、家庭、车站、码头、办公室、银行大厅等场所,成为人们日常生活中的必需品。

基于FPGA的多功能电子万年历设计

基于FPGA的多功能电子万年历设计

一、电子万年历简介 (1)二、电子万年历的工作原理 (1)三、多功能电子万年历各功能模块实现 (3)3.1时钟问题 (3)3.2电子万年历的控制系统 (5)3.3主控制模块maincontrol (6)3.4时间及其设置模块time_auto_and_set (7)3.3时间显示动态位选模块time_disp_select (12)3.4显示模块disp_data_mux (13)3.5秒表模块stopwatch (14)3.6日期显示与设置模块date_main (15)3.7闹钟模块alarmclock (17)3.8分频模块fdiv (18)四、附录 (20)附录一电子万年历系统的Verilog HDL语言程序 (20)一、电子万年历简介钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭路灯等。

所有这些,都是以钟表数字化为基础的。

因此,研究电子万年历及扩大其应用,有非常现实的意义。

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

电子万年历从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

本次所设计的电子万年历能显示日期、星期、时间,具有闹钟功能。

二、电子万年历的工作原理◆功能键用来选择不同的工作模式:时间正常显示功能、时间调整与显示、秒表功能、闹钟设置与查看、日期显示、日期调整与设置。

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

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

FPGA万年历报告

FPGA万年历报告

FPGA-CPLD原理及应用课程设计报告题目:基于SOPC设计万年历一、摘要设计从系统硬件出发,由CPU、总线、RAM、外接设备等构成SOPC Builder 的硬件系统,通过Nios II DE2开发的嵌入式软件编写并嵌入SOPC Builder的硬件中实现万年历的整体开发。

通过应用SoPC Builder开发工具,设计者可以摆脱传统的、易于出错的软硬件设计细节,从而达到加快项目开发、缩短开发周期、节约开发成本的目的并具有高集成度、设计灵活和可移植性较好。

关键词:万年历SOPC SOPC Builder Nios II DE2二、设计要求用Nios II DE2 开发板的LCD显示电子钟的日期和时间。

LCD分两行显示,第1行显示年、月、日;第2行显示时、分、秒。

用输入BUTTON[0]来控制LCD 行的修改,同时让Nios II DE2开发板上的绿色发光二极管亮灭来表示这个选择。

当BUTTON[0]按一下后,LEDG3亮,可以修改年、月和日的数字;再按一下BUTTON[0]后,LEDG3灭,可以修改时、分和秒的数字。

另外用输入按钮BUTTON[3]来控制日期和时间的修改,当处于日期修改方式时,每次按动一次BUTTON[3],依次更换“年”、“月”和“日”的修改。

当处于时间修改方式时,每次按动一次BUTTON[3],依次更换“时”、“分”和“秒”的修改。

修改对象被选中后,按动BUTTON[2]输入按钮可以增加显示的数字;按动BUTTON[1]输入按钮可以减少显示的数字。

三、设计内容1、按键信息BUTTON[3]:“年”、“月”、“日”或“时”、“分”、“秒”切换键BUTTON[2]:+键BUTTON[1]:-键BUTTON[0]:“年”、“月”、“日”与“时”、“分”、“秒”切换键显示信息LCD_Line1:显示“年”、“月”、“日”LCD_Line1:显示“时”、“分”、“秒”2、SOPC Builder 硬件建立SOPC Builder是在Quartus II里的SOPC Builder进行的,先建立工程,在SOPC Builder里添加硬件,包括CPU ,jtag_uart ,RAM,LCD,PIO,按键,LED,以及LCD_ON。

基于FPGA的多功能电子万年历

基于FPGA的多功能电子万年历

基于FPGA的多功能电子万年历电子万年历可以显示日期、星期、时间以及其他的一些信息。

近几年,随着FPGA技术的发展,基于FPGA的电子万年历已经被广泛使用。

基于FPGA的电子万年历除了具备传统电子万年历的基本功能外,还具有诸多的优点。

采用FPGA做万年历,集成度高、抗电磁干扰性能好、可编程性强,且易于扩展。

本文将主要讲述基于FPGA的多功能电子万年历的设计原理、实现细节以及相关应用。

设计原理基于FPGA的多功能电子万年历主要由FPGA芯片、时钟模块、数码管显示模块以及按键扫描模块组成。

1.FPGA芯片:大体上分为输入、输出、内存和运算4个部分。

通过采用FPGA芯片可以实现逻辑门的优化布局和资源分配,从而实现万年历的多种功能。

2.时钟模块:利用时钟模块产生震荡脉冲,驱动万年历的各种操作。

时钟模块还可以产生各种频率的时钟信号,如秒钟、分频、时钟、日历等,从而实现多种功能。

3.显示模块:显示模块主要通过数码管来显示日期、星期、时间等信息。

具体实现方法是将数码管的数码码表和时序参数存储在内存中,通过编程控制数码管的显示方式,实现数据的输出。

4.按键扫描模块:按键扫描模块主要通过扫描键盘来接受用户的输入,并根据用户的操作控制万年历的功能。

实现细节基于FPGA的多功能电子万年历的实现细节主要包括万年历的功能实现、按键扫描和电路部署。

1.万年历的功能实现多功能电子万年历主要支持年、月、日的日期显示、星期显示、时间显示、时钟多种功能。

具体实现方法是每秒读取系统时间,并将时间转换成5V逻辑电平数据,然后通过编程控制数码管的显示方式,实现数据的输出。

2.按键扫描按键扫描模块主要通过接收按下按键后输出电平并进行数值编码,与计算机进行数值比对,然后根据用户的操作控制万年历的功能。

比如,按下设置键后,进入设置模式,按一次将秒数置零,按2次进行月日年设置,按3次进行时间设置,按4次重新返回当前时间界面。

3.电路部署电路部署主要包括FPGA芯片与其他模块、模块与模块之间的连接。

基于FPGA的多功能电子万年历毕业设计说明

基于FPGA的多功能电子万年历毕业设计说明

毕业设计中期报告题目名称:基于FPGA的万年历设计院系名称:电气学院班级:应电学号:0832100589学生:梁启超指导教师:金凤2011年06月目录一、多功能电子万年历及FPGA简介 (1)1.1电子万年历的发展 (1)1.2 FPGA简介 (1)1.3 电子万年历的工作原理 (2)二、多功能电子万年历各功能模块实现 (4)2.1 时钟问题 (4)2.1.1 全局时钟 (4)2.1.2 门控时钟 (4)2.1.3 多级逻辑时钟 (5)2.1.4 波动式时钟 (5)2.2 电子万年历的控制系统 (6)2.3 主控制模块 maincontrol (7)2.4 时间及其设置模块 time_auto_and_set (8)2.2.1 时间模块 timepiece_main (8)2.2.2 时间设置模块 timeset (9)2.2.3 时间数据与时间设置数据多路选择模块 time_mux (11)2.3 时间显示动态位选模块 time_disp_select (13)2.4 显示模块 disp_data_mux (14)2.5 秒表模块 stopwatch (15)2.6 日期显示与设置模块 date_main (16)2.6.1 日期自动工作模块 autodate (17)2.6.2 日期设置模块 setdate (17)2.7 闹钟模块alarmclock (18)2.8 分频模块 fdiv (19)2.9 顶层模块图 (21)三、附录 (23)电子万年历系统的Verilog HDL语言程序设计部分代码 (23)3.1主控制模块 (23)3.2秒自动计时子模块 (25)3.3时间自动工作控制 (25)3.4时间数据与时间设置数据多路选择模块 (26)3.5时间及其设置模块 (27)3.6时间显示动态位选模块 (28)3.7秒表模块 (29)3.8分频模块 (29)参考文献 (31)1 引言1.1 选题意义钟表的数字化给人们生产生活带来了极大的方便,而且大扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭路灯等。

fpga万年历项目计划书

fpga万年历项目计划书

fpga万年历项目计划书项目目标:设计和开发一个使用 FPGA(现场可编程门阵列)实现的万年历. 项目范围:这个 FPGA万年历将具有以下功能:显示当前日期和时间(年、月、日、时、分、秒)。

能够手动设置日期和时间。

能够自动调整闰年。

能够显示一周中的哪一天。

能够显示节日和特殊活动。

项目时间表:该项目的预计时间表如下:第 1 阶段(1 周),研究和规划。

第 2 阶段(2 周),硬件设计和仿真。

第 3 阶段(2 周),软件开发。

第 4 阶段(1 周),集成和测试。

第 5 阶段(1 周),文档编制和演示。

项目预算:该项目的估计预算如下:FPGA 开发板,500 美元。

元件(电阻、电容等),50 美元。

软件开发工具,免费(开源)。

人工成本(工程师),2,000 美元。

总计,2,550 美元。

项目团队:该项目团队将由以下人员组成:项目经理。

硬件工程师。

软件工程师。

测试工程师。

风险管理:该项目的潜在风险包括:硬件设计错误。

软件错误。

组件故障。

时间表延误。

预算超支。

为了降低这些风险,将采取以下缓解措施:тщательное планирование и проектирование。

严格的代码审查。

组件的彻底测试。

频繁的风险评估。

应急计划的制定。

项目交付成果:该项目的交付成果将包括:FPGA万年历原型。

完整的硬件设计文档。

完整的软件设计文档。

用户手册。

演示文稿。

项目评估:该项目将根据以下标准进行评估:功能要求是否得到满足。

预算和时间表是否得到遵守。

系统的可靠性和可维护性。

用户满意度。

结论:该 FPGA万年历项目是一个具有挑战性的项目,但也是一个有益的项目。

通过仔细的规划、设计和实施,该项目团队相信可以成功交付一个功能强大且可靠的万年历。

中文回答:FPGA 万年历项目计划书。

项目目标:设计和开发一个使用 FPGA(现场可编程门阵列)实现的万年历。

项目范围:该 FPGA 万年历将具有以下功能:显示当前日期和时间(年、月、日、时、分、秒)。

26_毕业设计基于fpga的万年历设计[管理资料]

26_毕业设计基于fpga的万年历设计[管理资料]

基于FPGA的万年历电路的设计目录摘要 ........................................................................................................................................... Abstract (I)前言 0第1章万年历的发展及FPGA简介 (1)万年历的发展 (1)FPGA简介 (1)第2章设计原理 (2)组成模块 (2)系统设计图 (2)第3章各功能模块介绍 (4)分频模块(fenpin) (4)控制模块(countr) (4)时间显示调整模块(mux_4) (4)时分秒模块(timeve) (5)年月日模块(nyr2009) (5)显示控制模块(mux_16) (6)译码器(yimaqi) (6)第4章模拟仿真 (8)年月日模块仿真 (8)时分秒模块仿真 (8)结论 (9)总结与体会 (10)谢辞 (11)参考文献 (12)附录一 (13)附录二 (24)附录三 (30)基于FPGA的万年历电路的设计摘要基于FPGA的万年历设计,主要完成的任务是使用Verilog语言,在Quartis2上完成电路设计,程序开发模拟,基本功能是能够显示/修改年月日时分秒。

电路设计模块中分为几个模块:分频、控制、时间显示调整、时分秒、年月日、显示控制、译码器。

各个模块完成不同的任务,合在一起就构成了万年历的系统电路设计。

至于程序编写,使用Verilog语言,根据各个模块的不用功能和它们之间的控制关系进行编写。

软件模拟直接在Quartis2上进行。

进入信息时代,时间观念越来越重,但是老式的钟表以及日历等时间显示工具已经不太适合。

如钟表易坏,需要经常维修,日历需要每天翻页等。

对此,数字万年的设计就有了用武之地。

基于FPGA的万年历设计,采用软件开发模拟,开发成本低,而且再功能设计上有很大的灵活度,只要在软件上进行简单的修改就能实现不同的功能要求,能够满足不同环境要求。

基于fpga的多功能万年历

基于fpga的多功能万年历

基于FPGA的多功能万年历1. 绪论现代科技在不断进步电子技术在不断发展,电子产品设计复杂程度也在不断增加。

而且电子产品的更新换代也越来越快,现在只靠传统的纯硬件的设计方法已经不能满足现代人们的要求。

EDA就是典型的硬件设计软件化的设计平台。

EDA是一项非常先进的技术,它有许多别的技术没有的优点:像单片机需要先画出硬件图再编写相对应的程序,而EDA是先编好程序再画图的,而且模块化的编程还会在软件中生成相应的封装元件,使最后画原理图变的更加简单;可以编好程序就直接仿真,程序出现错误可以在源文件内部直接改;并且设计好的总系统可以集成在一个体积小、功耗低、可靠性高的芯片上。

本设计采用VHDL语言,VHDL语言是一种全方位的数字系统设计和测试的硬件描述。

它支持原理图输入方法以及传统的文件输入方。

对于前者适用于小规模的数字集成电路,并进行模拟仿真。

而对于大规模的、复杂的系统,如果用纯原理图设计方法的话的,由于种种条件和环境制约,会导致工作效率底而且容易出错的等缺点。

在信息技术的今天,集成电路逐渐的趋向于系统化、微尺寸化、低功耗高集成化,因此,高密度可编程逻辑器件和VHDL越来越得到设计者的青睐。

它具有极强的描述能力,支持结构、数据流、行为三种描述形式的混合的设计方式,描覆盖面广、抽象能力强。

它能支持系统行为级、逻辑门级和寄存器传输级三个不同层次的设计。

在本设计中用到的FPGA是特殊的ASIC芯片,ASIC是一种带有逻辑处理的加速处理器的专用的系统集成电路。

它具有功耗低、速度快、集成度、设计制造成本低等优点。

本设计是研究基于FPGA的多功能万年历的设计,主要实现以下功能:能够显示年、月、日、时、分、秒,时间采用24小时制。

当时间不准确时还可以手动校准。

本系统还能实时的显示当前的温度,扩展了万年历的功能。

我采用的是数字温度传感器DS18B20和FPGA组成的温度采集系统,此系统具有硬件电路简单,抗干扰能力强等优点。

基于FPGA的万年历程序设计

基于FPGA的万年历程序设计

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(rst:in std_logic;clk:in std_logic;clr:in std_logic;display_mode: in std_logic;inc:in std_logic;mode:in std_logic;seg8:out std_logic_vector(7 downto 0);scan:out std_logic_vector(7 downto 0);led:out std_logic_vector(3 downto 0) );end;architecture one of clock is--signal state:std_logic_vector(2 downto 0);--signal dis_mode:std_logic_vector(1 downto 0);signal state:integer range 0 to 7;signal dis_mode:integer range 0 to 3;--signal qhh,qhl,qmh,qml,qsh,qsl,qy1,qy2,qy3,qy4,qm1,qm2,qd1,qd2:std_logic_vector(3 downto 0);signal qhh,qhl,qmh,qml,qsh,qsl,qy1,qy2,qy3,qy4,qmonl,qmonh,qdl,qdh:integer range 0 to 15; signal data:integer range 0 to 15 ;signal cnt:integer range 0 to 7;signal clk1khz,clk1hz,clk2hz,clk5ms:std_logic;--signal blink:std_logic_vector(2 downto 0);--signal inc_reg:std_logic;signal sec,min:integer range 0 to 59;signal hour:integer range 0 to 23;signal year:integer range 1 to 9999;signal month:integer range 1 to 12;signal day,day_limit:integer range 1 to 31;beginprocess(clk)variable count:integer range 0 to 30000;beginif clk'event and clk='1' thenif count=25000 then clk1khz<=not clk1khz;count:=0;else count:=count+1;end if;end if;end process;-------------------------------------------------------process (clk)variable cnte:integer range 0 to 30000000;beginif clk'event and clk ='1' thenif cnte=25000000 then clk1hz<=not clk1hz; cnte:=0;else cnte:=cnte+1;end if ;end if ;end process ;-----------------------------------------------------process (clk)variable cnt2:integer range 0 to 25000000;beginif clk'event and clk='1' thenif cnt2=12500000 then clk2hz<=clk2hz;cnt2:=0;else cnt2:=cnt2+1;end if ;end if ;end process;-----------------------------------------------------process(clk)variable cnnt:integer range 0 to 600000;beginif clk'event and clk='1' thenif cnnt=500000 then clk5ms<=clk5ms;cnnt:=0;else cnnt:=cnnt+1;end if ;end if ;end process;-----------------------------------------------------------------------------------------process(display_mode , clk1hz)beginif display_mode'event and display_mode='0' then dis_mode<=dis_mode+1;if dis_mode=1 thendis_mode<=0;end if;end if;end process;-------------------------------------------process(clk)beginyear<=year;month<= month;day<=day;hour<=hour;min<=min;sec<=sec;end process;-----------------------------------------process(mode , clr,clk1hz)beginif clr='0' thenstate<=0;elsif mode'event and mode='0' thenstate<=state+1;if state=6 thenstate<=0;end if;end if ;end process;----------------------------------------------------------------------------------- process(clk1hz,state,dis_mode,inc,clr,hour,sec,min,rst,year,month,day) beginif rst='0' thenyear<=2000;month<=2;day<=25;hour<=0;min<=0;sec<=0;--state<=0;--dis_mode<=0;elsif clr='0' thenhour<=23;min<=59;sec<=55;year<=4164;month<=1;day<=25;elsif clk1hz'event and clk1hz='1' thencase state iswhen 0 => led<="0000";if((month=1)or(month=3)or(month=5)or(month=7)or(month=8)or(month=10)or(month=12)) thenday_limit<=31;end if;if month=2 then----if((year%4==0&&year%100!=0)||(year%400==0))if ((((year rem 4)=0) and ((year rem 100)/=0)) or ((year rem 400=0))) thenday_limit<=29;elseday_limit<=28;end if;end if;if((month=4)or(month=6)or(month=9)or(month=11)) thenday_limit<=30;end if;sec<=sec+1;if sec=59 thensec<=0;min<=min+1;if min=59 thenmin<=0;hour<=hour+1;if hour =23 thenhour<=0;day<=day+1;if day=day_limit thenday<=1;month<=month+1;if month=12 thenmonth<=1;year<=year+1;if year=9999 thenyear<=1;end if;end if;end if;end if;end if;end if;--if sec=59 then sec<=0;--if min=59 then min<=0;--if hour=23 then hour<=0;--else--hour<=hour+1;--end if;--else--min<=min+1;--end if;--else--sec<=sec+1;--end if;when 1=> led<="0001";if inc='0' thenif hour=23 thenhour<=0;else hour<=hour+1;end if;end if;when 2=>led<="0010" ;if inc='0' thenif min=59 thenmin<=0;elsemin<=min+1;end if;end if;when 3=>led<="0011" ;if inc='0' thenif sec=59 thensec<=0;elsesec<=sec+1;end if;end if;when 4 =>led<="0100";if inc='0' thenif year=9999 thenyear<=1;elseyear<=year+1;end if;end if;when 5=> led <="0101";if inc='0' thenif month=12 thenmonth<=1;elsemonth<=month+1;end if;end if;when 6 =>led <="0110";if inc='0' thenif day=day_limit thenday<=1;elseday<=day+1;end if;end if;when others =>null;end case;end if;--end if;end process;---------------------------------------------------------------------- process(sec)begincase sec iswhen 0|10|20|30|40|50 => qsl<=0;when 1|11|21|31|41|51 => qsl<=1;when 2|12|22|32|42|52 => qsl<=2;when 3|13|23|33|43|53 => qsl<=3;when 4|14|24|34|44|54 => qsl<=4;when 5|15|25|35|45|55 => qsl<=5;when 6|16|26|36|46|56 => qsl<=6;when 7|17|27|37|47|57 => qsl<=7;when 8|18|28|38|48|58 => qsl<=8;when 9|19|29|39|49|59 => qsl<=9;when others =>null;end case;case sec iswhen 0|1|2|3|4|5|6|7|8|9 => qsh<=0;when 10|11|12|13|14|15|16|17|18|19 => qsh<=1;when 20|21|22|23|24|25|26|27|28|29 => qsh<=2;when 30|31|32|33|34|35|36|37|38|39 => qsh<=3;when 40|41|42|43|44|45|46|47|48|49 => qsh<=4;when 50|51|52|53|54|55|56|57|58|59 => qsh<=5;when others =>null;end case;end process;-------------------------------------------------------------------- process(min)begincase min iswhen 0|10|20|30|40|50 => qml<=0;when 1|11|21|31|41|51 => qml<=1;when 2|12|22|32|42|52 => qml<=2;when 3|13|23|33|43|53 => qml<=3;when 4|14|24|34|44|54 => qml<=4;when 5|15|25|35|45|55 => qml<=5;when 6|16|26|36|46|56 => qml<=6;when 7|17|27|37|47|57 => qml<=7;when 8|18|28|38|48|58 => qml<=8;when 9|19|29|39|49|59 => qml<=9;when others =>null;end case;case min iswhen 0|1|2|3|4|5|6|7|8|9 => qmh<=0;when 10|11|12|13|14|15|16|17|18|19 => qmh<=1;when 20|21|22|23|24|25|26|27|28|29 => qmh<=2;when 30|31|32|33|34|35|36|37|38|39 => qmh<=3;when 40|41|42|43|44|45|46|47|48|49 => qmh<=4;when 50|51|52|53|54|55|56|57|58|59 => qmh<=5;when others =>null;end case;end process;----------------------------------------------------------------------- process(hour)begincase hour iswhen 0|10|20 => qhl<=0;when 1|11|21 => qhl<=1;when 2|12|22 => qhl<=2;when 3|13|23 => qhl<=3;when 4|14 => qhl<=4;when 5|15 => qhl<=5;when 6|16 => qhl<=6;when 7|17 => qhl<=7;when 8|18 => qhl<=8;when 9|19 => qhl<=9;when others =>null;end case;case hour iswhen 0|1|2|3|4|5|6|7|8|9 => qhh<=0;when 10|11|12|13|14|15|16|17|18|19 => qhh<=1;when 20|21|22|23 => qhh<=2;when others => null;end case;end process;---------------------------------------------------------------process(year)beginqy1<=year/1000;qy2<=(year rem 1000)/100;qy3<=((year rem 1000)rem 100)/10;qy4<=((year rem 1000)rem 100) rem 10;--qy1<=year/1000;--qy2<=(year rem 1000)/100;--qy3<=((year-(year/1000)*1000)-((year-(year/1000)*1000)/100)*100)/10; --qy4<=((year rem 1000)rem 100)rem 10;end process;----------------------------------------------------------------process(month)beginqmonh<=month/10;qmonl<=month rem 10;end process;-----------------------------------------------------------------process(day)beginqdh<=day/10;qdl<=day rem 10;end process;----------------------------------------------------------------process(clk1khz)beginif clk1khz'event and clk1khz='1' thenif cnt=7 thencnt<=0;else cnt<=cnt+1;end if;end if;end process;----------------------------------------------------------process (cnt,qhh,qhl,qmh,qml,qsh,qsl,dis_mode)begincase dis_mode iswhen 0 => case cnt iswhen 0 => data<=qsl; scan<="11111110";when 1 => data<=qsh; scan<="11111101";when 2 => data<=15 ; scan<="11111111";when 3 => data<=qml; scan<="11110111";when 4 => data<=qmh; scan<="11101111";when 5 => data<=15; scan<="11111111";when 6 => data<=qhl; scan<="10111111";when 7 => data<=qhh; scan<="01111111";when others => null;end case;when 1=> case cnt iswhen 0 => data<=qdl; scan<="11111110";when 1 => data<=qdh; scan<="11111101";when 2 => data<=qmonl ; scan<="11111011";when 3 => data<=qmonh; scan<="11110111";when 4 => data<=qy4; scan<="11101111";when 5 => data<=qy3; scan<="11011111";when 6 => data<=qy2; scan<="10111111";when 7 => data<=qy1; scan<="01111111";when others =>null;end case;when others => null;end case;end process;----------------------------------------------------------------------------------process(data)begincase data iswhen 0 =>seg8<="11000000";when 1 =>seg8<="11111001";when 2 =>seg8<="10100100";when 3 =>seg8<="10110000";when 4 =>seg8<="10011001";when 5 =>seg8<="10010010";when 6 =>seg8<="10000010";when 7 =>seg8<="11111000";when 8 =>seg8<="10000000";when 9 =>seg8<="10010000";when others =>seg8<="11111111";end case ;end process;end;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的多功能万年历1. 绪论现代科技在不断进步电子技术在不断发展,电子产品设计复杂程度也在不断增加。

而且电子产品的更新换代也越来越快,现在只靠传统的纯硬件的设计方法已经不能满足现代人们的要求。

EDA就是典型的硬件设计软件化的设计平台。

EDA是一项非常先进的技术,它有许多别的技术没有的优点:像单片机需要先画出硬件图再编写相对应的程序,而EDA是先编好程序再画图的,而且模块化的编程还会在软件中生成相应的封装元件,使最后画原理图变的更加简单;可以编好程序就直接仿真,程序出现错误可以在源文件内部直接改;并且设计好的总系统可以集成在一个体积小、功耗低、可靠性高的芯片上。

本设计采用VHDL语言,VHDL语言是一种全方位的数字系统设计和测试的硬件描述。

它支持原理图输入方法以及传统的文件输入方。

对于前者适用于小规模的数字集成电路,并进行模拟仿真。

而对于大规模的、复杂的系统,如果用纯原理图设计方法的话的,由于种种条件和环境制约,会导致工作效率底而且容易出错的等缺点。

在信息技术的今天,集成电路逐渐的趋向于系统化、微尺寸化、低功耗高集成化,因此,高密度可编程逻辑器件和VHDL越来越得到设计者的青睐。

它具有极强的描述能力,支持结构、数据流、行为三种描述形式的混合的设计方式,描覆盖面广、抽象能力强。

它能支持系统行为级、逻辑门级和寄存器传输级三个不同层次的设计。

在本设计中用到的FPGA是特殊的ASIC芯片,ASIC是一种带有逻辑处理的加速处理器的专用的系统集成电路。

它具有功耗低、速度快、集成度、设计制造成本低等优点。

本设计是研究基于FPGA的多功能万年历的设计,主要实现以下功能:能够显示年、月、日、时、分、秒,时间采用24小时制。

当时间不准确时还可以手动校准。

本系统还能实时的显示当前的温度,扩展了万年历的功能。

我采用的是数字温度传感器DS18B20和FPGA组成的温度采集系统,此系统具有硬件电路简单,抗干扰能力强等优点。

1.1 项目研究的背景和意义现在是一个科技迅速发展的时代。

新的电子产品、电子技术日异更新。

生在21世纪的我们应该都深深的体会到电子产品给我们带来的变化,而且电子产品更是随处可见。

随着科技的发展人们的生活节奏也越来越快,时间对人们来说也是越来越宝贵。

在这样快节奏的生活里,人们常常会忘记了时间,一旦遇到重要的会议或重要的事情而忘记了时间,这将会带来很大的损失。

而传统的钟表已经不能满足这些人的要求。

随着科技的发展和社会的进步,人们对数化日历的要求也越来越高。

数字化的日历具有功耗低、多功能化、一劳永逸等优点,因此数字化的日历必将取代传统的日历走入寻常百姓家。

本设计采用的是数字温度传感器DS18B20和FPGA组成的温度采集系统。

数字温度传感器DS18B20,可以直接与FPGA相连,构成简单的测量电路,这样就方便实现远距离传输和多点温度测量;而且FPGA相对于单片机来说速度快,修改方便,可以减少开发成本和时间,并增加了系统的灵活性。

EDA是一项非常先进的技术,它有许多别的技术没有的优点:像单片机需要先画出硬件图再编写相对应的程序,而EDA是先编好程序再画图的,而且模块化的编程还会在软件中生成相应的封装元件,使最后画原理图变的更加简单;可以编好程序就直接仿真,程序出现错误可以在源文件内部直接改;并且设计好的总系统可以集成在一个体积小、功耗低、可靠性高的芯片上。

1.1 课题相关技术的发展现代电子产品基本上都是大量使用大规模的可编程的逻辑器件,这样就降低了产品的功耗、缩小了电子产品的体积、功能也越来越多样化、产品的性能也得到提高。

现代计算机技术在电子产品开发中得到了广泛的应用,以前需要一两个月才能开发出来的,现在只要几个星期甚至更短的时间,不仅仅缩短了电子产品的研发周期还提高了自动化程度,降低了生产的成本,增加了产品的竞争力。

EDA(电子设计自动化)是最近几年才迅速发展起来的,它是将计算机软件、硬件、微电子技术交叉运用的现代电子技术。

现在电子产品都在趋于数字化,基于EDA的数字系统的设计具有很大的应用市场。

可编程逻辑器件自EDA诞生以来,经历了PLA、PAL、GAL、CPLD、FPGA几个阶段。

现在比较流行的可编程逻辑器件就是美国ALTERA公司的FPGA和CPLD。

可编程逻辑器件采用全新的结构和先进的技术可以根据用户的要求来构造逻辑功能的数字集成电路,加上MaxplusII(或最新的QUARTUS)开发环境,不仅简化了电路的设计,降低了成本,提高了系统的可靠性,也给数字化设计带了了重大变革。

电子设计的核心就是EDA技术,EDA技术是指以计算机为开发平台,融合应用电子技术,计算机技术而研制成的通用软包。

EDA技术经历了70年代的计算机辅助设计CAD、80年代的计算机辅助工程CAE和电子系统设计自动化ESDA三个发展阶段。

它的基本特征是:“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,提高了设计的效率,比单片机或C语言要简单易懂。

本设计利用硬件描述语言结合可编程逻辑器件进行的,VHDL语言具有一下优点:(1)VHDL的描述范围宽使它成为高层次的设计的核心,将工作人员的重心提高到了系统功能的实现与调试。

(2)VHDL可以用简洁的代码来描述复杂的控制逻辑设计,灵活且方便。

(3)VHDL不依赖与特定的器件,方便了工艺的转换。

(4)VHDL是一个标准的语言,众多的EDA厂商都支持,因此移植性强。

1.2 课题研究的内容本设计主要研究基于FPGA的多功能万年历,要求如下:(1)显示年、月、日、时、分、秒,时间以24小时为一个周期。

(2)具有校准以及报时功能,可以对年、月、日、时、分及秒进行单独校对,使其校正到标准时间。

(3)能够实时的显示当前温度。

1.3 设计方案论证与选择方案一:运用单片机C语言实现多功能万年历的设计按照设计要求,系统软件编程应包含三个部分:输入部分,选择导出部分,输出显示部分。

相应的系统硬件部分除了核心模块单片机之外,主要的外围部件还有按键、传感器等。

其中单片机系统作为中央处理单元,根据逻辑开关输入的信号转换为显示部分能识别的方式传递给显示部分,显示部分接到传来的指示信号做出相应的显示。

此方法运用了当前最常见的C语言,方案较简洁,不过C语言难以掌握,因此本设计不采用此方法。

方案二:运用数字逻辑电路实现多功能万年历的设计采用74138、74161和其它器件构成实现对万年历控制功能的硬件电路。

由设计要求可知,可以把电路分为按键控制电路,译码、显示、驱动等各部分电路。

开关控制电路,译码与显示驱动电路,显示电路。

这种方案是由纯硬件电路实现的设计,优点是省略了软件部分的设计,但是这种方案因为是纯硬件实现的,成本较高,误差较大,不灵活,因此在本次设计中也不予以采用。

方案三:运用EDA技术实现多功能万年历的设计根据设计要求,系统设计依靠EDA的MAX+PLUS Ⅱ设计软件、VHDL硬件描述语言及FPGA芯片实现多功能万年历的设计。

即在MAX+PLUS Ⅱ软件中用VHDL语言编写各模块程序,通过编译后分别封装成元器件,这些元器件生成顶层文件,再画出硬件电路图,这是EDA硬件软件化的一大特点。

最后借助EDA实验箱实现硬件仿真的功能。

软硬件相结合,层次分明,结构清晰。

且VHDL语言简单易懂,FPGA芯片也是当今的流行趋势。

综合以上三种设计方案,方案三是最为经济合理的,也是我们最能理解的。

2. FPGA简介2.1 FPGA概述FPGA(Field Programmable Gate Array)即现场可编程门阵列,它是在PLA、GLA、CPLD等可编程器件的基础上进一步发展的产物。

它是专用集成电路中的一种半定制电路,具有门电路数多的优点。

2.2 FPGA基本结构FPGA器件在结构上,由逻辑功能块排列为阵列,它的结构可以分为三个部分:可编程逻辑块CLB(Configurable Logic Block)可编程I/O模块(Input/Output Block)和可编程内部连线PI(Programmable Interconnect)。

(1).CLB是FPGA的主要组成部分,图2-1是CLB基本结构框图。

图2-1 CLB 基本结构(2).可编程输入/输出模块IOB ,编程灵活根据系统功能的需要可被配置为输入、输出或双向传输三种功能,实现不同的逻辑功能,满足不同的的逻辑接口的需要。

(3).可编程内部连线PI 。

XC4000系列芯片的连线资源由水平和垂直的布线通道构成,较短的线段分布于单个CLB 中,较长的线段跨接与两个CLB 之间,而最长的线段跨越怎个芯片。

可编程开关用来把CLB 的输入输出接到其周围的线段上,并且可以将两个不同的线段连接在一起。

3. 多功能万年历总体设计方案3.1 多功能万年历的构成日历实际上是一个对标准频率(1HZ )进行计数的计数电路。

因此标准的1HZ 时间信号必须做到准确稳定。

通常使用石英晶体振荡器电路构成数字钟。

同时为了保证与标准时间的一致,需要在电路上加上一个校准电路。

同时图3-1所示为日历的一般构成框图。

主要包括时间基准电路、计数器电路、控制电路、译码和显示电路。

其核心的部分就是控制逻辑电路,不断完善它可以增加系统的功能。

可编程开关矩输入输出模块互连资源图3-1 日历时钟部分组成框图本设计还具有显示年、月、日的功能,其显示范围为其总体框架如图3-2。

图3-2 总体框架3.2 多功能万年历工作原理日历的核心部分就是时钟部分,实际就是对标准的时钟信号进行计数,秒计数器对秒脉冲信号进行计数,记满60秒后就分计数器进位同时又从0开始计数;分计数器对秒的进位信号进行计数,记满60后向时计数器进位同时又从0开始计数;同理时计数器为24进制计数器,记满24向日计数器进位同时计数器清零,重新开始计数。

由于日数根据年、月的不同天数也不同,必须由年、月共同决定,日记满后12个月后向年计数器进位。

各个计数器的输出分别经过译码器送数码管显示。

当计时出现错误时,可以用校准电路对年、月、日、时、分、秒进行校准。

在系统中除了需要校准的控制信号外,还需要有时钟的使能信号、清零信号。

这些控制信号由一个4×4矩形键盘输入。

七段译码器构成译码显示电路,数码管完成显示功能。

在此的系统中利用数字温度传感器DS18B20和FPGA组成的温度采集系统经处理后送至数码管显示即可。

4 单元电路4.1 分频模块电路设计与实现在此系统中晶体振荡器的信号的稳定性与精准度直接影响到整个日历时钟的准确度。

为了保证基准时钟的准确性,所以我决定选用特性非常好的石英晶体,它只让某一特定频率点的信号通过,其他频率段的信号全部会被它衰减,而且它震荡信号的频率与震荡电路中的元器件完全无关。

所以这种震荡电路输出的是准确度极高的信号,再利用分频电路的话就会得到标准的秒信号,其组成框图如图4-1。

相关文档
最新文档