资讯详情

FPGA流星雨灯的VHDL程序

用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百科大全!

锐单商城 - 一站式电子元器件采购平台