版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
好一段时间没有过来了!因为太多的时间去开发和调试上面真是没办法。% @, L E0 }5 Y7 ~) |
现在我发些屏的驱动程序给大家这个是NEC的VGA屏是模拟屏所以只能显示RGB三色只是测屏用的呵呵
. t+ L* v! ~- f, ^/ y' m
5 u; }1 Z* [3 c+ T- N
+ A! U. j0 T6 d
h- L! g( s" N" Pmodule NL6448AC30_09( gclk,
; M' T7 {/ z3 T- W$ a3 j% T( O tft_clk,
5 r( o3 V0 W1 j) c) e4 b) o$ j& Q hsync,
7 A; n8 W& }& }4 f+ _0 V0 ^( U vsync,# y7 c) R+ L7 g W
DE, F# T: x# V3 b; O' w) n
R,
5 a1 f; Q- r7 K8 r G,( ~8 d$ E) o4 s$ v
B );; w9 S0 p, M2 l7 B- u) Z
Q3 y2 C" ^ Q- P/ d( A5 s
input gclk;
" Y% B' M0 E5 U7 m9 T! Coutput tft_clk;/ U- F% F$ v- _9 G3 V; e/ v! p
output [1:0]R,G,B;
- p* k9 I6 N# |& ?+ _+ J2 }reg [1:0]R,G,B;) b4 I) e. J, k* x
output hsync,vsync,DE;
' b2 h- w7 z; F: H0 l2 }! Wreg hsync,vsync,DE;
; v7 T# c* d, d$ zreg [9:0]clk_count,hsync_count;
9 k1 D, [9 t8 y( B' }reg div_count;! u# |3 ~- k% L2 K/ Z: ~! B( m
; s0 \: {' Y: _/ ^# i
assign tft_clk = div_count;
5 J1 i! U# M3 Z1 d, ^$ ^. B! q- n2 O//分频程序对50MHZ产生25MHZ分频供LCD时钟所用
/ k7 |: L2 [+ `; |4 a. \///////////////////////////////////////////////////////////////////////////////////////////////////////, L3 E0 H* s3 R! I9 T( P
always @(posedge gclk) //gclk全局时钟50MHZ //! q I( U+ @, b' j
begin //# ]1 ~4 u. E r: T1 P
div_count <= div_count + 1'b1; //将50MHZ 2分频后得到25MHZ供LCD时钟所用 //
+ F. ?1 v% {' u5 b* ~/////////////////////////////////////////////////////////////////////////////////////////////////////// " M1 \) y2 h8 ~+ Y9 X ?8 U
u% ]8 o* B' l; {- s2 }
if(hsync_count < 2)vsync <= 1'b0; //产生场频时钟“在行时钟开始的头2位行时钟线为低电平其它为高电平”
( U' k$ t# R' P i4 E5 r else vsync <= 1'b1;
$ G: f" }/ a V. j. E/ D% k
7 n* K0 | S. E9 U# a eend
$ I$ }% l5 c, e3 ` 8 y2 p5 k- y: e8 a6 E
always @(posedge div_count) //TFT LCD 用时钟线 //4 n h7 K/ N$ L' `: J, s
begin //
# m' n5 |# h! c3 |( U* Z# t; } //
! v9 ^' s- n: u if(clk_count < 799)clk_count <= clk_count + 1'b1; //时钟计数器用来产列时钟产生条件 //( @- Q8 e Q( h" o. v3 v# S I$ w" P
else clk_count <= 10'b0000000000; //
( [2 B) T* ~; h" h) F //
2 I8 j5 V6 b4 v5 k7 E( m% |end
. v, D$ w9 r1 [# c1 f
* D: r/ p' e5 \: L m1 \always @(posedge tft_clk)5 m. S. G3 |- P4 ^
begin
: x3 l% Z5 t& q. Q# Y- Q$ ?6 _ if(clk_count > 142 && clk_count < 783)DE <= 1'b1; // && hsync_count > 32 && hsync_count < 513 /// y5 E e" ~$ n$ s
else DE <= 1'b0; //% ~! M/ A4 { n6 x
//+ p l! C+ I( R- p8 }' j/ f9 p
//
4 _' o9 U0 n$ s if(clk_count > 94 && clk_count < 799)hsync <= 1'b1; //产生行时钟线“一个行的低电平包含有96个时钟脉冲” //6 N* v1 y' ^4 E( E, {3 @1 n
else hsync <= 1'b0; //5 x( P7 W# v# k; |
//
! E; R c" s' s; ^end //: s `! Q+ r4 ^) i$ h. R) ^
//
0 j3 i( P1 A# `7 n0 Y3 b //
4 R; Q0 c* H# N' K8 aalways @(posedge hsync) //
" Q' |# M* ?0 [* c+ ?. t9 ebegin //
0 A( X4 H5 p1 d2 N+ \9 A. M if(hsync_count < 524)hsync_count <= hsync_count + 1'b1; //对行进行计数用来产生场时钟制造条件 // % J& ] k. a5 _8 S
else hsync_count <= 10'b0000000000; //一个场含有525个行时钟,当行计数器不大于525的时候加1 否则清零 //
; y. X% k# S" P% t0 D) }) U //
3 W2 w. x/ k# A9 L7 }' k* Tend //
0 g- O2 H. `( J. |+ q% Q# l( i /// }: N, ~9 X/ O2 q* _: g6 W
//
4 V0 k% O+ G+ M) F6 C: q
7 f. ?8 O8 J( D8 u( ^7 J! O, Y0 w& [- G. t
[email=always@(posedge]always@(posedge[/email] tft_clk) + E1 }% e+ v! o
// black control e8 V. t3 I ~8 U8 W
if((clk_count > 142) && (clk_count < 251))
* S' E# s4 H% |4 o! P begin : `# r6 w6 F8 T+ j {
R[1:0] <=0; 0 }3 j5 A) O& ~/ }- ?
G[1:0] <=0; ; G! n ~2 D/ F8 J+ ^4 O
B[1:0] <=0;
; A A. _. d0 z' k end
8 k: X4 k! a8 P3 L( Q0 I1 \else & J% |+ n e5 B
begin * ] p5 C5 m9 ] y
if((clk_count > 252) && (clk_count < 358)) 9 |: B5 z) F- m
begin ) i1 _2 @3 M. `( B" o9 |
R[1:0] <=3; 5 [1 s A+ ^9 f
G[1:0] <=0; 5 u' H$ b, {3 @# x" j) {& U
B[1:0] <=0;
' Q. g8 V3 `6 a2 {. K3 u8 T* _1 P end
: q2 R. ?# a1 B3 W0 \, B else
% G. R3 M, W" P- U. I3 q. T if((clk_count < 359) && (clk_count < 465)) 8 C% F* P8 i1 T, p" } P5 s
begin
b) Y# X. ]: e7 ~8 } j, C4 C R[1:0] <=0;
/ Z& E8 r* Q/ t( F( L# ` G[1:0] <=3; $ {4 n" j8 C8 }/ V
B[1:0] <=0;
( x4 Y" d: H4 b2 V end ; D$ ]* u8 i+ O- K
else
+ Y# X' `! u+ K if((clk_count < 466) && (clk_count < 572) ) * A( n2 J9 m! Q) U
begin 0 P; ]3 j. p7 P
R[1:0] <=0;
$ ~* A) S5 ?" L0 h G[1:0] <=0;
8 S, e) Y# ~4 I a# j* ?" F! G B[1:0] <=3;
( ^9 V* u& T; ~' R2 m, @ end . A" f/ f4 d9 [% c X. N% T
else . k% v% d) N( g- u+ }5 j
begin " Q) } x+ F8 O! ]8 {
R[1:0] <=3;
/ Z! q+ Y( @! ] G[1:0] <=3; 9 N2 N4 r" Y3 O6 y
B[1:0] <=3;
; T3 J* M4 f0 h, o2 c$ z& V end - i" R8 \% x/ Z. u& N+ j" Y4 j( X
end + b" R3 W' l, \8 p, I0 R
0 Q* D8 [$ Y- W* kendmodule
0 U! d8 ?2 L7 O, D- y3 G* P3 b0 Q9 U% f3 r' z0 r
[ 本帖最后由 kenson 于 2009-2-27 21:15 编辑 ] |
|