基于FPGA电子万年历的设计与实现.docx
- 文档编号:29897178
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:33
- 大小:519.55KB
基于FPGA电子万年历的设计与实现.docx
《基于FPGA电子万年历的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于FPGA电子万年历的设计与实现.docx(33页珍藏版)》请在冰豆网上搜索。
基于FPGA电子万年历的设计与实现
本科毕业设计(论文)
系所:
电子工程系
专业:
学生姓名:
学生学号:
指导教师:
导师职称:
讲师
完成日期:
2013年5月2日
基于FPGA的公农历显示系统设计
摘要
万年历是采用数字电路实现对、时、分、秒数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的功能。
万年历具有读取方便、显示直观、功能多样、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
本设计基于FPGA芯片,系统集成化程度高,精度高,采用VerilogHDL语言程,用软件的方式设计硬件,灵活性好,方便以后的产品升级。
设计过程先对万年历进行系统分析确定需要的主要功能。
然后对电子万年历进行系统分析,画出每个模块的流程图、数据通道等,最后对每个模块进行代码编写。
本论文分别介绍八个模块:
电子万年历核心控制模块、时间计时及其调整模块、时间显示动态位选模块、数码管显示模块、秒表模块、日期计时与调整模块、闹钟模块、分频模块。
在系统分析章节对整体设计的概况以及对每个模块进行描述,在系统实现章节每个模块具有单独的系统流程图,以及功能模块图。
在系统测试章节有对每个模块的测试后的波形图。
关键词:
FPGA芯片,VerilogHDL语言,电子万年历
DesignofCalendarandTraditionalChineseCalendarSystemBasedonFPGA
Abstract
Thiscalendaristhetimingdevicethatuseofdigitalcircuittoachieve,displaythehours,minutes,secondsondigitaldisplayscreenaswell.Becauseofdigitalintegratedcircuitdevelopmentandwideapplicationofquartzcrystaloscillators,thedigitalclockhasbecomemoreaccuratethantheold-fashionedclocks.Thedigitalizationoftheclockshasbroughtgreatconveniencetopeople,andalsogreatlyexpandedtheoriginalclockfunction.Calendarhasplentyofadvantagessuchaseasytoread,displayedwithintuition,lowcostandsoon.Thecalendarmeetthenowadays'developmenttrendofelectronicinstrumentation,andhasabroadmarketprospect.
ThedesignisbasedonFPGAchipwithahighdegreeofsystemintegrationandprecision.ThisdesignusesVerilogHDL,soitcanbeflexibleandeasytoupdateinthefuture.Thefirststepofdesignprocessisanalysissystemanddeterminethesystem'smainfunction.Thenweshoulddrawflowchartsofeachmoduleanddatachannelsofthesystem.Finallywritethecodeforeachmodule.
Thisthesiswillintroduceeightmodulesofthecalendarsystemindividually.Includingelectroniccalendarcentercontrolmodule,Timingandadjustmentmodule,dynamictimedisplayselectionmodule,LEDdisplaymodule,thestopwatchmodule,dateandadjustmentmodule,alarmmoduleandfrequencymodule.Thechapterofsystemsanalysisincludingtheoveralldesignoftheprofileandthedescriptionofeachmodule.Thechapterofsystemimplementationhasaseparatesectionforeachmodulesystemflowchartandfunctionalblockdiagram.Thechaptersofsystemtestwillshowthetestwaveformofeachmodule.
Keywords:
FPGAchip,VerilogHDLlanguage,ElectronicCalendar
第1章 绪论
1.1选题原因
万年历给人们日常生活带来极大的方便,而且扩展了原先的报时功能,例如日期提醒,整点报时等。
这些功能,都是以万年历数字化为基础。
所以,研究电子万年历并扩大他的功能,有非常大的意义。
万年历是一种用数字电路技术实现时、分、秒计时的装置,比机械钟更精准并且鲜明,稳定性也更强,使用寿命也更长,因此被广泛的应用。
电子万年历从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
我们设计这个电子万年历就是为了了解数字钟的原理,从而学会制作数字钟。
而且通过万年历的制作进一步了解各种在制作中用到的中小规模集成电路的作用及使用方法,因为电子万年历包括组合逻辑电路和时序电路,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。
本设计基于FPGA芯片,系统集成化程度高,精度高,采用VerilogHDL语言编程,用软件的方式设计硬件,灵活性好,方便以后的产品升级。
现如今繁忙的生活中,我们更加关注时间的精准,越来越多的人对时间更加重视。
为了更好的关注时间,我们就需要拥有一个准确、清晰的标准,电子时钟便应运而生。
而万年历则是电子时钟的更高级表现,然而人们越来越不满足万年历单一的及时功能,希望增加越来越多的功能。
为了满足人们的需求,我们要在原有的功能上加入更多功能。
万年历是利用数字电路实现,对时,分,秒.数字显示的计时装置,应用于人们生活中,是人们日常生活不可缺少的一部分,而集成电路的发展更是推进了电子万年历的推广,数字钟的精度远超石英表,并且价格便宜。
因为电子万年历的广泛应用,拓展万年历的功能具有非常实际的意义。
电子万年历可以很直观的显示年、月、日、时、分、秒。
万年历具有直观显示、功能多样、电路清晰、成本低廉等优点,符合电子仪器的发展趋势,具有广阔的市场前景。
1.2国内外产品研究综述
近年来,我国开始重视开发和设计的电子万年历,让更多的电子时钟能够走进人们的生活,让更多的人可以用上更先进的电子万年历。
然而,许多问题仍然存在。
我国电子万年历存在很多问题,例如产业结构不合理,行业集中在劳动密集型产品,显著落后于发达工业国家的技术密集型产品,在生产要素的决定性作用正在被侵蚀,工业能耗大,产量低,环境污染严重,对自然资源破坏力,公司的整体规模偏小,技术创新能力薄弱,管理水平落后。
我国的电子日历正在缓缓走向正轨,推进创新的新的电子日历产业“及替代品产业概念,在此基础上,从四个维度的“以人为本”,“科技创新”,“环境友好”和“面向未来”准确地定义一个新的电子万年历行业的意义。
随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。
第2章 关键技术介绍
2.1电子万年历的发展
在这个飞速发展的时代,越来越多的事物向着数字化发展,万年历也不例外。
这使它不仅能拥有时间查看,日期查看等功能更有闹钟以及秒表等功能拓展。
因此,研究电子万年历及扩大其应用,有非常现实的意义。
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
电子万年历从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
因此,我们此次设计与制做电子万年历就是为了了解数字钟的原理,从而学会制作数字钟。
而且通过万年历的制作进一步了解各种在制作中用到的中小规模集成电路的作用及使用方法,且由于电子万年历包括组合逻辑电路和时序电路,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。
2.2FPGA简介
FPGA是近几年集成电路中发展最快的产品。
由于PLD性能的高速发展以及设计人员自身能力的提高,可编程逻辑器件供应商将进一步扩大可编程芯片的领地,将复杂的专用芯片挤向高端和超复杂应用。
据ICInsights的数据显示,PLD市场从1999年的29亿美元增长到去年的56亿美元,几乎翻了一番。
Matas预计这种高速增长局
面以后很难出现,但可编程逻辑器件依然是集成电路中最具活力和前途的产业。
复杂可编程逻辑器件。
可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑(CPLD)。
在这两类可编程逻辑器件中,FPGA提供了最高的逻辑密度、最丰富的特性和最高的性能。
2.3电子万年历的工作原理
电子万年历的工作原理如图2.1所示:
图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
图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主控制模块的结构功能图
部分代码:
modulemaincontrol(clk,SW3,Timepiece_EN,TimeSet_EN,Stopwatch_EN,Alarmclock_EN,Date_EN,DateSet_EN);
outputTimepiece_EN;//时间自动显示使能
outputTimeSet_EN;//时间调整与设置使能
outputStopwatch_EN;//秒钟功能使能
outputAlarmclock_EN;//闹钟时间设置使能
outputDate_EN;//时期显示使能
outputDateSet_EN;//日期调整与设置使能
inputSW3;//功能号选择
inputclk;
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]:
为时间分十位计时,当m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 电子 万年历 设计 实现