]> git.zerfleddert.de Git - raggedstone/blobdiff - dhwk/source/CONT_FSM.vhd
dos2unix *.vhd
[raggedstone] / dhwk / source / CONT_FSM.vhd
index 025c1e7a155f82c85b60b7e8647a3614fba7bd3a..2527c8ad31a0450a8a9cdba9815f674ab951cedb 100644 (file)
--- J.STELZNER\r
--- INFORMATIK-3 LABOR\r
--- 23.08.2006\r
--- File: CONT_FSM.VHD\r
-\r
-library ieee;\r
-use ieee.std_logic_1164.all ;\r
-\r
-entity CONT_FSM is\r
-       port\r
-       (\r
-       PCI_CLOCK               :in             std_logic; \r
-       PCI_RSTn                :in             std_logic; \r
-       IO_READ                 :in             std_logic;\r
-       IO_WRITE                :in             std_logic;\r
-       CONF_READ               :in             std_logic;\r
-       CONF_WRITE      :in             std_logic;\r
-       FIFO_READ               :in             std_logic;\r
-       READ                            :out    std_logic;--> MUX_SEL(1) , OE_PCI_AD \r
-       PERR_CHECK      :out    std_logic;              \r
-       DEVSELn                 :out    std_logic;\r
-       OE_PCI_PAR      :out    std_logic;\r
-       OE_PCI_PERR     :out    std_logic;\r
-       TRDYn                           :out    std_logic;\r
-       PCI_TRDYn               :out    std_logic;      --      s/t/s\r
-       PCI_STOPn               :out    std_logic;      --      s/t/s   \r
-       PCI_DEVSELn     :out    std_logic;      --      s/t/s   \r
-       FIFO_RDn                :out    std_logic\r
-       );\r
-end entity CONT_FSM ;\r
-\r
-architecture CONT_FSM_DESIGN of CONT_FSM is\r
-\r
-\r
-\r
---**********************************************************\r
---***              CONTROL FSM CODIERUNG                 ***\r
---**********************************************************\r
---\r
---\r
---\r
---                                                           |----------- HELP\r
---                                                           ||---------- FIFO_READn\r
---                                                           |||--------- OE_PCI_PERR          \r
---                                                                                                      ||||-------- PERR_CHECK  \r
---                                                                                                              |||||------- TRDYn   \r
---                                                                                                                ||||||------ STOPn                                                    \r
---                                                                                                              |||||||----- DEVSELn   \r
---                                                                                        ||||||||---- OE_PCI_PAR   \r
---                                                                                                                                                                                                                              |||||||||--- OE_CONTROL   \r
---                                                                                                                                                                                                                                ||||||||||-- READ / MUX_SEL(1) / OE_PCI_AD \r
---                                                                                                                                                                                                                                      ||||||||||               \r
-       constant        ST_IDLE :std_logic_vector (9 downto 0) := "0100111000" ;-- 138\r
-\r
-       constant        ST_READ_1                       :std_logic_vector (9 downto 0) := "0100110011" ;-- 133\r
-       constant        ST_READ_2                       :std_logic_vector (9 downto 0) := "0100000111" ;-- 107\r
-       constant        ST_READ_3                       :std_logic_vector (9 downto 0) := "0100111111" ;-- 13F\r
-\r
-       constant        ST_RD_FIFO_1    :std_logic_vector (9 downto 0) := "0000110011" ;-- 033\r
-       constant        ST_RD_FIFO_2    :std_logic_vector (9 downto 0) := "1100110011" ;-- 233\r
-\r
-\r
-       constant        ST_WRITE_1              :std_logic_vector (9 downto 0) := "0111110010" ;-- 1F2\r
-       constant        ST_WRITE_2              :std_logic_vector (9 downto 0) := "0110000010" ;-- 182\r
-       constant        ST_WRITE_3              :std_logic_vector (9 downto 0) := "0110111010" ;-- 1BA\r
-\r
-       signal          CONTROL_STATE   :std_logic_vector (9 downto 0);\r
-\r
-\r
---signal               DEVSELn                 :std_logic;\r
-       signal          STOPn                   :std_logic;\r
---signal               TRDYn                   :std_logic;\r
-\r
---************************************************************\r
---***             FSM SPEICHER-AUTOMAT                     ***\r
---************************************************************\r
-\r
-       attribute syn_state_machine : boolean;\r
-       attribute syn_state_machine of CONTROL_STATE : signal is false;\r
-\r
-begin\r
-\r
---**********************************************************\r
---***                  CONTROL FSM                       ***\r
---**********************************************************\r
-\r
-       process (PCI_CLOCK, PCI_RSTn) \r
-       begin\r
-               if      PCI_RSTn = '0'  then    CONTROL_STATE   <= ST_IDLE;\r
-\r
-               elsif (PCI_CLOCK'event and PCI_CLOCK = '1') then\r
\r
-                       case CONTROL_STATE is\r
-       \r
-                               when ST_IDLE => \r
-                                       if                      IO_READ         = '1' then\r
-                                                                                                                       CONTROL_STATE <= ST_READ_1;\r
-\r
-                               elsif   CONF_READ       = '1' then\r
-                                                                                                                       CONTROL_STATE <= ST_READ_1; \r
-\r
-                                               elsif   IO_WRITE        = '1' then\r
-                                                                                                                       CONTROL_STATE <= ST_WRITE_1;   \r
-  \r
-                               elsif   CONF_WRITE      = '1' then\r
-                                                                                                                       CONTROL_STATE <= ST_WRITE_1;\r
-     \r
-                       else                                            CONTROL_STATE <= ST_IDLE;\r
-                                       end if; \r
-\r
---                     when    ST_READ_1               =>      CONTROL_STATE   <=      ST_READ_2;\r
-                               when    ST_READ_1               =>      \r
-                                       if                      FIFO_READ       = '1' then\r
-                                                                                                                       CONTROL_STATE <= ST_RD_FIFO_1;\r
-                                               else                                            CONTROL_STATE <= ST_READ_2;\r
-                                       end if; \r
-\r
-\r
-                               when    ST_READ_2               =>      CONTROL_STATE   <=      ST_READ_3;\r
-                               when    ST_READ_3               =>      CONTROL_STATE   <=      ST_IDLE;\r
-\r
-                               when    ST_RD_FIFO_1=>  CONTROL_STATE   <=      ST_RD_FIFO_2;\r
-                               when    ST_RD_FIFO_2=>  CONTROL_STATE   <=      ST_READ_2;\r
-\r
-\r
-        \r
-                               when    ST_WRITE_1      =>      CONTROL_STATE   <=      ST_WRITE_2;\r
-                               when    ST_WRITE_2      =>      CONTROL_STATE   <=      ST_WRITE_3;\r
-                               when    ST_WRITE_3      =>      CONTROL_STATE   <=      ST_IDLE;\r
-\r
-               \r
-                               when others                             =>      CONTROL_STATE   <=      ST_IDLE; \r
-\r
-                       end case;               -- COMM_STATE    \r
-               end if;                         -- CLOCK   \r
-       end process;                    -- PROCESS\r
-\r
-\r
-       READ                            <=      CONTROL_STATE(0);\r
---OE_CONTROL   <=      CONTROL_STATE(1);\r
-       OE_PCI_PAR      <=      CONTROL_STATE(2);\r
-       DEVSELn                 <=      CONTROL_STATE(3);\r
-       STOPn                           <=      CONTROL_STATE(4);\r
-       TRDYn                           <=      CONTROL_STATE(5);\r
-       PERR_CHECK      <=      CONTROL_STATE(6);\r
-       OE_PCI_PERR     <=      CONTROL_STATE(7);\r
-\r
-       FIFO_RDn                <=      CONTROL_STATE(8);\r
-\r
-\r
-       PCI_DEVSELn     <=      CONTROL_STATE(3)        when    CONTROL_STATE(1) = '1' else 'Z';\r
-       PCI_STOPn       <=      STOPn                                   when    CONTROL_STATE(1) = '1' else 'Z';                                                                      \r
-       PCI_TRDYn         <=    CONTROL_STATE(5)        when    CONTROL_STATE(1) = '1' else 'Z';        \r
-\r
-end architecture CONT_FSM_DESIGN ;\r
-\r
+-- J.STELZNER
+-- INFORMATIK-3 LABOR
+-- 23.08.2006
+-- File: CONT_FSM.VHD
+
+library ieee;
+use ieee.std_logic_1164.all ;
+
+entity CONT_FSM is
+       port
+       (
+       PCI_CLOCK               :in             std_logic; 
+       PCI_RSTn                :in             std_logic; 
+       IO_READ                 :in             std_logic;
+       IO_WRITE                :in             std_logic;
+       CONF_READ               :in             std_logic;
+       CONF_WRITE      :in             std_logic;
+       FIFO_READ               :in             std_logic;
+       READ                            :out    std_logic;--> MUX_SEL(1) , OE_PCI_AD 
+       PERR_CHECK      :out    std_logic;              
+       DEVSELn                 :out    std_logic;
+       OE_PCI_PAR      :out    std_logic;
+       OE_PCI_PERR     :out    std_logic;
+       TRDYn                           :out    std_logic;
+       PCI_TRDYn               :out    std_logic;      --      s/t/s
+       PCI_STOPn               :out    std_logic;      --      s/t/s   
+       PCI_DEVSELn     :out    std_logic;      --      s/t/s   
+       FIFO_RDn                :out    std_logic
+       );
+end entity CONT_FSM ;
+
+architecture CONT_FSM_DESIGN of CONT_FSM is
+
+
+
+--**********************************************************
+--***              CONTROL FSM CODIERUNG                 ***
+--**********************************************************
+--
+--
+--
+--                                                           |----------- HELP
+--                                                           ||---------- FIFO_READn
+--                                                           |||--------- OE_PCI_PERR          
+--                                                                                                      ||||-------- PERR_CHECK  
+--                                                                                                              |||||------- TRDYn   
+--                                                                                                                ||||||------ STOPn                                                    
+--                                                                                                              |||||||----- DEVSELn   
+--                                                                                        ||||||||---- OE_PCI_PAR   
+--                                                                                                                                                                                                                              |||||||||--- OE_CONTROL   
+--                                                                                                                                                                                                                                ||||||||||-- READ / MUX_SEL(1) / OE_PCI_AD 
+--                                                                                                                                                                                                                                      ||||||||||               
+       constant        ST_IDLE :std_logic_vector (9 downto 0) := "0100111000" ;-- 138
+
+       constant        ST_READ_1                       :std_logic_vector (9 downto 0) := "0100110011" ;-- 133
+       constant        ST_READ_2                       :std_logic_vector (9 downto 0) := "0100000111" ;-- 107
+       constant        ST_READ_3                       :std_logic_vector (9 downto 0) := "0100111111" ;-- 13F
+
+       constant        ST_RD_FIFO_1    :std_logic_vector (9 downto 0) := "0000110011" ;-- 033
+       constant        ST_RD_FIFO_2    :std_logic_vector (9 downto 0) := "1100110011" ;-- 233
+
+
+       constant        ST_WRITE_1              :std_logic_vector (9 downto 0) := "0111110010" ;-- 1F2
+       constant        ST_WRITE_2              :std_logic_vector (9 downto 0) := "0110000010" ;-- 182
+       constant        ST_WRITE_3              :std_logic_vector (9 downto 0) := "0110111010" ;-- 1BA
+
+       signal          CONTROL_STATE   :std_logic_vector (9 downto 0);
+
+
+--signal               DEVSELn                 :std_logic;
+       signal          STOPn                   :std_logic;
+--signal               TRDYn                   :std_logic;
+
+--************************************************************
+--***             FSM SPEICHER-AUTOMAT                     ***
+--************************************************************
+
+       attribute syn_state_machine : boolean;
+       attribute syn_state_machine of CONTROL_STATE : signal is false;
+
+begin
+
+--**********************************************************
+--***                  CONTROL FSM                       ***
+--**********************************************************
+
+       process (PCI_CLOCK, PCI_RSTn) 
+       begin
+               if      PCI_RSTn = '0'  then    CONTROL_STATE   <= ST_IDLE;
+
+               elsif (PCI_CLOCK'event and PCI_CLOCK = '1') then
+                       case CONTROL_STATE is
+       
+                               when ST_IDLE => 
+                                       if                      IO_READ         = '1' then
+                                                                                                                       CONTROL_STATE <= ST_READ_1;
+
+                               elsif   CONF_READ       = '1' then
+                                                                                                                       CONTROL_STATE <= ST_READ_1; 
+
+                                               elsif   IO_WRITE        = '1' then
+                                                                                                                       CONTROL_STATE <= ST_WRITE_1;   
+  
+                               elsif   CONF_WRITE      = '1' then
+                                                                                                                       CONTROL_STATE <= ST_WRITE_1;
+     
+                       else                                            CONTROL_STATE <= ST_IDLE;
+                                       end if; 
+
+--                     when    ST_READ_1               =>      CONTROL_STATE   <=      ST_READ_2;
+                               when    ST_READ_1               =>      
+                                       if                      FIFO_READ       = '1' then
+                                                                                                                       CONTROL_STATE <= ST_RD_FIFO_1;
+                                               else                                            CONTROL_STATE <= ST_READ_2;
+                                       end if; 
+
+
+                               when    ST_READ_2               =>      CONTROL_STATE   <=      ST_READ_3;
+                               when    ST_READ_3               =>      CONTROL_STATE   <=      ST_IDLE;
+
+                               when    ST_RD_FIFO_1=>  CONTROL_STATE   <=      ST_RD_FIFO_2;
+                               when    ST_RD_FIFO_2=>  CONTROL_STATE   <=      ST_READ_2;
+
+
+        
+                               when    ST_WRITE_1      =>      CONTROL_STATE   <=      ST_WRITE_2;
+                               when    ST_WRITE_2      =>      CONTROL_STATE   <=      ST_WRITE_3;
+                               when    ST_WRITE_3      =>      CONTROL_STATE   <=      ST_IDLE;
+
+               
+                               when others                             =>      CONTROL_STATE   <=      ST_IDLE; 
+
+                       end case;               -- COMM_STATE    
+               end if;                         -- CLOCK   
+       end process;                    -- PROCESS
+
+
+       READ                            <=      CONTROL_STATE(0);
+--OE_CONTROL   <=      CONTROL_STATE(1);
+       OE_PCI_PAR      <=      CONTROL_STATE(2);
+       DEVSELn                 <=      CONTROL_STATE(3);
+       STOPn                           <=      CONTROL_STATE(4);
+       TRDYn                           <=      CONTROL_STATE(5);
+       PERR_CHECK      <=      CONTROL_STATE(6);
+       OE_PCI_PERR     <=      CONTROL_STATE(7);
+
+       FIFO_RDn                <=      CONTROL_STATE(8);
+
+
+       PCI_DEVSELn     <=      CONTROL_STATE(3)        when    CONTROL_STATE(1) = '1' else 'Z';
+       PCI_STOPn       <=      STOPn                                   when    CONTROL_STATE(1) = '1' else 'Z';                                                                      
+       PCI_TRDYn         <=    CONTROL_STATE(5)        when    CONTROL_STATE(1) = '1' else 'Z';        
+
+end architecture CONT_FSM_DESIGN ;
+
Impressum, Datenschutz