|
4#
樓主 |
發表於 2007-2-15 17:05:19
|
只看該作者
// CCD" e$ C/ o6 K9 N' B$ R0 m
wire [9:0] CCD_DATA;6 f+ n/ c3 o, k2 B* K
wire CCD_SDAT;# N& Y. c& g3 F3 U# L( |2 A/ w
wire CCD_SCLK;* W( B- z) R% h4 }: s9 Z
wire CCD_FLASH;
* k/ J1 N# ?$ {1 r4 nwire CCD_FVAL;
- v5 M- |4 w' `5 v& c0 Iwire CCD_LVAL;
0 g1 N& r: t) F. cwire CCD_PIXCLK;0 }" t5 {3 }4 ^. w7 q) y% V
reg CCD_MCLK; // CCD Master Clock. D; t6 N9 }0 M
5 Q4 E E" N: U# K5 F
wire [15:0] Read_DATA1;
/ A- y4 l7 U8 e- ~wire [15:0] Read_DATA2;
7 ~3 q% f Z: y9 n; `wire VGA_CTRL_CLK;/ q- ~7 {: N* T' {7 U
wire AUD_CTRL_CLK;1 L) A7 m( U8 P6 \/ Q5 q
wire [9:0] mCCD_DATA;
) s8 i) U, C0 n# X: n+ Y* Fwire mCCD_DVAL;4 v+ I( ^7 X* U6 Z* o
wire mCCD_DVAL_d; O5 w) R6 K6 p' O9 [0 V
wire [10:0] X_Cont;
+ ^% w3 C, s9 H$ Ywire [10:0] Y_Cont;
0 J9 P1 S4 z5 e; L. [, wwire [9:0] X_ADDR;
/ f+ V5 L9 `% h7 s* F' P X2 Iwire [31:0] Frame_Cont;
- }0 P/ S; X, ?( w, bwire [9:0] mCCD_R;
; y( [& w8 R7 R1 @. Vwire [9:0] mCCD_G;
% }+ ]1 @5 u% i0 g7 a/ N7 Awire [9:0] mCCD_B;
; P* T4 ~. w8 |- z7 ^) {# Mwire [9:0] mVGA_R;
5 b) V6 o3 X; g* ^+ Y8 l2 U. Bwire [9:0] mVGA_G;
# i7 I; K) J" P5 @* u7 v, Cwire [9:0] mVGA_B;5 Y: b4 W0 v! A1 Y9 U4 }1 ^& v
wire DLY_RST_0;
# C2 g( k! \) Mwire DLY_RST_1;+ b" D& y, `0 F+ F4 `) M& q: _' U ^9 m
wire DLY_RST_2;
4 P" ~, R( ~* m7 vwire Read;
% N0 t+ z- J' }- {! `. `9 E5 W8 lreg [9:0] rCCD_DATA;& A8 t( |. Y3 V4 ?/ @
reg rCCD_LVAL;
# r, s& _% |; g$ d8 q% F9 d7 Preg rCCD_FVAL;8 w" p/ b }$ A" v* w
5 x, Y; D- d1 f9 l% R// For Sensor 1# x: C0 k5 {. ^% T) O
assign CCD_DATA[0] = GPIO_1[0]; O% \% o5 d" X4 V7 R( h5 o
assign CCD_DATA[1] = GPIO_1[1];
+ N, E" ^2 x8 lassign CCD_DATA[2] = GPIO_1[5];' |# g3 H5 I/ I8 c9 U8 V/ ^( W
assign CCD_DATA[3] = GPIO_1[3];# \ v4 t9 o# }6 j _( D8 H
assign CCD_DATA[4] = GPIO_1[2];. L0 ]7 E+ i6 z! g: N! ^9 S& \6 r
assign CCD_DATA[5] = GPIO_1[4];* t7 Q) F5 y7 ]% k! M; i# R6 _& Y0 S/ D
assign CCD_DATA[6] = GPIO_1[6];. ?. J8 p% e# t- j( q
assign CCD_DATA[7] = GPIO_1[7];
8 {) [0 n( f1 I' e! Q6 h' B, uassign CCD_DATA[8] = GPIO_1[8];
! Q( ]6 |* `2 A7 Q- X6 {assign CCD_DATA[9] = GPIO_1[9];- B" ^1 t8 i9 n: k7 `6 m/ x
assign GPIO_1[11] = CCD_MCLK;. f4 G7 L* x7 n+ G) N3 n
assign CCD_FVAL = GPIO_1[13];
$ j; w( _) G# c' q3 F" f/ Gassign CCD_LVAL = GPIO_1[12];
: {) y: J7 Z- b4 g4 O( U Hassign CCD_PIXCLK = GPIO_1[10];$ ^1 x' E. E. ?/ k
6 U9 d! e6 f7 f" ~* }$ cassign LEDR = SW;
# l3 o+ V- a Xassign LEDG = Y_Cont;0 A! k" E+ ^( P5 w
assign VGA_CTRL_CLK= CCD_MCLK;
! g: G8 a4 `) \2 e; j* @$ Q5 `assign VGA_CLK = ~CCD_MCLK;
/ V* {9 k6 Y. O* W; ^
+ `% v; z5 _. k3 q! v% w. a- U VGA_Controller u1 ( // Host Side
3 t) W& H: P1 N$ E .oRequest(Read),
/ C3 d( Q" E g* Y/ k .iRed( DISP_R ),$ P# Y1 n- w U& T' T) T
.iGreen( DISP_G ),6 s; n8 c' z6 S: B0 T6 a$ |3 O
.iBlue( DISP_B ),
4 o5 ]: Y* L7 `( _: t& I8 _3 D6 M% s // VGA Side
) `' R7 T6 P' J$ c1 {- L7 p; r .oVGA_R(VGA_R),+ z- U- D- ]5 ^" R) N5 H* e# C2 ~
.oVGA_G(VGA_G),
1 l n4 D+ j. m- l8 { .oVGA_B(VGA_B),/ r( P" y2 f1 E9 `7 v
.oVGA_HS(VGA_HS),
/ ?6 @& _! M7 T4 B8 t& @+ v% e, w0 ], G .oVGA_VS(VGA_VS),
$ M3 f" F8 L/ R# d1 V: \% A3 y .oVGA_SYNC(VGA_SYNC),) I7 r7 `/ q' g) U' u
.oVGA_BLANK(VGA_BLANK),. ~& b2 w* s+ b/ O4 r, g; J" J
// Control Signal
" v# R1 V6 b" [, F4 J .iCLK(VGA_CTRL_CLK),
7 r3 Z% e, d, L H% [0 r8 q- T. W: M7 t& | .iRST_N(DLY_RST_2) );! S3 c" {: x, O" b, L* [6 P
8 i: @8 R+ x' c# U
Reset_Delay u2 ( .iCLK(CLOCK_50),
8 j, F/ q' o' B' K6 O .iRST(KEY[0]),
( [3 M9 ~" r2 }+ ?( n2 s .oRST_0(DLY_RST_0),
) V6 U' d+ e, |2 R1 M- \" _8 J .oRST_1(DLY_RST_1),# E& ~8 U/ x% q, S; ~/ e
.oRST_2(DLY_RST_2) );
% H% p. _3 n+ _3 P* W; @5 |' |3 p" G% v" j+ d1 L V1 }! ?
CCD_Capture u3 ( .oDATA(mCCD_DATA),6 u* w4 p d6 q, |
.oDVAL(mCCD_DVAL),7 f0 F1 r( u) j
.oX_Cont(X_Cont),
# ?+ S2 {4 G; j/ U. j# o .oY_Cont(Y_Cont),- \/ X' O# g( b$ Y9 q, v6 |8 J
.oFrame_Cont(Frame_Cont),' U$ @; K1 V6 Q' j: |9 Y4 q
.iDATA(rCCD_DATA),# A( e D' N- U! J% D# X
.iFVAL(rCCD_FVAL),4 h2 s- x; f) A: R K
.iLVAL(rCCD_LVAL),
6 B+ j3 u& \! x/ j( t' c" ^ .iSTART(!KEY[3]), l9 T2 V- R$ C7 z% N
.iEND(!KEY[2]),
8 m8 x; T& l B/ I .iCLK(CCD_PIXCLK),
2 ^! ]6 J* k6 d% j .iRST(DLY_RST_1) );
, r* o5 Q( `; g" p) o
/ l! H4 |# [! g) C f; F; q+ t. h6 bRAW2RGB u4 ( .oRed(mCCD_R),/ w' z4 Z* |- W+ n1 P: F2 S
.oGreen(mCCD_G),3 N) R3 h5 Q, h B
.oBlue(mCCD_B),2 ]! J- M% B2 p# D( m) Q
.oDVAL(mCCD_DVAL_d),+ C7 l+ w, \8 u. L* B4 R
.iX_Cont(X_Cont),
3 _" P- S9 v8 E0 Y5 I% w( q .iY_Cont(Y_Cont),
" j7 G' J- z, Y' N9 E3 M .iDATA(mCCD_DATA),2 H# w) f2 B# t2 n! X4 k1 N
.iDVAL(mCCD_DVAL),$ T0 [( O( Q# J/ F% D, e4 Z% H1 J% [
.iCLK(CCD_PIXCLK),
; m4 }. ?* K3 S" \; _ .iRST(DLY_RST_1) );: q& X% A, U; k. e% h
1 Q2 Y/ [, w7 q* ^% u. v8 h) `) u
SEG7_LUT_8 u5 ( .oSEG0(HEX0),.oSEG1(HEX1),
) w. ]" K3 y3 N. g) r, B% I .oSEG2(HEX2),.oSEG3(HEX3),$ P/ `! e5 ]- Y# S& `
.oSEG4(HEX4),.oSEG5(HEX5),
' T3 I- i. w% m5 N/ d4 L .oSEG6(HEX6),.oSEG7(HEX7),0 ?' P" a8 e5 w" @& L% Z) s* N
.iDIG(Frame_Cont) );! @& r; m: a K
( {7 H* L5 O, A U$ w. d
Sdram_Control_4Port u6 ( // HOST Side3 Z( U/ X% }/ I- R
.REF_CLK(CLOCK_50),
& |0 k" V; ?) l& A8 |' k2 U .RESET_N(1'b1),- g. N% A7 J( r9 d; a9 O0 l
// FIFO Write Side 1- F2 h8 f R: ^, A5 u
.WR1_DATA( {mCCD_G[9:5],, {# }' j. ^/ a, |+ G3 L$ ?
mCCD_B[9:0]}),6 w( Q2 Z; ^5 p; D
.WR1(mCCD_DVAL_d),
$ a! A5 o+ a8 O/ A, i* _$ ] .WR1_ADDR(0),
$ S8 T, W7 v L, p6 Q1 k8 m .WR1_MAX_ADDR(640*512),4 q6 Y: |# G3 _, l0 t2 m% x) E+ r
.WR1_LENGTH(9'h100)," C; [7 i- C* }6 V
.WR1_LOAD(!DLY_RST_0),
! }' I! G$ V/ J' u0 _) |% C .WR1_CLK(CCD_PIXCLK),
0 Z L! s8 X7 M( G% K# w; f // FIFO Write Side 2
" d: s3 Q) k( o/ k2 Q4 G) b( | .WR2_DATA( {mCCD_G[4:0],
+ P! G p v: S+ z mCCD_R[9:0]}),: v3 \' S) @5 O2 }& c; S, s3 V+ L
.WR2(mCCD_DVAL_d),
! }- h, K R( q8 [ .WR2_ADDR(22'h100000),2 I4 D% G6 Y8 w% J) U4 k6 \
.WR2_MAX_ADDR(22'h100000+640*512),& u$ q9 ^0 L+ K1 R* E
.WR2_LENGTH(9'h100),1 I- i2 M% h' G# u
.WR2_LOAD(!DLY_RST_0), @" a- B+ ]8 O
.WR2_CLK(CCD_PIXCLK),
+ O( x, n" e- L Q/ s0 `! M. ^ // FIFO Read Side 1
6 O" z [" W$ K1 `0 \( S .RD1_DATA(Read_DATA1),/ x+ V" Q/ l: S; R" f, N
.RD1(Read),
/ a' i; [- h4 D: K. j+ J .RD1_ADDR(640*16),2 W2 r4 w( D s7 l; Z
.RD1_MAX_ADDR(640*496),
( C$ ^% F7 o3 u0 x% x; O/ X) I .RD1_LENGTH(9'h100),
3 B7 N3 K f8 B7 d7 g4 E .RD1_LOAD(!DLY_RST_0),: |& u3 [) d( I
.RD1_CLK(VGA_CTRL_CLK),
' e& X7 [2 g' [% Z // FIFO Read Side 2
) Y) Q& K( ^8 ~& {1 G .RD2_DATA(Read_DATA2),
/ ^; \; Z' Y% H .RD2(Read),
. t D/ I( H0 [( j8 e# c .RD2_ADDR(22'h100000+640*16),3 h" m4 v5 O% n; \
.RD2_MAX_ADDR(22'h100000+640*496),
# s' e/ Y3 s' F7 N2 N+ B .RD2_LENGTH(9'h100),
7 k( ^3 J; Z; W7 V3 S7 J+ J .RD2_LOAD(!DLY_RST_0),0 n9 A3 E! V& y! y" o" r
.RD2_CLK(VGA_CTRL_CLK),
9 @+ m6 Q2 O4 W, X; q3 q6 h // SDRAM Side
6 `2 R! q C8 [$ n1 T8 r3 w& h .SA(DRAM_ADDR),
( b, ~+ a" |" U" M .BA({DRAM_BA_1,DRAM_BA_0}),1 |& R# Z9 ^& N3 f6 o
.CS_N(DRAM_CS_N),. A( k& ]% o2 A4 J! p, N
.CKE(DRAM_CKE),
$ m6 h' o5 j- k: T .RAS_N(DRAM_RAS_N),7 f4 |( K0 O/ }& q
.CAS_N(DRAM_CAS_N),2 s) p) B1 p3 j. L
.WE_N(DRAM_WE_N),
) X+ x+ Y4 F! l: q5 E3 z) c .DQ(DRAM_DQ),8 G& }" |1 V5 W; [
.DQM({DRAM_UDQM,DRAM_LDQM}),8 ~: g7 \# K" S2 h- j, ]4 E4 N" U
.SDR_CLK(DRAM_CLK) );
' J/ c6 p% M' A! J2 A- c ~1 {+ o) P! ~( Q. F
I2C_CCD_Config u7 ( // Host Side
( ]8 {% }# U/ y& w .iCLK(CLOCK_50),
2 U0 Z( S2 W5 E8 f" v .iRST_N(1'b1),
* p% z) j _$ ] .iExposure(16'h0600),
/ ^* B5 Q5 z- R, i$ P! R8 G( Z // I2C Side
! m) j7 l6 d: N( S! i9 j: A .I2C_SCLK(GPIO_1[14]),
) y5 D( N$ u% R7 K) e .I2C_SDAT(GPIO_1[15]) );
$ i# f6 S! z& b/////////////////////////////////////////////////////////////////////7 x0 N! ?% |, L1 F$ C9 j
wire [9:0] DISP_R;
1 A4 P2 q0 Y+ I: X! p1 Wwire [9:0] DISP_G;2 [. \+ W$ {' v3 w) d9 S- ]
wire [9:0] DISP_B;) y) |% b. T# h q' n
; b1 O' ]; Z' ^5 h! A
// To Display V2 {, t6 u: p2 F% Q Q0 e
assign DISP_R = SW[17] ? mVGA_R : // Red
1 ?! m8 m; O' x6 ~% I$ N SW[16] ? mVGA_G : // Green
& T' f- b; `7 M2 t: s SW[15] ? mVGA_B : // Blue
' I& G4 r! k8 p6 r6 i8 {0 ]4 @ mVGA_R ; // Color: u* c& G: e0 ?8 z3 p& L
assign DISP_G = SW[17] ? mVGA_R : // Red$ `& ?1 y# { x* l8 G
SW[16] ? mVGA_G : // Green' a0 b J' j: ^/ k5 G9 B
SW[15] ? mVGA_B : // Blue9 y* M4 T# B4 k+ P' ^8 F0 f/ ~5 F
mVGA_G ; // Color/ ^/ Y, N' b5 B) I J }. g
assign DISP_B = SW[17] ? mVGA_R : // Red( A* b9 C g: y/ S/ Y
SW[16] ? mVGA_G : // Green
5 t/ Z. q+ P# D0 d% P3 G3 z SW[15] ? mVGA_B : // Blue/ ^+ }$ L9 E4 A+ F: j
mVGA_B ; // Color- r3 }) A. \, _7 ]% N" E% k+ G4 d8 u% r
6 B9 _3 G8 o1 T. V* P# R) \1 |4 n
// SDRAM0 B+ a) H" r' }2 C0 R7 R
wire [21:0] mSD_ADDR;
& g F# R% f$ _0 Y( J1 ^wire [15:0] mSD2RS_DATA,mRS2SD_DATA;
# e( }& M- Y/ w7 @8 t+ s! kwire mSD_WR,mSD_RD,mSD_Done;
! G. U; Z+ c7 w) u8 O# J& p1 a, u5 D" u! X// SRAM Async Port8 P* c, x5 }, u p0 x% e
wire [15:0] mSRAM_VGA_DATA;
3 ?1 i" q/ K+ k$ F" f- a0 k6 jwire DLY_RST;# S# P7 L6 o9 I
0 ]9 |7 @/ U: Z3 Z' e& _( E6 d// VGA
- T( j$ }3 n( \3 |1 ^3 A& z8 jwire [9:0] mOSD_R;
3 s" P* g% z9 Cwire [9:0] mOSD_G;% D2 B+ U i$ [
wire [9:0] mOSD_B;( Q# j, K7 D2 p9 A) ?$ A& ~
wire [9:0] mVIN_R;3 {+ h7 S2 o9 \: M% Y9 I5 a
wire [9:0] mVIN_G;
e6 R( [; |) p! Ewire [9:0] mVIN_B;) S) ~, G. x6 ?( l; X& ?/ c
wire [19:0] mVGA_ADDR;
4 h5 g0 u3 u( W$ ?5 i! k1 fwire [9:0] mCursor_X;
7 _) U, D. O$ }. M" \wire [9:0] mCursor_Y;
" A4 F. Q' g( P5 [7 Nwire [9:0] mCursor_R;
3 ?4 r- K" |3 F* G) g/ ywire [9:0] mCursor_G;
1 [( D8 e5 ?* S$ Y: cwire [9:0] mCursor_B;7 {4 D) a3 |& S( e. c* W. @
wire [1:0] mOSD_CUR_EN;
. C' W; {) l* x( l// Async Port Select
8 H0 Z$ w1 T. u9 K9 D8 v, m5 _2 awire [2:0] mSDR_Select;& S" \1 K+ g$ M2 N
// External IO
q. B9 `( W# I, g- m/ Lwire [7:0] mExt_IO;9 {0 e$ c( ]3 i/ D2 H8 c% F
// SDRAM Async Port0 p k7 q* I2 P: }! t* `* ^
wire [15:0] mSDR_AS_DATAOUT_1;
3 {, O! x% N9 y0 |% @wire [15:0] mSDR_AS_DATAOUT_2;6 L* `* ]: v( K% g3 i
wire [15:0] mSDR_AS_DATAOUT_3; \; a( r% d: @- a, h
wire [21:0] mSDR_AS_ADDR_1 = 0;
$ [3 x& u9 r# C5 d. o: Hwire [21:0] mSDR_AS_ADDR_2 = 0;, O5 E8 o6 `5 K0 ~: ?
wire [21:0] mSDR_AS_ADDR_3 = 0;: z+ o8 m% [3 }5 c# B9 h# N+ _2 d
wire [15:0] mSDR_AS_DATAIN_1= 0;. d# x) c% M) A. {& I$ l# O3 h
wire [15:0] mSDR_AS_DATAIN_2= 0;
: P4 w8 }* A+ N3 b$ w0 wwire [15:0] mSDR_AS_DATAIN_3= 0;
5 V6 H' I% a' x1 Lwire mSDR_AS_WR_n_1 = 0;, a% _' j/ C" e' t$ K
wire mSDR_AS_WR_n_2 = 0;/ h" G2 ~/ {% ^: Y# j- h
wire mSDR_AS_WR_n_3 = 0;* s0 v) F+ @# D$ u
// USB JTAG8 `3 e4 [7 b1 t. x/ _, L& z
wire TDI;! [& v" \: x) h
wire [7:0] mRXD_DATA,mTXD_DATA;. H% Q! s; }2 ^9 i# V6 l
wire mRXD_Ready,mTXD_Done,mTXD_Start;
* @' r: A0 z' g" u' y* i' u3 @& Yreg mTCK;
3 L. T* U# g5 p, x9 ]reg TDO;
/ `* k) z# L- H' X1 k# f( t% ]reg [7:0] oRXD_DATA,oTXD_DATA;8 o) d- {) x+ r$ W( A
reg oRXD_Ready,oTXD_Done,oTXD_Start;
7 h9 K/ L( [; p/ V% |// All inout port turn to tri-state0 Z. m4 `" e; G# F" d% L
assign OTG_DATA = 16'hzzzz;
n) i5 I/ d. Tassign SD_DAT = 1'bz;2 K9 {# N7 j/ |0 \$ d
assign GPIO_1 = 36'hzzzzzzzzz;' n: _6 F' |& b& u& b5 i
// Audio) n H; @- c. ]% R6 s% l# Y+ S
assign AUD_ADCLRCK = AUD_DACLRCK;
3 U' L8 E" d4 ` b0 m, x2 fassign AUD_XCK = AUD_CTRL_CLK;- ]& W- Y# Y$ ^1 i
8 d( P" X* y; W! h8 }& Z2 qalways@(posedge CLOCK_50) CCD_MCLK <= ~CCD_MCLK;
$ T8 Q1 L) A0 A$ z- A5 W& W* i( B
7 D) H2 K" L' c; F7 @4 \/ _: falways@(posedge CCD_PIXCLK)1 \- x$ ^& G; S, n: q
begin
e6 Z+ M1 [1 F6 F7 frCCD_DATA <= CCD_DATA;
% t6 C7 y' ^1 ?* H7 xrCCD_LVAL <= CCD_LVAL;
( \5 v T: J$ y( k6 W. `rCCD_FVAL <= CCD_FVAL;! w6 F7 D: s$ D1 x1 L# \
if (!KEY[0]) begin/ x* c1 }0 e6 E9 o
mTCK <= TCK;
7 M" a. {/ C/ R9 C j' C# W. o8 d1 j oRXD_DATA <= mRXD_DATA;# L' G# b) ]. H% w
oTXD_DATA <= mTXD_DATA;
. k6 n) _4 \2 b: I oRXD_Ready <= mRXD_Ready;
& o" t3 [ I8 r oTXD_Done <= mTXD_Done;( v% `, M6 z. G; x
oTXD_Start <= mTXD_Start;
, q- H0 ?' j8 x: x" N4 s end
; T9 ?6 o3 M/ i else begin ; q/ y. a$ P9 P2 {. E& P
mTCK <= ~TCK;# D4 n& ^8 p9 f- J' `- J7 b
end
/ Q) U0 l A1 {end
8 J: }: \/ b8 j% v1 o1 ?assign mVGA_R = Read_DATA2[9:0];
, J3 Y" }1 p) p+ B* V7 Sassign mVGA_G = {Read_DATA1[14:10],Read_DATA2[14:10]};4 z* ~; _% T, i& R( }
assign mVGA_B = Read_DATA1[9:0];# G5 X9 K$ i$ M/ {/ V5 r
endmodule
" R6 U: _3 Y9 K# Y' O8 j& [
7 p! G& F7 I9 {+ P# G3 u* w以上是我自己修改過後的CCD+USB程式,CCD影像還是能成功的執行,但卻無法驅動USB程式下載影像檔
( e: n3 G ~& |" L- i先說明一下驅動的流程.....; ~% Y. M6 V+ j; x6 b: H7 t
在驅動CCD程式之後,先按KEY[3]鍵,VGA螢幕就會出現CCD所攝取到的動態影像,* _( h( A& Y1 r# L- ~: r1 t# ?
待調整好CCD位置,按KEY[2]鍵,即可定格影像選取所欲下載的畫面.... ^9 b; d! g, ]" O& @5 K+ u
只要再按KEY[3]鍵,即可回復原先的動態影像....) C, q% L2 Q! G/ i
而通常存取畫面都是再按KEY[2]鍵等影像定格後,再驅動USB程式.
0 y7 N2 g% j# R/ n: c( f3 e. R將USB程式下載到FPGA之後,即可在CPLD裡使用一套程式download由USB傳回來的影像檔...& E* ?' y. [5 s5 X
等檔案download完成後,在開啟一個影像軟體打開下載後的檔案....4 {* j5 E, w" K
即可得到CCD所攝取到的畫面........
% }+ @1 Q5 {$ P! u% N以上是整各程式驅動的內容及流程..
. N+ f% X9 ~; U" q8 o f請各位高手給予一些建議與討論....- U5 V2 W- P; A4 ?% _
謝謝....... |
|