xskz.vhd

来自「彩灯显示控制,五个花样,可独立也可循环显示」· VHDL 代码 · 共 300 行

VHD
300
字号
--显示控制电路的VHDL源程序
--XSKZ.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY XSKZ IS
  PORT(CLK:IN STD_LOGIC;
        CLR:IN STD_LOGIC;
        SET:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
        LED:OUT STD_LOGIC_VECTOR(27 DOWNTO 0));
END ENTITY XSKZ;
ARCHITECTURE ART OF XSKZ IS
TYPE STATE IS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,
               S20,S21,S22,S23,S24,S25,S26,S27,S28,S29,S30);
  SIGNAL CURRENT_STATE:STATE;
  SIGNAL FLOWER:STD_LOGIC_VECTOR(27 DOWNTO 0);
  BEGIN
  PROCESS(CLR,CLK,SET) IS
    CONSTANT F1:STD_LOGIC_VECTOR(27 DOWNTO 0):="0000001000000100000010000001";
    CONSTANT F2:STD_LOGIC_VECTOR(27 DOWNTO 0):="0000011000001100000110000011";
    CONSTANT F3:STD_LOGIC_VECTOR(27 DOWNTO 0):="0000111000011100001110000111";
    CONSTANT F4:STD_LOGIC_VECTOR(27 DOWNTO 0):="0001111000111100011110001111";
    CONSTANT F5:STD_LOGIC_VECTOR(27 DOWNTO 0):="0011111001111100111110011111";
    CONSTANT F6:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111111011111101111110111111";
    CONSTANT F7:STD_LOGIC_VECTOR(27 DOWNTO 0):="1111111111111111111111111111";
    
    CONSTANT F13:STD_LOGIC_VECTOR(27 DOWNTO 0):="0000001000000100000010000001";
    CONSTANT F12:STD_LOGIC_VECTOR(27 DOWNTO 0):="0000011000001100000110000011";
    CONSTANT F11:STD_LOGIC_VECTOR(27 DOWNTO 0):="0000111000011100001110000111";
    CONSTANT F10:STD_LOGIC_VECTOR(27 DOWNTO 0):="0001111000111100011110001111";
    CONSTANT F9:STD_LOGIC_VECTOR(27 DOWNTO 0):="0011111001111100111110011111";
    CONSTANT F8:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111111011111101111110111111";

    CONSTANT F14:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111000000100000010010001111";
    CONSTANT F15:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111001000100100010000001110";
    CONSTANT F16:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111001000100100010010001001";
    CONSTANT F17:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111001000100100000010000111";
    CONSTANT F18:STD_LOGIC_VECTOR(27 DOWNTO 0):="0110001000000100010010001111";
    CONSTANT F19:STD_LOGIC_VECTOR(27 DOWNTO 0):="0001001000100100010010001111";
    
    CONSTANT F24:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111000000100000010010001111";
    CONSTANT F23:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111001000100100010000001110";
    CONSTANT F22:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111001000100100010010001001";
    CONSTANT F21:STD_LOGIC_VECTOR(27 DOWNTO 0):="0111001000100100000010000111";
    CONSTANT F20:STD_LOGIC_VECTOR(27 DOWNTO 0):="0110001000000100010010001111";


    CONSTANT F25:STD_LOGIC_VECTOR(27 DOWNTO 0):="1110110000000000000000000000";
    CONSTANT F26:STD_LOGIC_VECTOR(27 DOWNTO 0):="1110110111011100000000000000";
    CONSTANT F27:STD_LOGIC_VECTOR(27 DOWNTO 0):="1110110111011111100110000000";
    CONSTANT F28:STD_LOGIC_VECTOR(27 DOWNTO 0):="1110110111011111100111101110";
    CONSTANT F29:STD_LOGIC_VECTOR(27 DOWNTO 0):="0000000000000000000000000000";
    CONSTANT F30:STD_LOGIC_VECTOR(27 DOWNTO 0):="1110110111011111100111101110";
--花型的定义
    BEGIN
     IF CLR='1' THEN
     CURRENT_STATE<=S0;
     ELSIF RISING_EDGE(CLK) THEN
    
  IF SET="000" THEN 
         
       CASE CURRENT_STATE IS
         WHEN S0=>
             FLOWER<="ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
             CURRENT_STATE<=S1;
         WHEN S1=>
             FLOWER<=F1;
             CURRENT_STATE<=S2;
         WHEN S2=>
             FLOWER<=F2;
             CURRENT_STATE<=S3;
         WHEN S3=>
             FLOWER<=F3;
             CURRENT_STATE<=S4;
         WHEN S4=>
             FLOWER<=F4;
             CURRENT_STATE<=S5;
         WHEN S5=>
             FLOWER<=F5;
             CURRENT_STATE<=S6;
         WHEN S6=>
             FLOWER<=F6;
             CURRENT_STATE<=S7;
         WHEN S7=>
             FLOWER<=F7;
             CURRENT_STATE<=S1;
               END CASE;
--花样1

  ELSIF SET="001" THEN    
    CASE CURRENT_STATE IS
         --WHEN S0=>
            -- FLOWER<="ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
            -- CURRENT_STATE<=S7;
         WHEN S7=>
             FLOWER<=F7;
             CURRENT_STATE<=S8;
         WHEN S8=>
             FLOWER<=F8;
             CURRENT_STATE<=S9;
         WHEN S9=>
             FLOWER<=F9;
             CURRENT_STATE<=S10;
         WHEN S10=>
             FLOWER<=F10;
             CURRENT_STATE<=S11;
         WHEN S11=>
             FLOWER<=F11;
             CURRENT_STATE<=S12;
         WHEN S12=>
             FLOWER<=F12;
             CURRENT_STATE<=S13;
         WHEN S13=>
             FLOWER<=F13;
             CURRENT_STATE<=S7;
               END CASE;
