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