--******************************************************************************
--* @short BUFG_CLK0_SUBM VHDL submodule
--*
--* DCM with CLK0 deskew
--* Device: Virtex-II Family
--*
--* copied fromXilinX Virtex2 UG -- HS
--* needs 90 us to lock (at 40 MHz -> 4000 clocks)
--* reset needs to be high for at least 3 cycles after reconfig
--*
--******************************************************************************
--/
library IEEE;
use IEEE.std_logic_1164.all;
-- tbd: change to external feedback (optionally)
-- Q: feedback input via IBUFG ?
--
-- pragma translate_off
library UNISIM;
use UNISIM.VCOMPONENTS.all;
-- pragma translate_on
--
entity BUFG_CLK0_SUBM is
port (
CLK_IN : in std_logic;
RST : in std_logic;
CLK1X : out std_logic;
LOCK : out std_logic
);
end BUFG_CLK0_SUBM;
--
architecture BUFG_CLK0_SUBM_arch of BUFG_CLK0_SUBM is
-- Components Declarations:
component BUFG
port (
I : in std_logic;
O : out std_logic
);
end component;
component DCM
-- pragma translate_off
generic (
DLL_FREQUENCY_MODE : string := "LOW";
DUTY_CYCLE_CORRECTION : boolean := true;
STARTUP_WAIT : boolean := false
);
-- pragma translate_on
port ( CLKIN : in std_logic;
CLKFB : in std_logic;
DSSEN : in std_logic;
PSINCDEC : in std_logic;
PSEN : in std_logic;
PSCLK : in std_logic;
RST : in std_logic;
CLK0 : out std_logic;
CLK90 : out std_logic;
CLK180 : out std_logic;
CLK270 : out std_logic;
CLK2X : out std_logic;
CLK2X180 : out std_logic;
CLKDV : out std_logic;
CLKFX : out std_logic;
CLKFX180 : out std_logic;
LOCKED : out std_logic;
PSDONE : out std_logic;
STATUS : out std_logic_vector(7 downto 0)
);
end component;
-- Attributes
attribute DLL_FREQUENCY_MODE : string;
attribute DUTY_CYCLE_CORRECTION : string;
attribute STARTUP_WAIT : string;
attribute DLL_FREQUENCY_MODE of U_DCM : label is "LOW";
attribute DUTY_CYCLE_CORRECTION of U_DCM : label is "TRUE";
attribute STARTUP_WAIT of U_DCM : label is "TRUE";
-- Signal Declarations:
signal GND : std_logic;
signal CLK0_W : std_logic;
signal CLK1X_W : std_logic;
begin
GND <= '0';
CLK1X <= CLK1X_W;
-- DCM Instantiation
U_DCM: DCM
port map (
CLKIN => CLK_IN,
CLKFB => CLK1X_W,
DSSEN => GND,
PSINCDEC => GND,
PSEN => GND,
PSCLK => GND,
RST => RST,
CLK0 => CLK0_W,
LOCKED => LOCK
);
-- BUFG Instantiation
U_BUFG: BUFG
port map (
I => CLK0_W,
O => CLK1X_W
);
end BUFG_CLK0_SUBM_arch;