1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- library ieee;
- use ieee.std_logic_1164.all;
-
- entity sync_ff is
- generic
- (
- DEPTH : positive range 2 to 5 := 2;
- RST_VALUE : std_logic := '0'
- );
-
- port
- (
- --! Destination domain clock
- clk : in std_logic;
- --! Low active destination domain reset
- reset : in std_logic;
-
- --! Single bit data input
- din : in std_logic;
- --! Single bit data output
- dout : out std_logic
- );
-
- end entity sync_ff;
-
- architecture rtl of sync_ff is
-
- signal sync : std_logic_vector( DEPTH - 1 downto 0 );
-
- begin
-
- p_sync: process ( clk, reset ) is
- begin
-
- if ( reset = '1' ) then
-
- sync <= ( others => RST_VALUE );
-
- elsif ( rising_edge( clk ) ) then
-
- sync( DEPTH - 1 downto 1 ) <= sync( DEPTH - 2 downto 0 );
- sync( 0 ) <= din;
-
- end if;
- end process p_sync;
-
- c_dout: dout <= sync( DEPTH - 1 );
-
- end architecture rtl;
|