SURF  1.0
AxiAd9467Pll.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : AxiAd9467Core.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2014-09-23
5 -- Last update: 2014-09-24
6 -------------------------------------------------------------------------------
7 -- Description: AD9467 PLL Module
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 -------------------------------------------------------------------------------
17 
18 library ieee;
19 use ieee.std_logic_1164.all;
20 
21 use work.StdRtlPkg.all;
22 
23 library unisim;
24 use unisim.vcomponents.all;
25 
26 --! @see entity
27  --! @ingroup devices_AnalogDevices_ad9467
28 entity AxiAd9467Pll is
29  generic (
30  TPD_G : time := 1 ns;
31  ADC_CLK_FREQ_G : real := 250.0E+6);
32  port (
33  -- ADC Clocking ports
34  adcClkOutP : out sl;
35  adcClkOutN : out sl;
36  adcClkInP : in sl;
37  adcClkInN : in sl;
38  -- PLL Status
39  pllLocked : out sl;
40  -- ADC Reference Signals
41  adcClk : in sl;
42  adcRst : in sl);
43 end AxiAd9467Pll;
44 
45 architecture mapping of AxiAd9467Pll is
46 
47  constant ADC_CLK_PERIOD_C : real := 1.0 / ADC_CLK_FREQ_G;
48  constant ADC_CLK_PERIOD_NS_C : real := 1.0E+9 * ADC_CLK_PERIOD_C;
49  constant CLKFBOUT_MULT_F_C : real := 1.0E+9 / ADC_CLK_FREQ_G;
50 
51  signal clkFeedBackIn : sl;
52  signal clkFeedBack : sl;
53  signal clkFeedBackOut : sl;
54 
55 begin
56 
57  IBUFGDS_Inst : IBUFGDS
58  port map (
59  I => adcClkInP,
60  IB => adcClkInN,
61  O => clkFeedBackIn);
62 
63  MMCME2_ADV_Inst : MMCME2_ADV
64  generic map(
65  BANDWIDTH => "LOW",
66  CLKOUT4_CASCADE => false,
67  COMPENSATION => "ZHOLD",
68  STARTUP_WAIT => false,
69  DIVCLK_DIVIDE => 1,
70  CLKFBOUT_MULT_F => CLKFBOUT_MULT_F_C,
71  CLKFBOUT_PHASE => 0.000,
72  CLKFBOUT_USE_FINE_PS => false,
73  CLKIN1_PERIOD => ADC_CLK_PERIOD_NS_C,
74  REF_JITTER1 => 0.100)
75  port map (
76  -- Output clocks
77  CLKFBOUT => clkFeedBack,
78  CLKFBOUTB => open,
79  CLKOUT0 => open,
80  CLKOUT0B => open,
81  CLKOUT1 => open,
82  CLKOUT1B => open,
83  CLKOUT2 => open,
84  CLKOUT2B => open,
85  CLKOUT3 => open,
86  CLKOUT3B => open,
87  CLKOUT4 => open,
88  CLKOUT5 => open,
89  CLKOUT6 => open,
90  -- Input clock control
91  CLKFBIN => clkFeedBackIn,
92  CLKIN1 => adcClk,
93  CLKIN2 => '0',
94  -- Tied to always select the primary input clock
95  CLKINSEL => '1',
96  -- Ports for dynamic reconfiguration
97  DADDR => (others => '0'),
98  DCLK => '0',
99  DEN => '0',
100  DI => (others => '0'),
101  DO => open,
102  DRDY => open,
103  DWE => '0',
104  -- Ports for dynamic phase shift
105  PSCLK => '0',
106  PSEN => '0',
107  PSINCDEC => '0',
108  PSDONE => open,
109  -- Other control and status signals
110  LOCKED => pllLocked,
111  CLKINSTOPPED => open,
112  CLKFBSTOPPED => open,
113  PWRDWN => '0',
114  RST => adcRst);
115 
116  BUFH_West : BUFH
117  port map (
118  I => clkFeedBack,
119  O => clkFeedBackOut);
120 
121  ClkOutBufDiff_Inst : entity work.ClkOutBufDiff
122  port map (
124  clkOutP => adcClkOutP,
125  clkOutN => adcClkOutN);
126 
127 end mapping;
real := 1.0E+9/ ADC_CLK_FREQ_G CLKFBOUT_MULT_F_C
out adcClkOutPsl
std_logic sl
Definition: StdRtlPkg.vhd:28
out adcClkOutNsl
out pllLockedsl
_library_ ieeeieee
ADC_CLK_FREQ_Greal := 250.0E+6
real := 1.0E+9* ADC_CLK_PERIOD_C ADC_CLK_PERIOD_NS_C
real := 1.0/ ADC_CLK_FREQ_G ADC_CLK_PERIOD_C
TPD_Gtime := 1 ns