欢迎来到天天文库
浏览记录
ID:14798558
大小:97.95 KB
页数:12页
时间:2018-07-30
《数字逻辑电路课设—简易数字钟设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数字逻辑电路课程设计报告多功能数组钟设计一、设计要求:通过MaxplusII使用VHDL语言编写设计一款多功能数字钟,具体功能如下:1、时钟时,分,秒分别显示且能正确计数。2、整点报时,时钟在将要到达整点的最后十秒,给予蜂鸣提示。3、校时,可以通过相应开关按钮对时钟的时分秒进行调整。4、闹钟,用户可以预设闹铃时刻,当时间到达该时刻时,发出蜂鸣提示。二、总体设计:高频输入1、设计框图:秒校对分校对时校对分频模块分计时模块秒计时模块时计时模块报时模块位选模块显示数码管扬声器2、外部输入输出要求:外部输入要求:输入信号有1024Hz时钟信号、低电平有效的秒清零信号CLR、低电平有效的调分信
2、号SETmin、低电平有效的调时信号SEThour;外部输出要求:整点报时信号SOUND(59分51/3/5/7秒时未500Hz低频声,59分59秒时为1kHz高频声)、时十位显示信号h1(a,b,c,d,e,f,g)、时个位显示信号h0(a,b,c,d,e,f,g)、分十位显示信号m1及分个位m0、秒十位s1及秒个位s0;数码管显示位选信号SEL0/1/2等三个信号。1、各模块功能:1)FREQ分频模块:整点报时用的1024Hz与512Hz的脉冲信号,这里的输入信号是1024Hz信号,所以只要一个二分频即可;时间基准采用1Hz输入信号直接提供(当然也可以分频取得,这里先用的是分频取
3、得的信号,后考虑到精度问题而采用硬件频率信号。2)秒计数模块SECOND:60进制,带有进位和清零功能的,输入为1Hz脉冲和低电平有效的清零信号CLR,输出秒个位、时位及进位信号CO。3)分计数模块MINUTE60进制,带有进位和置数功能的,输入为1Hz脉冲和高电平有效的使能信号EN,输出分个位、时位及进位信号CO。4)时计数模块HOUR:24进制,输入为1Hz脉冲和高电平有效的使能信号EN,输出分个位、时位。5)扫描模块SELTIME:输入为秒(含个/十位)、分、时、扫描时钟CLK1K,输出为D和显示控制信号SEL。6)整点报时功能模块ALERT:输入为分/秒信号,输出为高频声控Q
4、1K和Q500。7)译码显示功能模块DISPLAY:输入为D,输出为Q。2、VHDL程序设计:1)分频模块(使用原理图输入):1)秒模块程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitySECONDisport(clk,clr:instd_logic;sec1,sec0:outstd_logic_vector(3downto0);co:outstd_logic);endSECOND;architectureSECofSECONDisbeginprocess(clk,clr)va
5、riablecnt1,cnt0:std_logic_vector(3downto0);beginifclr='1'thencnt1:="0000";cnt0:="0000";elsifclk'eventandclk='1'thenifcnt1="0101"andcnt0="1000"thenco<='1';cnt0:="1001";elsifcnt0<"1001"thencnt0:=cnt0+1;elsecnt0:="0000";ifcnt1<"0101"thencnt1:=cnt1+1;elsecnt1:="0000";co<='0';endif;endif;endif;sec1<
6、=cnt1;sec0<=cnt0;endprocess;endSEC;3)分模块程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityMINUTEisport(clk,en:instd_logic;min1,min0:outstd_logic_vector(3downto0);co:outstd_logic);endMINUTE;architectureMINofMINUTEisbeginprocess(clk,en)variablecnt1,cnt0:std_logic_vect
7、or(3downto0);beginifclk'eventandclk='1'thenifen='1'thenifcnt1="0101"andcnt0="1000"thenco<='1';cnt0:="1001";elsifcnt0<"1001"thencnt0:=cnt0+1;elsecnt0:="0000";ifcnt1<"0101"thencnt1:=cnt1+1;elsecnt1:="0000";co<='0';endif;endif;endif;
此文档下载收益归作者所有