Synchronization is critical for communication systems with coherent receivers. There are three main types of synchronization: carrier synchronization, symbol/bit synchronization, and frame synchronization. Carrier synchronization compensates for frequency and phase differences between the received and local carrier waves. Symbol/bit synchronization samples the received signal at the symbol rate. Frame synchronization detects the start/stop times of data frames. Phase-locked loops (PLLs) are commonly used for carrier and symbol synchronization. There are various techniques for carrier synchronization extraction, including pilot tone insertion and direct extraction methods like square law detection and Costas loops. Barker codes and pseudo-random codes can provide frame alignment signals.