大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx

上传人:b****2 文档编号:8345 上传时间:2023-04-28 格式:DOCX 页数:36 大小:120.22KB
下载 相关 举报
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第1页
第1页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第2页
第2页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第3页
第3页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第4页
第4页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第5页
第5页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第6页
第6页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第7页
第7页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第8页
第8页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第9页
第9页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第10页
第10页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第11页
第11页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第12页
第12页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第13页
第13页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第14页
第14页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第15页
第15页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第16页
第16页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第17页
第17页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第18页
第18页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第19页
第19页 / 共36页
大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx

《大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx》由会员分享,可在线阅读,更多相关《大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx(36页珍藏版)》请在冰点文库上搜索。

大连理工大学数字电路课程设计报告多功能数字时钟设计说明.docx

大连理工大学数字电路课程设计报告多功能数字时钟设计说明

大连理工大学本科实验报告

 

题目:

多功能数字时钟设计

 

课程名称:

数字电路与系统课程设计

学院(系):

信息与通信工程学院

专业:

电子信息工程

班级:

学生姓名:

学号:

完成日期:

2014年7月16日

 

2014年7月16日

题目:

多功能数字时钟设计

1设计要求

1)具有“时”、“分”、“秒”及“模式”的十进制数字显示功能;

2)具有手动校时、校分功能,并能快速调节、一键复位(复位时间12时00分00秒);

3)具有整点报时功能,从00分00秒起,亮灯十秒钟;

4)具有秒表功能(精确至百分之一秒),具有开关键,可暂停、可一键清零;

5)具有闹钟功能,手动设置时间,并可快速调节,具有开关键,可一键复位(复位时间12时00分00秒),闹钟时间到亮灯十秒钟进行提醒;

6)具有倒计时功能(精确至百分之一秒),可手动设置倒计时时间,若无输入,系统默认60秒倒计时,且具有开关键,计时时间到亮灯十秒钟进行提醒,可一键复位(复位时间默认60秒)。

2设计分析及系统方案设计

2.1模式选择模块:

按键一进行模式选择,并利用数码管显示出当前模式。

模式一:

时钟显示功能;模式二:

时钟调节功能;模式三:

闹钟功能;模式四:

秒表功能;模式五:

倒计时功能。

2.2数字钟的基本功能部分:

包括时、分、秒的显示,手动调时,以及整点报时部分。

基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。

利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。

将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。

具有复位按键1,在时钟模式下按下复位键后对时钟进行复位,复位时间12时00分00秒。

进入手动调时功能时,通过按键调节时间,每按下依次按键2,时钟时针加一,按下按键2一秒内未松手,时钟时针每秒钟加十;按键1对分针进行控制,原理与时针相同并通过译码器由七位数码管显示。

从00分00秒开始,数字钟进入整点报时功能(本设计中以一个LED灯代替蜂鸣器,进行报时),亮灯10秒钟进行提示。

2.3多功能数字钟的秒表功能部分:

计时范围从00分00.00秒至59分59.99秒。

可由复位键0异步清零,并由开关1控制计时开始与停止。

将DE2硬件中的50MHZ晶振经过分频获得周期为0.01秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示

2.4多功能数字钟的闹钟功能部分:

进入闹钟功能模式后,通过按键2(设定小时)和按键1(设定分钟)设定闹钟时间,当按下按键一秒内未松手时,可进行快速设定时间。

当时钟进入闹钟设定的时间(判断时钟的时信号时针,分针分别与闹钟设定的时信号时针、分针是否相等),则以LED灯连续亮10秒钟进行提示,并由开关0控制闹钟的开和关。

2.5多功能数字钟的倒计时功能部分:

可通过按键3(设定分针)和按键2(设定秒针)设定倒计时开始,当按下按键一秒内未松手时,可进行快速设定时间。

当没有手动时间设定时,系统默认为60秒倒计时。

倒计时的时钟与数字钟的时钟相同,每迎到一个1s时钟上升沿,则计数器减一。

计数器减至00时,分钟位、秒钟位保持为00。

倒计时结束时(即00分00秒),倒计时信号灯亮10秒钟进行提示,并由开关2控制倒计时的开始于停止。

本设计通过数据选择器控制译码器,使数码管独立显示,各功能之间互不影响。

当mode=“000”时,时钟功能,则对时钟信号进行译码,数码管显示时钟数据;

