VHDL实现数字钟课设报告[推荐]_数字钟vhdl实验报告
VHDL实现数字钟课设报告[推荐]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数字钟vhdl实验报告”。
东北大学信息学院
课程设计报告
课程设计题目:用VHDL语言实现数字钟的设计
班 级:电子1001班 学 号:20102594 姓 名:刘云飞
指导老师:李世平、李宁
设计时间:2012年12月
东北大学信息学院
摘要
随着EDA技术的发展,EDA在通信、电子等领域占有十分重要的地位。本设计介绍了基于VHDL语言的数字钟的设计。数字钟的功能是对年、月、日、时、分、秒、星期,以及闹钟时、分的预置;在正常计数时的时、分与闹钟设定的时、分相同时,实现报时,同时以stop和pa键对闹钟进行停止及延迟响铃的控制;在整点的时候led灯闪烁一下。其中,用set脉冲的不同实现对预置,正常计时,闹钟的控制。Set为1~12分别控制显示年月日、预置年月日、时分秒、星期、显示时分秒、预置闹钟时分、显示闹钟预置的时分。预置时用up的高、低电平实现对各预置量的加、减控制。将1KHZ的时钟进行分频为1HZ,实现每次脉冲为1秒。经仿真和验证显示,此数字钟切实可行,可以实现显示时间和闹钟的功能。
关键词:VHDL语言,数字钟,预置
东北大学信息学院
目录
摘 要............................................................21、设计目的.........................................................42、设计内容和要求...................................................43、设计原理.........................................................4
3.1 数字钟功能介绍..........................................................................................................4 3.2 数字钟设计原理..........................................................................................................54、VHDL程序设计.....................................................6
4.1 整体设计思路................................................................................................................6 4.2 各模块设计方法............................................................................................................7 4.2.1 顶层模块...............................................................................................................7 4.2.2 其他模块...............................................................................................................8 4.2.3 程序包模块.........................................................................................................135、仿真与分析......................................................13
5.1 仿真结果....................................................................................................................13 5.2 仿真分析....................................................................................................................166、课程设计总结....................................................167、参考文献........................................................17
东北大学信息学院
1、设计目的掌握利用可编程逻辑器件和EDA设计工具进行电子系统设计的方法。
2、设计内容和要求
用VHDL语言实现数字钟的设计,要求设计实现一个具有带预置数的数字钟,具有显示年月日时分秒的功能。用6个数码管显示时分秒,set按钮产生第一个脉冲时,显示切换年月日,第2个脉冲到来时可预置年份,第3个脉冲到来时可预置月份,依次第4、5、6、7个脉冲到来时分别可预置日期、时、分、秒,第 8个脉冲到来后预置结束,正常工作,显示的是时分秒。Up为高电平时,upclk有脉冲到达时,预置位加1。否则减1。
3、设计原理 3.1 数字钟功能介绍
数字钟具有计时、预置、报时的功能。以不同的set脉冲控制各个功能。
(1)在计时功能中,数字钟实现对年月日时分秒即星期的计时,并可以通过LED数码管分别显示年月日、或时分秒、或星期、或闹钟的时分。
(2)在预置功能中,可以通过UP键对各需要预置的量进行控制。UP=1时,进行“加”控制,UP=0时,进行“减”控制。
(3)在报时功能中,分为整点报时和设置时间报时。其中整点报时以ce作为使能输入端,在整点时灯进行一秒闪烁;设置时间报时以enable作为使能输入端,enable=1时设置时间报时功能启动,在闹钟预置时间与时钟当前时间相同时报时,若此时按下stop,闹钟立即停止并不再响铃,若按下pa,则闹钟立即停止,但三分钟后再响,如此循环5次后不再响铃,若什么都不按,闹钟响铃持续1分钟。
东北大学信息学院
3.2 数字钟设计原理
本设计功能有8个子模块:分频模块、时分秒模块、日模块、年月模块、闹钟预置模块、星期模块、响铃模块。通过元件例化由顶层文件timekeeper综合。
整体设计框图及外观图如(图 3-1)及(图3-2)
图3-1 数字钟设计整体框图
东北大学信息学院
图3-2 数字钟外观图
4、VHDL程序设计
4.1 整体设计思路
采用自上而下的方法进行整体设计。整个设计共分为8个模块,通过顶
层文件timekeeper元件例化将8个模块各个端口对应相连。在设计各个模块时所用到的其它运算方法等放于work库中,通过程序包及程序包体的方式对所使用函数进行定义。
主要使用的语句有:元件例化语句,过程语句,信号赋值语句,if语句,case语句(在状态机中)。
图(4-1)表示了个模块的连接及连接是所用到的触发器等。
东北大学信息学院
图4-1
整体结构图
4.2 各模块设计方法
4.2.1 顶层模块
顶层模块timekeeper是.对对所有模块的综合。
它包含的功能是:通过元件例化连接各模块;实现对闹钟控制位sp2的控制;实现闹钟的整点报时闪烁。
输入端:up
全局加减选择,控制预置时的加减
setpin 设定选择
东北大学信息学院
upclk 加减触发
f1000 时钟输入
输出端:a0~d1 八位数码管控制引脚的输出
z
整点报时输出 4.2.2 其他模块
1、时分秒模块
时分秒模块h_m_s是对时、分、秒正常计时(set=0 or 1 or 12)和预置时分秒(set=5 or 6 or 7)的实现。
分和秒由两个六十进制实现,时由24进制实现。当时间达到23时59分59秒时,时分秒全部归零,进位位ov由零变为1,通过管脚连接到date模块的时钟计数信号clk0,开启date模块。
2、日的模块
日的模块date实现日子进行正常计时(set=0 or 1 or 12)和预置(set=4)。
由于每月的天数与月份、年份有关,故需判断年月。(1)(2)(3)当1、3、5、7、8、10、12月时,每月31天,使用31进制。当4、6、9、11月时,每月30天,使用30进制。当2月时,分闰年和平年。闰年29天,平年28天。
闰年和平年的判断方法是:由于通过年月模块传输的年份为两位BCD码。若高位信号为“xxx0”且低位信号为“xx00”或高位信号为“xxx1”且低位信号为“xx10”,则可判定为闰年,否则为平年。
以上各月,当日期至月底时返回1,进位位ov变为1通过管脚连接年月模块的时钟计数信号clk0,开启年月模块。
3、年月模块
年月模块year_mon实现年月正常计时(set=0 or 1 or 12)和年、月的预置(set=2 or 3)。
月为12进制,当达到12时变回为1,同时使年份进1。由两位BCD码表示年份,故可以表示100年之年的所有年,为100进制。
东北大学信息学院
图4-2 year_mon和date模块的电路连接图
4、星期模块
星期模块week的功能是实现对星期的计时(set=0 or 1 or 12)和预置(set=8)。为七进制。
图4-3 week模块的RTL5、闹钟模块
东北大学信息学院
闹钟模块alarm是对闹钟时和分的预置(set=10 or 11)。时为24进制,分为60进制。
图4-3 alarm模块的RTL
另外,在顶层模块timekeeper,当闹钟预置时间与计时时间相同时(仅时、分),闹钟响铃,当不对其进行任何操作时,响铃维持1分钟。响铃方式见4.2.7响铃模块。
6、响铃模块
响铃模块alarm是对闹钟响铃的控制。其中主要包含:
Enable:当enable=1时,闹钟可以工作。
Sp2 :当顶层模块闹钟时间与计时相等时,sp2=1,响铃开启。Stop :闹钟停止并不再响铃。
Pa :闹钟停止但三分钟后再响,循环5次。Sp :响铃输出。Sp=1时响铃,sp=0时不响。本模块主要使用的方法是状态机。相应状态转换图如下:
东北大学信息学院
图 4-4 响铃模块状态转换图
在状态t_pa时,使用计数的方法实现对3分钟,5次循环的计数。
图 4-5 计数的流程图
东北大学信息学院
图4-6 speak模块的RTL7、分频模块
分频模块fenpin使输入为1KHZ时钟信号时,接入电路经分频后仍能按1HZ即1s计数。
图4-7 fenpin模块的RTL8、显示模块
显示模块led即七段数码管的显示电路。
东北大学信息学院
图4-8 led模块的RTL 4.2.3 程序包模块
程序模块是对各模块所用到的函数的定义,通过程序包package定义时、日、月、年等的增减函数(procedure),并用程序包体package body具体说明函数的内容。通过use.work.pac.all语句调用程序包,使程序书写更加方便简洁。
5、仿真与分析
5.1 仿真结果
1、h_m_s模块
东北大学信息学院
表示当up=1时,时钟时(set=5)、分(set=6)、秒(set=7)从0开始加。
图 5-12、date模块
以下为对应月份截图。另外,当日期由最末变为1时,ov进1以控制year_mon模块。
(1)大月:每月31天。
图5-2-1(2)小月:每月30天。
图5-2-2(3)平年2月:每月28天。
东北大学信息学院
图5-2-3(3)闰年2月:每月29天。
图5-2-43、year_mon模块
图5-34、week模块
前半部分up=1,为加,1~7,后半部分up=0,为减,6~1
图5-45、alarm模块
下图反映对闹钟时(set=10)、分(set=11)的预置,up=1为加。
图 5-5
6、speak模块
(1)按下pa
由下图可见,当时间相同sp为高电平;按下pa后sp变为低电平,三分钟
东北大学信息学院
后sp又为高电平。
图5-6-1(2)按下stop
由下图可见,当时间相同时sp为高电平,按下stop后sp变为低电平。
图 5-6-2
5.2 仿真分析
各模块仿真均可实现,且波形显示可以实现预想的功能。
6、课程设计总结
通过这次的课程设计,我又一次系统的复习了VHDL语言,通过实践对VHDL语言和EDA技术有了更具现实性应用性的了解,并熟练了相关软件的使用方法。
此次课程设计的内容是数字钟,我学会了如何利用元件例化将各个模块结合起来,而不是一味的想起一个功能设计一个功能,而是有一个总体的自上而下的设计,建立基本的设计框图(如图 3-1),再进行具体的设计。
在程序调试的过程中,出现了很多的问题。我发现往往是一行出现了错误导致了接下来一系列错误的出现。
还有在仿真中出现错误的红线,并出现了‘U’字符,全都是未设置初值所致。而在设置初值时仍然出现了问题。最开始我想定义一个clr信号,当clr为高电平时各功能清零,但是在实际仿真时,由于常常要看在月末或类似23时59分59秒这样的时刻是否有进位信号进为高电平,从零开始显然让仿真变的十
东北大学信息学院
分麻烦,如果可以直接赋初值到接近进位的时刻就会让仿真变得简便。即使用信号赋初值的方法对信号进行赋初值,既解决错误又利于仿真。
在最后对顶层仿真时出现了很多的问题,最后发现都是未对应的问题。当然,我的设计还有很多不足的地方。比如有一处的竞争冒险产生的毛刺没有解决。最开始是将speak模块控制信号sp2的相关程序写在了alarm模块,仿真时发现在一处出现了毛刺,在对闹钟进行预置时分时的第一个时间都未足一个时钟周期(如图 5-5)。后来我想是否因为alarm模块有两个proce进程,就将sp2的相关程序挪到了顶层模块,但是最后还是没有实现。咨询了一下同学们,他们都说这没有问题,不需要解决,所以就没有解决这个问题。
此次课程设计我学到了很多,但是我觉得应该放在刚刚考完EDA之后,那时候对只是记得比较清楚,不像在这次设计时很多知识都想不起来了。其他的对我帮助都很大。
7、参考文献李景华,杜玉远等著.可编程逻辑器件与EDA技术.沈阳:东北大学出版社,2000 2 齐怀印等.高级逻辑器件与设计.北京:电子工业出版社,1996 3 可编程逻辑器件与数字系统设计[M].北京航天航空大学出版社,1999 4 刘真,毕才术.数字逻辑与计算机设计[M ]北京:高等教育出版社,2002 5 王小军.VHDL简明教程[M].北京:清华大学出版社,1997