PoC.misc.sync.Bits

This module synchronizes multiple flag bits into clock-domain Clock. The clock-domain boundary crossing is done by two synchronizer D-FFs. All bits are independent from each other. If a known vendor like Altera or Xilinx are recognized, a vendor specific implementation is chosen.

Attention

Use this synchronizer only for long time stable signals (flags).

Constraints:
General:

Please add constraints for meta stability to all ‘_meta’ signals and timing ignore constraints to all ‘_async’ signals.

Xilinx:

In case of a Xilinx device, this module will instantiate the optimized module PoC.xil.sync.Bits. Please attend to the notes of sync_Bits.vhdl.

Altera sdc file:

TODO

Entity Declaration:

 1entity sync_Bits is
 2  generic (
 3    BITS          : positive            := 1;                       -- number of bit to be synchronized
 4    INIT          : std_logic_vector    := x"00000000";             -- initialization bits
 5    SYNC_DEPTH    : T_MISC_SYNC_DEPTH   := T_MISC_SYNC_DEPTH'low;    -- generate SYNC_DEPTH many stages, at least 2
 6    FALSE_PATH      : boolean             := true;
 7    REGISTER_OUTPUT : boolean             := false
 8  );
 9  port (
10    Clock         : in  std_logic;                                  -- <Clock>  output clock domain
11    Input         : in  std_logic_vector(BITS - 1 downto 0);        -- @async:  input bits
12    Output        : out std_logic_vector(BITS - 1 downto 0)         -- @Clock:  output bits

See also

PoC.misc.sync.Reset

For a special 2 D-FF synchronizer for reset-signals.

PoC.misc.sync.Pulse

For a special 1+2 D-FF synchronizer for pulse-signals.

PoC.misc.sync.Strobe

For a synchronizer for strobe-signals.

PoC.misc.sync.Vector

For a multiple bits capable synchronizer.