Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Clock Domain Crossing (CDC) & FIFO Design
Rating: 4.1 out of 5(18 ratings)
299 students

Clock Domain Crossing (CDC) & FIFO Design

Solve Metastability, Data Coherence & Loss with Verilog Labs, FIFO Depth Calculation & RTL Design. USE PROMO (JUST-13)
Last updated 2/2026
English
English [Auto],

What you'll learn

  • Diagnose the three fundamental hazards of Clock Domain Crossing: Metastability, Data Incoherence, and Data Loss.
  • Design and implement standard synchronization solutions: Bit Synchronizers, Bus Synchronizers, and Reset Synchronizers.
  • Architect and analyze Asynchronous FIFOs, the standard solution for safe, high-throughput data transfer between clock domains.
  • Perform the critical engineering task of calculating the required depth of an FIFO for a given data rate and burst profile.
  • Write industry-standard Verilog RTL for synchronization structures and verify their functionality.

Course content

1 section16 lectures3h 47m total length
  • Introduction12:59

    Learn the fundamentals of clock domain crossing, distinguishing asynchronous and synchronous clocks, and address metastability and data integrity issues through six synchronization techniques and FIFO design.

  • Problem 1: Metastability28:30

    Explore metastability in clock domain crossing, where asynchronous data crosses the aperture, triggering setup/hold violations and unreliable flips. Learn to use synchronizers and handshakes to contain failures.

  • Solution: Bit synchronization Techniques26:48

    Learn the double flip-flop synchronizer to safely bridge clock domains, containing metastability, and explore latency and MTBF trade-offs, meta-hardened flops, and stage isolation for reliable bit synchronization.

  • Problem 2: Data Incoherence11:27

    Learn why data incoherence occurs when crossing a clock domain with a data pass. Causes are routing delays and metastability, and the lecture previews gray coding and handshaking techniques.

  • Solution: Bus synchronization Techniques25:09

    Master four bus synchronization techniques for clock domain crossing: gray coding, enable-based synchronization, synchronized multiplexer select, and a ready-acknowledge handshake. Apply them based on data pattern, timing, and reliability needs.

  • Problem 3: Data Loss17:43

    Explore how asynchronous fifo prevents data loss in clock domain crossing by buffering data between fast and slow clocks, using write/read pointers and empty/full flags.

  • Bit Synchronizer Design using Verilog LAB24:40

    Design a parameterized PIT synchronizer in Verilog to safely cross clock domains and address metastability. Validate latency with a test bench, using multi-flop synchronization and gray code for robust CDC.

  • Data Synchronizer Assignment0:09
  • Solution: Asynchronous FIFO18:15

    Explore how an asynchronous FIFO employs a dual-port memory, separate write and read clocks, and synchronized gray-code pointers to prevent data loss across clock domains.

  • Challenge 1: Asynchronous FIFO16:49

    Learn to determine full and empty states in an asynchronous fifo across two clock domains using an extra wraparound bit, two pointers, and a memory buffer.

  • Challenge 2: Asynchronous FIFO13:06

    Explore safe asynchronous fifo design by using gray-coded pointers, gray to binary conversions, and double flip-flop synchronization to compute full and empty conditions across clock domains.

  • FIFO -> Depth Calculation13:34

    Size a fifo by performing the depth calculation from burst size, clock periods, and idle/ideal cycles, illustrated with example 1 and 2 to prevent data loss and wasted area.

  • FIFO Depth Calculation LAB7:07

    Learn to determine FIFO depth in clock domain crossing scenarios by analyzing write and read frequencies, idle cycles, and data transfer timing through three lab examples.

  • Asynchronous FIFO Assignment0:09
  • Reset synchronizer11:16

    Implement a reset synchronizer to safely de-assert resets in a clock domain, using a two-flop chain to convert asynchronous reset assertion into a synchronous release, avoiding metastability.

  • Reset Synchronizer Asssignment0:09

Requirements

  • Foundational Knowledge of Digital Logic: Understanding of flip-flops, registers, and binary data.
  • Intermediate Verilog HDL: Ability to write and understand synthesizable Verilog code (modules, always blocks, assignments). Completion of an introductory Verilog course is highly recommended.
  • Simulation Basics: Familiarity with running a simple testbench or simulation is helpful but not mandatory; core implementation is emphasized.

Description

Mastering Clock Domain Crossing: Synchronization & Async FIFO Design)

Designing robust digital systems requires integrating modules that operate on independent clocks. This fundamental challenge, known as Clock Domain Crossing (CDC), introduces severe risks: metastability, data incoherence, and data loss. These are not just bugs—they are intermittent, hardware-dependent failures that can cripple a product. This course provides the definitive, hands-on guide to architecting reliable CDC solutions.

Moving beyond theoretical overviews, we employ a direct Problem-Solution-Implementation methodology. For each core problem, you will first understand its root cause, then learn the standard industry technique to solve it, and finally implement it yourself in Verilog. You will progress from basic Bit and Bus Synchronizers to the cornerstone of advanced CDC: the Asynchronous FIFO.

This is a project-centric engineering course. You will write synthesizable Verilog for a Bit Synchronizer, tackle the critical engineering task of FIFO depth calculation with practical examples, and reason through the architectural challenges of building a correct FIFO. By the end, you will have the skills to design, implement, and verify the synchronization schemes essential for professional FPGA, ASIC, and SoC design.
What will students learn in your course?

  • Diagnose the three fundamental hazards of Clock Domain Crossing: Metastability, Data Incoherence, and Data Loss.

  • Design and implement standard synchronization solutions: Bit Synchronizers, Bus Synchronizers, and Reset Synchronizers.

  • Architect and analyze Asynchronous FIFOs, the standard solution for safe, high-throughput data transfer between clock domains.

  • Perform the critical engineering task of calculating the required depth of an FIFO for a given data rate and burst profile.

  • Write industry-standard Verilog RTL for synchronization structures and verify their functionality.

Who this course is for:

  • FPGA Engineers looking to master reliable data transfer between different clock domains.
  • ASIC & SoC Digital Design (RTL) Engineers who need to integrate IP cores or subsystems with independent clocks.
  • Hardware/Embedded Engineers seeking a deeper understanding of system-level digital design challenges.
  • Engineering Students & Graduates (Electrical, Computer) aiming to build specialized, in-demand skills for VLSI careers.
  • Verilog Programmers ready to move beyond single-clock designs and tackle intermediate/advanced system integration topics.