锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

FPGA流星雨灯的VHDL程序

时间:2024-05-17 07:37:10

用6个灯制造流星的效果程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity deng50 is
port(clk:in std_logic;
d0,d1,d2,d3,d4,d5:out std_logic);
end deng50;
architecture deng of deng50 is
signal q0:std_logic_vector(24 downto 0);
signal qq0:std_logic_vector(13 downto 0);
signal qq1:std_logic_vector(2 downto 0);
signal c0: std_logic;
begin
process(clk)
begin
if clk'event and clk='1' then
if q0=4500000 then q0<="0000000000000000000000000";c0<='1';
else q0<=q0+1;c0<='0';
end if;
if qq0=13650 then qq0<="00000000000000";
else qq0<=qq0+1;
end if;
end if;
if c0'event and c0='1' then qq1<=qq1+1;
if qq1=7 then qq1<="000";end if;
end if;
case qq1 is
when "000"=>
if qq0<5 then d1<='0';else d1<='0';end if;
if qq0<30 and qq0>10 then d2<='0';else d2<='0';end if;
if qq0<130 and qq0>50 then d3<='0';else d3<='0';end if;
if qq0<530 and qq0>210 then d4<='0';else d4<='0';end if;
if qq0<2210 and qq0>850 then d5<='0';else d5<='0';end if;
if qq0<13650 and qq0>3410 then d0<='1';else d0<='0';end if;
when "001"=>
if qq0<5 then d2<='0';else d2<='0';end if;
if qq0<30 and qq0>10 then d3<='0';else d3<='0';end if;
if qq0<130 and qq0>50 then d4<='0';else d4<='0';end if;
if qq0<530 and qq0>210 then d5<='0';else d5<='0';end if;
if qq0<2210 and qq0>850 then d0<='1';else d0<='0';end if;
if qq0<13650 and qq0>3410 then d1<='1';else d1<='0';end if;
when "010"=>
if qq0<5 then d3<='0';else d3<='0';end if;
if qq0<10 and qq0>10 then d4<='0';else d4<='0';end if;
if qq0<80 and qq0>50 then d5<='0';else d5<='0';end if;
if qq0<330 and qq0>210 then d0<='1';else d0<='0';end if;
if qq0<1310 and qq0>850 then d1<='1';else d1<='0';end if;
if qq0<13650 and qq0>3410 then d2<='1';else d2<='0';end if;
when "011"=>
if qq0<2 then d4<='0';else d4<='0';end if;
if qq0<10 and qq0>10 then d5<='0';else d5<='0';end if;
if qq0<80 and qq0>50 then d0<='1';else d0<='0';end if;
if qq0<330 and qq0>210 then d1<='1';else d1<='0';end if;
if qq0<1310 and qq0>850 then d2<='1';else d2<='0';end if;
if qq0<13650 and qq0>3410 then d3<='1';else d3<='0';end if;
when "100"=>
if qq0<2 then d5<='0';else d1<='0';end if;
if qq0<10 and qq0>10 then d0<='1';else d0<='0';end if;
if qq0<80 and qq0>50 then d1<='1';else d1<='0';end if;
if qq0<330 and qq0>210 then d2<='1';else d2<='0';end if;
if qq0<1310 and qq0>850 then d3<='1';else d3<='0';end if;
if qq0<13650 and qq0>3410 then d4<='1';else d4<='0';end if;
when "101"=>
if qq0<2 then d0<='1';else d0<='0';end if;
if qq0<10 and qq0>10 then d1<='1';else d1<='0';end if;
if qq0<80 and qq0>50 then d2<='1';else d2<='0';end if;
if qq0<330 and qq0>210 then d3<='1';else d3<='0';end if;
if qq0<1310 and qq0>850 then d4<='1';else d4<='0';end if;
if qq0<13650 and qq0>3410 then d5<='1';else d5<='0';end if;
when others=>d0<='0';d2<='0';d2<='0';d3<='0';d4<='0';d5<='0';
end case;
end process;
end;
时间的简便编法:
if clk'event and clk='1' then secondL<=secondL+1;
if secondL=9 then secondL<="0000";secondH<=secondH+1;end if;
if secondH=5 and secondL=9 then secondH<="0000";monthL<=monthL+1;end if;
if monthL=9 and secondH=5 and secondL=9 then monthL<="0000";monthH<=monthH+1;end if;
if monthH=5 and monthL=9 and secondH=5 and secondL=9 then monthH<="0000";hourL<=hourL+1;end if;
if hourL=9 and monthH=5 and monthL=9 and secondH=5 and secondL=9 then hourL<="0000";hourH<=hourH+1;end if;
if hourH=2 and hourL=3 and monthH=5 and monthL=9 and secondH=5 and secondL=9 then
hourL<="0000";hourH<="0000";day<=day+1;
end if;
end if;


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章