文档详情

基于VHDL的功能数字钟的设计.doc

发布:2016-10-08约9.85千字共7页下载文档
文本预览下载声明
电子钟设计 1.摘要 本实验是设计一个多功能数字钟,具有计时、校时、清零等简单功能,在计算机上运用 Quartus II软件进行仿真调试,并下载到下载板上(ALTEA EPM7064SLI44-7)实现,通过开关来控制其主要的功能。 关键字:Quartus II,电子钟, ALTEA EPM7064SLI44-7。 2.实验设计要求与目的 设计制作一个0秒0分—59秒59分的多功能计时器,设计要求如下: 1.计时功能:完成0秒0分—59秒59分的计时功能。 2.清零功能:在板上设置一个手动清零开关,通过它可以对电路实现实时的手动清零。 3.校时功能:可随时对电路进行校时功能,并设置两个开关(a/b)控制。按下a开关时(手不松开),数字时钟的秒钟数迅速增加(4HZ的时钟频率来驱动),并按60循环,计满60后再回00。按下b开关时(手不松开),数字时钟的分钟数迅速增加(4HZ的时钟频率来驱动),并按60循环,计满60后再回00。 目的: 3.实验环境 1.软件环境:QuartusII .2 2.硬件环境:process(clk4hz ) ----clk4hz为硬件提供的时钟频率4hz begin if clk4hzevent and clk4hz=1then if count=3 then count:=0;clk1hz=1;point=clk1hz; ---clk4hz分频后1hz else count:=count+1;clk1hz=0;point=clk1hz;-----时钟频率“clk4hz”跳变四次,clk1hz时钟频率跳一次,实现分频。 end if; end if; end process; 5.2 清零功能实现 硬件上一共有四个开关,设置硬件上的一个开关为清零开关。当按下该开关时,时钟的显示全部为零。清零的程序如下: process (rst) begin if rst=0 then----这里我们设置了一个清零键“rst”当清零键为0状态时(即按下该清零键时),小时和分钟全部清零 sec1=0;----秒清零 min1=0;----分钟清零 5.3 计时功能实现 计时功能可分为两部分来实现,依次设计分位、秒位的计数单元。计时程序如下: process (clk1hz, clear,sec,min) begin if clk1hzevent and clk1hz=1 then--分频后的时钟频率来驱动 if clear=1 then------当清零键状态为“1”时(即不按清零键),计时开始。 if sec=59 then sec=0; -----当数字时钟的秒钟为59时,即刻置为零 if min=59 then min=0;-----当数字时钟的分钟为59时,即刻置为零 else min=min+1; -----当数字时钟的分钟没到59时,加1 end if; else miao1=miao1+1; 当数字时钟的秒钟没到59时,加1 end if; end if; end if; 5.4 校时功能实现 对电路进行校时功能,设置两个开关(a/b)控制。按下a开关时(手不松开),数字时钟的秒钟数迅速增加(4HZ的时钟频率来驱动),并按60循环,计满60后再回00。按下b开关时(手不松开),数字时钟的分钟数迅速增加(4HZ的时钟频率来驱动),并按60循环,计满60后再回00。校时程序如下: if a=0 then-----设置调秒钟的开关a if sec=59 then sec=0; else sec=sec+1; end if; end if; if b=0 then -----设置调分钟的开关b if min=59 then min =0; else min = min +1; end if; 这里要说明下,调时间是用4HZ的时钟频率来驱动,目的是为了调得更快些,但也不会因为过快而调不准。 5.5 BCD编码功能实现 这里我们将十进制转化为二进制,因为时钟计的数是十进制,所以我们要将十进制转成二进制。编码功能程序如下: process(min)-----分钟的BCD编码 begin case min is when 0|10|20|30|40|50=qml=0000;----当分钟的低位为0时,编码为“0000” when 1|11|21|31|41|51= qml =0001;---当分钟的低位为1时,编码为“0001” when 2|12|22|32|42|52= qml =0010;---当分钟的低位为2时,编码为“0010” when 3|13|23|33|43|53= qml =0011;
显示全部
相似文档