a7朱单于56110305a之欧阳美创编Word下载.docx
《a7朱单于56110305a之欧阳美创编Word下载.docx》由会员分享,可在线阅读,更多相关《a7朱单于56110305a之欧阳美创编Word下载.docx(14页珍藏版)》请在冰点文库上搜索。
(4)实现闹钟功能(定时,闹响);
发挥部分:
(1)实现年月日星期功能,可与时分秒交替显示
(2)按我校现行作息时间表输出打铃信号;
工作计划
(1)时间
本课程设计时间安排为2011年1月4日至2011年1月14日,共2周
(2)进度安排
第1周周一周二:
查阅资料,拿出整体设计方案,划分模块;
第1周周三至周五:
各模块的设计、调试、验证。
第2周周三前完成项目整体调试和测试。
第2周周三周四文档写作整理
第2周周五:
答辩讨论
贺慧勇唐立军文勇军
2010年12月20日
教研室意见:
同意。
教研室主任文勇军
2010年12月23日
长沙理工大学课程设计成绩评定表
朱单于学号:
200856110305专业班级:
信号检测与处理0802
课程设计题目:
数字钟的设计
评分项目
要求
分值
得分
学习态度
学习态度认真,遵守纪律。
10
设计方案
调研充分,方案设计合理。
20
工作量
完成了任务书规定的工作量。
实际设计、调试效果好。
40
设计报告
完全符合撰写规范要求,结构严谨,逻辑性强,层次清晰,表述准确,文字流畅。
答辩
准备充分,概念清楚,能准确流利地回答各种问题。
总分
备注:
成绩:
年月日
一引言………………………………………………………………………………5
二数字钟课程设计思路……………………………………………………………5
2.1数字钟课程设计要求…………………………………………………………5
2.2数字钟课程设计安排…………………………………………………………6
2.3数字钟课程设计方案…………………………………………………………6
三数字钟课程设计过程……………………………………………………………7
3.1任务分配……………………………………………………………………7
3.2模块具体设计………………………………………………………………7
四模块设计综合实现………………………………………………………………8
4.1模块设计中遇到的问题………………………………………………………8
4.2解决模块设计中的问题………………………………………………………8
4.3模块的实现……………………………………………………………………8
五数字钟课程设计总结……………………………………………………………9
参考文献……………………………………………………………………………11
附录…………………………………………………………………………………12
引言
近年来,随着数字集成电路技术的发展,用以前传统的方法进行芯片或系统设计已不能满足要求,迫切需要提高设计效率。
能大大降低设计难度的VHDL设计方法正在被越来越广泛的采用。
现在,VHDL作为IEEE的工业标准硬件描述语言,已成为通用硬件描述语言[1]。
在这个信息高速发展的时代,时间观念也变得越来越重要,电子钟产品可谓百家争鸣,市场上到处可见一些功能齐全的设备,可能基于单片机的比较多,用FPGA设计电子钟可能比较少。
因为两个都可以实现同样的功能,而FPGA芯片的价格远比单片机高。
出于利润,当然会选择开发成本少的产品。
而本次设计的目的是为了检验所学的知识(VHDL语言)同时结合实践巩固知识,增强自己的实践操作能力,还有就是和之前用单片机实现数字钟进行比较,了解两者各自实现相同功能所具有的优势。
二数字钟课程设计思路
2.1设计要求
基本要求:
(1)24小时计时显示(时分秒)
(2)具有时间设置功能(时,分)
(3)具有整点提示功能
(4)实现闹钟功能(定时,闹响)
(1)实现年月日星期功能,可与时分秒交替显示
(2)按我校现行作息时间表输出打铃信号
由于时间原因,我们组只实现了第二个发挥部分的内容
2.2数字钟课程设计安排
(1)时间安排
查阅资料,拿出整体设计方案,划分模块
各模块的设计、调试、验证
第2周周三前完成项目整体调试和测试
2.3数字钟课程设计方案
图2-3-1设计思路框图
根据设计思路框图以及EDA设计的特点,我们组讨论分为以下几个模块:
计数器:
(1)秒计数,在频率为1Hz的时钟下以60次为循环计数,并产生进位信号影响分计数;
(2)分计数:
在秒进位信号为高电平时,计数一次,同样以60次为一个循环计数,同时产生分进位信号影响时计数;
(3)时计数:
时计数,在分进位信号为高电平时,计数一次,以24次为一个循环计数[2]
分频:
一个是产生1Hz的计数频率,一个是产生1KHZ的扫描信号频率
时间调整:
对时钟的时分的十位和个位分别进行调整
整点报时:
当时间到达整点时的5秒内进行报时
显示模块:
通过选中不同的数码管,同时进行一定频率的扫描显示时,分,秒
闹钟模块:
在设定闹钟闹铃时间后,当闹钟使能端有效时,可在闹铃时间闹铃,通过拨码开关进行停闹
学校作息时间模块:
在达到学校规定作息时间内灯亮
三数字钟课程设计过程
3.1任务分配
孔文杰:
计数器模块分频模块
谭永林:
整点报时模块
苏钢:
显示模块
韦腾:
时间调整
朱单于:
闹钟模块
学校作息时间模块
3.2模块具体设计
下面介绍我所负责模块的具体设计
先设置一个按键程序进入调节闹钟状态,然后和时钟时间进行对比,当和
时钟时间相同时灯亮,亮的时间为一分钟,同时还有控制闹钟的拨码开关,当拨码开关为高电平时,闹钟工作,为低电平时闹钟停止。
当时钟的时分达到学校的正常作息时间时,小LED灯开始亮,考虑实际情况,打铃时间要持续比较长,所以我设置为灯亮一分钟
四模块设计综合实现
4.1模块设计中遇到的问题
(1)如何进行闹钟和正常时间的切换
(2)如何设置闹钟的关闭状态
4.2解决模块设计中的问题
闹钟和正常时间的切换,我用到了一个专门按键程序进入闹钟的设置状态,也只有在这个按键按下去之后才能进行闹钟的设置,另外再设置了一个按键退出设置状态,这样就解决了闹钟和时钟的切换了,之后闹钟的关闭我最初想到的也是用按键来控制,但就得再设置两个开关分别控制开和关,这样一来就会比较麻烦,而且让电路更复杂,所以后来我又再三的思考,突然灵光一闪,想到了拨码开关,因为拨码开关就‘0’和‘1’两个状态,很好控制。
4.3模块的实现
图4-3-1学校作息时间模块仿真波形图
图4-3-2学校作息时间模块仿真波形图
由图4-3-1和图4-3-2可知,当时间为8点整(学校打铃时间)时led2为高电平即灯亮,而当时间为8点8分(非学校打铃时间)时led为低电平,即灯不亮
图4-3-3闹钟模块的波形仿真
由图4-3-4可知,当闹钟设为0点0分时,时钟到达0点0分时,拨码开关为高电平,即闹钟处于工作状态,所以led1为高电平,即灯亮。
五课程设计总结
本次课程设计,虽然只有短短的两周,但是在这两周中我学到了很多,以前EDA课堂上的知识感觉很抽象,很难以理解,而通过这次的课程设计,使我对EDA这门课程有了更深入的了解,对于所学专业有了进一步的认识,在课程设计中我们通过不断的修改调试程序,自己的分析问题解决问题的能力得到了极大的提高。
也让我更明白了实践动手操作的重要性,只有将所学的理论用于实践,才能发挥真正的作用,也只有通过实践才会更好的掌握理论知识,实践才是硬道理。
这次我还体会到了硬件设计和软件设计的区别,因为之前我们组单片机实习时设计的也是数字钟,单片机是软件编程,而EDA则属于硬件的设计,通过这两次的设计我初步感受到了两种不同方式的优缺点,单片机的优点是程序编写简单,我们较为熟悉,而不足是反应速度慢,精度不高,EDA则相反了,灵活,高速但我们对它的熟悉度不如单片机高,设计时难度就大一些。
这两者的各自比较,让我对以后的综合设计充满了期待,希望以后能将两者的优点结合起来,互补不足。
作为此次课程设计的组长,我学会了怎么样将一个工程进行分配,怎么样让组员各尽所能,我同时深刻体会到团队协作的重要性,这次也非常感谢我们组的组员对我工作的极力支持和配合,同时我自己各方面的能力也有很大的进步,比如在设计方面的思路也变得更加清晰明了,在综合调试方面也更容易发现问题的所在了。
最后还要感谢唐院长、贺老师,文老师、周老师、唐老师在此次课程设计中给予我们耐心指导,在老师的解答下,才使我们组所遇到的问题能得到圆满的解决,是老师的孜孜不倦的讲解才让我们的课程设计得以完成。
再次感谢此次课程设计中帮助过我们的所有老师和我的同学。
通过这次课程设计,我想在以后的学习中我会更加的努力,以求学到更多的知识,掌握真本事,为自己以后走向工作岗位做好前期的准备,在之后的学习中我也会更加注重实践,一定也要好好的把握这些难得的机会。
参考文献
[1]潘松黄继业EDA技术与VHDL(第三版)清华大学出版社2009年9月1—5
[2]阎石数字电子技术基础(第四版)高等教育出版社2008
[3]达正花基于EDA技术设计数字钟甘肃科技2004年10期
附录
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitynaozhongis
port(
clk:
instd_logic;
ctrlin:
instd_logic_vector(11downto8);
led1:
outstd_logic;
boma:
clr:
hour10,hour1,min10,min1:
instd_logic_vector(3downto0);
led_2:
outstd_logic
);
endnaozhong;
architecturert1ofnaozhongis
signalm10,m1,h10,h1:
std_logic_vector(3downto0);
signalth10,th1,tm10,tm1:
std_logic;
begin
process(ctrlin(11downto8),clk)
variablecnt:
integerrange0to2500000;
begin
if(clk'
eventandclk='
1'
)then
ifcnt>
1200000thencnt:
=0;
th10<
=ctrlin(8);
th1<
=ctrlin(9);
tm10<
=ctrlin(10);
tm1<
=ctrlin(11);
--延时消抖,时间要足够才不会出错
elsecnt:
=cnt+1;
endif;
endprocess;
process(clr,th1)--闹钟,小时的个位模块M60
ifclr='
0'
then
h1<
="
0000"
;
elsifth1'
eventandth1='
then--thour1沿触发
ifh1<
"
1001"
=h1+1;
else
process(clr,th10)--闹钟,小时的十位模块M60
h10<
elsifth10'
eventandth10='
then--thour10沿触发
ifh10<
0010"
=h10+1;
process(clr,tm10)--闹钟,分钟十位模块M24
begin
m10<
elsiftm10'
eventandtm10='
then--tmin10沿触发
ifm10<
0101"
m10<
=m10+1;
else
m10<
endprocess;
process(clr,tm1)--闹钟,分钟个位模块M24
m1<
elsiftm1'
eventandtm1='
then--tmin1沿触发
ifm1<
m1<
=m1+1;
endif;
process(h10,h1,m10,m1,hour10,hour1,min10,min1,boma)--闹钟灯亮
IF((hour10=h10)AND(hour1=h1)AND(min10=m10)AND(min1=m1)and(boma='
))THEN
led1<
='
--在闹钟时间,与计时器时间相符时,灯亮
led_2<
endrt1;
entitydalingis
clk_1k:
led2:
instd_logic_vector(3downto0)
enddaling;
architecturert1ofdalingis
process(clk_1k,min10,min1,hour10,hour1)--学校打铃模块
ifclk_1k'
eventandclk_1k='
if((hour10="
andhour1="
1000"
andmin10="
andmin1="
)or(hour10="
0100"
)or(hour10="
)
or(hour10="
0001"
)
or(hour10="
)or(hour10="
0110"
0111"
))then
led2<