1 ------------------------------------------------------------------------------- 2 -- File : SynchronizerOneShotCntVector.vhd 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2014-04-11 5 -- Last update: 2014-05-27 6 ------------------------------------------------------------------------------- 7 -- Description: Wrapper for multiple SynchronizerOneShotCnt modules 8 ------------------------------------------------------------------------------- 9 -- This file is part of 'SLAC Firmware Standard Library'. 10 -- It is subject to the license terms in the LICENSE.txt file found in the 11 -- top-level directory of this distribution and at: 12 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. 13 -- No part of 'SLAC Firmware Standard Library', including this file, 14 -- may be copied, modified, propagated, or distributed except according to 15 -- the terms contained in the LICENSE.txt file. 16 ------------------------------------------------------------------------------- 19 use ieee.std_logic_1164.
all;
24 --! @ingroup base_sync 27 TPD_G : := 1 ns;
-- Simulation FF output delay 29 RST_ASYNC_G : := false;
-- true if reset is asynchronous, false if reset is synchronous 30 COMMON_CLK_G : := false;
-- True if wrClk and rdClk are the same clock 31 RELEASE_DELAY_G : positive := 3;
-- Delay between deassertion of async and sync resets 34 USE_DSP48_G : := "no";
-- "no" for no DSP48 implementation, "yes" to use DSP48 slices 35 SYNTH_CNT_G : slv := "1";
-- Set to 1 for synthesising counter RTL, '0' to not synthesis the counter 36 CNT_RST_EDGE_G : := true;
-- true if counter reset should be edge detected, else level detected 40 -- Write Ports (wrClk domain) 42 -- Read Ports (rdClk domain) 47 -- Clocks and Reset Ports 52 end SynchronizerOneShotCntVector;
58 return ite(INPUT = "1", slvOne(WIDTH_G), 59 ite(INPUT = "0", slvZero(WIDTH_G), 61 end function fillVectorArray;
73 for i in (WIDTH_G-1) downto 0 generate 89 -- Write Ports (wrClk domain) 91 -- Read Ports (rdClk domain) 96 -- Clocks and Reset Ports 105 end generate GEN_MAP;
107 end generate GEN_VEC;
109 end architecture mapping;
CNT_RST_EDGE_Gboolean := true
( WIDTH_G- 1 downto 0) slv( CNT_WIDTH_G- 1 downto 0) MySlvArray
in cntRstsl :=not RST_POLARITY_G
slv( WIDTH_G- 1 downto 0) := fillVectorArray(SYNTH_CNT_G ) SYNTH_CNT_C
COMMON_CLK_Gboolean := false
array(natural range <> ,natural range <> ) of sl SlVectorArray
RST_ASYNC_Gboolean := false
in rollOverEnslv( WIDTH_G- 1 downto 0)
CNT_WIDTH_Gpositive := 16
USE_DSP48_Gstring := "no"
slv fillVectorArrayINPUT,
CNT_RST_EDGE_Gboolean := true
out cntOutslv( CNT_WIDTH_G- 1 downto 0)
in dataInslv( WIDTH_G- 1 downto 0)
slv( WIDTH_G- 1 downto 0) := fillVectorArray(IN_POLARITY_G ) IN_POLARITY_C
in rdRstsl :=not RST_POLARITY_G
RELEASE_DELAY_Gpositive := 3
CNT_WIDTH_Gpositive := 16
RST_ASYNC_Gboolean := false
in wrRstsl :=not RST_POLARITY_G
in wrRstsl :=not RST_POLARITY_G
in cntRstsl :=not RST_POLARITY_G
COMMON_CLK_Gboolean := false
slv( WIDTH_G- 1 downto 0) := fillVectorArray(OUT_POLARITY_G ) OUT_POLARITY_C
USE_DSP48_Gstring := "no"
in rdRstsl :=not RST_POLARITY_G
RELEASE_DELAY_Gpositive := 3
out dataOutslv( WIDTH_G- 1 downto 0)
out cntOutSlVectorArray ( WIDTH_G- 1 downto 0, CNT_WIDTH_G- 1 downto 0)