]> git.zerfleddert.de Git - raggedstone/blobdiff - dhwk/source/connecting_fsm.vhd
first import of dhwk.
[raggedstone] / dhwk / source / connecting_fsm.vhd
diff --git a/dhwk/source/connecting_fsm.vhd b/dhwk/source/connecting_fsm.vhd
new file mode 100644 (file)
index 0000000..ab8f54f
--- /dev/null
@@ -0,0 +1,136 @@
+-- J.STELZNER\r
+-- INFORMATIK-3 LABOR\r
+-- 23.08.2006\r
+-- File: CONNECTING_FSM.VHD\r
+\r
+library ieee ;\r
+use ieee.std_logic_1164.all ;\r
+\r
+entity CONNECTING_FSM is\r
+       port\r
+       (\r
+       PCI_CLOCK                               :in             std_logic; \r
+       RESET                                           :in             std_logic; \r
+       PSC_ENABLE                      :in             std_logic;\r
+       SYNC_S_FIFO_EFn :in             std_logic;\r
+       SPC_ENABLE                      :in             std_logic;\r
+       SYNC_R_FIFO_FFn :in             std_logic;\r
+       S_FIFO_Q_OUT            :in             std_logic_vector(7 downto 0);\r
+       S_FIFO_READn            :out    std_logic;\r
+       R_FIFO_WRITEn           :out    std_logic;\r
+       R_FIFO_D_IN                     :out    std_logic_vector(7 downto 0) \r
+       );\r
+end entity CONNECTING_FSM;\r
+\r
+architecture CONNECTING_FSM_DESIGN of CONNECTING_FSM is\r
+\r
+       signal REG                                              :std_logic_vector(7 downto 0);\r
+       signal HELP_0,HELP_1    :std_logic;\r
+       signal SIG_LOAD                         :std_logic;\r
+\r
+\r
+--**********************************************************\r
+--***         CONNECTING FSM CODIERUNG                   ***\r
+--**********************************************************\r
+--\r
+--\r
+--                                                 ---------- HELP_0\r
+--                                                      |--------- HELP_1   \r
+--                                                      ||-------- LOAD   \r
+--                                                        |||------- WRITE   \r
+--                                                                                                                                                                                        ||||------ READ   \r
+--                                                                                                                                                                                              |||||     \r
+       constant        S0      :std_logic_vector(4 downto 0)   :=      "00011";--\r
+       constant        S1      :std_logic_vector(4 downto 0)   :=      "01010";--READ\r
+       constant        S2      :std_logic_vector(4 downto 0) :=        "10010";--READ\r
+       constant        S3      :std_logic_vector(4 downto 0) :=        "11110";--READ,LOAD\r
+       constant        S4      :std_logic_vector(4 downto 0) :=        "11011";--\r
+       constant        S5      :std_logic_vector(4 downto 0) :=        "01001";--WRITE\r
+       constant        S6      :std_logic_vector(4 downto 0) :=        "10001";--WRITE\r
+       constant        S7      :std_logic_vector(4 downto 0) :=        "11001";--WRITE\r
+\r
+       signal STATES   :std_logic_vector(4 downto 0);\r
+\r
+--************************************************************\r
+--***             FSM SPEICHER-AUTOMAT                     ***\r
+--************************************************************\r
+\r
+       attribute       syn_state_machine       :       boolean;\r
+       attribute       syn_state_machine       of      STATES  :       signal  is      false;\r
+\r
+--************************************************************\r
+--***                          REGISTER BESCHREIBUNG                  ***\r
+--************************************************************\r
+\r
+begin\r
+\r
+       process (PCI_CLOCK) \r
+       begin\r
+               if      (PCI_CLOCK'event        and     PCI_CLOCK       =       '1')    then\r
+                       if                      SIG_LOAD        =       '1'     then    REG     <=      S_FIFO_Q_OUT;\r
+                               elsif   SIG_LOAD        =       '0'     then    REG     <=      REG;   \r
+                       end if;\r
+               end if;\r
+       end process;\r
+\r
+--************************************************************\r
+--***                          FSM BESCHREIBUNG                                 ***\r
+--************************************************************\r
+\r
+       process (PCI_CLOCK)\r
+       begin  \r
+               if      (PCI_CLOCK'event        and     PCI_CLOCK       =       '1')    then\r
+  \r
+                       if      RESET   =       '1'     then    STATES <= S0;\r
+                               else\r
+  \r
+                                       case    STATES is\r
+\r
+                                       when    S0      => \r
+                                               if      PSC_ENABLE                      = '1'   and\r
+                                                               SPC_ENABLE                      =       '1'     and\r
+                                                               SYNC_S_FIFO_EFn =       '1'     then\r
+\r
+                                                                                               STATES  <=      S1;\r
+                                                       else  \r
+                                                                                               STATES  <=      S0;\r
+                                               end if;\r
+\r
+                                       when    S1      =>      STATES  <=      S2;\r
+                                       when    S2      =>      STATES  <=      S3;\r
+                                       when    S3      =>      STATES  <=      S4;\r
+\r
+                                       when    S4      => \r
+                                               if      SYNC_R_FIFO_FFn =       '1'     then\r
+\r
+                                                                                               STATES  <=      S5;\r
+                                               else  \r
+                               STATES  <=      S4;\r
+                                               end if;\r
+\r
+                                       when    S5      =>      STATES  <=      S6;\r
+                                       when    S6      =>      STATES  <=      S7;\r
+                                       when    S7      =>      STATES  <=      S0;\r
+\r
+                                       when others => \r
+\r
+                                                                                               STATES  <=      S0; \r
+\r
+                               end case;               -- STATES    \r
+                       end if;                         -- RESET \r
+               end if;                                 -- PCI_CLOCK   \r
+       end process;                    -- PROCESS\r
+\r
+--************************************************************\r
+--***          ZUWEISUNG       signal/out      <=      STATES             ***\r
+--************************************************************\r
+\r
+       HELP_0                          <=      STATES(4);  \r
+       HELP_1                          <=      STATES(3);\r
+       SIG_LOAD                        <=      STATES(2);\r
+       R_FIFO_WRITEn   <=      STATES(1);\r
+       S_FIFO_READn    <=      STATES(0);\r
+\r
+       R_FIFO_D_IN             <=      REG;\r
+\r
+end architecture CONNECTING_FSM_DESIGN;\r
Impressum, Datenschutz