// XAPP132 // // Standard DLL Example // From ftp://ftp.xilinx.com/pub/applications/xapp/xapp132.zip // for use in Fall 2003 CS152 // to see what the input/outputs are for CLKDLL, see the xapp132.pdf file // module dll_standard (CLKIN, RESET, CLK0, CLK_DIV_OUT, LOCKED); input CLKIN, RESET; output CLK0, CLK_DIV_OUT, LOCKED; wire clkin_w, CLK_DIV_OUT, CLK0, LOCKED; wire dll1_clk0, dll2_clk0, dll3_clk0, dll4_clk0; wire dll1_clkdv, dll2_clkdv, dll3_clkdv, dll4_clkdv; IBUFG clkpad (.I(CLKIN), .O(clkin_w)); //IBUF rstpad (.I(RESET), .O(RESET_w)); //commented out the IBUFG because it was causing Xilinx Problems //says Jack 10/11/2003 CLKDLLE dll1 (.CLKIN(clkin_w), .CLKFB(dll1_clk0), .RST(RESET), .CLK0(dll1_clk0), .CLK90(), .CLK180(), .CLK270(), .CLK2X(), .CLKDV(dll1_clkdv), .LOCKED(locked1)); CLKDLLE dll2 (.CLKIN(dll1_clkdv), .CLKFB(dll2_clk0), .RST(locked1), .CLK0(dll2_clk0), .CLK90(), .CLK180(), .CLK270(), .CLK2X(), .CLKDV(dll2_clkdv), .LOCKED(locked2)); CLKDLLE dll3 (.CLKIN(dll2_clkdv), .CLKFB(dll3_clk0), .RST(locked2), .CLK0(dll3_clk0), .CLK90(), .CLK180(), .CLK270(), .CLK2X(), .CLKDV(dll3_clkdv), .LOCKED(locked3)); CLKDLLE dll4 (.CLKIN(dll3_clkdv), .CLKFB(dll4_clk0), .RST(locked3), .CLK0(dll4_clk0), .CLK90(), .CLK180(), .CLK270(), .CLK2X(), .CLKDV(dll4_clkdv), .LOCKED()); //you can use similar attributes here to set the parameters inside of the clkdlle module //values you set using defpram here will overwrite parameter values inside of the clkdlle //look inside of the clkdlle file to see more examples. BUFG buf_clk0 (.I(dll1_clk0), .O(CLK0)); BUFG buf_clk_div (.I(dll4_clkdv), .O(CLK_DIV_OUT)); endmodule