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

📄 counter.vhd

📁 六十进制计数器.电子万年历是计数器的应用之一.年由月的十二进制计数器进位+1得到.月是日的三十进制计数器进位+1得到.日是小时的二十四进制计数器进位+1得到.小时是分的六十进制计数器进位+1得到.分是
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY COUNTER IS 
PORT
    (CLK,CIN,BCD1WR,BCD10WR:IN STD_LOGIC;
     DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
     CO:OUT STD_LOGIC;
     BCD1OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
     BCD10OUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)
    );
END COUNTER;

ARCHITECTURE A OF COUNTER IS 
SIGNAL BCD1N:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL BCD10N:STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
   BCD1OUT<=BCD1N;
   BCD10OUT<=BCD10N;
   PROCESS(CLK,BCD1WR)
      BEGIN
      IF BCD1WR='1' THEN
          BCD1N<=DATAIN;
      ELSIF CLK' EVENT AND CLK='1' THEN
           IF CIN='1' THEN
              IF BCD1N=9 THEN
                 BCD1N<="0000";
              ELSE
                 BCD1N<=BCD1N+1;
              END IF ;
           END IF;
      END IF;
      END PROCESS;
   PROCESS(CLK,BCD10WR)
      BEGIN
      IF BCD10WR='1' THEN
           BCD10N<=DATAIN(2 DOWNTO 0);
      ELSIF CLK'EVENT AND CLK='1' THEN
           IF CIN='1' AND BCD1N=9 THEN
              IF BCD10N=5 THEN
                  BCD10N<="000";
              ELSE
                  BCD10N<=BCD10N+1;
              END IF;
           END IF;
      END IF;
      END PROCESS;
   PROCESS(BCD1N,BCD10N,CIN)
      BEGIN
      IF CIN='1' AND BCD1N=9 AND BCD10N=5 THEN
          CO<='1';
      ELSE
          CO<='0';
      END IF ;
      END PROCESS;
END A ;

⌨️ 快捷键说明

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