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

Subversion Repositories vga_lcd

[/] [vga_lcd/] [trunk/] [rtl/] [verilog/] [vga_clkgen.v] - Blame information for rev 55

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 55 rherveille
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  WISHBONE rev.B2 compliant VGA/LCD Core; Clock Generator    ////
4
////                                                             ////
5
////                                                             ////
6
////  Author: Richard Herveille                                  ////
7
////          richard@asics.ws                                   ////
8
////          www.asics.ws                                       ////
9
////                                                             ////
10
////  Downloaded from: http://www.opencores.org/projects/vga_lcd ////
11
////                                                             ////
12
/////////////////////////////////////////////////////////////////////
13
////                                                             ////
14
//// Copyright (C) 2003 Richard Herveille                        ////
15
////                    richard@asics.ws                         ////
16
////                                                             ////
17
//// This source file may be used and distributed without        ////
18
//// restriction provided that this copyright statement is not   ////
19
//// removed from the file and that any derivative work contains ////
20
//// the original copyright notice and the associated disclaimer.////
21
////                                                             ////
22
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
23
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
24
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
25
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
26
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
27
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
28
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
29
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
30
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
31
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
32
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
33
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
34
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
35
////                                                             ////
36
/////////////////////////////////////////////////////////////////////
37
 
38
/////////////////////////////////////////////////////////////////////
39
//                                                                 //
40
// !! SPECIAL LOGIC, USE PRECAUTION DURING SYNTHESIS AND LAYOUT !! //
41
//                                                                 //
42
// This is a clock generation circuit. Although all output clocks  //
43
// are generated synchronous to the input clock, special care must //
44
// be taken during synthesis and physical layout.                  //
45
//                                                                 //
46
/////////////////////////////////////////////////////////////////////
47
 
48
 
49
 
50
//  CVS Log
51
//
52
//  $Id: vga_clkgen.v,v 1.1 2003-05-07 14:43:01 rherveille Exp $
53
//
54
//  $Date: 2003-05-07 14:43:01 $
55
//  $Revision: 1.1 $
56
//  $Author: rherveille $
57
//  $Locker:  $
58
//  $State: Exp $
59
//
60
// Change History:
61
//               $Log: not supported by cvs2svn $
62
//
63
 
64
//synopsys translate_off
65
`include "timescale.v"
66
//synopsys translate_on
67
 
68
`include "vga_defines.v"
69
 
70
module vga_clkgen (
71
        pclk_i, rst_i, pclk_o, dvi_pclk_p_o, dvi_pclk_m_o, pclk_ena_o
72
);
73
 
74
        // inputs & outputs
75
 
76
        input  pclk_i;       // pixel clock in
77
        input  rst_i;        // reset input
78
 
79
        output pclk_o;       // pixel clock out
80
 
81
        output dvi_pclk_p_o; // dvi cpclk+ output
82
        output dvi_pclk_m_o; // dvi cpclk- output
83
 
84
        output pclk_ena_o;   // pixel clock enable output
85
 
86
        //
87
        // variable declarations
88
        //
89
        reg dvi_pclk_p_o;
90
        reg dvi_pclk_m_o;
91
 
92
        //////////////////////////////////
93
        //
94
        // module body
95
        //
96
 
97
        // These should be registers in or near IO buffers
98
        always @(posedge pclk_i)
99
          if (rst_i) begin
100
            dvi_pclk_p_o <= #1 1'b0;
101
            dvi_pclk_m_o <= #1 1'b0;
102
          end else begin
103
            dvi_pclk_p_o <= #1 ~dvi_pclk_p_o;
104
            dvi_pclk_m_o <= #1 dvi_pclk_p_o;
105
          end
106
 
107
 
108
`ifdef VGA_12BIT_DVI
109
        // DVI circuit
110
        // pixel clock is half of the input pixel clock
111
 
112
        reg pclk_o, pclk_ena_o;
113
 
114
        always @(posedge pclk_i)
115
          if (rst_i)
116
            pclk_o <= #1 1'b0;
117
          else
118
            pclk_o <= #1 ~pclk_o;
119
 
120
        always @(posedge pclk_i)
121
          if (rst_i)
122
            pclk_ena_o <= #1 1'b1;
123
          else
124
            pclk_ena_o <= #1 ~pclk_ena_o;
125
 
126
`else
127
        // No DVI circuit
128
        // Simply reroute the pixel clock input
129
 
130
        assign pclk_o     = pclk_i;
131
        assign pclk_ena_o = 1'b1;
132
`endif
133
 
134
endmodule
135
 

powered by: WebSVN 2.1.0

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