EDA数字电子钟课程设计Word文档格式.docx
- 文档编号:22433716
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:30
- 大小:139.19KB
EDA数字电子钟课程设计Word文档格式.docx
《EDA数字电子钟课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《EDA数字电子钟课程设计Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
设计,达到对EDA技术的熟练掌握,提升对《EDA技术及应用》课程所
学内容的掌握和应用。
在本次课程设计中使用Altera公司的EPF10K10系列的FPGA芯片,
基于实验室现有的EDA实验箱,实现“电子时钟”的设计要求。
1、计数24小时的时钟
2、六位数码管显示“时-分-秒”
3、五个功能键
(1)Timer从其它状态放回时钟状态
(2)Alarm切换到闹钟时间的设定
(3)Set按一下,跳到下一个设置区
(4)Down按一下,所设置区的数字减1
(5)Up按一下,所设置区的数字加1
4、带有闹钟功能;
5、键盘的设定值要求在LED上显示。
一设计的总体方案
流程图:
第2页共23页
本多功能数字时钟由三个模块组成:
(1)时间显示模式:
24小时制显示当前时间:
小时用8与7数码管,分钟用5与4位数码管,秒由2与1位数码管表示,小时与分钟之间、分钟与秒之间用3和6位数码管显示“—”,
总计八位七段数码显示管。
此模式下显示当前时间。
(2)校时模式:
将time键置于‘0’,运用功能键set键对八位数码管进行选择,并由功能键up键进行+1与down键进行-1操作,通过此4个功能键进行校时设置。
Set->
数码管7->
数码管6->
数码管5->
数码管4->
数码管3->
数码管2->
数码管1
Up->
+1;
down->
-1;
(3)闹钟设定模式:
将time键置于‘1’,设定模式与校时时设定一样,运用功能键set键对八位数码管进行选择,并由功能键up键进行+1与down键进行-1操作,通过此4个功能键进行校时设置。
Set->
二设计的详细原理
第3页共23页
此多功能数字时钟是由多个模块组成,各个模块实现各自不同的作用,综合
起来,便是多功能数字时钟。
1、主要模块如下:
(1)输入一个250KHZ的方波信号
(2)计时模块:
将time键置于‘0’,用软件设计,当脉冲累计2500000次时secondl自动+1,以此类推,可得出数字时钟,并用8位7段对各时间进行显示。
输入:
250KHz脉冲,控制键time等
输出:
秒、分、小时
(3)校时模块:
将time键置于‘0’,运用功能键set键对八位数码管进行选择,并由功能键
up键进行+1与down键进行-1操作,通过此4个功能键进行校时设置。
time状态转换键,set数码管选定键,up+1键,down-1键输出:
设定后的秒,分,小时
(4)设定闹钟模块:
与校时操作类似,只是先将time键置于‘1’,再运用功能键set键对八位数码管进行选择,并由功能键up键进行+1与down键进行-1操作,通过此4个功能键进行校时设置
输入:
所定的闹钟时间秒,分,小时
(5)整点蜂鸣报时
运用软件进行设置,当minuteH与minuteL均为零时,蜂鸣器响,也就是没次整
点时,蜂鸣器自动响一分钟,如果想设置响的时间,可以手动改即可。
并且可以
手动按下功能键naozhong,这样就可以手动关闭蜂鸣器。
naozhong关闭蜂鸣器键
蜂鸣器发出蜂鸣声
2、功能概述
输入一个250KHZ的方波信号,运用VHDL语言对其进行编译,用计数器对方波
信号进行技术,当cnt=2500000时,secondl自动+1,不断进行累加,可以达到
实现数字钟自动计时功能。
并且此多功能数字钟设有5个功能键,
(1)time键控制显示状态,可以选择时钟状态与闹钟状态的转换
(2)naozhong键可以手动关闭蜂鸣器(3)set键可以选择需要改变的数码管,以便进行调时与设定闹钟
(4)up键对对应的数据进行+1操作(5)down键对对应的数据进行-1操作。
通
第4页共23页
过次5个功能键,便可实现多功能数字时钟,拥有计时/校时功能,设定闹钟功
能,整点报时功能。
四设计的步骤和过程
1计时模块:
ifclk_1k'
eventandclk_1k='
1'
then
cnt:
=cnt+1;
ct:
=ct+1;
ifct=1000then--1秒计时。
=0;
secondL:
=secondL+1;
ifsecondL=10then--10秒计时。
secondH:
=secondH+1;
endif;
ifsecondH=6then--1分钟计时。
minuteL:
=minuteL+1;
ifminuteL=10then--10分钟计时。
minuteH:
=minuteH+1;
ifminuteH=6then--1小计时时。
hourL:
=hourL+1;
ifhourL=10then--10小时计时。
hourH:
=hourH+1;
ifhourH=2andhourL=4then--24小时计时
次模块的主要作用是完成24小时的即时显示。
2校时模块
ifclk'
eventandclk='
then第5页共23页
d<
=set;
k<
=up;
p<
=down
iftime='
0'
if(d='
andset='
)then
stat<
=stat+1;
casestatis
when1=>
if(k='
andup='
hourH<
elsif(p='
anddown='
=hourH-1;
when2=>
if(k='
hourL<
=hourL+1;
=hourL-1;
when3=>
if(k='
minuteH<
=minuteH+1;
=minuteH-1;
when4=>
minuteL<
=minuteL+1;
=minuteL-1;
when5=>
secondH<
=secondH+1;
elsif(p='
=secondH-1;
when6=>
secondL<
=secondL+1;
=secondL-1;
whenothers=>
null;
endcase;
第6页共23页
此模块的主要功能是进行时钟初始时间的设置。
3、设定闹钟模块:
=down;
alarm_hourH<
=alarm_hourH+1;
=alarm_hourH-1;
alarm_hourL<
=alarm_hourL+1;
=alarm_hourL-1;
endif;
alarm_minuteH<
=alarm_minuteH+1;
=alarm_minuteH-1;
alarm_minuteL<
=alarm_minuteL+1;
=alarm_minuteL-1;
alarm_secondH<
=alarm_secondH+1;
=alarm_secondH-1;
alarm_secondL<
=alarm_secondL+1;
第7页共23页
=alarm_secondL-1;
此模块完成闹钟的设定。
4、显示模块设计
if(time='
)then
ahourH<
=hourH;
ahourL<
=hourL;
aminuteH<
=minuteH;
aminuteL<
=minuteL;
asecondH<
=secondH;
asecondL<
=secondL;
elsif(time='
=alarm_hourH;
=alarm_hourL;
=alarm_minuteH;
=alarm_minuteL;
=alarm_secondH;
=alarm_secondL;
casecntis--Todisplaythetime.
when0=>
L<
="
000"
;
--Enabletheleftmostdisplay.
caseahourHis
dled<
=X"
FC"
--0
60"
--1
DA"
--2
whenothers=>
null;
001"
--Enabletheseconddisplay.
caseahourLis
F2"
--3
66"
--4
when5=>
B6"
--5
BE"
--6
when7=>
E0"
--7
when8=>
FE"
--8
第8页共23页
when9=>
F6"
--9
010"
--Enablethethirddisplay.
dled<
01"
--Blanked.
011"
--Enablethefourthdisplay.
caseaminuteHis
100"
--Enablethefifthdisplay.
caseaminuteLis
101"
--Enablethesixthdisplay.
110"
--Enabletheseventhdisplay.
caseasecondHis
111"
--Enabletherightmostdisplay
caseasecondLis
第9页共23页
此模块实现数字钟的显示及闹钟设定时的显示。
五、蜂鸣器模块设计
if((hourH=alarm_hourH)and(hourL=alarm_hourL)and(minuteH=alarm_minuteH)and
(minuteL=alarm_minuteL))or((minuteH=0)and(minuteL=0))then
sound<
='
if(naozhong='
此模块实现闹钟蜂鸣以及整点蜂鸣报时。
四、设计的仿真和运行结果
(1)将time键置于‘0’,输入clk信号,可以得到时钟输出波形为:
此时时钟自动计时,并且将计时数据传送至显示管显示。
如上图asecond=second;
(2)将time键置于‘0’,输入clk信号,并将set改为20分频信号,up与down
第10页共23页
信号交叉为1,得到时钟输出波形为:
如图所示此时时间不是正常变化,因为有手动设置进行up(+1)操作和down(-1)操作,并且将时间由数码管显示。
(3)将time键置于‘1’,则显示闹钟初始调节状态:
第11页共23页
此时secondl,secondH,minuteL,minuteH,hourL,hourH不受影响,均自动计时,但
是并不由数码管进行显示,此时显示的是闹钟初定时间,这时均为0。
由于set变化,stat顺序发生变化。
(4)将time置于‘1’,并可以改变set键进行数码管选择,并用up(+1)操作和down(-1)操作,进行闹钟的初步设定。
此时可以得到时钟的初步设定。
(5)外部硬件的链接方法如图
(6)时钟显示如下图
第12页共23页
时钟图如上
闹钟初定时间如上图
第13页共23页
五课程设计的心得体会
EDA的课程设计持续了两周,但我却觉得仿佛还是当日,真是挥指之间,
时光已匆匆流逝。
在这整整两个星期的日子里,我感受到了既是成功做出一个模
块的欢喜,也是修改那无限errors时的忧愁,可以说是无数次的苦尽甘来,换来
了最后的成功。
本身我就对动手的实验相当有兴趣,这次能够拥有两周的课程设计时间,
我甚是欣慰。
从第一天开始知道我的多功能时钟课题开始,我就第一时间跑去图
书馆借资料,回去反复研究,从看懂程序开始入手。
虽然开始有些棘手,但我觉
得特别的兴奋,我不把困难当成拦路虎,反而成为我前进的动力,遇到困难不会
就翻书,找不到就问同学,再不行就上网搜,实在不行再问老师,总之想尽一切
办法找到解决方案。
可是事与愿违,我的设计总是出那么一点点的小问题,有时
候编译只出现1个error,但一改就成了20个errors了,真是让人哭笑不得,望天兴叹呀!
经过两三天的基础训练,我终于能够完整的看懂程序。
首先我将老师给我
们基本的时钟程序进行编译,封锁引脚,然后在硬件上得到正确的数码管显示。
通过这个最基本的操作,我将大体流程映入脑海,可以举一反三,再困难的程序
也不怕。
整点报时自然是最简单的,我首先就加到程序内部,其次我在网上找到了
闹钟程序,因为跟要求差距过大,所以我先读懂程序,然后根据自己理解,一步
步的加进初始的时钟程序。
这个看似很简单的过程,却整整费了4天的时间,期
间错误百出。
我先是运用了多个process,进行模块化的处理,通过这里面出现的问题我才知道敏感参数列表是不能乱设置的,single是全局变量,而variable
只能在一个process中使用等等。
后来慢慢理解了其中的原委,发现我的程序竟
如此之长,我决定要大量的删减,于是我又把多个process改成了一个,看似好像我是又回到了出发点,但我觉得这绝对是一次质的飞跃,是我能够依照我的想
法自由变换程序的映照。
当我自认为要成功的时候,我却遇到了一个相当棘手的
问题,此时error显示unkownprobleminternalerror:
”widthemismatchinrelationopreator”inebuildbinaryopanline1347offile,虽然只有一个问题,但这个问题却
第14页共23页
无法定位,以至于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字 电子钟 课程设计