Build a Moore FSM which accepts an input which could change on each clock cyle, and outputs a 1 after detecting the pattern 001 on the input stream (meaning that on the previous three clock cycles, the input bit was 0, then 0, then 1.)

You can define a new type (similar to a C enum) in VHDL using the syntax:

type State is (ONE, TWO, THREE, FOUR, ETC);


With the type defined, you can then create a signal with this type, and use it like any other signal.

signal s : State;


A reset signal isn't necessary here; your state machine should reset itself back to a known starting state any time the current state is invalid. The when others clause of a case statement will be helpful here.

library IEEE; use IEEE.std_logic_1164.all; entity detect001 is port( clk : in std_logic; input : in std_logic; result : out std_logic ); end detect001; architecture synth of detect001 is begin result <= '0'; end;