数字钟课程设计报告.docx
- 文档编号:7626186
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:39
- 大小:127.17KB
数字钟课程设计报告.docx
《数字钟课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字钟课程设计报告.docx(39页珍藏版)》请在冰豆网上搜索。
数字钟课程设计报告
大连理工大学本科实验报告
题目:
数字钟
课程名称:
数字电路课程设计
学院(系):
电子信息与电气工程
专业:
电气工程及其自动化
班级:
电气1004
学生姓名:
赵高昕
学号:
201081115
完成日期:
2012/12/14
成绩:
2012年12月14日
题目:
数字钟
1设计要求
该数字钟具有如下六种功能:
(1)具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)的计时器(具有清零功能和设置起始时间功能);
(2)具有手动校时、校分、校秒的功能,利用DE2Key键,分别对每一个数码管进行校时(校正模式下,时钟处于停滞状态),校时之后的时间可以通过开关赋给24小时计数器模块和倒计时模块;
(3)定时与闹钟功能,能在设定的时间发出闹铃声(用开发板上红色的LED灯全亮来表示),程序中实现闹铃30秒;
(4)能进行零点报时,要求发出仿中央人民广播电台的整点报时信号,即从23时59分50秒起,每隔2秒钟发出一次低音“嘟”的信号,连续5次,最后一次要求高音“嘀”的信号,此信号结束即达到零点(用开发板上的绿色LED灯亮来表示);
(5)设计一个秒表,显示1%秒、60秒、手动停止,手动清零;
(6)设计一个倒计时,显示小时、分钟、秒、%1秒,可清零,可设置起始时间。
2设计分析及系统方案设计
系统总共有5个状态,分别对应设计要求中的
(1)24小时计数器
(2)时钟校准
(3)闹铃
(4)倒计时
(5)秒表
程序开始利用50MHz的时钟分别构造1Hz的时钟和100Hz的时钟。
先用50MHz时钟构造模500000计数器,用作分频产生100HZ信号,然后用100HZ信号构造模100计数器,用作分频产生1HZ信号,从而构造出周期是1秒和0.01秒的时钟。
(1)时间显示
此部分是用1HZ的时钟驱动秒的个位,然后通过进位关系分别带动其余5位时间,从而完成时间显示功能。
当清零位置‘0’时,时间一直显示为0。
(2)手动校时
此部分通过三个DE2的KEY按键来实现。
第一个是状态转换按键,通过它
来将状态转换到校时状态;第二个是校准位置选择按键,通过它来选择此时校准哪一位;第三个是对所选位置进行加一的按键。
设置好时间之后可以通过两个开关分别将设置好的时间送到正常显示模块和倒计时模块。
(3)闹铃功能
此部分通过和手动校时部分相同的操作过程来设置闹铃,系统提供一个可以打开和关闭闹铃的开关。
闹铃部分的信号是一个单独的信号,对该信号的设置并不影响时钟的正常运行。
当闹铃的小时、分钟和秒的信号分别和时钟的小时、分钟和秒的信号对应相等时,闹铃启动,进行30秒的闹铃提醒。
(4)零点报时
在正常显示24小时的状态中,当时间信号运行到23:
59:
50时,开始零点报时,程序中以驱动绿色LED灯亮来代表。
(5)秒表功能
此部分由100HZ的时钟驱动%1秒位,通过进位关系分别带动其余7位时间完成计时功能。
秒表的信号是一个单独的信号,使用秒表并不影响时钟的正常运行。
对秒表可以进行清零和暂停操作,通过两个开关来实现。
(6)倒计时功能
此部分就是24小时正常显示模块的逆过程。
用100HZ的时钟驱动%1秒的个位,然后通过退位关系分别带动其余7位完成倒计时功能。
倒计时的信号为独立的信号,使用倒计时并不影响时钟的正常运行。
倒计时设有清零位,用开关控制。
数字钟原理框图如下:
3系统以及模块硬件电路设计
(1)输入信号
clk0:
系统时钟(50MHZ)
state:
状态转换按键
positionselect:
位置选择按键
jiayi:
校准、设闹钟时对所选的位进行加一的按键
queding:
校时之后的确定开关
queding1:
设置倒计时之后再确定开关
kainaozhong:
闹钟开关控制
qingling:
秒表清零开关
zanting:
秒表暂停开关
qingling1:
正常显示的清零开关
qingling2:
倒计时的清零开关
(2)输出信号
输出到数码管显示:
bighour:
outstd_logic_vector(6downto0);--时针十位
smallhour:
outstd_logic_vector(6downto0);--时针个位
bigminute:
outstd_logic_vector(6downto0);--分针十位
smallminute:
outstd_logic_vector(6downto0);--分针个位
bigsecond:
outstd_logic_vector(6downto0);--秒针十位
smallsecond:
outstd_logic_vector(6downto0);--秒针个位
bigpercentsecond:
outstd_logic_vector(6downto0);--%1秒十位
smallpercentsecond:
outstd_logic_vector(6downto0);--%1秒个位
lednaozhong:
LED代表闹铃输出
baoshi:
零点报时指示灯1
baoshi1:
零点报时指示灯2
开发系统模式以及管脚定义如下:
4系统的VHDL设计
---------------------------------------------------
--------------------------定义库
---------------------------------------------------
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
---------------------------------------------------
--------------------------定义实体
---------------------------------------------------
entityhomeworkis
port(
---------------------------------------------
--------------------输入信号
---------------------------------------------
--1/系统时钟
clk0:
instd_logic;
--2/状态转换按键
state:
instd_logic;
--3/校准时进行位置选择的按键
positionselect:
instd_logic;
--4/校准、设闹钟时对所选的位进行加一的按键
jiayi:
instd_logic;
--5/校时之后确定开关(赋给正常显示模块)
queding:
instd_logic;
--6/设置倒计时之后再确定开关
queding1:
instd_logic;
--7/闹钟开关控制
kainaozhong:
instd_logic;
--8/秒表清零开关
qingling:
instd_logic;
--9/秒表暂停开关
zanting:
instd_logic;
--10/正常显示的清零开关
qingling1:
instd_logic;
--11/倒计时的清零开关
qingling2:
instd_logic;
-----------------------------------------------------------------
-----------------------------------------输出信号
-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------输出到数码管显示
-----------------------------------------------------------------
bighour:
outstd_logic_vector(6downto0);--时针十位
smallhour:
outstd_logic_vector(6downto0);--时针个位
bigminute:
outstd_logic_vector(6downto0);--分针十位
smallminute:
outstd_logic_vector(6downto0);--分针个位
bigsecond:
outstd_logic_vector(6downto0);--秒针十位
smallsecond:
outstd_logic_vector(6downto0);--秒针个位
bigpercentsecond:
outstd_logic_vector(6downto0);--%1秒十位
smallpercentsecond:
outstd_logic_vector(6downto0);--%1秒个位
-----------------------------------------------------------------
--LED代表闹铃输出
lednaozhong:
outstd_logic_vector(17downto0);
--零点报时指示灯1
baoshi:
outstd_logic_vector(7downto0);
--零点报时指示灯2
baoshi1:
outstd_logic
);
end;
-----------------------------------------------------------------------
-----------------------------------定义结构体
-----------------------------------------------------------------------
architectureshuzizhongofhomeworkis
-------------产生100HZ信号时的计数器
signalcnt0:
integerrange0to499999;
-------------产生1HZ信号时的计数器
signalcnt1:
integerrange0to99;
-------------100HZ信号
signalclk1:
std_logic;
-------------1HZ信号
signalclk2:
std_logic;
-----------------------------------------------------------------------
--------送数码管显示的时针,分针,秒针,%1秒信号
-----------------------------------------------------------------------
signalbh:
std_logic_vector(3downto0);--时针十位
signalsh:
std_logic_vector(3downto0);--时针个位
signalbm:
std_logic_vector(3downto0);--分针十位
signalsm:
std_logic_vector(3downto0);--分针个位
signalbs:
std_logic_vector(3downto0);--秒针十位
signalss:
std_logic_vector(3downto0);--秒针个位
signalbps:
std_logic_vector(3downto0);--%1秒十位
signalsps:
std_logic_vector(3downto0);--%1秒个位
-----------------------------------------------------------------------
---------------------状态为"000"时的时钟信号(正常显示)
-----------------------------------------------------------------------
signalbh0:
std_logic_vector(3downto0);--时针十位
signalsh0:
std_logic_vector(3downto0);--时针个位
signalbm0:
std_logic_vector(3downto0);--分针十位
signalsm0:
std_logic_vector(3downto0);--分针个位
signalbs0:
std_logic_vector(3downto0);--秒针十位
signalss0:
std_logic_vector(3downto0);--秒针个位
-----------------------------------------------------------------------
-------------------状态为"001"时的时钟信号(校准时)
-----------------------------------------------------------------------
signalbh1:
std_logic_vector(3downto0);--时针十位
signalsh1:
std_logic_vector(3downto0);--时针个位
signalbm1:
std_logic_vector(3downto0);--分针十位
signalsm1:
std_logic_vector(3downto0);--分针个位
signalbs1:
std_logic_vector(3downto0);--秒针十位
signalss1:
std_logic_vector(3downto0);--秒针个位
-----------------------------------------------------------------------
--------------状态为"010"时的时钟信号(设置闹钟时)
-----------------------------------------------------------------------
signalbh2:
std_logic_vector(3downto0);--时针十位
signalsh2:
std_logic_vector(3downto0);--时针个位
signalbm2:
std_logic_vector(3downto0);--分针十位
signalsm2:
std_logic_vector(3downto0);--分针个位
signalbs2:
std_logic_vector(3downto0);--秒针十位
signalss2:
std_logic_vector(3downto0);--秒针个位
-----------------------------------------------------------------------
--------状态为"011"时的时钟信号(设置倒计时时)
-----------------------------------------------------------------------
signalbh3:
std_logic_vector(3downto0);--时针十位
signalsh3:
std_logic_vector(3downto0);--时针个位
signalbm3:
std_logic_vector(3downto0);--分针十位
signalsm3:
std_logic_vector(3downto0);--分针个位
signalbs3:
std_logic_vector(3downto0);--秒针十位
signalss3:
std_logic_vector(3downto0);--秒针个位
signalbps3:
std_logic_vector(3downto0);--%1秒十位
signalsps3:
std_logic_vector(3downto0);--%1秒个位
-----------------------------------------------------------------------
--------------状态为"100"时的时钟信号(设置秒表)
-----------------------------------------------------------------------
signalbh4:
std_logic_vector(3downto0);--时针十位
signalsh4:
std_logic_vector(3downto0);--时针个位
signalbm4:
std_logic_vector(3downto0);--分针十位
signalsm4:
std_logic_vector(3downto0);--分针个位
signalbs4:
std_logic_vector(3downto0);--秒针十位
signalss4:
std_logic_vector(3downto0);--秒针个位
signalbps4:
std_logic_vector(3downto0);--%1秒十位
signalsps4:
std_logic_vector(3downto0);--%1秒个位
-----------------------------------------------------------------------
---------------------------------表示状态转换时的信号
-----------------------------------------------------------------------
signalstatesignal:
std_logic_vector(2downto0);
-----------------------------------------------------------------------
---------------------------------表示位置选择时的信号
-----------------------------------------------------------------------
signalpositionselectsignal:
std_logic_vector(2downto0);
-----------------------------------------------------------------------
---------------------------------程序开始
-----------------------------------------------------------------------
begin
-----------------------------------------------------------------------
---------------------------------状态转换
-----------------------------------------------------------------------
-------statesignal="000"-->正常计时
-------statesignal="001"-->校准
-------statesignal="010"-->闹钟
-------statesignal="011"-->倒计时
-------statesignal="100"-->秒表
-----------------------------------------------------------------------
process(state)
begin
if(state'eventandstate='1')then
if(statesignal="100")then
statesignal<="000";
else
statesignal<=statesignal+1;
endif;
endif;
endprocess;
-----------------------------------------------------------------------
----------------------------------校时时的位置选择
-----------------------------------------------------------------------
--------positionselectsignal="101"->秒个位
--------positionselectsignal="100"->秒十位
--------positionselectsignal="011"->分个位
--------positionselectsignal="010"->分十位
--------positionselectsignal="001"->时个位
--------positionselectsignal="000"->时十位
-----------------------------------------------------------------------
process(positionselect)
begin
if(positionselect'eventandpositionselect='1')then
if(positionselectsignal="101")then
positi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 课程设计 报告