--花样2

 ELSIF SET="010" THEN 
 CASE CURRENT_STATE IS
         WHEN S0=>
             FLOWER<="ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
             CURRENT_STATE<=S14;
         WHEN S14=>
             FLOWER<=F14;
             CURRENT_STATE<=S15;
         WHEN S15=>
             FLOWER<=F15;
             CURRENT_STATE<=S16;
         WHEN S16=>
             FLOWER<=F16;
             CURRENT_STATE<=S17;
         WHEN S17=>
             FLOWER<=F17;
             CURRENT_STATE<=S18;
         WHEN S18=>
             FLOWER<=F18;
             CURRENT_STATE<=S19;
         WHEN S19=>
             FLOWER<=F19;
             CURRENT_STATE<=S14;
               END CASE;
--花样3
 
 --ELSIF SET="011" THEN 
 CASE CURRENT_STATE IS
         WHEN S0=>
             FLOWER<="ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
             CURRENT_STATE<=S19;
         WHEN S19=>
             FLOWER<=F19;
             CURRENT_STATE<=S20;
         WHEN S20=>
             FLOWER<=F20;
             CURRENT_STATE<=S21;
         WHEN S21=>
             FLOWER<=F21;
             CURRENT_STATE<=S22;
         WHEN S22=>
             FLOWER<=F22;
             CURRENT_STATE<=S23;
         WHEN S23=>
             FLOWER<=F23;
             CURRENT_STATE<=S24;
         WHEN S24=>
             FLOWER<=F24;
             CURRENT_STATE<=S19;
               END CASE;
--花样4
 ELSIF SET="100" THEN 
 CASE CURRENT_STATE IS
         WHEN S0=>
             FLOWER<="ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
             CURRENT_STATE<=S25;
         WHEN S25=>
             FLOWER<=F25;
             CURRENT_STATE<=S26;
         WHEN S26=>
             FLOWER<=F26;
             CURRENT_STATE<=S27;
         WHEN S27=>
             FLOWER<=F27;
             CURRENT_STATE<=S28;
         WHEN S28=>
             FLOWER<=F28;
             CURRENT_STATE<=S29;
         WHEN S29=>
             FLOWER<=F29;
             CURRENT_STATE<=S30;
         WHEN S30=>
             FLOWER<=F30;
             CURRENT_STATE<=S25;
               END CASE;
--花样5
 ELSIF SET="101" THEN 
 CASE CURRENT_STATE IS
         WHEN S0=>
             FLOWER<="ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
             CURRENT_STATE<=S1;
         WHEN S1=>
             FLOWER<=F1;
             CURRENT_STATE<=S2;
         WHEN S2=>
             FLOWER<=F2;
             CURRENT_STATE<=S3;
         WHEN S3=>
             FLOWER<=F3;
             CURRENT_STATE<=S4;
         WHEN S4=>
             FLOWER<=F4;
             CURRENT_STATE<=S5;
         WHEN S5=>
             FLOWER<=F5;
             CURRENT_STATE<=S6;
         WHEN S6=>
             FLOWER<=F6;
             CURRENT_STATE<=S7;
        
         WHEN S7=>
             FLOWER<=F7;
             CURRENT_STATE<=S8;
         WHEN S8=>
             FLOWER<=F8;
             CURRENT_STATE<=S9;
         WHEN S9=>
             FLOWER<=F9;
             CURRENT_STATE<=S10;
         WHEN S10=>
             FLOWER<=F10;
             CURRENT_STATE<=S11;
         WHEN S11=>
             FLOWER<=F11;
             CURRENT_STATE<=S12;
         WHEN S12=>
             FLOWER<=F12;
             CURRENT_STATE<=S13;
         WHEN S13=>
             FLOWER<=F13;
             CURRENT_STATE<=S14;

         WHEN S14=>
             FLOWER<=F14;
             CURRENT_STATE<=S15;
         WHEN S15=>
             FLOWER<=F15;
             CURRENT_STATE<=S16;
         WHEN S16=>
             FLOWER<=F16;
             CURRENT_STATE<=S17;
         WHEN S17=>
             FLOWER<=F17;
             CURRENT_STATE<=S18;
         WHEN S18=>
             FLOWER<=F18;
             CURRENT_STATE<=S19;
         WHEN S19=>
             FLOWER<=F19;
             CURRENT_STATE<=S20;

                  
         WHEN S20=>
             FLOWER<=F20;
             CURRENT_STATE<=S21;
         WHEN S21=>
             FLOWER<=F21;
             CURRENT_STATE<=S22;
         WHEN S22=>
             FLOWER<=F22;
             CURRENT_STATE<=S23;
         WHEN S23=>
             FLOWER<=F23;
             CURRENT_STATE<=S24;
         WHEN S24=>
             FLOWER<=F24;
             CURRENT_STATE<=S25;

         WHEN S25=>
             FLOWER<=F25;
             CURRENT_STATE<=S26;
         WHEN S26=>
             FLOWER<=F26;
             CURRENT_STATE<=S27;
         WHEN S27=>
             FLOWER<=F27;
             CURRENT_STATE<=S28;
         WHEN S28=>
             FLOWER<=F28;
             CURRENT_STATE<=S29;
         WHEN S29=>
             FLOWER<=F29;
             CURRENT_STATE<=S30;
         WHEN S30=>
             FLOWER<=F30;
             CURRENT_STATE<=S1;
               END CASE;
   END IF;
END IF;
  END PROCESS;
  LED<=FLOWER;
END ARCHITECTURE ART;

⌨️ 快捷键说明

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