00001
00002
00003
00004 `default_nettype none
00005 `timescale 1ns / 1ps
00006
00007 (* KEEP_HIERARCHY = "TRUE" *)module dcm_module (sysclk, reset, ddr2_clk, ddr2_clkb, clk, clk90, clk1_16, dcm_locked_in, dcm_locked_out);
00008 `include "./ddr2_cont_parameters.vh"
00009 input wire sysclk;
00010 input wire reset;
00011 output wire [QUANTITY_OF_CLK_OUTPUT-1 : 0] ddr2_clk;
00012 output wire [QUANTITY_OF_CLK_OUTPUT-1 : 0] ddr2_clkb;
00013 output wire clk;
00014 output wire clk90;
00015 output wire clk1_16;
00016 input wire dcm_locked_in;
00017 output wire dcm_locked_out;
00018
00019 wire clk_bufg, clk_node, clk90_node, clk1_16_node, dcm1_locked;
00020 wire clk90_bufg, clk1_16_bufg;
00021
00022 DCM DCM_INST1 (
00023 .CLKIN(sysclk),
00024 .CLKFB(clk_bufg),
00025 .DSSEN(1'b0),
00026 .PSINCDEC(1'b0),
00027 .PSEN(1'b0),
00028 .PSCLK(1'b0),
00029 .RST(1'b0),
00030
00031 .CLK0(clk_node),
00032 .CLK90(clk90_node),
00033 .CLK180(),
00034 .CLK270(),
00035 .CLK2X(),
00036 .CLK2X180(),
00037 .CLKDV(clk1_16_node),
00038 .CLKFX(),
00039 .CLKFX180(),
00040 .LOCKED(dcm1_locked),
00041 .PSDONE(),
00042 .STATUS()
00043 );
00044 defparam DCM_INST1.CLKIN_PERIOD = 6.7;
00045 defparam DCM_INST1.DLL_FREQUENCY_MODE = "LOW";
00046 defparam DCM_INST1.DUTY_CYCLE_CORRECTION = "TRUE";
00047 defparam DCM_INST1.CLKDV_DIVIDE = 16.0;
00048 defparam DCM_INST1.PHASE_SHIFT = 0;
00049 defparam DCM_INST1.CLKOUT_PHASE_SHIFT = "NONE";
00050 defparam DCM_INST1.STARTUP_WAIT = "FALSE";
00051
00052
00053 BUFG CLK_BUFG_INST (
00054 .I(clk_node),
00055 .O(clk_bufg)
00056 );
00057 assign clk = clk_bufg;
00058
00059 BUFG CLK90_BUFG_INST (
00060 .I(clk90_node),
00061 .O(clk90_bufg)
00062 );
00063 assign clk90 = clk90_bufg;
00064
00065 BUFG CLK1_16_BUFG_INST (
00066 .I(clk1_16_node),
00067 .O(clk1_16_bufg)
00068 );
00069 assign clk1_16 = clk1_16_bufg;
00070
00071 generate
00072 genvar i;
00073 for(i=0; i<=QUANTITY_OF_CLK_OUTPUT-1; i=i+1) begin: DDR2_CLK
00074 ODDR2 #(
00075 .DDR_ALIGNMENT("NONE"),
00076 .SRTYPE("SYNC")
00077 ) ODDR2_CLK (
00078 .Q(ddr2_clk[i]),
00079 .C0(clk_bufg),
00080 .C1(~clk_bufg),
00081 .CE(1'b1),
00082 .D0(1'b1),
00083 .D1(1'b0),
00084 .R(reset),
00085 .S(1'b0)
00086 );
00087
00088 ODDR2 #(
00089 .DDR_ALIGNMENT("NONE"),
00090 .SRTYPE("SYNC")
00091 ) ODDR2_CLKB (
00092 .Q(ddr2_clkb[i]),
00093 .C0(clk_bufg),
00094 .C1(~clk_bufg),
00095 .CE(1'b1),
00096 .D0(1'b0),
00097 .D1(1'b1),
00098 .R(reset),
00099 .S(1'b0)
00100 );
00101 end
00102 endgenerate
00103
00104 assign dcm_locked_out = dcm1_locked;
00105 endmodule