PoC.sync.Command

This module synchronizes a vector of bits from clock-domain Clock1 to clock-domain Clock2. The clock-domain boundary crossing is done by a change comparator, a T-FF, two synchronizer D-FFs and a reconstructive XOR indicating a value change on the input. This changed signal is used to capture the input for the new output. A busy flag is additionally calculated for the input clock-domain. The output has strobe character and is reset to it’s INIT value after one clock cycle.

Constraints:

This module uses sub modules which need to be constrained. Please attend to the notes of the instantiated sub modules.

Entity Declaration:

 1    INIT          : std_logic_vector    := x"00000000";             --
 2    SYNC_DEPTH    : T_MISC_SYNC_DEPTH   := T_MISC_SYNC_DEPTH'low    -- generate SYNC_DEPTH many stages, at least 2
 3  );
 4  port (
 5    Clock1        : in  std_logic;                                  -- <Clock>  input clock
 6    Clock2        : in  std_logic;                                  -- <Clock>  output clock
 7    Input         : in  std_logic_vector(BITS - 1 downto 0);        -- @Clock1: input vector
 8    Output        : out std_logic_vector(BITS - 1 downto 0);        -- @Clock2: output vector
 9    Busy          : out std_logic;                                  -- @Clock1: busy bit
10    Changed       : out std_logic                                   -- @Clock2: changed bit
11  );
12end entity;
13
14
15architecture rtl of sync_Command is