The namespace PoC.misc.sync
offers different clock-domain-crossing (CDC) synchronizer circuits. All synchronizers are based on the basic 2 flip-flop synchonizer called sync_Bits
. PoC has a generic and two platform specific implementations for Altera and Xilinx, which are choosen, if the appropriate MY_DEVICE
is configured in my_config.vhdl
.
The package PoC.sync
holds all component declarations for this namespace.
-
sync_Bits
Is a basic 2 flip-flop synchronizer. It's possible to configure the bit count of indivital bits. If a vector shall be synchronized, use one of the special synchronizers likesync_Vector
(see below). The vendor specific implementations are namedsync_Bits_Altera
andsync_Bits_Xilinx
respectivily.This synchronizer needs to be constrained, so static timing analysis will report the correct results. See the constraint folder for applieable constraint files for your synthesis tool.
-
sync_Reset
Is a variant of the 2 flip-flop synchronizer forReset
-signals, implementing asynchronous assertion and synchronous deassertion. The vendor specific implementations are namedsync_Reset_Altera
andsync_Reset_Xilinx
respectivily.This synchronizer needs to be constrained, so static timing analysis will report the correct results. See the constraint folder for applieable constraint files for your synthesis tool.
Based on the 2 flip-flop synchronizer, several "high-level" synchronizers are provided:
sync_Strobe
synchronizesStrobe
-signals across clock-domain-boundaries. A busy signal indicates the synchronization status and can be used as a internal gate-signal to disallow new incoming strobes. AStrobe
-signal is only for one clock period active.sync_Command
like sync_Strobe, it synchronizes a one clock period active signal across the clock-domain-boundary, but the input has multiple bits. After the multi bit strobe (Command) was transfered, the output goes to its idle value.sync_Vector
synchronizes a complete vector across the clock-domain-boundary. A changed detection on the input vector causes a register to latch the current state. The changed event is transfered to the new clock-domain and triggers a register to store the latched content, but in the new clock domain.
These synchronizers also need to be constrained, so static timing analysis will report the correct results. See the constraint folder for applieable constraint files for your synthesis tool.
See PoC.fifo.ic_got
for a cross-clock capable FIFO.