SURF  1.0
AxiLtc2270DeserBit.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : AxiLtc2270DeserBit.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2014-04-21
5 -- Last update: 2014-04-21
6 -------------------------------------------------------------------------------
7 -- Description: ADC DDR Deserializer
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.std_logic_unsigned.all;
21 use ieee.std_logic_arith.all;
22 
23 use work.StdRtlPkg.all;
24 use work.AxiLtc2270Pkg.all;
25 
26 library unisim;
27 use unisim.vcomponents.all;
28 
29 --! @see entity
30  --! @ingroup devices_Linear_lct2270
32  generic (
33  TPD_G : time := 1 ns;
34  DELAY_INIT_G : slv(4 downto 0) := (others => '0');
35  IODELAY_GROUP_G : string := "AXI_LTC2270_IODELAY_GRP");
36  port (
37  -- ADC Data (clk domain)
38  dataP : in sl;
39  dataN : in sl;
40  Q1 : out sl;
41  Q2 : out sl;
42  -- IO_Delay (refClk200MHz domain)
44  delayInData : in slv(4 downto 0);
45  delayOutData : out slv(4 downto 0);
46  -- Clocks
47  clk : in sl;
49 end AxiLtc2270DeserBit;
50 
51 architecture rtl of AxiLtc2270DeserBit is
52 
53  signal data,
54  dataDly : sl;
55 
56  attribute IODELAY_GROUP : string;
57  attribute IODELAY_GROUP of IDELAYE2_inst : label is IODELAY_GROUP_G;
58 
59 begin
60 
61  IBUFDS_Inst : IBUFDS
62  port map (
63  I => dataP,
64  IB => dataN,
65  O => data);
66 
67  IDELAYE2_inst : IDELAYE2
68  generic map (
69  CINVCTRL_SEL => "FALSE", -- Enable dynamic clock inversion (FALSE, TRUE)
70  DELAY_SRC => "IDATAIN", -- Delay input (IDATAIN, DATAIN)
71  HIGH_PERFORMANCE_MODE => "FALSE", -- Reduced jitter ("TRUE"), Reduced power ("FALSE")
72  IDELAY_TYPE => "VAR_LOAD", -- FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
73  IDELAY_VALUE => conv_integer(DELAY_INIT_G), -- Input delay tap setting (0-31)
74  PIPE_SEL => "FALSE", -- Select pipelined mode, FALSE, TRUE
75  REFCLK_FREQUENCY => 200.0, -- IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).
76  SIGNAL_PATTERN => "DATA") -- DATA, CLOCK input signal
77  port map (
78  CNTVALUEOUT => delayOutData, -- 5-bit output: Counter value output
79  DATAOUT => dataDly, -- 1-bit output: Delayed data output
80  C => refClk200MHz, -- 1-bit input: Clock input
81  CE => '0', -- 1-bit input: Active high enable increment/decrement input
82  CINVCTRL => '0', -- 1-bit input: Dynamic clock inversion input
83  CNTVALUEIN => delayInData, -- 5-bit input: Counter value input
84  DATAIN => '0', -- 1-bit input: Internal delay data input
85  IDATAIN => data, -- 1-bit input: Data input from the I/O
86  INC => '0', -- 1-bit input: Increment / Decrement tap delay input
87  LD => '1', -- 1-bit input: Load IDELAY_VALUE input
88  LDPIPEEN => '0', -- 1-bit input: Enable PIPELINE register to load data input
89  REGRST => delayInLoad); -- 1-bit input: Active-high reset tap-delay input
90 
91  IDDR_Inst : IDDR
92  generic map (
93  DDR_CLK_EDGE => "SAME_EDGE_PIPELINED", -- "OPPOSITE_EDGE", "SAME_EDGE", or "SAME_EDGE_PIPELINED"
94  INIT_Q1 => '0', -- Initial value of Q1: '0' or '1'
95  INIT_Q2 => '0', -- Initial value of Q2: '0' or '1'
96  SRTYPE => "SYNC") -- Set/Reset type: "SYNC" or "ASYNC"
97  port map (
98  D => dataDly, -- 1-bit DDR data input
99  C => clk, -- 1-bit clock input
100  CE => '1', -- 1-bit clock enable input
101  R => '0', -- 1-bit reset
102  S => '0', -- 1-bit set
103  Q1 => Q1, -- 1-bit output for positive edge of clock
104  Q2 => Q2); -- 1-bit output for negative edge of clock
105 
106 end rtl;
std_logic sl
Definition: StdRtlPkg.vhd:28
out delayOutDataslv( 4 downto 0)
DELAY_INIT_Gslv( 4 downto 0) :=( others => '0')
_library_ ieeeieee
Slv5VectorArray ( 0 to 1, 0 to 7) data
_library_ unisimunisim
IODELAY_GROUP_Gstring := "AXI_LTC2270_IODELAY_GRP"
in delayInDataslv( 4 downto 0)
std_logic_vector slv
Definition: StdRtlPkg.vhd:29