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

📄 clock5.vhd

📁 使用VHDL开发的简易数字时钟软件
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY clock5 IS
 PORT(clk:      IN STD_LOGIC;            --system clock,1hz
      settime:  IN STD_LOGIC;            --recivedfrom "control" module
      hourhset: IN INTEGER RANGE 0 TO 2; --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;
      weekset:  IN INTEGER RANGE 1 TO 7;
      hourhdis: OUT INTEGER RANGE 0 TO 2;--time to be sent to "display" module
      hourldis: OUT INTEGER RANGE 0 TO 9;--time from "control" module
      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;
      weekdis:  OUT INTEGER RANGE 1 TO 7);
END clock5;
ARCHITECTURE archi OF clock5 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;
  SIGNAL week: INTEGER RANGE 1 TO 7;
BEGIN
  secldis<=seclow;
  sechdis<=sechigh;
  minldis<=minlow;
  minhdis<=minhigh;
  hourldis<=hourlow;
  hourhdis<=hourhigh;
  weekdis<=week;
normal_run:      --this process finishes normal time running
  PROCESS(clk,settime)
  BEGIN
         IF settime='1' THEN
            seclow<=seclset;
            sechigh<=sechset;
            minlow<=minlset;
            minhigh<=minhset;
            hourlow<=hourlset;
            hourhigh<=hourhset;
            week<=weekset;
         ELSE
            IF clk='1' AND clk'event 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;
                            IF  week=7 THEN
                            week<=1;
                             ELSE 
                            week<=week+1;
                           END IF; 

                           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;
            --IF  week=7 AND hourlow=0 AND hourhigh=0 AND minhigh=0 AND minlow=0 AND sechigh=0 AND seclow=0 THEN
                            --week<=1;
            --ELSif hourlow=0 AND hourhigh=0 AND minhigh=0 AND minlow=0 AND sechigh=0 AND seclow=0 THEN
                            --week<=week+1;
                           --END IF; 
         END IF;
       END PROCESS;
END archi;


⌨️ 快捷键说明

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