毕业设计基于fpga的万年历设计.doc
《毕业设计基于fpga的万年历设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于fpga的万年历设计.doc(48页珍藏版)》请在冰豆网上搜索。
![毕业设计基于fpga的万年历设计.doc](https://file1.bdocx.com/fileroot1/2022-10/3/e6182670-2b97-4ed8-bc94-32c609dbbabb/e6182670-2b97-4ed8-bc94-32c609dbbabb1.gif)
基于FPGA的万年历电路的设计
目录
摘要 I
Abstract II
前言 1
第1章万年历的发展及FPGA简介 2
1.1万年历的发展 2
1.2FPGA简介 2
第2章设计原理 3
2.1组成模块 3
2.2系统设计图 3
第3章各功能模块介绍 5
3.1分频模块(fenpin) 5
3.2控制模块(countr) 5
3.3时间显示调整模块(mux_4) 6
3.4时分秒模块(timeve) 6
3.5年月日模块(nyr2009) 7
3.6显示控制模块(mux_16) 7
3.7译码器(yimaqi) 7
第4章模拟仿真 9
4.1年月日模块仿真 9
4.2时分秒模块仿真 9
结论 10
总结与体会 11
谢辞 12
参考文献 13
附录一 14
附录二 26
附录三 32
毕业设计(论文)专用纸
基于FPGA的万年历电路的设计
摘要
基于FPGA的万年历设计,主要完成的任务是使用Verilog语言,在Quartis2上完成电路设计,程序开发模拟,基本功能是能够显示/修改年月日时分秒。
电路设计模块中分为几个模块:
分频、控制、时间显示调整、时分秒、年月日、显示控制、译码器。
各个模块完成不同的任务,合在一起就构成了万年历的系统电路设计。
至于程序编写,使用Verilog语言,根据各个模块的不用功能和它们之间的控制关系进行编写。
软件模拟直接在Quartis2上进行。
进入信息时代,时间观念越来越重,但是老式的钟表以及日历等时间显示工具已经不太适合。
如钟表易坏,需要经常维修,日历需要每天翻页等。
对此,数字万年的设计就有了用武之地。
基于FPGA的万年历设计,采用软件开发模拟,开发成本低,而且再功能设计上有很大的灵活度,只要在软件上进行简单的修改就能实现不同的功能要求,能够满足不同环境要求。
同时,该设计在精确度上远远超过钟表,并且不需要维修,也不用像日历一样每天翻页,极其方便,且能够添加各种不同功能的要求。
例如:
在万年历上添加闹钟,同时显示阴阳历等。
综上所述本设计具有设计方便、功能多样、电路简洁、成本低廉等优点,符合社会发展趋势,前景广阔。
关键词:
万年历,日历,FPGA,Verilog,Quartus2
BasedonthedesignofthecalendarFPFAcircuit
Abstract
ThecalendarbasedonFPGAdesign,themaintaskistouseVeriloglanguage,intheQuartis2completecircuitdesign,programdevelopment,basicfunctionissimulatedwhenabletodisplaydate/modifyminutes.Circuitdesignmoduleisdividedintoseveralmodules:
pointsfrequency,controlandtimedisplayadjustment,arc,date,displaywhencontrol,decoder.Eachmodulecompletedifferenttasks,togethertheyformacalendarsystemcircuitdesign.Asforprogramming,Veriloglanguage,accordingtousethemoduleswithoutfunctionandtherelationsbetweenthemcontrolcompilation.SoftwaresimulationondirectlyinQuartis2.
Intotheinformationage,theconceptoftimeismoreandmoreheavy,butold-fashionedclockandcalendaretctimedisplaytoolsarenotverygood.
KeyWords:
Calendar,calendar,FPGA,Verilog,Quartus2
I
第页
毕业设计(论文)专用纸
前言
随着近年来科学技术的迅速发展和普及,我们的工作,生活观念也发生了巨大的改变,人们对各式电子产品的要求也越来越高,使得与生活密切相关的电子万年历逐渐走向智能化、便捷化。
每到新年,人们就会买来一本新的日历,配上绘有图画的日历牌挂在墙上,既是装饰,又能指示年、月、日、星期等信息。
但使用这种纸质日历,必须记得每天按时撕一张,否则反而会记错日期,常常有人因为忘记每天撕掉而记错日期,错过重要事情,造成损失。
与传统纸质的万年历相比,数字万年历得到了越来越广泛的应用。
本设计基于FPGA,采用Verilog语言编程,用软件的方式设计,灵活性好,且作为课程设计来说不仅是对以往大学阶段一些知识的应用也不用花费多少成本。
按照系统设计功能的要求,设计一个简单的数字万年历,显示年、月、日、时、分、秒等基本功能。
对此国内外许多设计人员对其进行了大量的设计,有用单片机开发的,有用FPGA开发的。
由于使用FPGA设计、简便,成本低廉,所以本课程设计采用基于FPGA开发。
在设计过程中要完成年月日时分秒等基本功能,同时还要设计闹钟功能以及阴阳历显示功能(这个是国外设计爱好者未考虑的)。
采用FPGA设计的万年历由于成本低,精度高,可靠性好等优点,使它有了非常广阔的使用之处。
第1章万年历的发展及FPGA简介
1.1万年历的发展
钟表、日历等的数字化大大方便了现代人的生活,同时也大大的扩展了钟表的功能,例如自动报警、打铃、控制其他电子产品等。
而这些功能的实现,均是以钟表的数字化为基础的。
因此,研究数字万年历及扩大其应用,有非常现实的意义。
数字万年历是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和灵活性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
数字万年历从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
此次设计与制做数字万年历就是为了了解数字钟的原理,从而学会制作数字钟。
而且通过万年历的制作进一步了解各种在制作中用到的中小规模集成电路的作用及使用方法,且由于电子万年历包括组合逻辑电路和时序电路,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。
1.2FPGA简介
FPGA是现场可编程门阵列(Fieldprogrammablegatesarray)的英文简称,是由可编程逻辑模块组成的数字集成电路(IC),这些逻辑模块之间用可配置的互联资源。
设计者可以对这些器件进行编程来完成各种各样的任务。
由于实现方式的不同,有些FPGA只能编程一次,而有些则可以重复进行多次编写。
在FPGA名称中的“现场可编程”是指“在现场”进行。
与那些内部功能已被制造者固化的器件相反。
由于FPGA的设计成本低廉,修改方便,从而催生了的、许多富有创新意识的公司,这就意味着设计人员可以在基于FPGA的测试平台上实现他们的软件开发,而不需要承担数额巨大的不可重现工程的成本或昂贵的开发工具。
第2章设计原理
2.1组成模块
万年年来设计要完成的基本功能是显示年月日时分秒以及时间修改功能,对此需要把系统分为以下几个模块:
分频模块(fenpin)、控制模块(contr)、时间显示调整模块(mux_4)、时分秒模块(timeve)、年月日模块(nyr2009)、显示控制模块(mux_16)、译码器模块(yimaqi)。
分频模块是为了得到一个周期为秒的脉冲,该脉冲主要用于秒的走动;控制模块要完成的功能是由使用者决定显示年月日还是时分秒,当使用者不参与控制时,时分秒和年月日每隔一小段时间会自动轮流显示,当使用者参与控制时则需要由改模块完成;时间显示调整模块,顾名思义就是对时间进行调整修改;时分秒模块和年月日模块分别控制时分秒和年月日;显示控制模块的功能是控制显示时分秒还是年月日,在设计过程中为了节省器材,减少数码管的个数,把年月日和时分秒分成两个模块,至于显示哪一个则有该模块完成任务;译码器则是在数码管上显示当前时间。
2.2系统设计图
图1流程图
图2功能设计图
第3章各功能模块介绍
3.1分频模块(fenpin)
该模块的主要功能是想得到一个时钟频率为1Hz的一个脉冲,也就是说想得到周期为1秒的一个脉冲。
设计思路是:
用一个模10计数器,该计数器每秒有10个脉冲波形,如图3所示:
图3模10计数器波形
然后对该计数器每秒计数一次,也就是说在一秒内有10个脉冲,但是只要最后的一个脉冲,这样就得到了一个周期为1s的脉冲,如图4所示:
图41Hz脉冲
3.2控制模块(countr)
该模块的主要功能是对时间显示调整模块(mux_4)进行控制,并且参与外部控制。
设计思路:
在没有按下外部控制按键时,每8秒轮流控制年月日和时分秒模块,就是说在前8秒内令rc为0,下一个8秒内令其为1,然后轮流交换。
rc的作用就是相当于个脉冲,这个脉冲决定了该模块的输出电平。
当按下外部按键的时候,也就意味着使用者参与控制了,该模块有2个外置按键可供使用者使用,按下第一个按键则显示时分秒,按下第二个按键显示年月日,当两个按键都按下的时候默认按键无效。
3.3时间显示调整模块(mux_4)
该模块的功能是控制显示器,决定显示年月日还是时分秒。
[为了节省数码管,该设计把年月日和时分秒的显示分开],当该模块接受到低电平时显示当前的时分秒,当接受到的是高电平时则显示年月日。
3.4时分秒模块(timeve)
秒(second):
秒信号qm[7:
0],低四位qml[3:
0],高四位qmh[7:
4],秒进位信号enmin。
给予秒信号和进位信号一个初始值,令{qmh,qml}=0,carry1=0。
当秒信号计数到59时,则要把秒信号计为0,同时进位信号carry1=1。
当秒信号计数小于59时,如果十位qmh==5,个位qml<9则十位不变,个位每秒加1,carry1=0;如果qmh<5而qml==9,则令qmh=qmh+1,qml=0,carry1=0;如果qmh<5且qml<9,则qmh=qmh,qml=qml+1,carry1=0。
最终秒信号qm={qmh,qml},秒进位信号enmin
=carry|jf(jf是外部按键信号)。
分(minute):
分信号qf[7:
0],低四位qfl[3:
0],高四位qfh[7:
0],分进位信号enhour。
给予初始值:
{qfh,qfl}=8’h00,进位信号carry1=0。
当分信号计数到59时,则令{qfh,qfl}=8’h00,carry1=1。
如果qfh==5,qfl<9,则qfh=qfh,qfl=qfl+1,carry1=0。
如果qfh<5,qfl==9,则qfh=qfh+1,qfl=0,carry1=0;如果qfh<5,qfl<9,则qfh=qfh,qfl=qfl+1,carry1=0。
最终分信号qf={qfh,qfl},分进位信号enhour
=carry1|jh(jh同秒信号中的jf,一样是外部按键信号)。
时(hour):
时信号qs[7:
0],低四位qsl[