Advertisement
Guest User

Untitled

a guest
Jan 10th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.49 KB | None | 0 0
  1. Library ieee;
  2. use ieee.std_logic_1164.all;
  3.  
  4. entity sequenzerkennung is
  5.     port(
  6.         --low active Reset
  7.         reset, x, clk :     in  std_logic;
  8.         y :                     out     std_logic;
  9.         leds :              out     std_logic_vector(8 downto 0)
  10.     );
  11. end sequenzerkennung;
  12.  
  13. architecture bhv of sequenzerkennung is
  14.     type states is (A, B, C, D, E, F, G, H, I);
  15.    
  16.     --Signals für Neue States (Übergang)
  17.     signal state, new_state : states;
  18.     signal s_x, s_y             : std_logic;
  19.     signal s_leds               : std_logic_vector(8 downto 0);
  20.    
  21.     begin
  22.         process(reset, clk)
  23.         begin
  24.             if (reset = '0') then
  25.                 state <= A;
  26.                 leds    <= "000000001";
  27.                 y       <= '0';
  28.             elsif (rising_edge(clk)) then
  29.                 state <= new_state;
  30.                 leds    <= s_leds;
  31.                 y       <= s_y;
  32.                 s_x     <= x;
  33.             end if;
  34.         end process;
  35.    
  36.         process (state, s_x)
  37.         begin
  38.             s_y <= '0';
  39.             case state is
  40.                 when A =>
  41.                     if (s_x = '0') then
  42.                         new_state   <= B;
  43.                         s_leds      <= "000000010";
  44.                     else
  45.                         new_state   <= F;
  46.                         s_leds      <= "000100000";
  47.                     end if;
  48.                 when B =>
  49.                     if (s_x = '0') then
  50.                         new_state   <= C;
  51.                         s_leds      <= "000000100";
  52.                     else
  53.                         new_state   <= F;
  54.                         s_leds      <= "000100000";
  55.                     end if;
  56.                 when C =>
  57.                     if (s_x = '0') then
  58.                         new_state   <= D;
  59.                         s_leds      <= "000001000";
  60.                     else
  61.                         new_state   <= F;
  62.                         s_leds      <= "000100000";
  63.                     end if;
  64.                 when D =>
  65.                     if (s_x = '0') then
  66.                         new_state   <= E;
  67.                         s_leds      <= "000010000";
  68.                         s_y         <= '1';
  69.                     else
  70.                         new_state <= F;
  71.                         s_leds      <= "000100000";
  72.                     end if;
  73.                 when E =>
  74.                     if (s_x = '0') then
  75.                         new_state   <= E;
  76.                         s_leds      <= "000010000";
  77.                     else
  78.                         new_state   <= F;
  79.                         s_leds      <= "000100000";
  80.                     end if;
  81.                 when F =>
  82.                     if (s_x = '0') then
  83.                         new_state   <= B;
  84.                         s_leds      <= "000000010";
  85.                     else
  86.                         new_state   <= G;
  87.                         s_leds      <= "001000000";
  88.                     end if;
  89.                 when G =>
  90.                     if (s_x = '0') then
  91.                         new_state   <= B;
  92.                         s_leds      <= "000000010";
  93.                     else
  94.                         new_state   <= H;
  95.                         s_leds      <= "010000000";
  96.                         s_y             <= '1';
  97.                     end if;
  98.                 when H =>
  99.                     if (s_x = '0') then
  100.                         new_state   <= B;
  101.                         s_leds      <= "000000010";
  102.                     else
  103.                         new_state   <= I;
  104.                         s_leds      <= "100000000";
  105.                         s_y             <= '1';
  106.                     end if;
  107.                 when I =>
  108.                     if (s_x = '0') then
  109.                         new_state   <= B;
  110.                         s_leds      <= "000000010";
  111.                     else
  112.                         new_state   <= I;
  113.                         s_leds      <= "100000000";
  114.                         s_y             <= '1';
  115.                     end if;
  116.             end case;
  117.         end process;
  118. end bhv;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement