基于FPGA的数字跑表功能的数字钟设计.docx
- 文档编号:14960403
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:24
- 大小:1MB
基于FPGA的数字跑表功能的数字钟设计.docx
《基于FPGA的数字跑表功能的数字钟设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字跑表功能的数字钟设计.docx(24页珍藏版)》请在冰点文库上搜索。
基于FPGA的数字跑表功能的数字钟设计
摘要
近年来,科学技术发展飞速,人们的生活质量也不断提高。
传统的时钟已经无法满足现代人的生活要求。
多功能数字钟无论在形态还是在性能上都改变了原有的风格。
本次设计基于原始的数字钟,在此基础上增加了诸项功能。
不仅具备时,分,秒计数功能,另外增加了校时功能,整点报时功能,闹钟功能以及数字跑表功能。
设计中采用了EDA技术,使用硬件描述语言VerilogHDL对各大功能模块的逻辑功能进行代码编写。
于QuartusII软件环境下,采用层次化设计与模块化设计的方法,由各个功能模块连接建立顶层图,构成基于FPGA的多功能数字钟。
设计实验板的主芯片为EP3C25Q240C8,多功能数字钟由分频器模块,时钟计数模块,校时控制模块,闹钟模块,整点报时与音乐演奏模块,数据选择模块,译码显示模块,按键去抖动模块和数字跑表模块构成。
经过程序编译和模块仿真,在实验板上下载验证,该系统可以完成时,分,秒的正常显示,通过按键切换功能模式,进入闹钟时间设定,校时,数字跑表模式。
可以手动调整时间,设定闹钟及数字跑表计时。
关键词:
FPGA;VerilogHDL;数字钟;
THEDIGITALCLOCKWITHSTOPWATCHFUCTION
ABSTRACT
Inrecentyears,therapiddevelopmentofsciencetechnology,qualityoflifeisalsorising.Traditionalclockhasbeenunabletomeettherequirementsofmodernlife.Bothintheformofmulti-functiondigitalclockorintheperformancehaschangedtheoriginalstyle.
Thedesignisbasedontheoriginaldigitalclock,onthebasisofitincreasedvariousfunctions.Notonlyhavethetime,minutes,secondscountfunction,alsoaddthefunctionofadjustingtime,thewholepointtimekeepingfunction,alarmfunctionanddigitalstopwatchfunctions.EDAtechnologyusedinthedesign,usingVerilogHDLhardwaredescriptionlanguageforlogicfunctionsinmajorfunctionalmodulesofcodetowrite.UnderQuartusIIsoftwareenvironment,usinghierarchicaldesignmethodsandmodulardesign,thetopchartestablishedbythevariousfunctionalmodulesconnectingeachother,constituteFPGA-basedmultifunctionaldigitalclock.
ThemainsystemchipofdesignexperimentboardisEP3C25Q240C8,multifunctionaldigitalclockiscomposedofthedividermodule,theclockcountingmodule,theadjusttimecontrolmodule,thealarmmodule,thewholepointtimekeepingandmusicmodule,thedataselectionmodule,thedecodingmodule,thekeytojittermoduleanddigitalstopwatchmodule.Aftertheprogramcompiledandmodulesimulation,downloadonthebreadboardvalidation,Thesystemcancompletehours,minutes,secondsdisplayproperly,throughthekeyswitchfunctionmode,enterthealarmtimesetting,adjustmenttime,digitalstopwatchmode.Youcanadjustthetimemanually,setthealarmanddigitalstopwatchtimer.
Keywords:
FPGA;VerilogHDL;Digitalclock;
目录
摘要i
ABSTRACTii
第一章绪论1
1.1基于FPGA数字钟的背景和意义1
1.2课题的研究方法和相关技术的发展1
1.3本文的研究目的和主要研究内容2
第二章FPGA简介3
2.1FPGA的原理与基本结构3
2.2FPGA设计流程3
第三章QuartusII简介4
第四章数字钟总体设计方案5
4.1数字钟的基本构成5
4.2数字钟的工作原理5
第五章数字钟的具体设计流程6
5.1本设计的顶层图6
5.2分频模块6
5.3按键去抖动模块7
5.4时钟模块8
5.4.1模式切换功能9
5.4.2时钟计数功能9
5.4.3校时控制功能10
5.4.4闹钟设定功能10
5.4.5数字跑表功能11
5.5数据选择模块11
5.6译码显示模块13
5.7闹钟音乐模块14
5.8整点报时与音乐演奏模块15
结束语17
致谢18
参考文献19
附录AFPGA器件EP3C25_V5电路板21
附录B本设计使用的EP3C25_V5管脚配置文件22
程序源代码23
第一章绪论
1.1基于FPGA数字钟的背景和意义
现今的电子产品要求功能要多样,体积越小越好,且功耗应达到最低[1]。
这与传统电子产品最主要的区别是使用了大量的可编程逻辑器件,这就提高了产品的性能,缩小了体积,降低了功耗。
同时通过先进的计算机技术,缩短了产品的研发周期。
本设计采用的EDA技术符合现代先进电子技术的诸多要求,是设计研发电子产品的新兴技术。
若人们的日常生活中没有时钟去提醒时间,造成的后果是难以想象的。
数字钟的应用非常广泛,主要用于家庭生活,以及长途车站,机场,办公室,码头等公共场所,为人们的生活起居,学习工作和娱乐提供了很大的方便。
数字钟采用的石英技术和集成电路技术促使其计时精确且性能非常稳定,同时携带起来也非常便捷。
数字钟所采用的是数字电路技术去实现时,分,秒的精确计时,比机械式时钟更具直观性和精准性,同时它的使用寿命更长,因此使用及其广泛。
数字钟不仅使钟表数字化,而且增加了原始钟表不具备的诸多功能,诸如闹钟功能,数字跑表计时功能和整点报时功能等。
这些都是基于钟表数字化的。
所以,对数字钟的研究以及拓展其功能应用很有现实意义。
1.2课题的研究方法和相关技术的发展
基于FPGA原理的理论知识,结合数字钟的相关书籍的查找,对数字钟的基本结构进行分析,利用QuartusII软件仿真,验证了理论与仿真结果的一致性。
在编译和仿真测试正确后,由QuartusII软件提供的编程器将信息下载至目标器件,对研究结果进行验证。
本课题研究把VerilogHDL硬件描述语言与可编程逻辑器件相结合,通过七段数码管显示实验结果。
多功能数字钟可以用不同的技术来实现,如单片机。
可编程逻辑器件的使用与其他方式相比具有很多优点,如易于学习,方便快捷,别致独特,趣味浓厚,更加直观,设计的成功率高,易于编程和修改添加等特点,应用异常便利。
所以本课题研究利用可编程逻辑器件来实现。
1.3本文的研究目的和主要研究内容
当今,电子系统的发展速度高,规模大,集成化。
基于逻辑综合与硬件描述语言的自顶向下的设计方法迅速发展起来。
随着科学技术的迅猛发展,人们已不满足现有的数字钟功能。
为解决当下矛盾,本课题的研究目的是完成基于FPGA的具有数字跑表功能的数字钟的设计,由数码管实时显示时,分,秒的计时,具有小时和分钟调整,整点报时,闹钟及数字跑表功能。
第二章FPGA简介
2.1FPGA的原理与基本结构
FPGA是现场可编程门阵列(FieldProgrammableGateArray)的简称[2],它的出现是用来作为一种半定制电路,不仅解决了定制电路的缺陷,又克服了原有可编程器件门电路数太少的不足。
FPGA具备掩膜可编程门阵列的通用结构,它不仅把大量的逻辑功能块组合成阵列,并且用可编程的互连资源把这些逻辑功能块连接起来,从而达到不同的设计需求。
FPGA通常由三种可编程电路与一个用来寄存编程数据的静态存储器SRAM构成[3]。
这三种可编程电路是:
可编程逻辑模块CLB(ConfigurableLogicBlock),输入/输出模块IOB(InputOutputBlock)与互连资源IR(InterconnectResource)。
可编程逻辑模块CLB是达成模块逻辑功能的根本单元,它们一般会有规则的组成一个阵列,均匀分布在整个芯片上;可编程输入/输出模块IOB通常负责完成芯片的逻辑与外部封装脚的接口工作[5];可编程互连资源包含大量不同长度的线段和可编程连接开关,它们把IOB之间或IOB、CLB之间及CLB之间衔接起来,形成具备特定功能的电路。
2.2FPGA设计流程
通常,一个比较大的集成项目应采用分层方法:
分为几大模块,各模块之间定义好接口,而后各模块再次细分来具体实现,这就是自顶向下(TOPDOWN)的设计流程。
现今,自顶向下的设计方法已经被普遍应用。
高层次设计是对系统的行为特性进行定义,一般不会涉及到工艺的实现,所以能够在厂家综合库的支持下,综合优化工具把高层次的行为描述转化为针对某种工艺优化的网络表[4],促使工艺转化变得轻而易举。
第三章QuartusII简介
QuartusII是由Altera公司提供的FPGA/CPLD软件开发集成环境,21世纪初被Altera公司推出,是由Altera公司前一代FPGA/CPLD软件集成开发环境MAX+plusII的推陈出新的新产品[2],它的运行界面友好,使用起来相当便捷。
整个设计的流程都可以在QuartusII上完成,它为开发者提供和结构无关的开发设计环境,让设计者在设计中能够进行方便地设计输入,迅速处理和器件模块的编程。
Altera公司的QuartusII软件为用户提供了完整的多平台设计开发环境,可以完成种种特定设计的需要,同时它也是单个芯片的可编程系统(SOPC)设计的综合性环境和SOPE设计的开发工具。
由于QuartusII软件设计工具内部嵌有VerilogHDL,VHDL逻辑综合器,因此它完全支持VerilogHDL,VHDL的设计流程[6]。
QuartusII软件支持分层次的设计,能够在一个新的输入环境中对使用不一样的输入设计方式实现的功能模块进行调用,因此解决了电路原理图与HDL混合输入设计带来的问题。
当设计的输入完成以后,QuartusII软件的编译器会生成设计输入的错误报告。
QuartusII软件具有卓越的设计错误定位器功能,用来确定文本中或者图形设计中产生的错误。
对于使用VHDL的设计,不妨使用QuartusII软件自带的RTLViewer观测综合后的RTL图[2]。
在进行编译后,可对设计进行时序或功能仿真。
在进行功能仿真之前,必需使用波形编辑器产生一个用来激励波形的文件。
当程序编译和功能仿真检测准确后,即可通过QuartusII软件自带的编程器把下载信息下载到目标器件中。
第四章数字钟总体设计方案
4.1数字钟的基本构成
数字钟的基本计时功能是一个对标准秒脉冲1Hz的计数电路。
因为计数从0开始,无法与当前时间相同,所以要在电路上添加一个对时间校准的电路。
为了使1Hz的秒信号时钟精准,通常使用石英晶体振荡器电路构成数字钟。
图4-1所示为数字钟的一般构成框图。
主要包括分频器电路,校时控制电路,校分控制电路和译码显示电路。
可以通过改变控制逻辑电路来不断添加和增强数字钟的功能。
图4-1数字钟的一般构成框图
4.2数字钟的工作原理
数字钟的时间基准是由振荡器产生的稳定的高频脉冲信号生成的,再经过分频器分频,产生标准秒脉冲1hz。
秒的计数从0开始,计到59后秒清零并向分的计数器进位,分计数器在进位来时加1,计到59后分清零并向小时的计数器进位,小时计数器在进位来时加1,计到23后清零。
当各计数器计满后一并清零,重新进行计数。
各计数器的输出分别送往译码显示电路进行译码显示。
当计时不准确存在误差时,可以通过校时校分电路对小时,分钟进行校对。
校时控制信号是由按键产生的。
译码显示电路由译码器完成,显示由七段数码管完成。
第五章数字钟的具体设计流程及结果验证
5.1本设计的顶层图
本设计采用自顶向下(TOP-DOWN)的设计方法。
顶层图如图5-1所示。
图5-1多功能数字钟顶层图
5.2分频模块
晶体振荡器是数字钟的核心部件,振荡器的震荡频率精度和稳定度确保时钟的计时精确与稳定[7]。
众所周知,石英晶体频率特性是很好的,它只选择一个频率点的信号,其它信号的频率段都会衰减掉,因此所提供的振荡电路输出信号是极其精准的。
然后通过对分频电路的设计,来分频得到所需要的各个频率,其设计流程框图如图5-2所示。
图5-2所需频率产生的电路框图
本设计使用的实验板提供的晶体振荡器为一个频率精准稳定的50mHz的方波信号,它的输出送给分频电路进行分频。
分频电路的模块图如图5-3所示。
图5-3分频模块图
分频模块仿真波形如图5-4所示。
图5-4分频仿真波形图
由仿真波形图分析可知:
本设计使用的晶体振荡器clk为50MHz,clk每10个脉冲形成一个脉冲,把50MHz分为了5MHz。
由于50MHz太大,被分为更小的频率从仿真图无法看出。
经过分频后输出的1khz的动态扫描信号clk1khz、100hz的标准百分秒信号clk100hz、5mhz的整点报时信号clk5mhz、8hz的闹钟音乐信号、1hz的标准秒信号clk1hz。
5.3按键去抖动模块
本设计的实验板上使用的是产生负脉冲的接法,在按下然后立即松开按键的过程中,前后沿抖动的时间大约在10ms以内。
因此我们在设计上用钟频为500Hz(周期为2ms)的5级寄存器加一个或门来避开抖动。
按键去抖动的电路原理图如图5-5所示。
图5-5按键去抖动电路原理图
该模块用来判断是否有按键按下,当有按键按下时,要消除按键产生的抖动。
功能的实现方案是判断是否有按键按下,若有按键按下,则需要延时一段时间来消除抖动,等到抖动过去之后再判断信号,若依然存在低电平信号,那就断定有按键按下,然后产生有按键按下的信号。
按键去抖动的模块图如图5-6所示。
图5-6按键去抖动模块图
按键去抖动仿真波形如图5-7所示。
图5-7按键去抖动仿真波形图
由仿真波形图分析可知:
当按键按下时,存在一段抖动信号,在抖动过后按键仍处于按下状态,此时确认按键已按下,满足了设计要求。
5.4时钟模块
时钟模块是多功能数字钟的主要部分,此次设计的时钟模块包括:
时钟计时功能,模式切换功能,校时控制功能,闹钟设定功能以及数字跑表功能。
时钟模块的逻辑框图如图5-8所示。
图5-8时钟模块图
5.4.1模式切换功能
模式切换功能主要完成数字钟的不同模式之间切换的工作,可以手动切换模式,使数字钟显示当前设定的模式。
仿真波形如图5-9所示。
图5-9模式切换仿真波形图
由仿真波形图分析可知:
key[0]为模式切换功能键。
当key[0]为0时,mode依次从0(时钟计数模式)切换为1(闹钟设定模式)、2(校时控制模式)、3(秒表模式),其结论符合模式切换的规律,逻辑电路设计正确。
5.4.2时钟计数功能
时钟计数功能完成数字钟的正常计数工作,使数字钟显示当前的时间。
仿真波形如图5-10所示。
图5-10时钟计数仿真波形图
由仿真波形图分析可知:
mode为0,当前模式为时钟计数模式。
秒计数从00开始,记到59秒后清零,分钟加1。
分钟计数从00开始,记到59后分清零,小时加1,小时计数从00开始,记到23后时清零。
其计数规律符合正常计时,逻辑电路的设计是正确的。
5.4.3校时控制功能
校时控制功能完成对数字钟不精确时的校对时间工作,可以手动校准时间,使数字钟显示当前准确的时间。
仿真波形如图5-11所示。
图5-11校时控制仿真波形图
由仿真波形图分析可知:
key[0]为模式切换功能键,key[1]为校时校分选择键,key[2]为时间校准键。
当key[0]为0时,mode依次从0(时钟计数模式)切换为1(闹钟设定模式)、2(校时控制模式),系统处于校时控制模式下。
当key[1]为0时,ledjm变为0,校分指示灯点亮,按下key[2]对分钟进行校对,当key[1]再次为0时,ledjh变为0,校时指示灯点亮,按下key[2]对小时进行校对。
当进入时钟计数模式,分钟,小时正常计数。
结论与校时校分的规律相符,逻辑电路的设计是正确的。
5.4.4闹钟设定功能
闹钟设定功能完成数字钟设置闹钟时间工作,可以手动进行闹钟时间的设定,仿真波形如图5-12所示。
图5-12闹钟设定仿真波形图
由仿真波形图分析可知:
key[0]为模式切换功能键,key[1]为校时校分选择键,key[2]为时间校准键。
当key[0]为0时,mode从0(时钟计数模式)切换为1(闹钟设定模式),系统处于闹钟设定模式下。
当key[1]为0时,ledjm变为0,校分指示灯点亮,按下key[2]对分钟进行设定,当key[1]再次为0时,ledjh变为0,校时指示灯点亮,按下key[2]对小时进行设定。
当进入时钟计数模式时,分钟,小时正常计数。
其结论符合闹钟设定的规律,逻辑电路设计正确。
5.4.5数字跑表功能
数字跑表功能完成跑表的工作,可以手动进行跑表的清零和暂停功能,仿真波形如图5-13所示。
图5-13数字跑表仿真波形图
由仿真波形图分析可知:
key[1]为跑表清零键,key[3]为跑表暂停键。
百分秒计数从00开始,记到99后百分秒清零,秒加1。
秒记到59后清零,分加1。
实现了百分秒从00到99的循环计数,秒从00到59的循环计数。
在百分秒计数过程中,按下key[3]键时,跑表暂停计数,按下key[1]键时,跑表清零。
其结论符合数字跑表的规律,逻辑电路设计正确。
5.5数据选择模块
当多功能数字钟工作时,在不同的模式下需要显示不同的数据,这需要对数据进行选择,数据选择模块的逻辑框图如图5-14所示。
图5-14数据选择模块图
数据选择模块主要完成数字钟在不同模式之间数据的选择工作,把当前模式下的数据送往译码显示模块进行译码显示,仿真波形如图5-15所示。
图5-15数据选择仿真波形图
由仿真波形图分析可知:
当mode为0时,系统处于时钟计数模式下,data(当前显示的数据)为hour:
min:
sec,即为041001。
当mode为1时,系统处于闹钟设定模式下,data(当前显示的数据)为ahour:
amin:
sec,即为081000。
当mode为2时,系统处于校时控制模式下,ledj为0,校时指示灯点亮。
data(当前显示的数据)为thour:
tmin:
sec,即为044000。
当mode为3时,系统处于秒表模式下,data(当前显示的数据)为PMIN:
PSEC:
PMSEC,即为020880。
其结论符合数据选择的规律,逻辑电路设计正确。
5.6译码显示模块
实验板上使用的是4位联体的7段共阳极数码管,如图5-16所示。
动态扫描的显示方式是数码管最广泛的应用之一[10]。
电路的接口是将数码管的8个笔划段a-h同名的端口连接到一起,而每个数码管的公共极是独立受I/O线控制的。
当要将想要显示的数据送给译码显示电路时,所有的数码管收到的字形码是相同的,但到底是那一个数码管被点亮,则取决于公共端口,但是这一端口由I/O来控制,因此可以自行决定何时显示哪一位。
所谓动态扫描是一种分时控制的方法,依次对各个数码管的公共端口进行控制,使各个数码管依次被点亮。
在数码管点亮的过程中,每位数码管的点亮时间非常短,因为发光二极管存在余辉效应和人眼的视觉暂留现象[12],虽然每个数码管并不是被同时点亮的,但只要动态扫描的速度够快,人眼就无法区分出来,看上去好像数码管一直被点亮,不会存在闪烁感[15]。
图5-16七段数码管内部连接图
译码显示模块的逻辑框图如图5-17所示。
图5-17译码显示模块图
该模块完成数据的译码,使数码管显示对应的数字工作。
仿真波形如图5-18所示。
图5-18译码显示仿真波形图
由仿真波形图分析可知:
7段数码管为共阳极,当seg_com为111110时,最右边的数码管被点亮。
seg_data显示为十六进制的C0,F9,A4,B0,99,92,82,F8,80,90,对应译码显示为0,1,2,3,4,5,6,7,8,9。
5.7闹钟音乐模块
蜂鸣器对输入信号频率的不同会发出不同音调的声音,利用这一原理,由分频器来控制蜂鸣器的发声。
分频器的预置值取决于乐曲音调的值,这就可以对蜂鸣器的发声频率进行控制。
本设计闹钟音乐选取为《猪八戒背媳妇》,其简谱如图5-19所示。
图5-19猪八戒背媳妇简谱图
由于该简谱音调太高,本设计中对其降了八度。
可以用一个分频器来产生各音符发声所需要的频率,但因为各个音符所对应的频率大多数不是整数,分频的系数又不可能为小数,所以必须对计算所得到的分频系数进行四舍五入来取整。
猪八戒背媳妇简谱中各音符对应的分频系数如表5-20所示。
表5-20各音阶频率对应的分频值
音符
分频系数
音符
分频系数
低音6
5682
中音5
3188
中音1
4777
中音6
2840
中音2
4256
高音3
1896
中音3
3791
闹钟音乐发生器的逻辑框图如图5-21所示。
图5-21闹钟音乐产生模块图
每个音符的持续时间是不同的,这取决于乐曲的演奏速度和每个音符的节拍数,tonetable模块为pulse模块提供了决定音符频率的分频预置数,此预置数所持续的时间是这个音符的节拍值。
在tonetable模块设立了一个计数器(能够计数的最大值为155,相当于有155个二分音符),此计数器的计数频率选为8Hz,因此每个计数值持续0.125秒,即每个音符的持续时间。
该模块能够完成闹钟音乐所发音符的分频预置数工作。
仿真波形如图5-22所示。
图5-22闹钟音乐产生仿真波形图
由仿真波形图分析可知:
所得的分频系数刚好为简谱的前三拍音符,验证了本模块的逻辑功能正确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 数字 跑表 功能 设计