| InstructionsThe circuit shown below implements a 2x clock multiplier and also 
              uses the CLK0 clock output with zero ns skew between registers on 
              the same chip. A clock divider circuit could alternatively be implemented 
              using similar connections. Because any single DLL can only access 
              at most two BUFGs, any additional output clock signals must be routed 
              from the DLL in this example on the high speed backbone routing. 
 VHDLlibrary ieee; use ieee.std_logic_1164.all;
 library unisim;
 use unisim.vcomponents.all;
 
 entity dll_standard is
 port (CLKIN : in std_logic;
 RESET : in std_logic;
 CLK0 : out std_logic;
 CLK2X : out std_logic;
 LOCKED: out std_logic);
 end dll_standard;
 
 architecture structural of dll_standard is
 
 signal CLKIN_w, RESET_w, CLK0_dll, CLK0_g, CLK2X_dll, LOCKED_dll : 
            std_logic;
 
 begin
 
 clkpad : IBUFG port map (I=>CLKIN, O=>CLKIN_w);
 rstpad : IBUF port map (I=>RESET, O=>RESET_w);
 
 dll : CLKDLL port map (CLKIN=>CLKIN_w, CLKFB=>CLK0_g, RST=>RESET_w, 
            CLK0=>CLK0_dll, CLK90=>open, CLK180=>open, CLK270=>open, CLK2X=>CLK2X_dll, 
            CLKDV=>open, LOCKED=>LOCKED_dll);
 
 clkg : BUFG port map (I=>CLK0_dll, O=>CLK0_g);
 clk2xg : BUFG port map (I=>CLK2X_dll, O=>CLK2X);
 lckpad : OBUF port map (I=>LOCKED_dll, O=>LOCKED);
 
 CLK0 <= CLK0_g;
 
 end structural;
 Verilog// XAPP174 //
 // DLL 1X and 2X Example
 //
 
 module dll_standard (CLKIN, RESET, CLK0, CLK2X, LOCKED);
 input CLKIN, RESET;
 output CLK0, CLK2X, LOCKED;
 
 wire CLKIN_w, RESET_w, CLK0_dll, CLK2X_dll, LOCKED_dll;
 
 IBUFG clkpad (.I(CLKIN), .O(CLKIN_w));
 IBUF rstpad (.I(RESET), .O(RESET_w));
 
 CLKDLL dll (.CLKIN(CLKIN_w), .CLKFB(CLK0), .RST(RESET_w), .CLK0(CLK0_dll), 
            .CLK90(), .CLK180(), .CLK270(), .CLK2X(CLK2X_dll), .CLKDV(), .LOCKED(LOCKED_dll));
 
 BUFG clkg (.I(CLK0_dll), .O(CLK0));
 BUFG clk2xg (.I(CLK2X_dll), .O(CLK2X));
 OBUF lckpad (.I(LOCKED_dll), .O(LOCKED));
 
 endmodule
   |