数字时钟

数字时钟,满足时,分,秒计数

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY shuzideng IS
PORT(clk:IN STD_LOGIC;  
		a:OUT std_logic_vector(7 downto 0);
      b:out std_logic_vector(5 downto 0);
     nreset1:in std_LOGIC;
     nreset2:in std_LOGIC;
	  nreset3:in std_LOGIC
	  
	  ); 
END shuzideng;
ARCHITECTURE behave OF shuzideng  IS

signal q: INTEGER RANGE 0 TO 49999999;
signal q1: INTEGER RANGE 0 TO 159999; 

signal q2: INTEGER RANGE 0 TO 5;
signal clk1: STD_LOGIC;
signal clk2: STD_LOGIC;
signal clk3: STD_LOGIC;
signal clk4: STD_LOGIC;



signal mh: INTEGER RANGE 0 TO 5;
signal ml: INTEGER RANGE 0 TO 9;
signal fh: INTEGER RANGE 0 TO 5;
signal fl: INTEGER RANGE 0 TO 9;
signal sh: INTEGER RANGE 0 TO 2;
signal sl: INTEGER RANGE 0 TO 3;
	
BEGIN
  PROCESS(clk)
  BEGIN
     IF clk'EVENT AND clk='1'THEN 
	     IF q=49999999 THEN q<=0;clk1<='1';
		  else q<=q+1;clk1<='0';--1hz时钟信号
	     END IF;
	  END IF;
	  IF clk'EVENT AND clk='1'THEN 
	     IF q1=159999 THEN q1<=0;clk2<='1';
		  else q1<=q1+1;clk2<='0';--1khz时钟信号
	     END IF;
	  END IF;
	  
	  
	  IF clk2'EVENT AND clk2='1' THEN 
	     IF q2=5 THEN q2<=0;
		  else q2<=q2+1;
	     END IF;
	  END IF;
	 
	

	IF nreset1='0' then
	    mh<=0;ml<=0;
	
	
	ELSIF clk1'EVENT AND clk1='1' THEN --IF(ml=9)then ml<=0;
		  IF(mh=5)then mh<=0;clk3<='1';
		  else mh<=mh+1;clk3<='0';
		  end if;
		 else ml<=ml+1;
		 END IF;
	  END IF;
	
	 
	
	
	
	
	IF nreset2='0' then
	    fh<=0;fl<=0;
		 
		 
		 
	ELSIF clk3'EVENT AND clk3='1'THEN --IF(fl=9)then fl<=0;
		  IF(fh=5)then fh<=0;clk4<='1';
		  else fh<=fh+1;clk4<='0';
		  end if;
		 else fl<=fl+1;
		 END IF;
	  END IF;
	  
	 IF nreset3='0' then
	    sh<=0;sl<=0;
		  
		  
		  
	ELSIF clk4'EVENT AND clk4='1'THEN --IF(sl=3)then sl<=0;
		  IF(sh=2)then sh<=0;
		  else sh<=sh+1;
		  end if;
		 else sl<=sl+1;
		 END IF;
	  END IF;
	  
	  
	
  END PROCESS;
  
 PROCESS(q2,ml,mh,fl,fh,sl,sh)
  BEGIN  
if q2=0 THEN b<= "111110"; 
  case ml is
  when 0=>a<="00111111";
	when 1=>a<="00000110";
	when 2=>a<="01011011";
	when 3=>a<="01001111";
	when 4=>a<="01100110";
	when 5=>a<="01101101";
	when 6=>a<="01111101";
   when 7=>a<="00100111";
   when 8=>a<="01111111";
	when 9=>a<="01101111";
	when others=> null;
	end case;
elsif q2=1 THEN b<="111101";
  case mh is
    when 0=>a<="00111111";
	when 1=>a<="00000110";
	when 2=>a<="01011011";
	when 3=>a<="01001111";
	when 4=>a<="01100110";
	when 5=>a<="01101101";
	
	
	
	
	when others=> null;end case;
 elsif q2=2 THEN b<="111011"; 
   case fl is
 when 0=>a<="10111111";
	when 1=>a<="10000110";
	when 2=>a<="11011011";
	when 3=>a<="11001111";
	when 4=>a<="11100110";
	when 5=>a<="11101101";
	when 6=>a<="11111101";
   when 7=>a<="10100111";
   when 8=>a<="11111111";
	when 9=>a<="11101111";
	when others=> null;end case;
elsif q2=3 THEN b<="110111"; 
  case fh is
 when 0=>a<="00111111";
	when 1=>a<="00000110";
	when 2=>a<="01011011";
	when 3=>a<="01001111";
	when 4=>a<="01100110";
	when 5=>a<="01101101";

	
	
	when others=> null;end case;
elsif q2=4 THEN b<="101111"; 
  case sl is
 when 0=>a<="10111111";
	when 1=>a<="10000110";
	when 2=>a<="11011011";
	when 3=>a<="11001111";
	
	
	
	
	when others=> null;end case;
 elsif q2=5 THEN b<="011111"; 
  case sh is
  when 0=>a<="00111111";
	when 1=>a<="00000110";
	when 2=>a<="01011011";

	
	when others=> null;end case;
end if;
	
  END PROCESS;
  
  
  
END behave;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值