Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 7713|回復: 16
打印 上一主題 下一主題

[問題求助] 請問版上各位高手,可以提示我一下verilog程式語法嗎?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-2-15 14:45:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位板友,新年快樂:* S5 q5 `" q# W
想請教各位版友一些問題,我目前有兩套程式,一套是CCD影像程式,另一套是USB的驅動程式,原本要將影像儲存到CPLD�必須先跑CCD程式,將CCD程式下載到FPGA後,等螢幕出現影像再按一KEY[2]鍵將影像定格後,再跑USB程式將USB下載到FPGA後
. g6 F+ O9 `; j6 h! Z% M# @即能將FPGA內部的影像檔傳送到CPLD,但是我現在想要合成CCD與USB程式,不想分兩次驅動,但實際的語法我修改了好幾次都
* O& r. }3 z! V失敗,影像還是能跑出來,但是下載到CPLD的畫面是黑色的(無影像存在),所以,想請教各位高手,能否幫我看一下程式,給我ㄧ些提示與建議.....# j$ A* @. r" `5 O# S0 b: Q/ R
因為程式很長,所以我只列出目過前修改後最主要的程式碼...
# t% M0 y7 U+ \1 ^; _
2 a6 x1 x7 I! G% R3 D! P//        USB JTAG% I* x! ?2 g3 P$ V; h/ y. g6 a+ Q
wire TDI;
. I  `4 E+ b: H1 i1 C' q1 ^wire [7:0] mRXD_DATA,mTXD_DATA;     ----------------------------我增加的程式碼! y5 Q0 E) Y3 ], Z% |% h/ S
wire mRXD_Ready,mTXD_Done,mTXD_Start;  ----------------------------我增加的程式碼$ D2 I7 N. d( a& _9 m2 w# @% t
reg mTCK;* U# w. ^, K7 m
reg TDO;                                                 ----------------------------我增加的程式碼
, O2 ~) S9 x  A9 [3 mreg [7:0] oRXD_DATA,oTXD_DATA;      ----------------------------我增加的程式碼
9 I/ G- g! j( t8 U; I, Ereg oRXD_Ready,oTXD_Done,oTXD_Start;   ----------------------------我增加的程式碼
7 C3 }- P8 @' c, }. s# q6 C$ h//        All inout port turn to tri-state1 L6 P& v0 @, r& V# T' l
assign        OTG_DATA        =        16'hzzzz;& R. s2 O! {% n% k
assign        SD_DAT                =        1'bz;/ h3 c2 N5 P/ F0 j
assign        GPIO_1                =        36'hzzzzzzzzz;
' b0 r& I3 ~/ y//        Audio
  E2 v4 \6 ~- ]* i% wassign        AUD_ADCLRCK        =        AUD_DACLRCK;
& I1 _1 r$ n/ {& S  hassign        AUD_XCK                =        AUD_CTRL_CLK;
/ T% Q+ y; ]9 k: X- t
. k  j/ q7 m! t) O+ oalways@(posedge CLOCK_50)        CCD_MCLK        <=         ~CCD_MCLK;. u2 [) m8 f% ~* u5 u" ]8 ]
0 ~- Z3 l* f' ]' R) L5 V
always@(posedge CCD_PIXCLK)
3 `( a" |4 u4 s$ M2 ?begin
7 ~1 k% \4 ~4 M- jrCCD_DATA        <=        CCD_DATA;, t' F! w5 {8 }/ i* t" g. R. k! K
rCCD_LVAL        <=        CCD_LVAL;
6 V4 P. U! g: X4 `7 r2 z6 A2 e& L7 erCCD_FVAL        <=        CCD_FVAL;
& Z+ a* \& d( w6 s4 i4 [  if (!KEY[0]) begin                                    從這一行開始是我增加USB的程式碼合成到CCD程式裡面8 a0 O" W; v- c8 {3 H& u' i/ `
     mTCK   <=   TCK;/ J% M$ o# P! ~9 j2 U( e
     oRXD_DATA  <=  mRXD_DATA;
1 m3 _* u/ j! c     oTXD_DATA  <=  mTXD_DATA;
/ t9 u8 E5 j& B     oRXD_Ready  <=  mRXD_Ready;
+ D$ x/ U  f3 T5 Z     oTXD_Done  <=  mTXD_Done;4 q" A$ @4 ^) s5 X* v+ f
     oTXD_Start  <=  mTXD_Start;4 D0 J1 H8 }/ u: Q7 o0 b6 K9 o
  end                      結束.................../ R3 j5 j2 @1 A3 B  _/ o( K! j
  else begin
: |2 K# i3 G/ |& E0 ~5 p     mTCK   <=  ~TCK;$ e+ |0 v9 h" w3 O2 P3 _
  end
8 p! ?; T& h% y/ J$ R$ G. {end3 u( b2 x* l* X0 d0 D( f$ s  i# |% W& s
assign        mVGA_R        =        Read_DATA2[9:0];
$ d3 I/ ?2 G4 _# y: Oassign        mVGA_G        =        {Read_DATA1[14:10],Read_DATA2[14:10]};
: [9 \( y, w1 v9 q' x6 E5 r3 a0 ~assign        mVGA_B        =        Read_DATA1[9:0];
2 j5 ?7 X7 g) F7 W7 Wendmodule% _  t9 ^) s: m/ @& y/ o
2 U; L# y2 ?* @, Q1 y4 m
原本單獨驅動FPGA的USB程式碼~( }( D1 h; }' A, u1 \* g
2 \) p( y6 s) `# {
module DE2_USB_API( n+ k7 g' ]( v) z. [4 @( t
////////////////////        USB JTAG link        ////////////////////////////) ^1 g4 k5 G" o8 N
input                          TDI;                                // CPLD -> FPGA (data in)
: f3 W2 A4 D: Uinput                          TCK;                                // CPLD -> FPGA (clk)2 J/ F$ J1 e' A2 r9 Q5 t
input                          TCS;                                // CPLD -> FPGA (CS)
  B6 m4 S3 m% B  u2 Q7 k. houtput                         TDO;                                // FPGA -> CPLD (data out)2 }8 o% @* n$ C4 ?
* Y* R' ]' _5 p& ~
//        USB JTAG
* q+ K" E1 q2 Qwire [7:0] mRXD_DATA,mTXD_DATA;6 Y: |4 R$ o, Q% z1 \, h. }
wire mRXD_Ready,mTXD_Done,mTXD_Start;
/ |0 ?6 Z' H) _3 t4 awire mTCK;
" T0 a& w% E; P; G) u) Tendmodule( {( A6 @* x7 O5 Y- i

( m$ N$ G) r* V4 y& Z想要將上面的USB程式合成到CCD程式裡面.....( @6 o8 G; K  {! I7 `
但不曉得語法應怎麼表達才能完整,我的構想是等影像跑出來後,按原本CCD程式設定好的KEY[2]鍵將影像定格後.% O7 s1 s. Y' s4 H8 |
再按KEY[0]鍵來驅動USB程式將影像下載到CPLD......
$ n) Q2 f/ h. J3 T但改來改去下載的結果都失敗(但CCD影像是成功的)2 Q" F3 f8 u6 H" x! j& X( n. W
所以想請教各位高手,能否提示一下正確的語法.........2 h- N+ s% I& b) J" Y
謝謝.............
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2007-2-15 15:57:14 | 只看該作者
請問 CCD_PIXCLK 如何產生?* a! q" z7 ?* ^  i, B4 ~) v
按了KEY[2]鍵將影像定格後還會有CCD_PIXCLK嗎?
3#
 樓主| 發表於 2007-2-15 16:53:00 | 只看該作者

回復 #2 masonchung 的帖子

masonchung 版主您好:
6 t$ \  Z/ Y- x# O7 V我還是將我的程式碼貼上去好了: M, d% J/ j8 }: K) @% ^- d1 ^, Q5 l
因程式太長,所以分2次po1 G# [5 T1 M# t8 w

6 R, K" [; a$ c- A  T1 d1 a- lmodule DE2_CCD
; Q6 Q6 o  F$ T( n////////////////////////        Clock Input                 ////////////////////////
8 i' Y% C9 O! Xinput                        CLOCK_27;                                //        27 MHz
# y2 r8 b6 m- {input                        CLOCK_50;                                //        50 MHz+ {0 C3 \- [3 O% d
input                        EXT_CLOCK;                                //        External Clock
( g9 l7 P" V. t# _9 g* {////////////////////////        Push Button                ////////////////////////+ t2 E& @, @) e! U9 a/ H
input        [3:0]        KEY;                                        //        Pushbutton[3:0]' K' r! Z7 I* @5 Y' |. ]% z
////////////////////////        DPDT Switch                ////////////////////////
# P5 `% a! u1 {! }1 winput        [17:0]        SW;                                                //        Toggle Switch[17:0]
0 g4 |5 }! U! `+ u! C0 G0 j////////////////////////        7-SEG Dispaly        ////////////////////////
% }  P7 _6 \% D; t" I/ }8 Youtput        [6:0]        HEX0;                                        //        Seven Segment Digit 01 k8 y: N2 L1 E# L
output        [6:0]        HEX1;                                        //        Seven Segment Digit 1$ u! m9 @- R: j4 T- a3 w  X
output        [6:0]        HEX2;                                        //        Seven Segment Digit 2
9 _/ d0 B: R. C# _; Goutput        [6:0]        HEX3;                                        //        Seven Segment Digit 3+ H' r/ T+ X1 p6 M1 j1 v
output        [6:0]        HEX4;                                        //        Seven Segment Digit 4
+ I& |7 o  u, ?: w5 |8 poutput        [6:0]        HEX5;                                        //        Seven Segment Digit 5
5 j' j, G+ O4 k- J) I+ Q5 T2 L" }output        [6:0]        HEX6;                                        //        Seven Segment Digit 6
& V& _8 _9 p; V8 h2 l6 O( O7 I* Zoutput        [6:0]        HEX7;                                        //        Seven Segment Digit 7+ d+ B+ q9 i3 h/ n$ m$ C
////////////////////////////        LED                ////////////////////////////9 g$ W; g$ X' G& Y$ @: ]
output        [8:0]        LEDG;                                        //        LED Green[8:0]. U$ S2 x3 d! a
output        [17:0]        LEDR;                                        //        LED Red[17:0]3 G$ w9 s9 }1 n
////////////////////////////        UART        ////////////////////////////
2 P  Q# I7 v/ U4 ^1 xoutput                        UART_TXD;                                //        UART Transmitter4 X% [4 M$ H/ n# c4 w0 H+ ?
input                        UART_RXD;                                //        UART Receiver
% [+ V# O- l8 k1 k////////////////////////////        IRDA        ////////////////////////////
" \7 t% Q& j- z$ B$ T# koutput                        IRDA_TXD;                                //        IRDA Transmitter
4 I9 A3 C4 {, x3 T4 c: Binput                        IRDA_RXD;                                //        IRDA Receiver
" _3 k7 S2 g, Y* K///////////////////////                SDRAM Interface        ////////////////////////
. E  M* b" R" a, d' {inout        [15:0]        DRAM_DQ;                                //        SDRAM Data bus 16 Bits
6 y/ l0 H+ |7 E$ p" Moutput        [11:0]        DRAM_ADDR;                                //        SDRAM Address bus 12 Bits9 g/ _0 e0 n' W# }' f
output                        DRAM_LDQM;                                //        SDRAM Low-byte Data Mask
+ U" B; l# O6 r. j- V; m  C4 foutput                        DRAM_UDQM;                                //        SDRAM High-byte Data Mask
' |, l, `# p! ~: E+ K" Poutput                        DRAM_WE_N;                                //        SDRAM Write Enable
& I: n' j$ k# V9 T( w% y' r& joutput                        DRAM_CAS_N;                                //        SDRAM Column Address Strobe3 @3 u( t: B- f6 Y/ |5 r5 }! R
output                        DRAM_RAS_N;                                //        SDRAM Row Address Strobe4 J. J+ `8 E0 a' v$ a- I
output                        DRAM_CS_N;                                //        SDRAM Chip Select
* j; h4 j( ]' ]6 i; [output                        DRAM_BA_0;                                //        SDRAM Bank Address 04 Q* {- K, j- n
output                        DRAM_BA_1;                                //        SDRAM Bank Address 0
3 w3 S9 k& j% S3 woutput                        DRAM_CLK;                                //        SDRAM Clock
& A; G) Q! }& c( i- T, i3 moutput                        DRAM_CKE;                                //        SDRAM Clock Enable# i8 m( l3 P# P
////////////////////////        SRAM Interface        ////////////////////////
! n' w/ o' A9 i' X9 r4 {2 P4 Rinout        [15:0]        SRAM_DQ;                                //        SRAM Data bus 16 Bits; d: v( k; V: f8 `1 q
output        [17:0]        SRAM_ADDR;                                //        SRAM Address bus 18 Bits- Z; }9 ?2 C# _* G
output                        SRAM_UB_N;                                //        SRAM High-byte Data Mask   s. W+ [. a5 v  f0 o
output                        SRAM_LB_N;                                //        SRAM Low-byte Data Mask
" Q5 w' g+ E  d" q1 Toutput                        SRAM_WE_N;                                //        SRAM Write Enable
! h  t; F6 X6 e9 K' F/ Uoutput                        SRAM_CE_N;                                //        SRAM Chip Enable
9 p% h# I, T3 M  r$ M) j; v7 Xoutput                        SRAM_OE_N;                                //        SRAM Output Enable+ B8 Z! z$ z( U
////////////////////        ISP1362 Interface        ////////////////////////- s% B7 A0 Y5 s8 E2 Y1 }; \, Y
inout        [15:0]        OTG_DATA;                                //        ISP1362 Data bus 16 Bits
! G# \: q6 F; z" s0 @3 X% Moutput        [1:0]        OTG_ADDR;                                //        ISP1362 Address 2 Bits
2 s/ Q; D) E# p# W. n$ d! Woutput                        OTG_CS_N;                                //        ISP1362 Chip Select
( u/ }- Q& H3 U% c5 moutput                        OTG_RD_N;                                //        ISP1362 Write) |8 P8 B3 p3 t# T0 P+ e5 P
output                        OTG_WR_N;                                //        ISP1362 Read7 ]4 X/ A$ g$ }
output                        OTG_RST_N;                                //        ISP1362 Reset7 |: g( X0 ^- N0 k
output                        OTG_FSPEED;                                //        USB Full Speed,        0 = Enable, Z = Disable0 a/ f6 H; D8 C6 r$ [9 P
output                        OTG_LSPEED;                                //        USB Low Speed,         0 = Enable, Z = Disable9 \8 a; ^8 A! f  ~# ?
input                        OTG_INT0;                                //        ISP1362 Interrupt 0
: u8 D! Q% S) z3 `) a# Tinput                        OTG_INT1;                                //        ISP1362 Interrupt 1
  X* ?) N- Z: @* q/ K$ h7 z) qinput                        OTG_DREQ0;                                //        ISP1362 DMA Request 0* x; L8 N" g, Y  Q7 D
input                        OTG_DREQ1;                                //        ISP1362 DMA Request 1& z# F% L; d: Q' a- x
output                        OTG_DACK0_N;                        //        ISP1362 DMA Acknowledge 0# b0 e& t3 V' v7 Y0 j/ e, v2 Z
output                        OTG_DACK1_N;                        //        ISP1362 DMA Acknowledge 1
/ @( w3 b3 g4 J6 s( t////////////////////        LCD Module 16X2        ////////////////////////////! E# S1 J3 j. R4 H/ \( J& @7 G! F
inout        [7:0]        LCD_DATA;                                //        LCD Data bus 8 bits7 O9 f. p2 w: K' M
output                        LCD_ON;                                        //        LCD Power ON/OFF: O+ F" D( J6 F2 A+ U
output                        LCD_BLON;                                //        LCD Back Light ON/OFF0 b* s# u  J1 f/ h" a: X" o
output                        LCD_RW;                                        //        LCD Read/Write Select, 0 = Write, 1 = Read9 O% L% ~( a. U: W) b$ L
output                        LCD_EN;                                        //        LCD Enable
0 B7 D6 N3 a$ D% s1 W5 Aoutput                        LCD_RS;                                        //        LCD Command/Data Select, 0 = Command, 1 = Data; E' ~: k: P7 f2 `, `0 \
////////////////////        SD Card Interface        ////////////////////////7 R8 z; d8 D% e) u( q; @
inout                        SD_DAT;                                        //        SD Card Data
" y8 P* P! }8 e2 g: B7 U; ^7 `& Vinout                        SD_DAT3;                                //        SD Card Data 3
3 B, x. W8 e; @5 S1 z0 Zinout                        SD_CMD;                                        //        SD Card Command Signal9 b9 b" M' X+ ?; c5 x: \
output                        SD_CLK;                                        //        SD Card Clock" R5 [+ `' J; ?" z' B: [1 A' I
////////////////////////        I2C                ////////////////////////////////  w" X. A& i- P
inout                        I2C_SDAT;                                //        I2C Data/ [: s. e' k: z* q( J: E- b0 p
output                        I2C_SCLK;                                //        I2C Clock. M4 _; ]! a' k* H" D7 `
///////////////////        USB JTAG link        ////////////////////////////4 [7 u3 c# Q5 _1 E. r
input                          TDI;                                        // CPLD -> FPGA (data in)+ }. n$ X* y) I/ ?! H0 C
input                          TCK;                                        // CPLD -> FPGA (clk)! p. J4 V" i! |  P+ s  N8 v
input                          TCS;                                        // CPLD -> FPGA (CS)
1 Z: [/ m% c. Y- Youtput                         TDO;                                        // FPGA -> CPLD (data out)
: g) w2 `1 M/ x////////////////////////        VGA                        ////////////////////////////* u( h! @' D" O  f
output                        VGA_CLK;                                   //        VGA Clock$ H- f$ \# f. Q! H! p1 g
output                        VGA_HS;                                        //        VGA H_SYNC
3 h& w$ ]; ?- U$ zoutput                        VGA_VS;                                        //        VGA V_SYNC
% F  i: s3 E) F/ x; zoutput                        VGA_BLANK;                                //        VGA BLANK
+ ^4 Z# O, n" S# r& loutput                        VGA_SYNC;                                //        VGA SYNC
% i9 }! ~+ l0 a) \. K' b: Aoutput        [9:0]        VGA_R;                                   //        VGA Red[9:0]+ z( l  ~. F$ e% M: J
output        [9:0]        VGA_G;                                         //        VGA Green[9:0]
0 [0 M* N; D9 P! I/ h9 [: f/ Joutput        [9:0]        VGA_B;                                   //        VGA Blue[9:0]
3 M, _* _; r! ?. j* Q0 Q7 L# V////////////////////        Audio CODEC                ////////////////////////////
, A: P  u" x+ p# Binout                        AUD_ADCLRCK;                        //        Audio CODEC ADC LR Clock
$ \3 N) v3 i; O8 K* y- ^& Ainput                        AUD_ADCDAT;                                //        Audio CODEC ADC Data
; |1 j- _# V! b; D" L  n% n& V( }inout                        AUD_DACLRCK;                        //        Audio CODEC DAC LR Clock. |9 t/ x' I+ g2 P5 t( T/ m/ G
output                        AUD_DACDAT;                                //        Audio CODEC DAC Data
, A( Z4 I! l1 v; s- g0 oinout                        AUD_BCLK;                                //        Audio CODEC Bit-Stream Clock" \1 ^) E3 W* N
output                        AUD_XCK;                                //        Audio CODEC Chip Clock
& H8 M8 ?0 D; v9 o////////////////////        TV Devoder                ////////////////////////////
3 G$ N4 k% ^/ L) [7 W- k  Linput        [7:0]        TD_DATA;                            //        TV Decoder Data bus 8 bits( V2 I) n/ i9 {) m
input                        TD_HS;                                        //        TV Decoder H_SYNC$ U5 x# w% `' C6 Z/ n  L' _
input                        TD_VS;                                        //        TV Decoder V_SYNC0 Q) H$ j6 s6 B) o& @2 t
output                        TD_RESET;                                //        TV Decoder Reset' Y0 H* @+ j& U+ ~8 f/ X
////////////////////////        GPIO        ////////////////////////////////
* U9 M4 i& A+ j' i2 J# g8 Finout        [35:0]        GPIO_1;                                        //        GPIO Connection 1& C2 Z5 M  H* q3 ~1 H

