📄 light.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 + -