This textbook teaches students techniques for the design of advanced digital systems using System-on-Chip (SoC) Field Programmable Gate Arrays (FPGAs). The author demonstrates design of custom hardware components for the FPGA fabric using VHDL, with implementation of custom hardware-software interfaces. Readers gain hands-on experience by writing programs and Linux device drivers in C to interact with custom hardware. This textbook enables laboratory experience in the design of custom digital systems using SoC FPGAs, emphasizing computational tasks such as digital signal processing, audio, or video processing.