# l2 I% J3 G' S' g2 rassign        LCD_ON                =        1'b1;
+ ]/ l2 O* F% J5 x0 R: zassign        LCD_BLON        =        1'b1;
( n. K5 y# o+ G" {$ r; passign        TD_RESET        =        1'b1;; y5 g9 i5 W1 G1 D; ^, q

2 O- r% \2 X' }+ Y9 L# O//        All inout port turn to tri-state; u; u! v2 ?! W' e' l8 |$ R3 j
assign        SRAM_DQ                =        16'hzzzz;. v5 o7 j0 g2 ^3 G1 f2 K. \
assign        OTG_DATA        =        16'hzzzz;
; E& B+ }' g3 M+ K9 a- massign        LCD_DATA        =        8'hzz;5 T" I. L! f( T; q5 A1 Y
assign        SD_DAT                =        1'bz;
, y& X+ C, w5 g9 q, _& Kassign        I2C_SDAT        =        1'bz;. H$ Q1 B- O4 p$ c1 J4 p; Q
assign        ENET_DATA        =        16'hzzzz;
( K6 M/ E9 \' C( P! E. }assign        AUD_ADCLRCK        =        1'bz;
0 @* R9 j7 o- }$ |( z) wassign        AUD_DACLRCK        =        1'bz;2 k5 U6 v* j3 h9 [9 I
assign        AUD_BCLK        =        1'bz;
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 ?% _
謝謝.......
5#
發表於 2007-2-15 18:58:16 | 只看該作者
masonchung 大大...你先看一下囉...這幾天比較忙, 有空我再來看看好了...
6#
發表於 2007-2-15 19:11:45 | 只看該作者
我是覺得為啥USB沒傳影像的原因可能在CCD_PIXCLK沒動作...
7#
 樓主| 發表於 2007-2-16 14:03:26 | 只看該作者
