library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx leaf cells in this code. --library UNISIM; --use UNISIM.VComponents.all; entity random_test1 is Port ( clk : in STD_LOGIC; led : out STD_LOGIC_VECTOR (15 downto 0); btnC : in STD_LOGIC; btnR : in STD_LOGIC ); end random_test1; architecture Behavioral of random_test1 is signal zaehlwertI: STD_LOGIC_VECTOR (3 downto 0):= "0001"; --Hilfvariable für LEDs signal zaehlwertII: STD_LOGIC_VECTOR (3 downto 0):= "0001"; --Hilfvariable für LEDs signal zaehlwertIII: STD_LOGIC_VECTOR (3 downto 0):= "0001"; --Hilfvariable für LEDs signal zaehlwertIV: STD_LOGIC_VECTOR (3 downto 0):= "0001"; --Hilfvariable für LEDs signal zaehler: INTEGER RANGE 0 to 10000010; -- Zaehlvariable signal positionI: STD_LOGIC_VECTOR (3 downto 0) := "1000"; -- 4 Positionen mit jeweils 4 Bits, signal positionII: STD_LOGIC_VECTOR (3 downto 0) := "1000"; signal positionIII: STD_LOGIC_VECTOR (3 downto 0) := "1000"; -- alle gleich, damit while Bedingung zwingend erfuellt ist signal positionIV: STD_LOGIC_VECTOR (3 downto 0) := "1000"; begin process(clk) variable i : integer; variable n : integer; variable a : integer; variable b : integer; variable c : integer; variable d : integer; begin if rising_edge (clk) then for i in 1 to 2 loop case i is when 1 => if (btnC = '0') then zaehlwertI(0) <= zaehlwertI(1); zaehlwertI(1) <= zaehlwertI(0); zaehlwertI(2) <= zaehlwertI(3); zaehlwertI(3) <= zaehlwertI(2); zaehlwertII(2) <= zaehlwertII(3); zaehlwertII(1) <= zaehlwertII(0); zaehlwertII(0) <= zaehlwertII(1); zaehlwertII(3) <= zaehlwertII(2); zaehlwertIII(0) <= zaehlwertIII(3); zaehlwertIII(3) <= zaehlwertIII(0); zaehlwertIII(2) <= zaehlwertIII(1); zaehlwertIII(1) <= zaehlwertIII(2); zaehlwertIV(0) <= zaehlwertIV(2); zaehlwertIV(1) <= zaehlwertIV(0); zaehlwertIV(2) <= zaehlwertIV(3); zaehlwertIV(3) <= zaehlwertIV(1); end if; when 2 => if (btnC = '1') then for n in 1 to 4 loop case n is when 1 => --Position1 for a in 1 to 4 loop if ((zaehlwertIV=zaehlwertI) or (zaehlwertIII=zaehlwertI) or (zaehlwertII=zaehlwertI)) then zaehlwertI(0) <= zaehlwertI(1); zaehlwertI(1) <= zaehlwertI(2); zaehlwertI(2) <= zaehlwertI(3); zaehlwertI(3) <= zaehlwertI(0); end if; end loop; positionI <= zaehlwertI; when 2 => --Position2 for b in 1 to 4 loop if ((zaehlwertIV=zaehlwertII) or (zaehlwertIII=zaehlwertII) or (zaehlwertI=zaehlwertII)) then zaehlwertII(0) <= zaehlwertII(2); zaehlwertII(1) <= zaehlwertII(3); zaehlwertII(2) <= zaehlwertII(0); zaehlwertII(3) <= zaehlwertII(1); end if; end loop; positionII <= zaehlwertII; when 3 => --Position3 for c in 1 to 4 loop if ((zaehlwertIV=zaehlwertIII) or (zaehlwertII=zaehlwertIII) or (zaehlwertI=zaehlwertIII)) then zaehlwertIII(0) <= zaehlwertIII(3); zaehlwertIII(1) <= zaehlwertIII(0); zaehlwertIII(2) <= zaehlwertIII(1); zaehlwertIII(3) <= zaehlwertIII(2); end if; end loop; positionIII <= zaehlwertIII; when 4 => --Position4 for d in 1 to 4 loop if ((zaehlwertIII=zaehlwertIV) or (zaehlwertII=zaehlwertIV) or (zaehlwertI=zaehlwertIV)) then zaehlwertIV(3) <= zaehlwertIV(0); zaehlwertIV(2) <= zaehlwertIV(1); zaehlwertIV(1) <= zaehlwertIV(2); zaehlwertIV(0) <= zaehlwertIV(3); end if; end loop; positionIV <= zaehlwertIV; end case; end loop; end if; end case; end loop; end if; led(15 downto 12) <= positionI; led(11 downto 8) <= positionII; led(7 downto 4) <= positionIII; led(3 downto 0) <= positionIV; end process; end Behavioral;