|
2#
樓主 |
發表於 2009-6-11 12:43:50
|
只看該作者
ODDR2 #(
! Q0 E3 V2 J0 w7 g' q .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1" 5 t! \. E8 h: ~3 N: o. n0 ?
.INIT(1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1! ^: y( ]) }2 p* V
.SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset- V; o1 o$ |! S: q, j
) ODDR2_inst (
, m" \$ K3 a, @% K j9 Q9 z .Q(oVGA_CLOCK), // 1-bit DDR output data- N0 u9 ~' M* z! k* c4 S
.C0(clk), // 1-bit clock input% @" h! }# [& P9 A
.C1(~clk), // 1-bit clock input
; H. A! I$ ~- j8 C .CE(1'b1), // 1-bit clock enable input
: A. [, G6 Z; Q3 x+ o! q! M& n .D0(1'b0), // 1-bit data input (associated with C0)" M7 [# c" Z5 w, V- J, N
.D1(1'b1), // 1-bit data input (associated with C1)3 O! Y0 D+ `* u' M' S
.R(1'b0), // 1-bit reset input
u1 B! A4 x; [ .S(1'b0) // 1-bit set input
) {/ k4 d; {# o& E7 S# h- O& m );
5 [: }6 d$ s& e& O. ~2 r! B G7 W5 ? , s7 G1 Z! ~+ `9 A( N r
always @(posedge clk)
6 F' v& h. `5 r& v; x4 rbegin& X1 _6 C! f9 B
oVGA_SYNC <= oRequest;
, S- g" a8 ^: Hend
& q y5 z3 c' D. C7 m# N* P9 W" [8 j0 C6 x
always @(posedge clk)0 f3 ~& q. G, F4 v5 E0 m8 f
begin
/ |7 W3 P0 Q& f if (rst)0 U0 O+ z1 d- ]- ]" O
oRequest <= 1'b0;; N4 a$ r; b! v% r$ I/ v
else begin
) A. ~$ W: t; X4 { y5 K- `9 k if (h_cnt >= (X_START-2) && h_cnt< (X_START+H_SYNC_ACT-2) && v_cnt>=Y_START && v_cnt<(Y_START+V_SYNC_ACT))
% y+ e8 Z' Z( u) | oRequest <= 1'b1;0 `$ G7 P" `- h' f" G2 D
else* M! \& L4 S+ M2 q/ P8 }
oRequest <= 1'b0;9 c! G$ m M" }5 |
end
+ j$ X8 O9 {5 qend2 \0 w" B% Q s2 v" u% ^
8 F! ~9 g& [3 b; A- \+ e// H_Sync Generator, Ref. 25.175 MHz Clock
% {/ [0 Q9 p. W9 R9 qalways @(posedge clk)
9 e) ^! P) B- ]2 A- o$ z8 X lbegin# X' D2 R2 E# C* c P
if (rst) begin
; o- d9 r* D- g' A h_cnt <= 12'd0;
3 V0 w2 P; J! p; I' s oVGA_H_SYNC <= 1'b0;; B) ^" ~& H+ i" B6 X/ x6 w+ z
end
# C6 L* K$ W1 m else begin
4 Q5 X/ n& ]3 Z9 Z' o9 v) {5 x // H_Sync Counter- m q5 E! z) Y. _9 Q
if (h_cnt < (H_SYNC_TOTAL-1) )
U3 u" J4 _+ b' I4 a7 W$ |2 ] h_cnt <= h_cnt + 12'd1;
* @5 {! I: P# w/ J else
- n s( Z" s/ _: h7 f1 U h_cnt <= 12'd0;
0 S6 R# k' J: [7 L+ Z- I3 u
; Z) C: l9 V7 j$ {& x2 i" q1 [ // H_Sync Generator" X2 n8 `1 _& n8 d$ J
if( h_cnt < H_SYNC_CYC )
3 w) O3 w" g( L# d& D9 b7 }+ i* x oVGA_H_SYNC <= 0;1 R, x z2 ^: s. `2 Y* Y& f b! c
else. w @2 ]# g* [: i7 n0 ~
oVGA_H_SYNC <= 1;* }9 z, o. s0 m- Z: I$ a( o
end8 f, {, x: P$ V! {4 i
end
0 K0 M6 r0 m, J3 x! M! |+ B! b0 C# w+ @0 `) Q# [
always @(posedge clk)
0 X8 E8 v/ J: p. ?, W ubegin
: ?% A! p+ [" K% x if (rst) begin1 L/ M2 W5 l' \6 j
v_cnt <= 12'd0;
; N) Z y% K$ d/ O% s oVGA_V_SYNC <= 1'b0;, X: `! d* {( u
end
$ H0 p7 f3 ^$ v+ U else
) L/ y: L) L; r if (h_cnt == 0 )6 n: e* B. B4 _2 Q4 H3 k" y/ W
begin7 J" V: G' p0 y& @
// V_Sync Counter
$ f# Q1 a* ]! E& X+ i" w if (v_cnt < (V_SYNC_TOTAL-1))9 o) x4 [, h# y; y
v_cnt <= v_cnt + 12'd1;! Y* c' d2 y; u5 b* s
else: H$ m3 y$ a: q) ]+ o$ z! W& Y
v_cnt <= 12'd0;
# N% `0 @; ^$ j/ o // V_Sync Generator' z$ @8 @8 O2 d5 d1 X: ^
if (v_cnt < V_SYNC_CYC)6 k. |! R5 k; H& {
oVGA_V_SYNC <= 1'b0;6 N# j7 i, c/ S5 I- p
else7 w4 i1 u4 M9 N- |
oVGA_V_SYNC <= 1'b1;
3 T! \! _9 B. |' i end
7 c3 w( V9 F8 D5 Gend: w( L, m7 E: M; n
7 o9 i9 }, g( G8 G" C) P' H
9 w/ h3 C3 q( S* F( Z4 Q+ ]9 R( H0 F+ ~endmodule |
|