EDA闹钟系统设计Word格式.docx
- 文档编号:16837024
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:19
- 大小:187.24KB
EDA闹钟系统设计Word格式.docx
《EDA闹钟系统设计Word格式.docx》由会员分享,可在线阅读,更多相关《EDA闹钟系统设计Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
完成期限2010.3.12
指导教师
专业负责人
2010年3月8日
一、总体设计思想
1.基本原理
数字闹钟电路的基本结构由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。
秒计数器的计数时钟CLK为1Hz的标准信号。
当数字闹钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号时、分、秒的计时结果通过6个数码管来动态显示。
因此,通过模式选择信号KEY1、KEY2控制数字钟的工作状态,即控制数字钟,使其分别工作于正常计时,调整分、时和设定闹钟分、时5个状态。
当数字闹钟处于计时状态时,3个计数器允许计数,且秒、分、时计数器的计数时钟信号分别为CLK,秒的进位,分的进位;
当数字闹钟处于调整时间状态时,被调的分或时会一秒一秒地增加;
当数字钟处于闹钟定时状态时,可以设定小时和分;
当计时到所设定的时刻时,驱动扬声器,持续1分钟。
2.设计框图
二、设计步骤和调试过程
1、总体设计电路
(1)CLK为外部时钟信号,RESET为复位信号.
(2)当KEY为高电平(KEY='
1'
)时,表示用户按下数字键("
0"
~"
9"
).
(3)当ALARM_BUTTON为高电平时,表示用户按下"
ALARM"
键.
(4)当TIME_BUTTON为高电平时,表示用户按下"
(5)当LOAD_NEW_A为高电平时,控制(闹钟时间寄存器)加载新的闹钟时间值.
(6)当LOAD_NEW_C为高电平时,控制(时钟计数器)设置新的时间值.
(7)当SHOW_NEW_TIME为高电平时,控制(七段数码显示电路)显示新的时间值,即用户通过数字键输入的时间;
否则,当SHOW_NEW_TIME为低电平时,根据SHOW_A信号的值控制显示当前时间或闹钟时间.
根据设计要求及端口设置,需要五个状态来实现:
S0:
表示电路初态即正常时钟计数状态,完成前面设计功能
(1)的工作.
S1:
接收键盘输入状态.在状态S0时用户按下数字键后进入此状态.在此状态下,显示屏上显示的是用户键入的数字.
S2:
设置新的闹钟时间.在状态S1时用户按下ALARM键后进入此状态.
S3:
设置新的计时器时间.在状态S1时用户按下TIME键后进入此状态.
S4:
显示闹钟时间.在状态S0时用户直接按下ALARM键后进入此状态.
在此状态下,显示屏上显示的是所设置的闹钟时间.注意:
在此状态下,用户按下ALARM键后,显示屏上保持显示闹钟时间,经过一段时间以后,再返回状态S0。
2、模块设计和相应模块程序
(1)顶层文件:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYclockIS
PORT(CLK12MHZ:
INSTD_LOGIC;
CLK8HZ:
SPKOUT:
OUTSTD_LOGIC;
CLK:
KEY1:
KEY2:
INSTD_LOGIC_VECTOR(1DOWNTO0);
H1,H2,M1,M2,S1,S2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
END;
ARCHITECTUREoneOFclockIS
COMPONENTshizhong
PORT(clk:
instd_logic;
md1:
md2:
instd_logic_vector(1downto0);
clken:
outstd_logic;
h1,h2,m1,m2,s1,s2:
outstd_logic_vector(3downto0));
ENDCOMPONENT;
COMPONENTNoteTabs
PORT(clk:
ToneIndex:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
COMPONENTToneTaba
PORT(Index:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Tone:
OUTSTD_LOGIC_VECTOR(10DOWNTO0);
en:
instd_logic);
COMPONENTSpeakera
INSTD_LOGIC_VECTOR(10DOWNTO0);
SpkS:
OUTSTD_LOGIC);
SIGNALTone:
STD_LOGIC_VECTOR(10DOWNTO0);
SIGNALToneIndex:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALclken:
STD_LOGIC;
SIGNALen:
BEGIN
u1:
ShizhongPORTMAP(clk=>
CLK,md1=>
KEY1,md2=>
KEY2,clken=>
en,
h1=>
h1,h2=>
h2,m1=>
m1,m2=>
m2,s1=>
s1,s2=>
s2);
u2:
NoteTabsPORTMAP(clk=>
CLK8HZ,ToneIndex=>
ToneIndex);
u3:
ToneTabaPORTMAP(Index=>
ToneIndex,Tone=>
Tone,en=>
en);
u4:
SpeakeraPORTMAP(clk=>
CLK12MHZ,Tone=>
Tone,SpkS=>
SPKOUT);
END;
(2)时钟控制模块:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityshizhongis
port(clk:
md1:
instd_logic;
md2:
instd_logic_vector(1downto0);
clken:
outstd_logic;
outstd_logic_vector(3downto0));
endshizhong;
architectureoneofshizhongis
signalhou1:
std_logic_vector(3downto0);
signalhou2:
signalmin1:
signalmin2:
signalseth1:
signalseth2:
signalsetm1:
signalsetm2:
signalsec1:
signalsec2:
begin
-----------------------------------------------小时十位
h110:
process(clk,hou2,min1,min2,sec1,sec2,md1,md2)
ifclk'
eventandclk='
then
if(hou1="
0010"
andhou2="
0011"
)and(min1="
0101"
andmin2="
1001"
)
and(sec1="
andsec2="
)then
hou1<
="
0000"
;
elsifhou1="
andhou2="
andmd1='
0'
andmd2="
01"
then--当时间为23点且处于校时状态时
elsif(hou2="
and(min1="
))or(hou2="
andmd2="
then
=hou1+1;
endif;
endprocessh110;
-----------------------------------------------小时个位
h220:
process(clk,min1,min2,sec1,sec2,md1,md2,hou1)
hou2<
elsifhou2="
)
or(hou1="
--md<
='
--
elsif((min1="
)and(sec1="
))
or(md1='
=hou2+1;
--speak<
=clk;
endprocessh220;
-----------------------------------------------分钟十位
m110:
process(clk,min2,sec1,sec2,md1,md2)
if(min1="
)then
min1<
elsifmin1="
andmin2="
and(md1='
00"
)then
elsif(min2="
))
or(min2="
=min1+1;
--endif;
endprocessm110;
----------------------------------------------分钟个位
m220:
process(clk,sec1,sec2,md1,md2)
ifmin2="
min2<
elsifmin2="
elseif(sec1="
)or(md1='
=min2+1;
endprocessm220;
---------------------------------------------秒十位
s110:
process(clk)
if(sec1="
sec1<
elseifsec2="
=sec1+1;
endprocesss110;
--------------------------------------------秒个位
s220:
ifsec2="
sec2<
elsesec2<
=sec2+1;
endprocesss220;
-------------------------------------------时间设置小时部分
sethour1:
process(clk,seth2)
ifseth1="
andseth2="
seth1<
elsifseth2="
=seth1+1;
endprocesssethour1;
sethour2:
process(clk,md1,md2,seth1)
if(seth1="
)orseth2="
seth2<
elsifmd1='
=seth2+1;
endprocesssethour2;
-------------------------------------------时间设置分钟部分
setmin1:
process(clk,setm2)
ifsetm1="
andsetm2="
setm1<
elsifsetm2="
=setm1+1;
endprocesssetmin1;
setmin2:
process(clk,md1,md2)
ifsetm2="
setm2<
=setm2+1;
endprocesssetmin2;
--------------------------------------------闹铃
speaker:
process(clk,hou1,hou2,min1,min2)
ifseth1=hou1andseth2=hou2andsetm1=min1andsetm2=min2then
clken<
elseclken<
endprocessspeaker;
disp:
process(md1,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2)
ifmd1='
then---------------计时时间显示和设置模式
h1<
=hou1;
h2<
=hou2;
m1<
=min1;
m2<
=min2;
s1<
=sec1;
s2<
=sec2;
else-----------闹铃时间现实和设置模式
=seth1;
=seth2;
=setm1;
=setm2;
1111"
endprocessdisp;
endone;
(3)乐曲演奏模块:
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSpeakeraIS
ARCHITECTUREoneOFSpeakeraIS
SIGNALPreCLK,FullSpkS:
STD_LOGIC;
BEGIN
DivideCLK:
PROCESS(clk)
VARIABLECount4:
STD_LOGIC_VECTOR(3DOWNTO0);
PreCLK<
='
--将CLK进行16分频,PreCLK为CLK的16分频
IFCount4>
11THENPreCLK<
Count4:
="
ELSIFclk'
EVENTANDclk='
THENCount4:
=Count4+1;
ENDIF;
ENDPROCESS;
GenSpkS:
PROCESS(PreCLK,Tone)--11位可预置计数器
VARIABLECount11:
STD_LOGIC_VECTOR(10DOWNTO0);
IFPreCLK'
EVENTANDPreCLK='
THEN
IFCount11=16#7FF#THENCount11:
=Tone;
FullSpkS<
ELSECount11:
=Count11+1;
DelaySpkS:
PROCESS(FullSpkS)--将输出再2分频,展宽脉冲,使扬声器有足够功率发音
VARIABLECount2:
IFFullSpkS'
EVENTANDFullSpkS='
THENCount2:
=NOTCount2;
IFCount2='
THENSpkS<
ELSESpkS<
ENDIF;
ENTITYNoteTabsIS
ARCHITECTUREoneOFNoteTabsIS
COMPONENTMUSIC--音符数据ROM
PORT(address:
INSTD_LOGIC_VECTOR(7DOWNTO0);
inclock:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENT;
SIGNALCounter:
STD_LOGIC_VECTOR(7DOWNTO0);
CNT8:
PROCESS(clk,Counter)
IFCounter=138THENCounter<
00000000"
ELSIF(clk'
)THENCounter<
=Counter+1;
u1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 闹钟 系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)