嗯~~不是耶!!) U; _% W! C1 \# R5 E+ i
其實CCD和USB程式分2次下載到FPGA的時候,USB已經將CCD的程式給覆蓋掉了....
+ L1 f3 z, n" C" S, m8 v5 fUSB傳送的影像其實是按KEY[2]鍵,影像停格時儲存在SDRAM裡面的資料....
% _0 Z+ J$ P" b漏掉了一像沒有說...其實在驅動USB之後,在CPLD裡download的檔案是從SDRAM裡面擷取到的資料...& Z% C% f& i) k/ W
原本CCD主程式裡其實是有一些程式可以刪掉,對影像的出現沒有影響的...6 F- @+ S2 @4 z
所以真正關鍵的程式是在CCD程式碼和SDRAM與mVGA及PIXCLK的迴圈之中......
6 c  q" ^, p2 u- I! c$ E4 l而USB的程式碼只有簡單幾個關鍵KEY,我再PO一次...
  Z' p# I, u: I1 [# V" l. D0 w8 K* e
module DE2_USB_API
/ s( ?2 y5 Y8 u" O% e////////////////////        USB JTAG link        ////////////////////////////& K& _+ Y4 q5 g$ V3 W5 k
input                          TDI;                                // CPLD -> FPGA (data in)
0 v! w7 E6 g9 oinput                          TCK;                                // CPLD -> FPGA (clk)
7 N+ B8 c8 t0 e  i" L3 cinput                          TCS;                                // CPLD -> FPGA (CS)
8 P8 d# M; k8 w5 ~1 f; E7 h; ooutput                       TDO;                                // FPGA -> CPLD (data out)
5 }6 i0 S+ |% L6 a* {0 O* u' ~* J" W. T
//        USB JTAG; h' |* n* D3 Z2 i7 H2 t
wire [7:0] mRXD_DATA,mTXD_DATA;. N1 F/ m. Q! T( e$ i# \4 v8 s
wire mRXD_Ready,mTXD_Done,mTXD_Start;
6 E, T+ n& S6 @3 l3 x; k3 Hwire mTCK;
; i4 E; k" _$ y( J% t! v- \endmodule
2 z- k  Q; g9 j* P' s4 X: `
- p' J& ^! @& z* g3 _+ l0 M: x在驅動這個USB程式之後,就能覆蓋掉CCD程式,將儲存在SDRAM裡的最後資料傳輸至CPLD裡面.....
% `$ o4 y& t7 {& J4 i. a所以現在我覺得問題是在...
0 J: v/ u% B9 k9 \如何在合成CCD與USB程式,按KEY[2]鍵將影像存入SDRAM之後....* ^- q5 b( j" \) Y1 v: z
再行驅動USB程式....將資料傳輸至CPLD之中...  f4 g! m5 h6 y' \
而前提是.........驅動USB的方式是依據FPGA裡面所提供的按鍵..如我想設定的KEY[0]鍵 ....
8#
發表於 2007-2-25 00:25:07 | 只看該作者
damy 大大...我是很想幫忙看一下啦( A# ^7 [, _: v
不過看到一大堆SOURCE CODE頭就昏了, 而且我猜這並不是全部的SOURCE CODE吧!9 i2 z- x2 C9 V( h, @( H( n

& `! W5 B4 i$ d6 O# ~, G你願意的話我倒是也願意在MSN上幫你看看 (雖然我不見得能幫到忙, 不過試試也好)
5 Y( d) m5 X) Y3 \* }我想你會有一些設計的方塊圖, 如果有的話應該有助於我瞭解你的設計.
; P" q5 T- M2 w. B' U: {; D我比較習慣從整個系統往模組再往電路看.
9#
發表於 2007-2-25 00:27:35 | 只看該作者
另外FPGA跟CPLD的編號能給我一下嗎?我可以從編號去猜一下你的設計會有多大, 要是能上傳你的report檔的話更好
10#
 樓主| 發表於 2007-2-25 16:16:45 | 只看該作者

