title: Arrived floor signal is one tick clock too far
body: <p>I'm working on elevator code in VHDL and I have an issue with signal (przybycie) that shows elevator arrived to choosen floor.
  There is a code:</p>
  <pre><code>    library IEEE;
  use IEEE.STD_LOGIC_1164.ALL;
  use IEEE.numeric_std.ALL;
  use IEEE.std_logic_unsigned.ALL;
  
  
  
  
  entity winda is
      port (clk : in std_logic;
  --          przycisk1 : in std_logic; -- 000
  --          przycisk2 : in std_logic; -- 001
  --          przycisk3 : in std_logic; -- 010
  --          przycisk4 : in std_logic; -- 011
              pietro : in std_logic_vector(2 downto 0); -- button
              alarm : in std_logic;
              numer_pietra : out std_logic_vector(2 downto 0);
              koniec : out std_logic);
  end entity winda;
  
  
  architecture winda_arch of winda is
  
  type STANY is (otwarcie_drzwi,spoczynek, wybor_pietra, zamkniecie_drzwi, praca_windy, koniec_pracy);
  signal stan, stan_nast: STANY;
  signal licznik_pieter: std_logic_vector(2 downto 0) :=&quot;000&quot;;
  signal drzwi: std_logic; -- 0 OTWARTE, 1 ZAMKNIETE
  signal przybycie: std_logic :='0'; -- przybycie na wybrane pietro
  signal otwarciozamkniecie: std_logic :='0'; -- sygnal otwierania/zamykania drzwi
  
  
  begin
  
      reg:process(clk, alarm)
          begin
              if (alarm = '1') then
                  stan &lt;= spoczynek;
              elsif rising_edge(clk) then
                  stan &lt;= stan_nast;
              end if;
          end process reg;
          
          komb:process(clk, alarm, stan)
          begin
              stan_nast &lt;= stan;
              case stan is
              
              when otwarcie_drzwi =&gt;
                      stan_nast &lt;= spoczynek;
              
              when spoczynek =&gt; 
                      stan_nast &lt;= wybor_pietra;
                          
              when wybor_pietra =&gt;
                  if (pietro /= licznik_pieter) then
                          stan_nast &lt;= zamkniecie_drzwi;
                          else
                              stan_nast &lt;= wybor_pietra;
                          end if;
              when zamkniecie_drzwi =&gt;
                      stan_nast &lt;= praca_windy;
                          
              when praca_windy =&gt;
                  if (pietro = licznik_pieter) then
                      stan_nast &lt;= koniec_pracy;
                  else
                      stan_nast &lt;= praca_windy;
                  end if;
                  
              when koniec_pracy =&gt;
                          stan_nast &lt;= otwarcie_drzwi;
                  
              when others =&gt;
              stan_nast &lt;= spoczynek;
              
              
  end case;
  end process komb;
  
  
  drzwi&lt;= '1' when stan = praca_windy or stan = zamkniecie_drzwi or stan = koniec_pracy else '0';
  otwarciozamkniecie &lt;= '1' when stan = zamkniecie_drzwi or stan = otwarcie_drzwi else '0';
  
  
  licznik:process(clk,alarm,przybycie,pietro,otwarciozamkniecie)
      begin
          if (alarm = '1' or drzwi = '0' or otwarciozamkniecie = '1') then
              przybycie &lt;= '0';
          elsif (rising_edge(clk)) then
              if (stan = praca_windy) then
                  if (licznik_pieter = pietro) then
                  przybycie &lt;= '1';   
              elsif ( licznik_pieter &gt; pietro ) then
                  przybycie &lt;= '0';
                  licznik_pieter &lt;= licznik_pieter - &quot;01&quot;;
              else
                  przybycie &lt;= '0';
                  licznik_pieter &lt;= licznik_pieter + &quot;01&quot;;
              end if;
              end if;
          end if;
  end process licznik;
      
  koniec &lt;= '1' when stan = koniec_pracy or stan = spoczynek else '0';
  numer_pietra &lt;= licznik_pieter when drzwi = '0' else &quot;000&quot;;
  
  end architecture winda_arch;
  </code></pre>
  <p>And there simulation:
  <a href="https://i.stack.imgur.com/4bXBB.png" rel="nofollow noreferrer">simulation picture</a></p>
  <p>Problem is that &quot;przybycie = '1'&quot; should be one clock tact before ( just after licznik_pieter shows &quot;2&quot;) <a href="https://i.stack.imgur.com/i6uht.png" rel="nofollow noreferrer">how it should be</a></p>
  <p>What is wrong with that code?</p>