--- 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
+-- J.STELZNER
+-- INFORMATIK-3 LABOR
+-- 23.08.2006
+-- File: CONNECTING_FSM.VHD
+
+library ieee ;
+use ieee.std_logic_1164.all ;
+
+entity CONNECTING_FSM is
+ port
+ (
+ PCI_CLOCK :in std_logic;
+ RESET :in std_logic;
+ PSC_ENABLE :in std_logic;
+ SYNC_S_FIFO_EFn :in std_logic;
+ SPC_ENABLE :in std_logic;
+ SYNC_R_FIFO_FFn :in std_logic;
+ S_FIFO_Q_OUT :in std_logic_vector(7 downto 0);
+ S_FIFO_READn :out std_logic;
+ R_FIFO_WRITEn :out std_logic;
+ R_FIFO_D_IN :out std_logic_vector(7 downto 0)
+ );
+end entity CONNECTING_FSM;
+
+architecture CONNECTING_FSM_DESIGN of CONNECTING_FSM is
+
+ signal REG :std_logic_vector(7 downto 0);
+ signal HELP_0,HELP_1 :std_logic;
+ signal SIG_LOAD :std_logic;
+
+
+--**********************************************************
+--*** CONNECTING FSM CODIERUNG ***
+--**********************************************************
+--
+--
+-- ---------- HELP_0
+-- |--------- HELP_1
+-- ||-------- LOAD
+-- |||------- WRITE
+-- ||||------ READ
+-- |||||
+ constant S0 :std_logic_vector(4 downto 0) := "00011";--
+ constant S1 :std_logic_vector(4 downto 0) := "01010";--READ
+ constant S2 :std_logic_vector(4 downto 0) := "10010";--READ
+ constant S3 :std_logic_vector(4 downto 0) := "11110";--READ,LOAD
+ constant S4 :std_logic_vector(4 downto 0) := "11011";--
+ constant S5 :std_logic_vector(4 downto 0) := "01001";--WRITE
+ constant S6 :std_logic_vector(4 downto 0) := "10001";--WRITE
+ constant S7 :std_logic_vector(4 downto 0) := "11001";--WRITE
+
+ signal STATES :std_logic_vector(4 downto 0);
+
+--************************************************************
+--*** FSM SPEICHER-AUTOMAT ***
+--************************************************************
+
+ attribute syn_state_machine : boolean;
+ attribute syn_state_machine of STATES : signal is false;
+
+--************************************************************
+--*** REGISTER BESCHREIBUNG ***
+--************************************************************
+
+begin
+
+ process (PCI_CLOCK)
+ begin
+ if (PCI_CLOCK'event and PCI_CLOCK = '1') then
+ if SIG_LOAD = '1' then REG <= S_FIFO_Q_OUT;
+ elsif SIG_LOAD = '0' then REG <= REG;
+ end if;
+ end if;
+ end process;
+
+--************************************************************
+--*** FSM BESCHREIBUNG ***
+--************************************************************
+
+ process (PCI_CLOCK)
+ begin
+ if (PCI_CLOCK'event and PCI_CLOCK = '1') then
+
+ if RESET = '1' then STATES <= S0;
+ else
+
+ case STATES is
+
+ when S0 =>
+ if PSC_ENABLE = '1' and
+ SPC_ENABLE = '1' and
+ SYNC_S_FIFO_EFn = '1' then
+
+ STATES <= S1;
+ else
+ STATES <= S0;
+ end if;
+
+ when S1 => STATES <= S2;
+ when S2 => STATES <= S3;
+ when S3 => STATES <= S4;
+
+ when S4 =>
+ if SYNC_R_FIFO_FFn = '1' then
+
+ STATES <= S5;
+ else
+ STATES <= S4;
+ end if;
+
+ when S5 => STATES <= S6;
+ when S6 => STATES <= S7;
+ when S7 => STATES <= S0;
+
+ when others =>
+
+ STATES <= S0;
+
+ end case; -- STATES
+ end if; -- RESET
+ end if; -- PCI_CLOCK
+ end process; -- PROCESS
+
+--************************************************************
+--*** ZUWEISUNG signal/out <= STATES ***
+--************************************************************
+
+ HELP_0 <= STATES(4);
+ HELP_1 <= STATES(3);
+ SIG_LOAD <= STATES(2);
+ R_FIFO_WRITEn <= STATES(1);
+ S_FIFO_READn <= STATES(0);
+
+ R_FIFO_D_IN <= REG;
+
+end architecture CONNECTING_FSM_DESIGN;