⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.vhd

📁 自动打铃系统
💻 VHD
字号:
Library IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL; 
ENTITY clock IS
 PORT(clk:     IN STD_LOGIC;   --system clock,1HZ
      settime: IN STD_LOGIC;   --received from "control"module
      hourhset: IN INTEGER RANGE 0 TO 2;--received adjuster time from"control"module
      hourlset: IN INTEGER RANGE 0 TO 9;
      minhset:  IN INTEGER RANGE 0 TO 5;
      minlset:  IN INTEGER RANGE 0 TO 9;
      sechset:  IN INTEGER RANGE 0 TO 5;
      seclset:  IN INTEGER RANGE 0 TO 9;
      hourhdis: out INTEGER RANGE 0 TO 2;--time to be sent to"display" module
      hourldis: out INTEGER RANGE 0 TO 9;
      minhdis:  out INTEGER RANGE 0 TO 5;
      minldis:  out INTEGER RANGE 0 TO 9;
      sechdis:  out INTEGER RANGE 0 TO 5;
      secldis:  out INTEGER RANGE 0 TO 9);
END clock;
ARCHITECTURE archi OF clock IS
  SIGNAL seclow,minlow,hourlow:INTEGER RANGE 0 TO 9;
  SIGNAL sechigh,minhigh:INTEGER RANGE 0 TO 5;
  SIGNAL hourhigh:INTEGER RANGE 0 TO 2;
BEGIN
   secldis<=seclow;
   sechdis<=sechigh;
   minldis<=minlow;
   minhdis<=minhigh;
   hourldis<=hourlow;
   hourhdis<=hourhigh;
normal_run: 
   PROCESS(clk,settime)
     BEGIN 
             IF settime='1' THEN
                seclow<=seclset;
                sechigh<=sechset;
                minlow<=minlset;
                minhigh<=minhset;
                hourlow<=hourlset;
                hourhigh<=hourhset; 
            ELSE 
               IF clk'event and clk='1' THEN 
                IF seclow=9 THEN
                  seclow<=0;
                  IF sechigh=5 THEN
                     sechigh<=0;
                    IF minlow=9 THEN
                      minlow<=0;
                      IF minhigh=5 THEN
                      minhigh<=0;
                        IF hourlow=9 THEN
                           hourlow<=0;
                           hourhigh<=hourhigh+1;
                          ELSIF hourlow=3 and hourhigh=2 THEN
                           hourhigh<=0;
                           hourlow<=0;
                          ELSE 
                           hourlow<=hourlow+1;
                        END IF;
                        ELSE 
                             minhigh<=minhigh+1;
                        END IF;
                       ELSE  minlow<=minlow+1;
                        END IF;
                     ELSE sechigh<=sechigh+1;
                     END IF;
                 ELSE seclow<=seclow+1;
                 END IF;
           END IF;
         END IF;
       END PROCESS;
  END archi;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -