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