]> cvs.zerfleddert.de Git - raggedstone/blobdiff - heartbeat/source/heartbeat.vhd
running light ;-)
[raggedstone] / heartbeat / source / heartbeat.vhd
index 76f084d8feaa4ce72a00a338ab68a53a184e2e6d..a1a181fa7bff4f971438d36f4f1f481375cc07fb 100644 (file)
@@ -5,13 +5,16 @@ use ieee.std_logic_unsigned.all;
 
 entity heartbeat is
 generic (
-       divider : integer := 33000000
+       divider : std_logic_vector(31 downto 0) := "00000000001111101111000101001000"
 );
 
 port (
        clk_i : in std_logic;
        nrst_i : in std_logic;
-       led_o : out std_logic
+       led2_o : out std_logic;
+       led3_o : out std_logic;
+       led4_o : out std_logic;
+       led5_o : out std_logic
 );   
 
 end heartbeat;
@@ -21,17 +24,36 @@ begin
 
 process(clk_i, nrst_i)
 variable counter : std_logic_vector(31 downto 0);
-variable state : std_logic := '0';
+variable state : std_logic_vector(3 downto 0) := "0001";
+variable direction : std_logic := '0';
 begin
 
 if (clk_i'event AND clk_i = '1') then
        if nrst_i = '0' then
                counter := (others => '0');
         else
-               led_o <= state;
+               led2_o <= state(0);
+               led3_o <= state(1);
+               led4_o <= state(2);
+               led5_o <= state(3);
                counter := counter + 1;
                if counter = divider then
-                       state := not state;
+                       if state(3) = '1' then
+                               direction := '1';
+                       end if;
+
+                       if state(0) = '1' then
+                               direction := '0';
+                       end if;
+
+                       if direction = '0' then
+                               state(3 downto 1) := state(2 downto 0);
+                               state(0) := '0';
+                       else
+                               state(2 downto 0) := state(3 downto 1);
+                               state(3) := '0';
+                       end if;
+                       counter := (others => '0');
                end if;
        end if;
 end if;
Impressum, Datenschutz