Finite State Machine Design and VHDL Coding Techniques