OpenCores
URL https://opencores.org/ocsvn/jt51/jt51/trunk

Subversion Repositories jt51

[/] [jt51/] [trunk/] [contra/] [clocks.v] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 gryzor
`timescale 1ns / 1ps
2
 
3
module clocks(
4
    input       rst,
5
    input       clk50,
6
        input   divide_more,
7
    output      clk_cpu,
8
    output      clk_dac,
9
        output  reg locked
10
    );
11
 
12
        wire    GND_BIT = 1'b0;
13
        wire    clk_base; // 4*3.58MHz
14
        wire    CLKDV_BUF;
15
 
16
        wire    locked0, locked1;
17
 
18
        always @(posedge clk_cpu) locked <= locked0 & locked1;
19
 
20
        reg             [1:0] clk_cpu_cnt;
21
 
22
        always @( posedge CLKDV_BUF or posedge rst)
23
                if( rst )
24
                        clk_cpu_cnt <= 2'b0;
25
                else
26
                        clk_cpu_cnt <= clk_cpu_cnt + 1'b1;
27
 
28
        reg clk_sel;
29
        always @( negedge CLKDV_BUF )
30
                clk_sel <= divide_more;
31
 
32
        BUFG  CLKDV_BUFG_INST(
33
                .I( clk_sel ? clk_cpu_cnt[0] : CLKDV_BUF ),
34
                .O(clk_cpu)
35
        );
36
 
37
        BUFG  CLK2X_BUFG_INST (.I(clkbase_2x),
38
                         .O( clkbase_fbin ));
39
 
40
        DCM_SP #( .CLK_FEEDBACK("2X"), .CLKDV_DIVIDE(2.0), .CLKFX_DIVIDE(7),
41
         .CLKFX_MULTIPLY(2), .CLKIN_DIVIDE_BY_2("FALSE"),
42
         .CLKIN_PERIOD(20.000), .CLKOUT_PHASE_SHIFT("NONE"),
43
         .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), .DFS_FREQUENCY_MODE("LOW"),
44
         .DLL_FREQUENCY_MODE("LOW"), .DUTY_CYCLE_CORRECTION("TRUE"),
45
         .FACTORY_JF(16'hC080), .PHASE_SHIFT(0), .STARTUP_WAIT("FALSE") )
46
         u_clkbase ( .CLKFB(clkbase_fbin),
47
                       .CLKIN(clk50),   //      *
48
                       .DSSEN(GND_BIT),
49
                       .PSCLK(GND_BIT),
50
                       .PSEN(GND_BIT),
51
                       .PSINCDEC(GND_BIT),
52
                       .RST(GND_BIT),
53
                       .CLKDV(),
54
                       .CLKFX(clk_base),        // *
55
                       .CLKFX180(),
56
                       .CLK0(),
57
                       .CLK2X(clkbase_2x),
58
                       .CLK2X180(),
59
                       .CLK90(),
60
                       .CLK180(),
61
                       .CLK270(),
62
                       .LOCKED(locked0),
63
                       .PSDONE(),
64
                       .STATUS());
65
 
66
        wire clkdiv0, clkdiv0_buf;
67
        BUFG  u_clkdiv_buf(
68
                .I(clkdiv0),
69
                .O(clkdiv0_buf)
70
        );
71
 
72
   DCM_SP #( .CLK_FEEDBACK("1X"), .CLKDV_DIVIDE(4.0), .CLKFX_DIVIDE(1),
73
         .CLKFX_MULTIPLY(4), .CLKIN_DIVIDE_BY_2("FALSE"),
74
         .CLKIN_PERIOD(69.832), .CLKOUT_PHASE_SHIFT("NONE"),
75
         .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), .DFS_FREQUENCY_MODE("LOW"),
76
         .DLL_FREQUENCY_MODE("LOW"), .DUTY_CYCLE_CORRECTION("TRUE"),
77
         .FACTORY_JF(16'hC080), .PHASE_SHIFT(0), .STARTUP_WAIT("FALSE") )
78
         u_clkdiv ( .CLKFB(clkdiv0_buf), //*
79
                       .CLKIN(clk_base), //*
80
                       .DSSEN(GND_BIT),
81
                       .PSCLK(GND_BIT),
82
                       .PSEN(GND_BIT),
83
                       .PSINCDEC(GND_BIT),
84
                       .RST(GND_BIT),
85
                       .CLKDV(CLKDV_BUF), //*
86
                       .CLKFX(),
87
                       .CLKFX180(),
88
                       .CLK0(clkdiv0),
89
                       .CLK2X(),
90
                       .CLK2X180(),
91
                       .CLK90(),
92
                       .CLK180(),
93
                       .CLK270(),
94
                       .LOCKED(locked1),
95
                       .PSDONE(),
96
                       .STATUS());
97
 
98
        wire clk_dac_pre;
99
        BUFG  CLKFX_BUFG_INST (.I(clk_dac_pre),
100
                         .O(clk_dac));
101
 
102
 
103
        DCM_SP #( .CLK_FEEDBACK("NONE"), .CLKDV_DIVIDE(2.0), .CLKFX_DIVIDE(1),
104
         .CLKFX_MULTIPLY(2), .CLKIN_DIVIDE_BY_2("FALSE"),
105
         .CLKIN_PERIOD(20.000), .CLKOUT_PHASE_SHIFT("NONE"),
106
         .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), .DFS_FREQUENCY_MODE("LOW"),
107
         .DLL_FREQUENCY_MODE("LOW"), .DUTY_CYCLE_CORRECTION("TRUE"),
108
         .FACTORY_JF(16'hC080), .PHASE_SHIFT(0), .STARTUP_WAIT("FALSE") )
109
         u_clkdac ( .CLKFB(GND_BIT),
110
                       .CLKIN(clk50),
111
                       .DSSEN(GND_BIT),
112
                       .PSCLK(GND_BIT),
113
                       .PSEN(GND_BIT),
114
                       .PSINCDEC(GND_BIT),
115
                       .RST(GND_BIT),
116
                       .CLKDV(),
117
                       .CLKFX(clk_dac_pre),
118
                       .CLKFX180(),
119
                       .CLK0(),
120
                       .CLK2X(),
121
                       .CLK2X180(),
122
                       .CLK90(),
123
                       .CLK180(),
124
                       .CLK270(),
125
                       .LOCKED(),
126
                       .PSDONE(),
127
                       .STATUS());
128
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.