Advertisement
Guest User

kodziwko

a guest
Mar 18th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 3.02 KB | None | 0 0
  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.all;
  3. ENTITY automat IS
  4. PORT(sw : in std_logic_vector(1 downto 0);
  5.          --sw(0) - synchroniczny reset
  6.          --sw(1) - wejście w
  7.      key : in std_logic_vector(0 downto 0); -- clock
  8.      ledZ: out std_logicvector(0 downto 0); -- wyjście z
  9.      ledR: out std_logic_vector(8 downto 0)); --aktualny stan FSM
  10. END automat;
  11.  
  12. ARCHITECTURE Behavior OF automat IS
  13.   ... deklaracja sygnałów
  14.   TYPE State_type IS (A, B, C, D, E, F, G, H, I);
  15.   SIGNAL ST : State_type; --stan aktualny
  16. BEGIN
  17.   ...
  18.   PROCESS(sw(0), key, sw(1))
  19.   BEGIN
  20.      if(sw(0) ='1') then ST <= A;
  21.      elsif(key'event and key='1') then
  22.  
  23.      CASE ST IS
  24.        WHEN A=> IF(sw(1) = '0') THEN
  25.           ST <= B;
  26.           ledR(8 downto 0) <= '000000010'
  27.           ledZ(0) <= '0'
  28.           ELSE ST <= F;
  29.              
  30.           ledR(8 downto 0) <= '000100000'
  31.           ledZ(0) <= '0'
  32.              
  33.           END IF;
  34.              
  35.              WHEN B=> IF(sw(1) = '0') THEN
  36.           ST <= C;
  37.           ledR(8 downto 0) <= '000000100'
  38.           ledZ(0) <= '0'
  39.           ELSE ST <= F;
  40.              
  41.           ledR(8 downto 0) <= '000100000'
  42.           ledZ(0) <= '0'
  43.              
  44.           END IF;
  45.              
  46.              WHEN C=> IF(sw(1) = '0') THEN
  47.           ST <= D;
  48.           ledR(8 downto 0) <= '000001000'
  49.           ledZ(0) <= '0'
  50.           ELSE ST <= F;
  51.              
  52.           ledR(8 downto 0) <= '000100000'
  53.           ledZ(0) <= '0'
  54.              
  55.           END IF;
  56.              
  57.              WHEN D=> IF(sw(1) = '0') THEN
  58.           ST <= E;
  59.           ledR(8 downto 0) <= '000010000'
  60.           ledZ(0) <= '1'
  61.           ELSE ST <= F;
  62.              
  63.           ledR(8 downto 0) <= '000100000'
  64.           ledZ(0) <= '0'
  65.              
  66.           END IF;
  67.              
  68.              WHEN E=> IF(sw(1) = '0') THEN
  69.           ST <= E;
  70.           ledR(8 downto 0) <= '000010000'
  71.           ledZ(0) <= '1'
  72.           ELSE ST <= F;
  73.              
  74.           ledR(8 downto 0) <= '000100000'
  75.           ledZ(0) <= '0'
  76.              
  77.           END IF;
  78.              
  79.              WHEN F=> IF(sw(1) = '1') THEN
  80.           ST <= G;
  81.           ledR(8 downto 0) <= '001000000'
  82.           ledZ(0) <= '0'
  83.           ELSE ST <= B;
  84.          
  85.              ledR(8 downto 0) <= '000000010'
  86.           ledZ(0) <= '0'
  87.              
  88.           END IF;
  89.              
  90.              WHEN G=> IF(sw(1) = '1') THEN
  91.           ST <= H;
  92.           ledR(8 downto 0) <= '010000000'
  93.           ledZ(0) <= '0'
  94.           ELSE ST <= B;
  95.          
  96.              ledR(8 downto 0) <= '000000010'
  97.           ledZ(0) <= '0'
  98.              
  99.           END IF;
  100.              
  101.              WHEN H=> IF(sw(1) = '1') THEN
  102.           ST <= I;
  103.           ledR(8 downto 0) <= '100000000'
  104.           ledZ(0) <= '1'
  105.           ELSE ST <= B;
  106.          
  107.              ledR(8 downto 0) <= '000000010'
  108.           ledZ(0) <= '0'
  109.              
  110.           END IF;
  111.              
  112.              WHEN I=> IF(sw(1) = '1') THEN
  113.           ST <= I;
  114.           ledR(8 downto 0) <= '100000000'
  115.           ledZ(0) <= '1'
  116.           ELSE ST <= B;
  117.          
  118.              ledR(8 downto 0) <= '000000010'
  119.           ledZ(0) <= '0'
  120.              
  121.           END IF;
  122.      ...
  123.      pozostałe stany
  124.      END CASE;
  125.  
  126.      end if;
  127.      END PROCESS; --state table
  128. END Behavior;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement