x393  1.0
FPGAcodeforElphelNC393camera
dual_clock_source.v
Go to the documentation of this file.
1 
39 `timescale 1ns/1ps
40 
42  parameter CLKIN_PERIOD = 20, //ns >1.25, 600<Fvco<1200
43  // Fvco=Fclkin*CLKFBOUT_MULT_F/DIVCLK_DIVIDE, Fout=Fvco/CLKOUT#_DIVIDE
44 
45  parameter DIVCLK_DIVIDE = 1, // Integer 1..106. Divides all outputs with respect to CLKIN
46  parameter CLKFBOUT_MULT = 20, // integer 2 to 64 . Together with CLKOUT#_DIVIDE and DIVCLK_DIVIDE
47  parameter CLKOUT_DIV_CLK1X = 10, //
48  parameter CLKOUT_DIV_CLK2X = 5, //
49  parameter PHASE_CLK2X = 0.000, // degrees, relative to clk1x (3 significant digits, -360.000...+360.000)
50  parameter BUF_CLK1X = "BUFG", // "BUFG", "BUFH", "BUFR", "NONE"
51  parameter BUF_CLK2X = "BUFG" // "BUFG", "BUFH", "BUFR", "NONE"
52 )(
53  input rst,
54  input clk_in,
55  input pwrdwn,
56  output clk1x,
57  output clk2x,
58  output locked
59 );
61  generate
62  if (BUF_CLK1X == "BUFG") BUFG clk1x_i (.O(clk1x), .I(clk1x_pre));
63  else if (BUF_CLK1X == "BUFH") BUFH clk1x_i (.O(clk1x), .I(clk1x_pre));
64  else if (BUF_CLK1X == "BUFR") BUFR clk1x_i (.O(clk1x), .I(clk1x_pre), .CE(1'b1), .CLR(rst));
65  else if (BUF_CLK1X == "BUFMR") BUFMR clk1x_i (.O(clk1x), .I(clk1x_pre));
66  else if (BUF_CLK1X == "BUFIO") BUFIO clk1x_i (.O(clk1x), .I(clk1x_pre));
67  else assign clk1x = clk1x_pre;
68  endgenerate
69 
70  generate
71  if (BUF_CLK2X == "BUFG") BUFG clk2x_i (.O(clk2x), .I(clk2x_pre));
72  else if (BUF_CLK2X == "BUFH") BUFH clk2x_i (.O(clk2x), .I(clk2x_pre));
73  else if (BUF_CLK2X == "BUFR") BUFR clk2x_i (.O(clk2x), .I(clk2x_pre), .CE(1'b1), .CLR(rst));
74  else if (BUF_CLK2X == "BUFMR") BUFMR clk2x_i (.O(clk2x), .I(clk2x_pre));
75  else if (BUF_CLK2X == "BUFIO") BUFIO clk2x_i (.O(clk2x), .I(clk2x_pre));
76  else assign clk2x = clk2x_pre;
77  endgenerate
78 
80  .CLKIN_PERIOD (CLKIN_PERIOD), // 20
81  .BANDWIDTH ("OPTIMIZED"),
83  .CLKFBOUT_MULT (CLKFBOUT_MULT), // 2..64, // Fvco=Fclkin*CLKFBOUT_MULT_F/DIVCLK_DIVIDE, Fout=Fvco/CLKOUT#_DIVIDE
84  .CLKOUT1_PHASE (PHASE_CLK2X),
85  .CLKOUT0_DIVIDE (CLKOUT_DIV_CLK1X),
86  .CLKOUT1_DIVIDE (CLKOUT_DIV_CLK2X),
87  .REF_JITTER1 (0.010),
88  .STARTUP_WAIT("FALSE")
89  ) pll_base_i (
90  .clkin(clk_in), // input
91  .clkfbin(clkfb), // input
92 // .rst(rst), // input
93  .rst(rst), // input
94  .pwrdwn(pwrdwn), // input
95  .clkout0(clk1x_pre), // output
96  .clkout1(clk2x_pre), // output
97  .clkout2(), // output
98  .clkout3(), // output
99  .clkout4(), // output
100  .clkout5(), // output
101  .clkfbout(clkfb), // output
102  .locked(locked) // output
103  );
104 
105 
106 
107 endmodule
108 
11577clkout1
Definition: pll_base.v:74
11572clkin
Definition: pll_base.v:69
11575pwrdwn
Definition: pll_base.v:72
clk2x_i BUFG[generate]
11579clkout3
Definition: pll_base.v:76
11573clkfbin
Definition: pll_base.v:70
11580clkout4
Definition: pll_base.v:77
11576clkout0
Definition: pll_base.v:73
11582clkfbout
Definition: pll_base.v:79
11581clkout5
Definition: pll_base.v:78
11574rst
Definition: pll_base.v:71
clk2x_i BUFMR[generate]
clk2x_i BUFIO[generate]
11583locked
Definition: pll_base.v:80
clk2x_i BUFH[generate]
11578clkout2
Definition: pll_base.v:75
clk2x_i BUFR[generate]