Advertisement
Guest User

kodzik

a guest
Mar 18th, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 3.05 KB | None | 0 0
  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.all;
  3. ENTITY light 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_logic_vector(0 downto 0); -- wyjście z
  9.      ledR: out std_logic_vector(8 downto 0)); --aktualny stan FSM
  10. END light;
  11.  
  12. ARCHITECTURE Behavior OF light 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.           END IF;
  33.              
  34.              WHEN B=> IF(sw(1) = '0') THEN
  35.           ST <= C;
  36.           ledR(8 downto 0) <= "000000100";
  37.           ledZ(0) <= '0';
  38.           ELSE ST <= F;
  39.              
  40.           ledR(8 downto 0) <= "000100000";
  41.           ledZ(0) <= '0';
  42.              
  43.           END IF;
  44.              
  45.              WHEN C=> IF(sw(1) = '0') THEN
  46.           ST <= D;
  47.           ledR(8 downto 0) <= "000001000";
  48.           ledZ(0) <= '0';
  49.           ELSE ST <= F;
  50.              
  51.           ledR(8 downto 0) <= "000100000";
  52.           ledZ(0) <= '0';
  53.              
  54.           END IF;
  55.              
  56.              WHEN D=> IF(sw(1) = '0') THEN
  57.           ST <= E;
  58.           ledR(8 downto 0) <= "000010000";
  59.           ledZ(0) <= '1';
  60.           ELSE ST <= F;
  61.              
  62.           ledR(8 downto 0) <= "000100000";
  63.           ledZ(0) <= '0';
  64.              
  65.           END IF;
  66.              
  67.              WHEN E=> IF(sw(1) = '0') THEN
  68.           ST <= E;
  69.           ledR(8 downto 0) <= "000010000";
  70.           ledZ(0) <= '1';
  71.           ELSE ST <= F;
  72.              
  73.           ledR(8 downto 0) <= "000100000";
  74.           ledZ(0) <= '0';
  75.              
  76.           END IF;
  77.              
  78.              WHEN F=> IF(sw(1) = '1') THEN
  79.           ST <= G;
  80.           ledR(8 downto 0) <= "001000000";
  81.           ledZ(0) <= '0';
  82.           ELSE ST <= B;
  83.          
  84.              ledR(8 downto 0) <= "000000010";
  85.           ledZ(0) <= '0';
  86.              
  87.           END IF;
  88.              
  89.              WHEN G=> IF(sw(1) = '1') THEN
  90.           ST <= H;
  91.           ledR(8 downto 0) <= "010000000";
  92.           ledZ(0) <= '0';
  93.           ELSE ST <= B;
  94.          
  95.              ledR(8 downto 0) <= "000000010";
  96.           ledZ(0) <= '0';
  97.              
  98.           END IF;
  99.              
  100.              WHEN H=> IF(sw(1) = '1') THEN
  101.           ST <= I;
  102.           ledR(8 downto 0) <= "100000000";
  103.           ledZ(0) <= '1';
  104.           ELSE ST <= B;
  105.          
  106.              ledR(8 downto 0) <= "000000010";
  107.           ledZ(0) <= '0';
  108.              
  109.           END IF;
  110.              
  111.              WHEN I=> IF(sw(1) = '1') THEN
  112.           ST <= I;
  113.           ledR(8 downto 0) <= "100000000";
  114.           ledZ(0) <= '1';
  115.           ELSE ST <= B;
  116.          
  117.              ledR(8 downto 0) <= "000000010";
  118.           ledZ(0) <= '0';
  119.              
  120.           END IF;
  121.      --...
  122.     -- pozostałe stany
  123.      END CASE;
  124.  
  125.      end if;
  126.      END PROCESS; --state table
  127. END Behavior;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement