最近用VHDL语言写的数字钟

数字钟设计

一、实验目的:

1.熟悉和掌握基本电子计数器及数码显示的工作原理

2.能独立的完成基本电子计数器的设计,并由此设计出带一定功能的电子钟

二、实验要求

设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校准时间,每逢整点,产生报时音报时。

三、实验平台:

MAX+PLUSII10.1

四、实验过程

一)、总体思路:

   这是一个电子钟,其功能如下:可以实现正常的时钟功能,可以调整时间,整点会报时(用显示灯表示),同时还可以设置闹钟,可以显示所设的闹钟值,闹钟有分响铃(用批示灯表示)。在需要校正时间时,不需要暂停时间,可以像在手机上操作一样,用三个调整键,分别对小时调整(CHANGEH),对分钟的第一位调整(CHANGETM),对分钟的第二位调整(CHANGEM)。为了更好的操作,加一个UPDOWN键,为1时,则是每次加1,为0时,则是每次减1。对闹钟进行设置时,不影响正常的计时模块,所以不分影响准确的时间。对每一部分的操作则是通过总的控制模块来实现的。

 

 

整个数字钟的系统框图如下图所示:

 

 

 

 

该数字钟的硬件系统示意图如下图所示:

 

 

二)、模块及代码和波形图:

1、正常计时模块:

★、六进制计数器COUNT6VHDL代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY COUNT6 IS

 PORT( CLK,UPDOWN,CLR,P:IN STD_LOGIC;

       Q:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0);

       COUT:OUT STD_LOGIC);

END COUNT6;

 

ARCHITECTURE RTL OF COUNT6 IS

BEGIN

 PROCESS(CLK,CLR,P)

 BEGIN

  IF(CLR='0')THEN

    Q<="000";

    COUT<='0';

  ELSIF(CLK'EVENT)AND(CLK='1')THEN

      IF(P='0')THEN

           IF(Q="101")THEN

              Q<="000";

              COUT<='1';

           ELSE Q<=Q+1;

              COUT<='0';

           END IF;

      ELSE

        IF(UPDOWN='1')THEN

           IF(Q="101")THEN

              Q<="000";

              COUT<='0';

           ELSE Q<=Q+1;

              COUT<='0';

           END IF;

        ELSE 

           IF(Q="000")THEN

              Q<="101";

              COUT<='0';

           ELSE Q<=Q-1;

              COUT<='0';

           END IF;

        END IF;

      END IF;

  END IF;

 END PROCESS;

END RTL;

COUNT6波形仿真图:

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值