Лифт на vhdl, FPGA, ALTERA DE2-115

Задали задание на ПЛИС, начинающий. Требуется реализовать механизм лифт с 1 по 5 этаж. Задача в том, чтобы светились диоды по мере движения лифта, чтобы это работало не только в ModelSim, но и на самой плате DE2-115. Подскажите, пожалуйста, как реализовать поочередное свечение ламп. number - номер этажа, call - вызов лифта на определенный этаж, lamp - диод определенного этажа. Механизм wait не работает. Вот мой код:

-- Library Declaration
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity un is

port(
    clk : in std_logic; 
    reset : in std_logic; 
    call_1 : in std_logic; 
    call_2 : in std_logic;  
    call_3 : in std_logic;
    call_4 : in std_logic; 
    call_5 : in std_logic;  

    lamp_1 : out std_logic;
    lamp_2 : out std_logic; 
    lamp_3 : out std_logic; 
    lamp_4 : out std_logic; 
    lamp_5 : out std_logic
);
end un;

architecture behaviour of un is
    signal number : std_logic_vector(1 to 5);
    
begin 
process(clk,reset)
begin

if reset = '1' then
    number <= "10000";
    lamp_1 <= '1';
    lamp_2 <= '0';
    lamp_3 <= '0';
    lamp_4 <= '0';
    lamp_5 <= '0';

elsif clk'event and clk = '1' then
    if call_1 = '1' then
        case number is 
            when "10000" =>
            lamp_1 <= '1';
            number <= "10000";

            when "01000" =>
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_1 <= '1';
            number <= "10000";

            when "00100" =>
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_1 <= '1';
            number <= "10000";

            when "00010" =>
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_1 <= '1';
            number <= "10000";

            when "00001" =>
            lamp_5 <= '1';
            lamp_5 <= '0';
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_1 <= '1';
            number <= "10000";

            when others => null;
        end case; 

    elsif call_2 = '1' then
        case number is 
            when "10000" =>
            lamp_1 <= '1';
            lamp_1 <= '0';
            lamp_2 <= '1';
            number <= "01000";

            when "01000" =>
            lamp_2 <= '1';
            number <= "01000";

            when "00100" =>
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_2 <= '1';
            number <= "01000";

            when "00010" =>
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_2 <= '1';
            number <= "01000";

            when "00001" =>
            lamp_5 <= '1';
            lamp_5 <= '0';
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_2 <= '1';
            number <= "01000";

            when others => null;
        end case;

    elsif call_3 = '1' then
        case number is 
            when "10000" =>
            lamp_1 <= '1';
            lamp_1 <= '0';
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_3 <= '1';
            number <= "00100";

            when "01000" =>
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_3 <= '1';
            number <= "00100";

            when "00100" =>
            lamp_3 <= '1';
            number <= "00100";

            when "00010" =>
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_3 <= '1';
            number <= "00100";

            when "00001" =>
            lamp_5 <= '1';
            lamp_5 <= '0';
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_3 <= '1';
            number <= "00100";

            when others => null;
        end case;

    elsif call_4 = '1' then
        case number is 
            when "10000" =>
            lamp_1 <= '1';
            lamp_1 <= '0';
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_4 <= '1';
            number <= "00010";

            when "01000" =>
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_4 <= '1';
            number <= "00010";

            when "00100" =>
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_4 <= '1';
            number <= "00010";

            when "00010" =>
            lamp_4 <= '1';
            number <= "00010";

            when "00001" =>
            lamp_5 <= '1';
            lamp_5 <= '0';
            lamp_4 <= '1';
            number <= "00010";

            when others => null;
        end case;

    elsif call_5 = '1' then
        case number is
            when "10000" =>
            lamp_1 <= '1';
            lamp_1 <= '0';
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_5 <= '1';
            number <= "00001";

            when "01000" =>
            lamp_2 <= '1';
            lamp_2 <= '0';
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_5 <= '1';
            number <= "00001";

            when "00100" =>
            lamp_3 <= '1';
            lamp_3 <= '0';
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_5 <= '1';
            number <= "00001";

            when "00010" =>
            lamp_4 <= '1';
            lamp_4 <= '0';
            lamp_5 <= '1';
            number <= "00001";

            when "00001" =>
            lamp_5 <= '1';
            number <= "00001";

            when others => null;
        end case;
    end if;
end if;
end process;
end behaviour;

Ответы (0 шт):