library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; Sequenz Erkennung (01,11,10)- Moore Automat mit 3 - Prozessen entity R2R_FPGA is Port ( CLK, RESET, ENABLE : in bit; --Sekundäre Eingangssignale E : in bit_vector(1 downto 0); --Eingangsvektor A : out bit ); --Ausgangssignal end R2R_FPGA; architecture Behavioral of R2R_FPGA is type ZUSTAENDE is (Z0,Z1,Z2,Z3); --Aufzählungstyp signal ZUSTAND,FOLGE_Z:ZUSTAENDE; --Prozesskommunikation begin Z_SPEICHER: process (CLK,RESET) --Zustandsaktualisierung begin if RESET = '1' then ZUSTAND <= Z0 after 20 ns; elsif CLK = '1' and CLK'event then if ENABLE='1' then ZUSTAND<=FOLGE_Z after 20 ns; end if; end if; end process Z_SPEICHER; UE_SN: process(E, ZUSTAND) begin case ZUSTAND is when Z0=> if E ="01" then FOLGE_Z<=Z1 after 20 ns; else FOLGE_Z<=Z0 after 20 ns; end if; when Z1=> if E ="11" then FOLGE_Z<=Z2 after 20 ns; elsif E="01" then FOLGE_Z<=Z1 after 20 ns; else FOLGE_Z<=Z0 after 20 ns; end if; when Z2=> if E ="10" then FOLGE_Z<=Z3 after 20 ns; elsif E="01" then FOLGE_Z<=Z1 after 20 ns; else FOLGE_Z<=Z0 after 20 ns; end if; when Z3=> if E ="01" then FOLGE_Z<=Z1 after 20 ns; else FOLGE_Z<=Z0 after 20 ns; end if; end case; end process UE_SN; AUS_SN: process(ZUSTAND) -- Ausgangsberechnung begin case ZUSTAND is when Z3 =>A<='1' after 20 ns; when others =>A<='0' after 20 ns; end case; end process AUS_SN; end Behavioral;