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

📄 cd.vhd.bak

📁 一个彩灯循环控制的VHDL程序,功能还可添加.
💻 BAK
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY cd IS
  PORT(clk:IN STD_LOGIC;
      dout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END cd;
ARCHITECTURE m OF cd IS
 SIGNAL jishu1:STD_LOGIC_VECTOR(6 DOWNTO 0);
 SIGNAL jishu2:INTEGER RANGE 0 TO 5;
 SIGNAL dout_tmp:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
   p1:PROCESS(clk)
     BEGIN
        IF(clk'EVENT AND clk='1') THEN
           IF(jishu1="101111") THEN
             jishu1<="000000";
           ELSE
             jishu1<=jishu1+1;
           END IF;
        END IF;
    END PROCESS p1;
   P2:PROCESS(jishu1)
     BEGIN
      IF(jishu1>="000000" AND jishu1<="000111") THEN jishu2<=0;
   ELSIF(jishu1>"000111" AND jishu1<="001111") THEN jishu2<=1;
   ELSIF(jishu1>"001111" AND jishu1<="010111") THEN jishu2<=2;
   ELSIF(jishu1>"010111" AND jishu1<="011111") THEN jishu2<=3;
   ELSIF(jishu1>"011111" AND jishu1<="100111") THEN jishu2<=4;
   ELSIF(jishu1>"100111" AND jishu1<="101111") THEN jishu2<=5;
   END IF;  
    END PROCESS p2;
  p3:PROCESS(jishu1,jishu2)
      
     BEGIN
        CASE jishu2 IS
           WHEN 0=> IF(jishu1="000000") THEN dout_tmp<="00000001";
                 ELSIF(jishu1="000001") THEN dout_tmp<="00000010";
                 ELSIF(jishu1="000010") THEN dout_tmp<="00000100";
                 ELSIF(jishu1="000011") THEN dout_tmp<="00001000";
                 ELSIF(jishu1="000100") THEN dout_tmp<="00010000";
                 ELSIF(jishu1="000101") THEN dout_tmp<="00100000";
                 ELSIF(jishu1="000110") THEN dout_tmp<="01000000";
                 ELSIF(jishu1="000111") THEN dout_tmp<="10000000";
                  END IF;
           WHEN 1=> IF(jishu1="001000") THEN dout_tmp<="10000000";
                 ELSIF(jishu1="001001") THEN dout_tmp<="01000000";
                 ELSIF(jishu1="001010") THEN dout_tmp<="00100000";
                 ELSIF(jishu1="001011") THEN dout_tmp<="00010000";
                 ELSIF(jishu1="001100") THEN dout_tmp<="00001000";
                 ELSIF(jishu1="001101") THEN dout_tmp<="00000100";
                 ELSIF(jishu1="001110") THEN dout_tmp<="00000010";
                 ELSIF(jishu1="001111") THEN dout_tmp<="00000001";
                  END IF;
           WHEN 2=> IF(jishu1="010000") THEN dout_tmp<="00000001";
                 ELSIF(jishu1="010001") THEN dout_tmp<="00000011";
                 ELSIF(jishu1="010010") THEN dout_tmp<="00000111";
                 ELSIF(jishu1="010011") THEN dout_tmp<="00001111";
                 ELSIF(jishu1="010100") THEN dout_tmp<="00011111";
                 ELSIF(jishu1="010101") THEN dout_tmp<="00111111";
                 ELSIF(jishu1="010110") THEN dout_tmp<="01111111";
                 ELSIF(jishu1="010111") THEN dout_tmp<="11111111";
                  END IF;
           WHEN 3=> IF(jishu1="011000") THEN dout_tmp<="11111110";
                 ELSIF(jishu1="011001") THEN dout_tmp<="11111100";
                 ELSIF(jishu1="011010") THEN dout_tmp<="11111000";
                 ELSIF(jishu1="011011") THEN dout_tmp<="11110000";
                 ELSIF(jishu1="011100") THEN dout_tmp<="11100000";
                 ELSIF(jishu1="011101") THEN dout_tmp<="11000000";
                 ELSIF(jishu1="011110") THEN dout_tmp<="10000000";
                 ELSIF(jishu1="011111") THEN dout_tmp<="00000000";
                  END IF;
           WHEN 4=> IF(jishu1="100000") THEN dout_tmp<="10000000";
                 ELSIF(jishu1="100001") THEN dout_tmp<="11000000";
                 ELSIF(jishu1="100010") THEN dout_tmp<="11100000";
                 ELSIF(jishu1="100011") THEN dout_tmp<="11110000";
                 ELSIF(jishu1="100100") THEN dout_tmp<="11111000";
                 ELSIF(jishu1="100101") THEN dout_tmp<="11111100";
                 ELSIF(jishu1="100110") THEN dout_tmp<="11111110";
                 ELSIF(jishu1="100111") THEN dout_tmp<="11111111";
                  END IF;
           WHEN 5=> IF(jishu1="101000") THEN dout_tmp<="01111111";
                 ELSIF(jishu1="101001") THEN dout_tmp<="00111111";
                 ELSIF(jishu1="101010") THEN dout_tmp<="00011111";
                 ELSIF(jishu1="101011") THEN dout_tmp<="00001111";
                 ELSIF(jishu1="101100") THEN dout_tmp<="00000111";
                 ELSIF(jishu1="101101") THEN dout_tmp<="00000011";
                 ELSIF(jishu1="101110") THEN dout_tmp<="00000001";
                 ELSIF(jishu1="101111") THEN dout_tmp<="00000000";
                  END IF;
           WHEN OTHERS=>NULL;
        END CASE;
      dout<=dout_tmp;
     END PROCESS p3;
END m;

⌨️ 快捷键说明

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