Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
77 | lvd | 1 | // just an example with frequencies. not to be used! |
2 | |||
3 | // Copyright 2007 Altera Corporation. All rights reserved. |
||
4 | // Altera products are protected under numerous U.S. and foreign patents, |
||
5 | // maskwork rights, copyrights and other intellectual property laws. |
||
6 | // |
||
7 | // This reference design file, and your use thereof, is subject to and governed |
||
8 | // by the terms and conditions of the applicable Altera Reference Design |
||
9 | // License Agreement (either as signed by you or found at www.altera.com). By |
||
10 | // using this reference design file, you indicate your acceptance of such terms |
||
11 | // and conditions between you and Altera Corporation. In the event that you do |
||
12 | // not agree with such terms and conditions, you may not use the reference |
||
13 | // design file and please promptly destroy any copies you have made. |
||
14 | // |
||
15 | // This reference design file is being provided on an "as-is" basis and as an |
||
16 | // accommodation and therefore all warranties, representations or guarantees of |
||
17 | // any kind (whether express, implied or statutory) including, without |
||
18 | // limitation, warranties of merchantability, non-infringement, or fitness for |
||
19 | // a particular purpose, are specifically disclaimed. By making this reference |
||
20 | // design file available, Altera expressly does not recommend, suggest or |
||
21 | // require that this reference design file be used in combination with any |
||
22 | // other product not provided by Altera. |
||
23 | ///////////////////////////////////////////////////////////////////////////// |
||
24 | |||
25 | // baeckler - 02-15-2007 |
||
26 | |||
27 | module vga_driver ( |
||
28 | r,g,b, |
||
29 | current_x,current_y,request, |
||
30 | vga_r,vga_g,vga_b,vga_hs,vga_vs,vga_blank,vga_clock, |
||
31 | clk27,rst27); |
||
32 | |||
33 | input [9:0] r,g,b; |
||
34 | output [9:0] current_x; |
||
35 | output [9:0] current_y; |
||
36 | output request; |
||
37 | |||
38 | output [9:0] vga_r, vga_g, vga_b; |
||
39 | output vga_hs, vga_vs, vga_blank, vga_clock; |
||
40 | |||
41 | input clk27, rst27; |
||
42 | |||
43 | //////////////////////////////////////////////////////////// |
||
44 | |||
45 | // Horizontal Timing |
||
46 | parameter H_FRONT = 16; // 600ns |
||
47 | parameter H_SYNC = 96; // 3.5us |
||
48 | parameter H_BACK = 48; // 1.8us |
||
49 | parameter H_ACT = 640;// |
||
50 | parameter H_BLANK = H_FRONT+H_SYNC+H_BACK; |
||
51 | parameter H_TOTAL = H_FRONT+H_SYNC+H_BACK+H_ACT; |
||
52 | |||
53 | // Vertical Timing |
||
54 | parameter V_FRONT = 11; |
||
55 | parameter V_SYNC = 2; |
||
56 | parameter V_BACK = 31; |
||
57 | parameter V_ACT = 480; |
||
58 | parameter V_BLANK = V_FRONT+V_SYNC+V_BACK; |
||
59 | parameter V_TOTAL = V_FRONT+V_SYNC+V_BACK+V_ACT; |
||
60 | |||
61 | //////////////////////////////////////////////////////////// |
||
62 | |||
63 | reg [9:0] h_cntr, v_cntr, current_x, current_y; |
||
64 | reg h_active, v_active, vga_hs, vga_vs; |
||
65 | |||
66 | assign vga_blank = h_active & v_active; |
||
67 | assign vga_clock = ~clk27; |
||
68 | assign vga_r = r; |
||
69 | assign vga_g = g; |
||
70 | assign vga_b = b; |
||
71 | assign request = ((h_cntr>=H_BLANK && h_cntr<H_TOTAL) && |
||
72 | (v_cntr>=V_BLANK && v_cntr<V_TOTAL)); |
||
73 | |||
74 | always @(posedge clk27) begin |
||
75 | if(rst27) begin |
||
76 | h_cntr <= 0; |
||
77 | v_cntr <= 0; |
||
78 | vga_hs <= 1'b1; |
||
79 | vga_vs <= 1'b1; |
||
80 | current_x <= 0; |
||
81 | current_y <= 0; |
||
82 | h_active <= 1'b0; |
||
83 | v_active <= 1'b0; |
||
84 | end |
||
85 | else begin |
||
86 | if(h_cntr != H_TOTAL) begin |
||
87 | h_cntr <= h_cntr + 1'b1; |
||
88 | if (h_active) current_x <= current_x + 1'b1; |
||
89 | if (h_cntr == H_BLANK-1) h_active <= 1'b1; |
||
90 | end |
||
91 | else begin |
||
92 | h_cntr <= 0; |
||
93 | h_active <= 1'b0; |
||
94 | current_x <= 0; |
||
95 | end |
||
96 | |||
97 | if(h_cntr == H_FRONT-1) begin |
||
98 | vga_hs <= 1'b0; |
||
99 | end |
||
100 | |||
101 | if (h_cntr == H_FRONT+H_SYNC-1) begin |
||
102 | vga_hs <= 1'b1; |
||
103 | |||
104 | if(v_cntr != V_TOTAL) begin |
||
105 | v_cntr <= v_cntr + 1'b1; |
||
106 | if (v_active) current_y <= current_y + 1'b1; |
||
107 | if (v_cntr == V_BLANK-1) v_active <= 1'b1; |
||
108 | end |
||
109 | else begin |
||
110 | v_cntr <= 0; |
||
111 | current_y <= 0; |
||
112 | v_active <= 1'b0; |
||
113 | end |
||
114 | if(v_cntr == V_FRONT-1) vga_vs <= 1'b0; |
||
115 | if(v_cntr == V_FRONT+V_SYNC-1) vga_vs <= 1'b1; |
||
116 | end |
||
117 | end |
||
118 | end |
||
119 | |||
120 | endmodule |