当mode=“001”时,时间校准功能,则对时钟信号进行译码,数码管显示闹钟数据;

当mode=“010”时,闹钟功能,则对闹钟信号进行译码,数码管显示闹钟信号数据;

当mode=“011”时,秒表功能,则对秒表信号进行译码,数码管显示秒表信号数据。

当mode=“100”时,则倒计时功能,对倒计时钟信号进行译码,数码管显示倒计时信号数据。

系统总体结构框图如下所示:

 

3系统以及模块硬件电路设计

3.1分频电路参数计算:

 

3.2系统硬件电路设计

系统硬件模拟图:

Sw[1]Sw[0]

Sw[0]

KEY[3]

KEY[2]

KEY[0]

KEY[1]

3.3系统与引脚分配

接口名称

类型(输入/输出)

引脚号

说明

clk

IN

PIN_N2

晶振50MHz时钟输入

selectmode

IN

PIN_W26

模式选择按键

rst

IN

PIN_G26

复位按键

add

IN

PIN_P23

高位设置键

dec

IN

PIN_N23

地位设置键

startnz

IN

PIN_N25

闹钟开关

startmb

IN

PIN_N26

秒表开关

startdjs

IN

PIN_P25

倒计时开关

lednz

OUT

PIN_AE23

闹钟提示灯

leddjs

OUT

PIN_AE22

倒计时提示灯

ledbs

OUT

PIN_Y18

整点报时提示灯

qss[6]

OUT

PIN_N9

时针高位数码管显示

qss[5]

OUT

PIN_P9

qss[4]

OUT

PIN_L7

qss[3]

OUT

PIN_L6

qss[2]

OUT

PIN_L9

qss[1]

OUT

PIN_L2

qss[0]

OUT

PIN_L3

qsg[6]

OUT

PIN_M4

时针低位数码管显示

qsg[5]

OUT

PIN_M5

qsg[4]

OUT

PIN_M3

qsg[3]

OUT

PIN_M2

qsg[2]

OUT

PIN_P3

qsg[1]

OUT

PIN_P4

qsg[0]

OUT

PIN_R2

qms[6]

OUT

PIN_W24

秒针高位数码管显示

qms[5]

OUT

PIN_U22

qms[4]

OUT

PIN_Y25

qms[3]

OUT

PIN_Y26

qms[2]

OUT

PIN_AA26

qms[1]

OUT

PIN_AA25

qms[0]

OUT

PIN_Y23

qmg[6]

OUT

PIN_Y24

秒针低位数码管显示

qmg[5]

OUT

PIN_AB25

qmg[4]

OUT

PIN_AB26

qmg[3]

OUT

PIN_AC26

qmg[2]

OUT

PIN_AC25

qmg[1]

OUT

PIN_V22

qmg[0]

OUT

PIN_AB23

qgs[6]

OUT

PIN_AB24

模式显示高位(默认全灭)

qgs[5]

OUT

PIN_AA23

qgs[4]

OUT

PIN_AA24

qgs[3]

OUT

PIN_Y22

qgs[2]

OUT

PIN_W21

qgs[1]

OUT

PIN_V21

qgs[0]

OUT

PIN_V20

模式显示低位

qgg[6]

OUT

PIN_V13

qgg[5]

OUT

PIN_V14

qgg[4]

OUT

PIN_AE11

qgg[3]

OUT

PIN_AD11

qgg[2]

OUT

PIN_AC12

qgg[1]

OUT

PIN_AB12

qgg[0]

OUT

PIN_AF10

qfs[6]

OUT

PIN_R3

分针高位数码管显示

qfs[5]

OUT

PIN_R4

qfs[4]

OUT

PIN_R5

qfs[3]

OUT

PIN_T9

qfs[2]

OUT

PIN_P7

qfs[1]

OUT

PIN_P6

qfs[0]

OUT

PIN_T2

qfg[6]

OUT

PIN_T3

分针低位数码管显示

qfg[5]

OUT

PIN_R6

qfg[4]

OUT

PIN_R7

qfg[3]

OUT

PIN_T4

qfg[2]

OUT

PIN_U2

qfg[1]

OUT

PIN_U1

qfg[0]

OUT

PIN_U9

4系统的VHDL设计

4.1顶层设计

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityliyabinis--实体声明,及系统输入与输出

port(clk,rst,add,dec,selectmode,startmb,startnz,startdjs:

instd_logic;

qgs,qgg,qss,qsg,qfs,qfg,qms,qmg:

bufferstd_logic_vector(6downto0);

ledbs,lednz,leddjs:

outstd_logic

);

end;

architecturedataofliyabinis

componentmode--模式循环模块元件例化

port(selectmode:

instd_logic;

mode:

bufferstd_logic_vector(2downto0)

);

endcomponent;

componentgnxz--功能选择模块元件例化

port(zt:

instd_logic_vector(2downto0);

sz1,sz2,sz3,sz4,sz5,sz6:

instd_logic_vector(3downto0);--时钟显示信号

mb1,mb2,mb3,mb4,mb5,mb6:

instd_logic_vector(3downto0);--秒表显示信号

nz3,nz4,nz5,nz6:

instd_logic_vector(3downto0);--闹钟显示信号

djs1,djs2,djs3,djs4,djs5,djs6:

instd_logic_vector(3downto0);--倒计时显示信号

s1,s2,s3,s4,s5,s6,s7,s8:

outstd_logic_vector(3downto0)--输出,送入显示模块用数码管进行显示

);

endcomponent;

componentfp--分频模块元件例化

port(clk,rst:

instd_logic;

clk10ms,clk100ms,clk1s:

outstd_logic);

endcomponent;

componentsz--时钟模块元件例化

port(zt:

instd_logic_vector(2downto0);

clk,clk100ms,rst,add,dec:

instd_logic;

sz1,sz2,sz3,sz4,sz5,sz6:

bufferstd_logic_vector(3downto0);

ledbs:

outstd_logic

);

endcomponent;

componentnz--闹钟模块元件例化

port(startnz,add,dec,rst,clk,clk100ms:

instd_logic;

zt:

instd_logic_vector(2downto0);

sz2,sz3,sz4,sz5,sz6:

instd_logic_vector(3downto0);--时钟显示信号

nz3,nz4,nz5,nz6:

bufferstd_logic_vector(3downto0);--闹钟显示信号]

lednz:

outstd_logic--闹钟提示灯输出

);

endcomponent;

componentmb--秒表模块元件例化

port(zt:

instd_logic_vector(2downto0);

clk,rst,startmb:

instd_logic;

mb1,mb2,mb3,mb4,mb5,mb6:

bufferstd_logic_vector(3downto0)

);

endcomponent;

componentdjs--倒计时模块元件例化

port(rst,startdjs,add,dec,clk,clk100ms:

instd_logic;

zt:

instd_logic_vector(2downto0);

djs1,djs2,djs3,djs4,djs5,djs6:

bufferstd_logic_vector(3downto0);

leddjs:

outstd_logic

);

endcomponent;

componentxs--显示模块元件例化

port(xsin:

instd_logic_vector(3downto0);--

xsout:

outstd_logic_vector(6downto0)

);

endcomponent;

signalclk10ms,clk100ms,clk1s,clk1m,clk1h:

std_logic;--分频脉冲信号级进位脉冲信号

signalsz1,sz2,sz3,sz4,sz5,sz6,sz33,sz55:

std_logic_vector(3downto0);--时钟显示信号

signalnz3,nz4,nz5,nz6:

std_logic_vector(3downto0);--闹钟显示信号

signalmb1,mb2,mb3,mb4,mb5,mb6:

std_logic_vector(3downto0);--秒表显示信号

signaldjs1,djs2,djs3,djs4,djs5,djs6:

std_logic_vector(3downto0);--倒计时显示信号

signals1,s2,s3,s4,s5,s6,s7,s8:

std_logic_vector(3downto0);--显示信号

signalzt:

std_logic_vector(2downto0);

begin--结构体

------------------------

------模式循环模块------

------------------------

u1:

modeportmap(selectmode,zt);

------------------------

------功能选择模块-----

------------------------

u2:

gnxzportmap(zt,sz1,sz2,sz3,sz4,sz5,sz6,

mb1,mb2,mb3,mb4,mb5,mb6,

nz3,nz4,nz5,nz6,

djs1,djs2,djs3,djs4,

s1,s2,s3,s4,s5,s6,s7,s8);

------------------------

--------分频模块--------

------------------------

u3:

fpportmap(clk,rst,clk10ms,clk100ms,clk1s);

------------------------

--------时钟模块--------

------------------------

u4:

szportmap(zt,clk1s,clk100ms,rst,add,dec,sz1,sz2,sz3,sz4,sz5,sz6,ledbs);

