SURF  1.0
Gtx7QuadPll.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : Gtx7QuadPll.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2013-06-06
5 -- Last update: 2016-03-08
6 -------------------------------------------------------------------------------
7 -- Description: Wrapper for Xilinx 7-series GTX's QPLL
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 use ieee.numeric_std.all;
21 
22 use work.StdRtlPkg.all;
23 use work.AxiLitePkg.all;
24 
25 library unisim;
26 use unisim.vcomponents.all;
27 
28 --! @see entity
29  --! @ingroup xilinx_7Series_gtx7
30 entity Gtx7QuadPll is
31  generic (
32  TPD_G : time := 1 ns;
34  SIM_RESET_SPEEDUP_G : string := "TRUE";
35  SIM_VERSION_G : string := "4.0";
36  QPLL_CFG_G : bit_vector := x"0680181"; -- QPLL_CFG_G[6] selects the QPLL frequency band: 0 = upper band, 1 = lower band
37  QPLL_REFCLK_SEL_G : bit_vector := "001";
38  QPLL_FBDIV_G : bit_vector := "0100100000";
39  QPLL_FBDIV_RATIO_G : bit := '1';
40  QPLL_REFCLK_DIV_G : integer := 1);
41  port (
42  qPllRefClk : in sl;
43  qPllOutClk : out sl;
45  qPllLock : out sl;
46  qPllLockDetClk : in sl; -- Lock detect clock
48  qPllPowerDown : in sl := '0';
49  qPllReset : in sl;
50  -- AXI-Lite Interface
51  axilClk : in sl := '0';
52  axilRst : in sl := '0';
57 end entity Gtx7QuadPll;
58 
59 architecture mapping of Gtx7QuadPll is
60 
61  signal gtRefClk0 : sl;
62  signal gtRefClk1 : sl;
63  signal gtNorthRefClk0 : sl;
64  signal gtNorthRefClk1 : sl;
65  signal gtSouthRefClk0 : sl;
66  signal gtSouthRefClk1 : sl;
67  signal gtGRefClk : sl;
68 
69  signal drpEn : sl;
70  signal drpWe : sl;
71  signal drpRdy : sl;
72  signal drpAddr : slv(7 downto 0);
73  signal drpDi : slv(15 downto 0);
74  signal drpDo : slv(15 downto 0);
75 
76 begin
77 
78  --------------------------------------------------------------------------------------------------
79  -- QPLL clock select. Only ever use 1 clock to drive qpll. Never switch clocks.
80  --------------------------------------------------------------------------------------------------
81  gtRefClk0 <= qpllRefClk when QPLL_REFCLK_SEL_G = "001" else '0';
82  gtRefClk1 <= qpllRefClk when QPLL_REFCLK_SEL_G = "010" else '0';
83  gtNorthRefClk0 <= qpllRefClk when QPLL_REFCLK_SEL_G = "011" else '0';
84  gtNorthRefClk1 <= qpllRefClk when QPLL_REFCLK_SEL_G = "100" else '0';
85  gtSouthRefClk0 <= qpllRefClk when QPLL_REFCLK_SEL_G = "101" else '0';
86  gtSouthRefClk1 <= qpllRefClk when QPLL_REFCLK_SEL_G = "110" else '0';
87  gtGRefClk <= qpllRefClk when QPLL_REFCLK_SEL_G = "111" else '0';
88 
89  gtxe2_common_0_i : GTXE2_COMMON
90  generic map (
91  -- Simulation attributes
92  SIM_RESET_SPEEDUP => "TRUE",
93  SIM_QPLLREFCLK_SEL => QPLL_REFCLK_SEL_G,
94  SIM_VERSION => "4.0",
95 
96  ------------------COMMON BLOCK Attributes---------------
97  BIAS_CFG => (x"0000040000001000"),
98  COMMON_CFG => (x"00000000"),
99  QPLL_CFG => QPLL_CFG_G,
100  QPLL_CLKOUT_CFG => ("0000"),
101  QPLL_COARSE_FREQ_OVRD => ("010000"),
102  QPLL_COARSE_FREQ_OVRD_EN => ('0'),
103  QPLL_CP => ("0000011111"),
104  QPLL_CP_MONITOR_EN => ('0'),
105  QPLL_DMONITOR_SEL => ('0'),
106  QPLL_FBDIV => QPLL_FBDIV_G,
107  QPLL_FBDIV_MONITOR_EN => ('0'),
108  QPLL_FBDIV_RATIO => QPLL_FBDIV_RATIO_G,
109  QPLL_INIT_CFG => (x"000006"),
110  QPLL_LOCK_CFG => (x"21E8"),
111  QPLL_LPF => ("1111"),
112  QPLL_REFCLK_DIV => QPLL_REFCLK_DIV_G)
113  port map (
114  ------------- Common Block - Dynamic Reconfiguration Port (DRP) -----------
115  DRPADDR => drpAddr,
116  DRPCLK => axilClk,
117  DRPDI => drpDi,
118  DRPDO => drpDo,
119  DRPEN => drpEn,
120  DRPRDY => drpRdy,
121  DRPWE => drpWe,
122  ---------------------- Common Block - Ref Clock Ports ---------------------
123  GTGREFCLK => gtGRefClk,
124  GTNORTHREFCLK0 => gtNorthRefClk0,
125  GTNORTHREFCLK1 => gtNorthRefClk1,
126  GTREFCLK0 => gtRefClk0,
127  GTREFCLK1 => gtRefClk1,
128  GTSOUTHREFCLK0 => gtSouthRefClk0,
129  GTSOUTHREFCLK1 => gtSouthRefClk1,
130  ------------------------- Common Block - QPLL Ports -----------------------
131  QPLLDMONITOR => open,
132  ----------------------- Common Block - Clocking Ports ----------------------
133  QPLLOUTCLK => qPllOutClk,
134  QPLLOUTREFCLK => qPllOutRefClk,
135  REFCLKOUTMONITOR => open,
136  ------------------------- Common Block - QPLL Ports ------------------------
137  QPLLFBCLKLOST => open,
138  QPLLLOCK => qPllLock,
139  QPLLLOCKDETCLK => qPllLockDetClk,
140  QPLLLOCKEN => '1',
141  QPLLOUTRESET => '0',
142  QPLLPD => qPllPowerDown,
143  QPLLREFCLKLOST => qPllRefClkLost,
144  QPLLREFCLKSEL => to_stdlogicvector(QPLL_REFCLK_SEL_G),
145  QPLLRESET => qPllReset,
146  QPLLRSVD1 => "0000000000000000",
147  QPLLRSVD2 => "11111",
148  --------------------------------- QPLL Ports -------------------------------
149  BGBYPASSB => '1',
150  BGMONITORENB => '1',
151  BGPDB => '1',
152  BGRCALOVRD => "00000",
153  PMARSVD => "00000000",
154  RCALENB => '1');
155 
156  U_AxiLiteToDrp : entity work.AxiLiteToDrp
157  generic map (
158  TPD_G => TPD_G,
160  COMMON_CLK_G => true,
161  EN_ARBITRATION_G => false,
162  TIMEOUT_G => 4096,
163  ADDR_WIDTH_G => 8,
164  DATA_WIDTH_G => 16)
165  port map (
166  -- AXI-Lite Port
167  axilClk => axilClk,
168  axilRst => axilRst,
173  -- DRP Interface
174  drpClk => axilClk,
175  drpRst => axilRst,
176  drpRdy => drpRdy,
177  drpEn => drpEn,
178  drpWe => drpWe,
179  drpAddr => drpAddr,
180  drpDi => drpDi,
181  drpDo => drpDo);
182 
183 end architecture mapping;
ADDR_WIDTH_Gpositive range 1 to 32:= 16
QPLL_FBDIV_Gbit_vector := "0100100000"
Definition: Gtx7QuadPll.vhd:38
slv( 15 downto 0) drpDi
Definition: Gtx7QuadPll.vhd:73
in axilWriteMasterAxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C
Definition: Gtx7QuadPll.vhd:55
out drpAddrslv( ADDR_WIDTH_G- 1 downto 0)
in axilReadMasterAxiLiteReadMasterType := AXI_LITE_READ_MASTER_INIT_C
Definition: Gtx7QuadPll.vhd:53
AxiLiteWriteMasterType
Definition: AxiLitePkg.vhd:111
std_logic sl
Definition: StdRtlPkg.vhd:28
EN_ARBITRATION_Gboolean := false
DATA_WIDTH_Gpositive range 1 to 32:= 16
out axilReadSlaveAxiLiteReadSlaveType
in axilClksl := '0'
Definition: Gtx7QuadPll.vhd:51
in drpDoslv( DATA_WIDTH_G- 1 downto 0)
COMMON_CLK_Gboolean := false
out axilReadSlaveAxiLiteReadSlaveType
Definition: Gtx7QuadPll.vhd:54
slv( 15 downto 0) drpDo
Definition: Gtx7QuadPll.vhd:74
QPLL_CFG_Gbit_vector := x"0680181"
Definition: Gtx7QuadPll.vhd:36
AXI_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_DECERR_C
Definition: Gtx7QuadPll.vhd:33
out axilWriteSlaveAxiLiteWriteSlaveType
out qPllRefClkLostsl
Definition: Gtx7QuadPll.vhd:47
slv( 1 downto 0) := "11" AXI_RESP_DECERR_C
Definition: AxiLitePkg.vhd:49
_library_ ieeeieee
Definition: Gtx7Core.vhd:18
in axilReadMasterAxiLiteReadMasterType
TPD_Gtime := 1 ns
Definition: Gtx7QuadPll.vhd:32
slv( 7 downto 0) drpAddr
Definition: Gtx7QuadPll.vhd:72
AxiLiteReadMasterType
Definition: AxiLitePkg.vhd:59
SIM_RESET_SPEEDUP_Gstring := "TRUE"
Definition: Gtx7QuadPll.vhd:34
out axilWriteSlaveAxiLiteWriteSlaveType
Definition: Gtx7QuadPll.vhd:56
TIMEOUT_Gpositive := 4096
out qPllOutRefClksl
Definition: Gtx7QuadPll.vhd:44
SIM_VERSION_Gstring := "4.0"
Definition: Gtx7QuadPll.vhd:35
AxiLiteReadMasterType :=(araddr =>( others => '0'),arprot =>( others => '0'),arvalid => '0',rready => '1') AXI_LITE_READ_MASTER_INIT_C
Definition: AxiLitePkg.vhd:69
QPLL_REFCLK_DIV_Ginteger := 1
Definition: Gtx7QuadPll.vhd:40
AxiLiteReadSlaveType
Definition: AxiLitePkg.vhd:85
QPLL_REFCLK_SEL_Gbit_vector := "001"
Definition: Gtx7QuadPll.vhd:37
in axilWriteMasterAxiLiteWriteMasterType
in qPllResetsl
Definition: Gtx7QuadPll.vhd:49
AxiLiteWriteMasterType :=(awaddr =>( others => '0'),awprot =>( others => '0'),awvalid => '0',wdata =>( others => '0'),wstrb =>( others => '1'),wvalid => '0',bready => '1') AXI_LITE_WRITE_MASTER_INIT_C
Definition: AxiLitePkg.vhd:125
AXI_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_DECERR_C
TPD_Gtime := 1 ns
in qPllRefClksl
Definition: Gtx7QuadPll.vhd:42
QPLL_FBDIV_RATIO_Gbit := '1'
Definition: Gtx7QuadPll.vhd:39
in axilRstsl := '0'
Definition: Gtx7QuadPll.vhd:52
gtxe2_common gtxe2_common_0_igtxe2_common_0_i
in qPllPowerDownsl := '0'
Definition: Gtx7QuadPll.vhd:48
out qPllLocksl
Definition: Gtx7QuadPll.vhd:45
out qPllOutClksl
Definition: Gtx7QuadPll.vhd:43
out drpDislv( DATA_WIDTH_G- 1 downto 0)
std_logic_vector slv
Definition: StdRtlPkg.vhd:29
in qPllLockDetClksl
Definition: Gtx7QuadPll.vhd:46