Two Flop Synchronizer

Description

This is the basic building block for other Synchronizers. This is made of two flops back to back. The first flop is hand instantiated to ensure that it is a metastability hardened flop. The second flop is an ordinary flop. Both the flops are clocked and reset by the destination domain clock and reset.

Usecase

This syncronization scheme forms the building block for other synchronizers. This synchronizer is used to synchronize single bit control signals from one domain to another.

Structure

Analysis

Input to D1 is clocked in the source clock domain. Due to this, Transition @D1 can occur near the clock edge leading to violation of its setup/hold requirements. This violation will drive the flop to metastable condition. The flop will recover from metastability and Settle to a value of either 0 or 1. If it settles to a correct value then at second clock edge the value at Q1 is available to D2 and after the clock edge @Q2. hence a change in input propagates to the output in 2 clock cycle. On the other hand if Q1 settles to an incorrect value. on the first clock edge, Then D1 will latch the correct data at the second clock edge. Q1 will get this value after the second clock edge. Q2 will get this value after the third clock edge. In this case a change in input will require 3 clock edges to propagate to the output.

Verilog code

 
two_flop_synchronizer.txt · Last modified: 2011/05/26 12:20 by 59.96.36.191     Back to top