自动电子钟.doc
题目要求1.用24小时制进行时间显示;2.能够显示小时、分钟;3.每秒钟要有秒闪烁指示;4.上电后从“00:00”开始显示。设计题目自动电子钟设计过程(包括:设计方案上机设计与仿真结果硬件实验方案,及实验结果收获和体会)程序由1s信号进程、60s计数进程、60min计数进程、24小时计数进程以及显示控制进程组成。先有clk时钟信号产生1s信号,60计数进程通过1s时钟信号实现60秒计数。60min计数进程由1s时钟触发在60s计数进程控制下计数,24小时计数器由1s时钟触发在60s、60min计数进程控制下计数。最后通过显示部分输出。在时、分、秒进程中clr=0时输出为0,因此,在正常计数时,clr=1。系统仿真等见后。评定成绩指导教师评语2课程设计等级目录1课程设计题目内容与要求41.1设计内容41.2具体要求42系统设计42.1设计思路2.2系统原理(包含:框图等阐述)与设计说明内容3系统实现6注:此部分阐述具体实现,包含主要逻辑单元模块源代码等内容4系统仿真105硬件验证(操作)说明116总结1237参考书目121.课程设计题目内容与要求1.1设计内容利用各种计数器构成十进制、六十进制、十二进制等。设计一个具有显示功能的自动电子钟,具有24小时计数能用低位的进位输出构成高位的计数脉冲。并能有数字显示。1.2具体要求1.用24小时制进行时间显示;2.能够显示小时、分钟;3.每秒钟要有秒闪烁指示;4.上电后从“00:00”开始显示。2系统设计2.1设计思路通过设计要求,可以分三步来实现:(1)时钟产生部分这部分是实验板上的石英晶体(32768Hz)分频后的8Hz标准信号,作为一秒信号的输入信号。(2)设定计数部分这部分包含两个六十进制计数器和一个二十四进制计数,主要用来实现时分秒和产生6位时间信号,当clr=1时进入时分秒计数状态。4当clr=0时,输出信号为零。(3)显示部分显示部分包括一个多路选择器led、row,一个六进制计数器、一个段译码器和一个位译码器。主要是将设定计数部分产生的6位时间信息送给LED显示出来。Scanclk是六进制计数器的计数脉冲,在该计数脉冲的驱动下,六进制计数器的6个状态000B101B按顺序循环变化,其输出为q20。该q20经译码电路7段译码后产生选通6位数码管之一的scanclk信号。与此同时,q20还作为数据选择电路led、row的选择信号,选择对应位的数据。由于六进制计数器循环计数。2.2系统原理(包含:框图等阐述)与设计说明内容进程P1将8Hz标准信号分频后,产生1s脉冲信号clk1.进程P2描述60s计数器,输出秒十位和个位的BCD码。进程P3描述60min计数器,根据秒计数器的输出值,输出分钟十位和个位的BCDP1进程1s信号发生器P2进程秒计数器P3进程分钟计数器P4进程小时计数器P6进程多路选择器7段译码器P5进程LED数码管位选择信号5码。进程P4描述12h计数器,根据秒计数器和分钟计数器的输出值,输出小时十位和个位的BCD码。进程P5和进程P6根据进程产生LED数码管的位选择信号,从小时、分钟和秒中,选择一个BCD码给7段译码器。3.系统实现程序由1s信号进程、60s计数进程、60min计数进程、24小时计数进程以及显示控制进程组成。先有clk时钟信号产生1s信号,60计数进程通过1s时钟信号实现60秒计数。60min计数进程由1s时钟触发在60s计数进程控制下计数,24小时计数器由1s时钟触发在60s、60min计数进程控制下计数。最后通过显示部分输出。在时、分、秒进程中clr=0时输出为0,因此,在正常计数时,clr=1。源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYWATCHISPORT(clk,scanclk,clr,m_add,h_add:instd_logic;row:outstd_logic_vector(1downto0);led:outstd_logic_vector(7downto0);ENDWATCH;ARCHITECTUREAOFWATCHISSIGNALclk_div:std_logic_vector(2downto0);SIGNALclk1:std_logic;SIGNALh1,h0,m1,m0,s1,s0:std_logic_vector(3downto0);SIGNALdispcnt:std_logic_vector(1downto0);SIGNALnum:std_logic_vector(3downto0);6BEGINp1:PROCESS(clk)-1s信号发生器BEGINIF(clkeventandclk=1)THENclk_div<=clk_div+1;ENDIF;clk1<=clk_div(2);ENDPROCESSp1;p2:PROCESS(clk1,clr)-60s计数器BEGINIF(clr=0)THENs0<="0000";s1<="0000";ELSIF(clk1eventandclk1=1)THENIFs0="1001"thens0<="0000";ELSEs0<=s0+1;ENDIF;IF(s1="0101")and(s0="1001")THENs1<="0000";ELSIFs0="1001"THENs1<=s1+1;ENDIF;ENDIF;ENDPROCESSp2;p3:PROCESS(clk1,clr,s1,s0,m_add)-60min计数器BEGINIFclr=0THEN7m0<="0000";m1<="0000";ELSIF(clk1eventandclk1=1)THENIF(s1="0101")and(s0="1001")or(m_add=0)THENIF(m0="1001")THENm0<="0000";ELSEm0<=m0+1;ENDIF;IF(m1="0101")and(m0="1001")THENm1<="0000";ELSIFm0="1001"THENm1<=m1+1;ENDIF;ENDIF;ENDIF;ENDPROCESSp3;p4:PROCESS(clk1,clr,m1,m0,s1,s0,h_add)-24小时计数器BEGINIFclr=0thenh0<="0000";h1<="0000";ELSIF(clk1eventandclk1=1)THENIF(s1="0101")and(s0="1001")and(m1="0101")and(m0="1001")or(h_add=0)THENIF(h1="0010")and(h0="0100")or(h0="1001")THENh0<="0000";ELSE