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

📄 light.vhd

📁 这个是vhdl的彩灯实例程序
💻 VHD
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity light is
port(clk1:    in     std_logic;
     light:   buffer std_logic_vector(7 downto 0));
end light;
architecture behv of light is
   constant   len:      integer:=7;
   signal     banner:   std_logic:='0';
   signal     clk,clk2: std_logic;
   signal     s:        std_logic_vector(4 downto 0):="00000";
begin
   clk<=(clk1 and banner)or(clk2 and not banner);
   process(clk1)
   begin
       if clk1'event and clk1='1' then
             clk2<=not clk2;
       end if;
   end process;
   process(clk)
         variable  flag:bit_vector(2 downto 0):="000";
   begin
       if clk'event and clk='1' then
            if flag="000" then
                 light<='1'&light(len downto 1);
                 if light(1)='1' then
                      flag:="001";
                 end if;
            elsif flag="001" then
                 light<=light(len-1 downto 0)&'0';
                 if light(6)='0' then
                      flag:="010";
                 end if;
            
            elsif flag="010" then
                   s<=s+1;
                 if s="11111" then
                   flag:="011";
                 end if;
            case s is
            when "00000"=>light<="10101010";
            when "00001"=>light<="01010101";
            when "00010"=>light<="10101010";
            when "00011"=>light<="11110000";
            when "00100"=>light<="00001111";
            when "00101"=>light<="11001100";
            when "00110"=>light<="00110011";
            when "00111"=>light<="11101110";
            when "01000"=>light<="01110111";
            when "01001"=>light<="11000000";
            when "01010"=>light<="00110000";
            when "01011"=>light<="00001100";
            when "01100"=>light<="00000011";
            when "01101"=>light<="00001100";
            when "01110"=>light<="00110000";
            when "01111"=>light<="11000000";
            when "10000"=>light<="11100000";
            when "10001"=>light<="00111000";
            when "10010"=>light<="00011100";
            when "10011"=>light<="00001110";
            when "10100"=>light<="00000111";
            when "10101"=>light<="00001110";
            when "10110"=>light<="00011100";
            when "10111"=>light<="00111000";
            when "11000"=>light<="01110000";
            when "11001"=>light<="11100000";
            when "11010"=>light<="11110000";
            when "11011"=>light<="01111000";
            when "11100"=>light<="00111100";
            when "11101"=>light<="00011110";
            when "11110"=>light<="00001111";
            when "11111"=>light<="00111100";
            when others=>null;
            end case;
   
            elsif flag="011" then
                  light<="00000000";
                  flag:="110";
            elsif flag="110" then
                   s<="00000";
                  banner<=not banner;
                  flag:="000";
            end if;
       end if;
   end process;
end behv; 
















⌨️ 快捷键说明

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