This textbook teaches students techniques for the design of advanced digital systems using Field Programmable Gate Arrays (FPGAs). The authors focus on communication between FPGAs and peripheral devices (such as EEPROM, analog-to-digital converters, sensors, digital-to-analog converters, displays etc.) and in particular state machines and timed state machines for the implementation of serial communication protocols, such as UART, SPI, I²C, and display protocols, such as VGA, HDMI. VHDL is used as the programming language and all topics are covered in a structured, step-by-step manner.