回復 #9 tommywgt 的帖子

我是用Altera公司的QuartusⅡ軟體去模擬的哦!!
4 W7 y" J2 Y% c% ~2 \4 o另外,這套程式要配合友x公司的FPGA產品才能驗證....
11#
發表於 2007-2-25 19:54:42 | 只看該作者
tommywgt大大 加油喔∼9 c0 }8 a, \, s8 ]. i
小弟沒有這些裝備只能猜測問題點而已% I6 e5 ?# I3 u: p# L0 J& T
拍謝拉
12#
發表於 2007-2-25 19:58:45 | 只看該作者
@@...好巧, 我也沒那些裝備...4 }' |; {9 e' u7 z; e, s* F

% W7 P# G/ q1 s& |4 M- T$ a4 P- g說真的, 目前為止你提供的資訊很有限,
' I2 A- C% F. ]2 _  \我先建議你回到RTL simulation環境看一下問題在不在? 
13#
 樓主| 發表於 2007-2-25 20:35:49 | 只看該作者
嗯~~用描述的比較不清楚...
2 v% i, d) L( O) B0 M說真的...
# p6 e  m! ]9 d  _( \那套程式和軟體也是花了我幾個月的時間才稍微弄懂它的架構
8 _+ \) b% p# \9 upost上去的程式是完整的...( G3 Z7 Y5 Q1 y$ q
因為主程式和副程式沒有顏色上的區別,所以看起來會很吃力..
8 N: m' v8 D+ o% Y; [3 c8 n7 O如果tommywgt版主有興趣.....  `# p. P0 k9 o- g4 M& T
可以到 ! k, R( u8 j3 y( |- D! U7 F, i
https://www.altera.com/support/s ... a_ie_al_ap_ht_1_022) k! n! C, S7 M% v6 G6 F

' [9 W3 T$ V# u4 N下載 Quartus II Web Edition (v6.1) 軟體
7 A6 K, _+ ]; x7 v/ o% W6 G; {4 w0 `免費使用期限三個月,期限一到,只要再重新註冊就好了
  |/ ~! N+ Q3 A/ p5 p' N  [1 [程式的部份....如您有興趣,我可以寄給您.....
14#
發表於 2007-2-25 23:54:26 | 只看該作者
Quartus II 我有完整版的# `) F6 ^) A  R9 Q2 {
" R  X+ C2 M; H; q
興趣是還好啦, 但是如果能幫上你的忙的話我倒也是很樂意.( ]# ]5 J: S) v2 w6 @
5 ^' M: e* L9 p  P
你可以寄到我的gmail去 chiatsun.wu@gmail.com$ G4 V3 O& h7 r5 z3 J5 n
最好是完整的project file (要zip起來哦) 另外有多資料的話是最好不過. 2 l+ [6 C& Q+ c5 s  u
我手上有一片我自己做的EP2S90的實驗版, 連MPEG1/2/4都放的下, 我想放你那個project應該沒問題. 另外最好是有ModelSim能RUN的test bench file.
1 Z4 r, W: S5 J; e. T) ]' {  r$ N" y+ R# ~* [, y, r
我會找點時間幫你看看. 另外可以的話最好請給我你的MSN, 因為只能利用下班時間看, 所以也許不會一下子看完, 但是我會找多點時間的.; _# n( f- K, K* g
7 k) ~/ H; |7 U$ _" E
我不敢說交給我, 但是如果照你所說的, 問題應該不會太大才對.
15#
發表於 2007-2-27 16:44:13 | 只看該作者
看来在搞影像处理方面的人才还不少喽,小弟也在搞这方面的,不知能否能帮得上前面的大哥,
2 @# t) u) J, Y1 `MSN︴email]Gzwb_345@hotmail.com[/email]& }6 J1 w9 u6 G* w1 g9 Z
mail:  shine_zeng@163.com
16#
發表於 2007-2-27 18:10:52 | 只看該作者
哇...這個照片...帥% w* [! s2 @4 f' R# O

; g; E* z& Y0 \* K本人的照片也upload來看看吧
17#
發表於 2007-2-28 23:47:38 | 只看該作者
damy加油哦, q: O9 d) {. Z0 a& A( \
有什麼問題的話歡迎你再提出來' ~9 |+ u- a  ~5 S0 v, [; Q9 K
另外也多參與論壇哦
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-6-8 02:42 PM , Processed in 0.149019 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表