LVDS_CLOCK_IN.vhd


1
----------------------------------------------------------------------------------
2
-- Company: 
3
-- Engineer: 
4
-- 
5
-- Create Date:    11:59:57 10/12/2009 
6
-- Design Name: 
7
-- Module Name:    LVDS_CLOCK_IN - Behavioral 
8
-- Project Name: 
9
-- Target Devices: 
10
-- Tool versions: 
11
-- Description: 
12
--
13
-- Dependencies: 
14
--
15
-- Revision: 
16
-- Revision 0.01 - File Created
17
-- Additional Comments: 
18
--
19
----------------------------------------------------------------------------------
20
library IEEE;
21
use IEEE.STD_LOGIC_1164.ALL;
22
use IEEE.STD_LOGIC_ARITH.ALL;
23
use IEEE.STD_LOGIC_UNSIGNED.ALL;
24
Library UNISIM;
25
use UNISIM.vcomponents.all;
26
27
28
29
entity LVDS_CLOCK_IN is
30
   Port (  AFE_CLK_P : in  STD_LOGIC;
31
          AFE_CLK_N : in  STD_LOGIC;
32
--        AFE_DAT_P : in  STD_LOGIC;
33
--         AFE_DAT_N : in  STD_LOGIC;
34
        DCM_RESET : in STD_LOGIC;
35
--        DDR_RESET : in STD_LOGIC;
36
--        SET_DDR : in STD_LOGIC;
37
        CLOCK_OUT0 : out STD_LOGIC;
38
        CLOCK_OUT180 : out STD_LOGIC
39
--        DATA_OUTQ0 : out STD_LOGIC;
40
--        DATA_OUTQ1 : out STD_LOGIC
41
      );
42
end LVDS_CLOCK_IN;
43
44
architecture Behavioral of LVDS_CLOCK_IN is
45
46
signal CLOCK_INT : STD_LOGIC;
47
signal CLOCK_OUT0_int : STD_LOGIC;
48
signal CLOCK_OUT180_int : STD_LOGIC;
49
--signal CLOCK_OUT0_out : STD_LOGIC;
50
--signal CLOCK_OUT180_out : STD_LOGIC;
51
signal CLKFB_in : STD_LOGIC;
52
--signal DATA_INT : STD_LOGIC;
53
54
--constant IDDR2_CE : STD_LOGIC := '1';
55
56
begin
57
58
A : IBUFGDS
59
      port map (O => CLOCK_INT,
60
                I => AFE_CLK_P,
61
                IB => AFE_CLK_N);
62
              
63
--B : IBUFDS
64
--      port map (O => DATA_INT,
65
--                I => AFE_DAT_P,
66
--                IB => AFE_DAT_N);
67
68
C : BUFG
69
      port map (I=>CLOCK_OUT0_int,
70
                O=>CLOCK_OUT0);
71
72
D : BUFG
73
      port map (I=>CLOCK_OUT0_int,
74
                O=>CLKFB_in);
75
76
D1 : BUFG
77
      port map (I=>CLOCK_OUT180_int,
78
                O=>CLOCK_OUT180);
79
80
E : DCM_SP
81
   generic map (
82
      CLKDV_DIVIDE => 2.0, --  Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
83
                           --     7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
84
      CLKFX_DIVIDE => 2,   --  Can be any interger from 1 to 32
85
      CLKFX_MULTIPLY => 2, --  Can be any integer from 1 to 32
86
      CLKIN_DIVIDE_BY_2 => FALSE, --  TRUE/FALSE to enable CLKIN divide by two feature
87
      CLKIN_PERIOD => 6.25, --  Specify period of input clock
88
      CLKOUT_PHASE_SHIFT => "NONE", --  Specify phase shift of "NONE", "FIXED" or "VARIABLE" 
89
      CLK_FEEDBACK => "1X",         --  Specify clock feedback of "NONE", "1X" or "2X" 
90
      DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- "SOURCE_SYNCHRONOUS", "SYSTEM_SYNCHRONOUS" or
91
                                             --     an integer from 0 to 15
92
      DLL_FREQUENCY_MODE => "LOW",     -- "HIGH" or "LOW" frequency mode for DLL
93
      DUTY_CYCLE_CORRECTION => TRUE, --  Duty cycle correction, TRUE or FALSE
94
      PHASE_SHIFT => 0,        --  Amount of fixed phase shift from -255 to 255
95
      STARTUP_WAIT => FALSE) --  Delay configuration DONE until DCM_SP LOCK, TRUE/FALSE
96
   port map (
97
      CLK0 => CLOCK_OUT0_int,     -- 0 degree DCM CLK ouptput
98
      CLK180 => CLOCK_OUT180_int, -- 180 degree DCM CLK output
99
      CLK270 => open, -- 270 degree DCM CLK output
100
      CLK2X => open,   -- 2X DCM CLK output
101
      CLK2X180 => open, -- 2X, 180 degree DCM CLK out
102
      CLK90 => open,   -- 90 degree DCM CLK output
103
      CLKDV => open,   -- Divided DCM CLK out (CLKDV_DIVIDE)
104
      CLKFX => open,   -- DCM CLK synthesis out (M/D)
105
      CLKFX180 => open, -- 180 degree CLK synthesis out
106
      LOCKED => open, -- DCM LOCK status output
107
      PSDONE => open, -- Dynamic phase adjust done output
108
      STATUS => open, -- 8-bit DCM status bits output
109
      CLKFB => CLKFB_in,   -- DCM clock feedback
110
      CLKIN => CLOCK_INT,   -- Clock input (from IBUFG, BUFG or DCM)
111
      PSCLK => open,   -- Dynamic phase adjust clock input
112
      PSEN => open,     -- Dynamic phase adjust enable input
113
      PSINCDEC => open, -- Dynamic phase adjust increment/decrement
114
      RST => DCM_RESET        -- DCM asynchronous reset input
115
   );
116
  
117
--CLOCK_OUT180 <= CLOCK_OUT180_out;
118
--CLOCK_OUT0 <= CLOCK_OUT0_out;
119
120
--F : IDDR2
121
--generic map (
122
--   DDR_ALIGNMENT => "NONE", -- Sets output alignment 
123
--                            -- to "NONE", "C0" or "C1"
124
--   INIT_Q0 => '0', -- Sets initial state of the Q0  
125
--                   --   output to ?0? or ?1?
126
--   INIT_Q1 => '0', -- Sets initial state of the Q1 
127
--                   --   output to ?0? or ?1?
128
--   SRTYPE => "SYNC") -- Specifies "SYNC" or "ASYNC" 
129
--                      --   set/reset
130
--port map (
131
--   Q0 => DATA_OUTQ0, -- 1-bit output captured with C0 clock
132
--   Q1 => DATA_OUTQ1, -- 1-bit output captured with C1 clock
133
--   C0 => CLOCK_OUT0_int, -- 1-bit clock input
134
--   C1 => CLOCK_OUT180_int, -- 1-bit clock input
135
--   CE => IDDR2_CE, -- 1-bit clock enable input
136
--   D => DATA_INT,   -- 1-bit DDR data input
137
--   R => DDR_RESET,   -- 1-bit reset input
138
--   S => SET_DDR    -- 1-bit set input
139
--);
140
141
         
142
end Behavioral;