Entity: SyncClockFreq

Diagram

time TPD_G string USE_DSP_G real REF_CLK_FREQ_G real REFRESH_RATE_G real CLK_LOWER_LIMIT_G real CLK_UPPER_LIMIT_G boolean COMMON_CLK_G positive CNT_WIDTH_G sl clkIn sl locClk sl refClk slv(CNT_WIDTH_G-1 downto 0) freqOut sl freqUpdated sl locked sl tooFast sl tooSlow

Description


Company : SLAC National Accelerator Laboratory

Description: This module measures the frequency of an input clock

with respect to a stable reference clock.

This file is part of 'SLAC Firmware Standard Library'. It is subject to the license terms in the LICENSE.txt file found in the top-level directory of this distribution and at: https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. No part of 'SLAC Firmware Standard Library', including this file, may be copied, modified, propagated, or distributed except according to

the terms contained in the LICENSE.txt file.

Generics

Generic name Type Value Description
TPD_G time 1 ns Simulation FF output delay
USE_DSP_G string "no" "no" for no DSP implementation, "yes" to use DSP slices
REF_CLK_FREQ_G real 200.0E+6 Reference Clock frequency, units of Hz
REFRESH_RATE_G real 1.0E+3 Refresh rate, units of Hz
CLK_LOWER_LIMIT_G real 159.0E+6 Lower Limit for clock lock, units of Hz
CLK_UPPER_LIMIT_G real 161.0E+6 Lower Limit for clock lock, units of Hz
COMMON_CLK_G boolean false Set to true if (locClk = refClk) to save resources else false
CNT_WIDTH_G positive 32

Ports

Port name Direction Type Description
freqOut out slv(CNT_WIDTH_G-1 downto 0) units of Hz
freqUpdated out sl
locked out sl '1' CLK_LOWER_LIMIT_G < clkIn < CLK_UPPER_LIMIT_G
tooFast out sl '1' when clkIn > CLK_UPPER_LIMIT_G
tooSlow out sl '1' when clkIn < CLK_LOWER_LIMIT_G
clkIn in sl Input clock to measure
locClk in sl System clock
refClk in sl

Signals

Name Type Description
updated sl
lockedDet sl
tooFastDet sl
tooSlowDet sl
wrEn sl
doneAccum sl
freqHertz slv(CNT_WIDTH_G-1 downto 0)
cntIn slv(CNT_WIDTH_G-1 downto 0)
cntOut slv(CNT_WIDTH_G-1 downto 0)
cntStable slv(CNT_WIDTH_G-1 downto 0)
cntAccum slv(CNT_WIDTH_G-1 downto 0)
accum slv(CNT_WIDTH_G-1 downto 0)
cntOutDly slv(CNT_WIDTH_G-1 downto 0)
diffCnt slv(CNT_WIDTH_G-1 downto 0)

Constants

Name Type Value Description
REFRESH_MAX_CNT_C natural getTimeRatio(REF_CLK_FREQ_G,
REFRESH_RATE_G)
CLK_LOWER_LIMIT_C natural getTimeRatio(CLK_LOWER_LIMIT_G,
1.0E+0)
lower limit
CLK_UPPER_LIMIT_C natural getTimeRatio(CLK_UPPER_LIMIT_G,
1.0E+0)
upper limit

Processes

Description
------------------------- Free Running Counter -------------------------

Description
------------------------- Clock Monitoring Process -------------------------

Instantiations

Description

Calculate the frequency of the input clock