多功能数字钟Word文件下载.docx
《多功能数字钟Word文件下载.docx》由会员分享,可在线阅读,更多相关《多功能数字钟Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
项目三
项目四
总分
满分
得分
评阅人
课程设计任务书
1、作业目的
通过EDA课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。
2、作业内容及要求
掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。
设计一个24小时制的数字钟。
要求:
能显示时、分、秒。
要求时、分、秒。
能各自独立的进行调整。
能利用喇叭作整点报时。
具能有清零功能。
3、作业成果形式及提交要求
当场演示实物,提交实物和论文。
实物必须说明能实现什么样的功能,论文必须严谨,必须叙述清楚各种模块的组成和作用。
4、参考文献
[1]潘松,黄继业.EDA技术实用教程.北京:
科学出版社,2005
[2]徐志军,王金明.EDA技术与PLD设计.北京:
人民邮电出版社,2006
[3]徐志军,王金明.EDA技术与VHDL设计.北京:
电子工业出版社,2009
目录
一、课程设计的性质、目的和任务……………………………2
二、课程设计基本要求…………………………………………2
三、设计课题要求………………………………………………2
四、课程设计所需要仪器………………………………………3
五、设计步骤……………………………………………………3
1、模块介绍……………………………………………………3
2、各个模块的设计与仿真……………………………………3
2.1秒模块…………………………………………………………3
2.2分模块…………………………………………………………4
2.3时模块…………………………………………………………5
2.4报时模块………………………………………………………7
2.5整体模块电路…………………………………………………8
六、引脚锁定……………………………………………………8
七、调试中遇到的问题及解决的方法…………………………8
八、心得体会……………………………………………………9
九、参考文献……………………………………………………9
一、课程设计的性质、目的和任务
创新精神和实践能力二者之中,实践能力是基础和根本。
这是由于创新基于实践、源于实践,实践出真知,实践检验真理。
实践活动是创新的源泉,也是人才成长的必由之路。
通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。
二、课程设计基本要求
掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。
三、设计课题要求
(1)构造一个24小时制的数字钟。
要求能显示时、分、秒。
(2)要求时、分、秒能各自独立的进行调整。
(3)能利用喇叭作整点报时。
(4)能有清零功能。
#设计提示(仅供参考):
(1)对频率输入的考虑
数字钟内所需的时钟频率有:
基准时钟应为周期一秒的标准信号。
报时频率可选用1KHz和2KHz左右(两种频率相差八度音,即频率相差一倍)。
另外,为防止按键反跳、抖动,微动开关输入应采用寄存器输入形式,其时钟应为几十赫兹。
(2)计时部分计数器设计的考虑
分、秒计数器均为模60计数器。
小时计数为模24计数器,同理可建一个24进制计数器的模块。
(3)校时设计的考虑
数字钟校准有3个控制键:
时校准、分校准和秒校准。
(4)报时设计的考虑
可以将高频时钟分频得到约2KHz和1KHz的音频,作为数字钟的报时频率。
当电子钟显示XX:
59:
59时,数字钟开始报时“DO"
,持续一秒,直至显示XX:
00:
00,持续一秒后停止。
最后输出至喇叭。
应调用元件库中的逻辑门建一个控制报时的模块。
四、课程设计所需要仪器
1、计算机一台
2、quartusⅡ软件
3、FPGA开发板
五、设计步骤
1、模块介绍
(1)秒模块:
产生1Hz的计数、生成60进制
(2)分模块:
生成60进制
(3)时模块:
24进制计数器
(4)报时模块:
进行整点报时
2、各个模块的设计与仿真
2.1秒模块
程序代码:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitymiaois
port(clk,clr:
instd_logic;
--时钟/清零信号
sec1,sec0:
outstd_logic_vector(3downto0);
--秒高位/低位
co:
outstd_logic);
--输出/进位信号
endmiao;
architectureSECofmiaois
begin
process(clk,clr)
variablecnt1,cnt0:
std_logic_vector(3downto0);
--计数
ifclr='
1'
then--当ckr为1时,高低位均为0
cnt1:
="
0000"
;
cnt0:
elsifclk'
eventandclk='
then
ifcnt1="
0101"
andcnt0="
1000"
then--当记数为58(实际是经过59个记时脉冲)
co<
='
--进位
1001"
--低位为9
elsifcnt0<
"
then--小于9时
=cnt0+1;
else
ifcnt1<
then--高位小于5时
=cnt1+1;
0'
endif;
sec1<
=cnt1;
sec0<
=cnt0;
endprocess;
endSEC;
输入模块电路图:
2.2分模块
由秒计数器,分计数器,时计数器组成了最基本的数字钟计时电路,两个六十进制计数器与二十四进制计数器组合构成。
useieee.std_logic_1164.all;
entityMINUTEis
port(en,setmin,clr,clk:
MIN1,MIN0:
endMINUTE;
architectureMINofMINUTEis
process(en,setmin,clr,clk)
elsif(clk'
)then
if(en='
orsetmin='
endiF;
MIN1<
MIN0<
endMIN;
2.3时模块
entityhouris
port(reset,en,sethour,clk:
instd_logic;
daout:
outstd_logic_vector(7downto0));
endHOUR;
architecturebehavofHOURis
signalcount:
std_logic_vector(3downto0);
signalcounter:
p1:
process(reset,sethour,en)
ifreset='
count<
counter<
elsif(clk'
if(en='
orsethour='
if(counter<
2)then
if(count=9)then
=counter+1;
else
=count+1;
endif;
if(count=3)then
endif;
endprocess;
daout(7downto4)<
=counter;
daout(3downto0)<
=count;
endbehav;
2.4报时模块
entityxzis
port(a:
clk1:
b:
endxz;
architectureSEofxzis
signaltemp:
std_logic;
process(a,clk1)
if(a='
temp<
=clk1;
--else
--temp<
endproces