------------------------

--------闹钟模块-------

------------------------

u5:

nzportmap(startnz,add,dec,rst,clk1s,clk100ms,

zt,sz2,sz3,sz4,sz5,sz6,nz3,nz4,nz5,nz6,lednz);

------------------------

--------秒表模块--------

------------------------

u6:

mbportmap(zt,clk10ms,rst,startmb,mb1,mb2,mb3,mb4,mb5,mb6);

------------------------

--------倒计时模块------

------------------------

u7:

djsportmap(rst,startdjs,add,dec,clk10ms,clk100ms,

zt,djs1,djs2,djs3,djs4,djs5,djs6,leddjs);

-----------------------------

---------显示模块------------

-----------------------------

show1:

xsportmap(s1,qmg);

show2:

xsportmap(s2,qms);

show3:

xsportmap(s3,qfg);

show4:

xsportmap(s4,qfs);

show5:

xsportmap(s5,qsg);

show6:

xsportmap(s6,qss);

show7:

xsportmap(s7,qgg);

show8:

xsportmap(s8,qgs);

end;--结束

4.2分频模块

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfpis

port(clk,rst:

instd_logic;

clk10ms,clk100ms,clk1s:

outstd_logic);

end;

architecturedataoffpis

begin

--50兆分频,产生clk1s,作为始时钟的秒计时脉冲

process(clk,rst)

variablenum:

integerrange0to49999999;

begin

ifrst='0'then

num:

=0;

elsifrising_edge(clk)then

ifnum=49999999then

num:

=0;

clk1s<='1';

else

num:

=num+1;

clk1s<='0';

endif;

endif;

endprocess;

--5兆分频,产生clk100ms(即clk0.1s),作为快速调整时间的脉冲信号

process(clk,rst)

variablenum:

integerrange0to4999999;

begin

ifrst='0'then

num:

=0;

elsifrising_edge(clk)then

ifnum=4999999then

num:

=0;

clk100ms<='1';

else

num:

=num+1;

clk100ms<='0';

endif;

endif;

endprocess;

--5兆分频,产生clk10ms(即clk0.01s)作为秒表计时脉冲

process(clk,rst)

variablenum:

integerrange0to499999;

begin

ifrst='0'then

num:

=0;

elsifrising_edge(clk)then

ifnum=499999then

num:

=0;

clk10ms<='1';

else

num:

=num+1;

clk10ms<='0';

endif;

endif;

endprocess;

end;

4.3模式循环模块

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitymodeis--实体声明

port(selectmode:

instd_logic;

mode:

bufferstd_logic_vector(2downto0)

);

end;

architecturedataofmodeis

begin

process(selectmode)

begin

ifrising_edge(selectmode)then--模式循环计数器

ifmode="100"then

mode<="000";

elsemode<=mode+1;

endif;

endif;

endprocess;

end;

4.4功能选择模块

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitygnxzis--实体声明

port(zt:

instd_logic_vector(2downto0);

sz1,sz2,sz3,sz4,sz5,sz6:

instd_logic_vector(3downto0);--时钟显示信号

mb1,mb2,mb3,mb4,mb5,mb6:

instd_logic_vector(3downto0);--秒表显示信号

nz1,nz2,nz3,nz4,nz5,nz6:

instd_logic_vector(3downto0);--闹钟显示信号

djs1,djs2,djs3,djs4,djs5,djs6:

instd_logic_vector(3downto0);--倒计时显示信号

s1,s2,s3,s4,s5,s6,s7,s8:

outstd_logic_vector(3downto0)--输出,送入显示模块用数码管进行显示

);

end;

architecturedataofgnxzis

begin

process(zt,sz1,sz2,sz3,sz4,sz5,sz6,--选择译码器数日信号

nz3,nz4,nz5,nz6,

mb1,mb2,mb3,mb4,mb5,mb6,

djs1,djs2,djs3,djs4,djs5,djs6)

begin

ifzt="000"then--1时钟显示

s1<=sz1;s2<=sz2;s3<=sz3;s4<=sz4;s5<=sz5;s6<=sz6;s7<="0001";s8<="1111";

elsifzt="001"then--2调整

s1<=sz1;s2<=sz2;s3<=sz3;s4<=sz4;s5<=sz5;s6<=sz6;s7<="0010";s8<="1111";

elsifzt="010"then--3闹钟

s1<="0000";s2<="0000

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2