Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-2-15 14:45:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位板友,新年快樂:5 Z3 d- M4 I! a6 d
想請教各位版友一些問題,我目前有兩套程式,一套是CCD影像程式,另一套是USB的驅動程式,原本要將影像儲存到CPLD�必須先跑CCD程式,將CCD程式下載到FPGA後,等螢幕出現影像再按一KEY[2]鍵將影像定格後,再跑USB程式將USB下載到FPGA後& V$ [& E1 R# J/ L" O
即能將FPGA內部的影像檔傳送到CPLD,但是我現在想要合成CCD與USB程式,不想分兩次驅動,但實際的語法我修改了好幾次都3 C/ Y- O0 {$ k" x& ^
失敗,影像還是能跑出來,但是下載到CPLD的畫面是黑色的(無影像存在),所以,想請教各位高手,能否幫我看一下程式,給我ㄧ些提示與建議.....
4 x% {6 }8 K  A- }: k3 T. f因為程式很長,所以我只列出目過前修改後最主要的程式碼...! i4 J5 n8 r0 q! ]+ J

* k9 i1 }- u8 j, w//        USB JTAG
/ @0 r* Z' E6 J; b0 \. b2 ?wire TDI;
/ p; A6 l9 v% Q  G+ Xwire [7:0] mRXD_DATA,mTXD_DATA;     ----------------------------我增加的程式碼
9 F5 w: k6 H% K8 Rwire mRXD_Ready,mTXD_Done,mTXD_Start;  ----------------------------我增加的程式碼/ l; f* I5 O+ B
reg mTCK;- q0 ^! V% j' \$ I2 N
reg TDO;                                                 ----------------------------我增加的程式碼! Y4 P" J" F2 A
reg [7:0] oRXD_DATA,oTXD_DATA;      ----------------------------我增加的程式碼; H; O5 O0 U! z( i0 m
reg oRXD_Ready,oTXD_Done,oTXD_Start;   ----------------------------我增加的程式碼# p1 ]& d9 H* O+ N2 D
//        All inout port turn to tri-state
' {3 X' {$ e" g& b# Lassign        OTG_DATA        =        16'hzzzz;
' Z) \  t7 O7 u* B/ Qassign        SD_DAT                =        1'bz;+ E1 k2 s6 |* C& `. V, L
assign        GPIO_1                =        36'hzzzzzzzzz;( y4 `. p; T, U
//        Audio
$ S$ d9 B# m/ f. Gassign        AUD_ADCLRCK        =        AUD_DACLRCK;9 c4 T5 x& l, E* t9 K0 X3 Z% l+ k- O
assign        AUD_XCK                =        AUD_CTRL_CLK;6 p8 m6 b9 f3 X5 N! D) @
# x; i$ B$ P" d8 o
always@(posedge CLOCK_50)        CCD_MCLK        <=         ~CCD_MCLK;- ?) H: |4 Q, B9 ?; |. [
! U# k" U; w3 W$ m8 V  R0 `& \
always@(posedge CCD_PIXCLK); j2 V  r4 P2 }; L. ~# M
begin
0 f+ r& X8 Y; b# D, s4 frCCD_DATA        <=        CCD_DATA;, A& N/ m1 B! x' |% R5 \9 F
rCCD_LVAL        <=        CCD_LVAL;
* ?6 p% _2 z) c7 RrCCD_FVAL        <=        CCD_FVAL;
1 @  ?; K% }; M. ?7 H5 ?  if (!KEY[0]) begin                                    從這一行開始是我增加USB的程式碼合成到CCD程式裡面
( q7 o) t' g2 ~+ a, |     mTCK   <=   TCK;! r$ U! M. I9 C- x( s5 L# E
     oRXD_DATA  <=  mRXD_DATA;3 q5 c6 g# n& |. G
     oTXD_DATA  <=  mTXD_DATA;4 E7 C3 ^. X# i( U. L6 c, k; I* B) Q
     oRXD_Ready  <=  mRXD_Ready;
; f' t8 y, y" S% r" j     oTXD_Done  <=  mTXD_Done;
  v/ X6 t7 Y$ w. U7 K! H+ x     oTXD_Start  <=  mTXD_Start;6 |4 n8 c0 m. F* j: x8 }: a
  end                      結束...................
$ }6 M, I- S7 n% ^  else begin
) I" p2 k) r/ i: ]% J     mTCK   <=  ~TCK;; J' H# q% ~' ^& }$ b' y6 l* L
  end
7 c+ r$ r2 n* i' gend
" X3 N$ w3 r9 G' X; n, ^; X6 y& W' [assign        mVGA_R        =        Read_DATA2[9:0];' F& U1 V+ Y  _- ^5 _
assign        mVGA_G        =        {Read_DATA1[14:10],Read_DATA2[14:10]};0 Z$ Z1 d6 p- K) x/ k( }1 w7 c- X
assign        mVGA_B        =        Read_DATA1[9:0];7 V+ }# j! w) T9 s- {1 z
endmodule6 R2 P& d. G* e# O6 R/ v4 `+ E! m
% X8 ?7 `: D/ `- w
原本單獨驅動FPGA的USB程式碼~
# m" `- V0 ~' \) f, s( k+ T5 x  @  Q% x
module DE2_USB_API6 v* A& B7 o% |( E3 V8 n
////////////////////        USB JTAG link        ////////////////////////////' l1 i4 Y, |" ]: Q
input                          TDI;                                // CPLD -> FPGA (data in)
% h. r: d& q$ L  I' V" uinput                          TCK;                                // CPLD -> FPGA (clk)- e0 K/ k* q2 b; _* ]; Z
input                          TCS;                                // CPLD -> FPGA (CS)9 Q; w6 H/ r4 C0 \8 `+ @7 v
output                         TDO;                                // FPGA -> CPLD (data out)
6 ^3 {+ @, Z/ E! E3 }  T
2 ?2 s* v7 O! q1 V$ @//        USB JTAG
  e0 f+ W4 U7 C! A: w2 b! h) nwire [7:0] mRXD_DATA,mTXD_DATA;
5 p/ H" Z- C7 N' Q- p% m, `7 Rwire mRXD_Ready,mTXD_Done,mTXD_Start;
% i; L7 v9 {/ ]8 l  m8 N$ b; o2 Ywire mTCK;
  e/ a' T% a7 k4 b+ P! I8 oendmodule
8 D9 M8 U9 r/ n7 }+ o8 Q" |  @. S: u1 z9 E% L
想要將上面的USB程式合成到CCD程式裡面.....
6 _& F# e  S- V* n, T但不曉得語法應怎麼表達才能完整,我的構想是等影像跑出來後,按原本CCD程式設定好的KEY[2]鍵將影像定格後.
3 K9 B0 k7 w- u1 n( _1 Z再按KEY[0]鍵來驅動USB程式將影像下載到CPLD......
$ W: M: n! U. ^" }+ t* s! v2 h) v但改來改去下載的結果都失敗(但CCD影像是成功的)! g$ s* j) k" J5 O
所以想請教各位高手,能否提示一下正確的語法.........
. n2 b) B1 F9 R/ q4 h2 b; u謝謝.............
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2007-2-15 15:57:14 | 只看該作者
請問 CCD_PIXCLK 如何產生?
: Q) H6 W8 x4 j1 ^! `0 A1 O/ n8 V按了KEY[2]鍵將影像定格後還會有CCD_PIXCLK嗎?
3#
 樓主| 發表於 2007-2-15 16:53:00 | 只看該作者

回復 #2 masonchung 的帖子

masonchung 版主您好:* w; V! X2 n. B0 S/ i* f8 |4 n3 A
我還是將我的程式碼貼上去好了' E7 x6 o' K" `( X! L) @: v: y8 _) ?
因程式太長,所以分2次po
6 l# ~' U) h" n/ s; {" i: Q  Y. s5 z- ~3 g0 x
module DE2_CCD
  S) w- ?" P2 f% j- T, Q5 R# M////////////////////////        Clock Input                 ////////////////////////
/ x. r, V. B: {- C- C0 j: Finput                        CLOCK_27;                                //        27 MHz! M# F" b% g' U5 u' f
input                        CLOCK_50;                                //        50 MHz  g: m# d1 d  Z
input                        EXT_CLOCK;                                //        External Clock
7 V4 g. |! e1 B2 `( p+ W. a! d0 b' H////////////////////////        Push Button                ////////////////////////$ |. O" \: O+ ~7 W
input        [3:0]        KEY;                                        //        Pushbutton[3:0]
- i$ Q! X2 X4 P0 M7 _7 `////////////////////////        DPDT Switch                ////////////////////////
, R$ D) B" B  Y5 H2 v7 |8 sinput        [17:0]        SW;                                                //        Toggle Switch[17:0]( O* A' E3 [- a3 U  j; O0 u
////////////////////////        7-SEG Dispaly        ////////////////////////( n7 D5 `; b! B7 T% d
output        [6:0]        HEX0;                                        //        Seven Segment Digit 0
, u& |3 K2 A8 ]1 p: g3 noutput        [6:0]        HEX1;                                        //        Seven Segment Digit 1
3 T' b, w& T% P$ M0 v& o  Qoutput        [6:0]        HEX2;                                        //        Seven Segment Digit 25 J0 Y* h  E5 o& n
output        [6:0]        HEX3;                                        //        Seven Segment Digit 3  O! x7 z% Y3 Q" a" ], |
output        [6:0]        HEX4;                                        //        Seven Segment Digit 4
. p( Z# f) J9 R& Q: v) U& g: y2 `output        [6:0]        HEX5;                                        //        Seven Segment Digit 54 z5 D3 e; D9 G
output        [6:0]        HEX6;                                        //        Seven Segment Digit 63 Y, j, Q# L5 r6 S
output        [6:0]        HEX7;                                        //        Seven Segment Digit 74 }. q4 C% u. Q( d  l- ~1 z4 s4 _3 |
////////////////////////////        LED                ////////////////////////////
4 |8 n7 N* q. X- X* w& houtput        [8:0]        LEDG;                                        //        LED Green[8:0]
2 D( m: n# i+ n: ^# J+ f* D4 N& j. Youtput        [17:0]        LEDR;                                        //        LED Red[17:0]
4 t% }7 W2 K: I; O0 K! k, I////////////////////////////        UART        ////////////////////////////# Z/ C1 c5 N4 E* ~+ E: k: Q# o4 x
output                        UART_TXD;                                //        UART Transmitter
3 k* p, ?7 j2 |* [! Q& }, iinput                        UART_RXD;                                //        UART Receiver
7 r$ |1 [2 |) P6 u////////////////////////////        IRDA        ////////////////////////////
, C$ ~% B1 q" y, P' z8 koutput                        IRDA_TXD;                                //        IRDA Transmitter) U" S6 \* i" H3 P7 S. e' a
input                        IRDA_RXD;                                //        IRDA Receiver0 Y4 B4 d" m) h6 l
///////////////////////                SDRAM Interface        ////////////////////////+ V& x8 T& c( u5 @" R+ {0 s7 V
inout        [15:0]        DRAM_DQ;                                //        SDRAM Data bus 16 Bits$ t" \- i' F" ?* ^8 J' O
output        [11:0]        DRAM_ADDR;                                //        SDRAM Address bus 12 Bits$ m% {: q, {3 u3 U$ N
output                        DRAM_LDQM;                                //        SDRAM Low-byte Data Mask & A: s1 x5 u8 Z' \5 [: u' T# r
output                        DRAM_UDQM;                                //        SDRAM High-byte Data Mask
6 q" Y+ F' @2 \+ L6 poutput                        DRAM_WE_N;                                //        SDRAM Write Enable- T$ I9 y7 q2 _7 j4 X. |5 n7 Y& b
output                        DRAM_CAS_N;                                //        SDRAM Column Address Strobe
' \/ a  T3 [2 \8 \3 X( N3 Doutput                        DRAM_RAS_N;                                //        SDRAM Row Address Strobe0 E  V: J- ^- B
output                        DRAM_CS_N;                                //        SDRAM Chip Select9 ~9 z, ?; ?0 j  ^
output                        DRAM_BA_0;                                //        SDRAM Bank Address 06 ?. \" S0 W' g) b3 }/ i1 J9 y
output                        DRAM_BA_1;                                //        SDRAM Bank Address 0
7 Q4 _" y* o2 \: e2 Doutput                        DRAM_CLK;                                //        SDRAM Clock
9 A" [, L1 S0 J6 Loutput                        DRAM_CKE;                                //        SDRAM Clock Enable/ P' g: S! f' K" v- S0 a2 L2 @+ K
////////////////////////        SRAM Interface        ////////////////////////2 A7 W  I* D* U, x! |5 \
inout        [15:0]        SRAM_DQ;                                //        SRAM Data bus 16 Bits2 @" J' C; _5 j
output        [17:0]        SRAM_ADDR;                                //        SRAM Address bus 18 Bits
! r" k7 V6 w6 Youtput                        SRAM_UB_N;                                //        SRAM High-byte Data Mask / Z5 o0 Y! t* T8 c. y
output                        SRAM_LB_N;                                //        SRAM Low-byte Data Mask & K1 \5 L# f/ W. _
output                        SRAM_WE_N;                                //        SRAM Write Enable
0 P  [. @5 i. X" x( \2 ]" H. |output                        SRAM_CE_N;                                //        SRAM Chip Enable. r. }9 b+ B3 `* Z
output                        SRAM_OE_N;                                //        SRAM Output Enable
3 y7 u! t6 X. f5 h0 H) e9 X////////////////////        ISP1362 Interface        ////////////////////////
+ j; d+ ]! g8 T1 X! H/ ginout        [15:0]        OTG_DATA;                                //        ISP1362 Data bus 16 Bits
, k' o2 H1 E- S) @6 d  |' `output        [1:0]        OTG_ADDR;                                //        ISP1362 Address 2 Bits* k" T* q7 A5 W" n7 b9 @  F& l
output                        OTG_CS_N;                                //        ISP1362 Chip Select
* z# F) S& G3 @$ l8 Qoutput                        OTG_RD_N;                                //        ISP1362 Write" E8 D, q* A" i4 H% ]2 B
output                        OTG_WR_N;                                //        ISP1362 Read
  O7 E  i8 Z4 r1 P: Ooutput                        OTG_RST_N;                                //        ISP1362 Reset
% p+ b# r6 G9 t* J% [6 C4 moutput                        OTG_FSPEED;                                //        USB Full Speed,        0 = Enable, Z = Disable
4 ^; M  v% V, Houtput                        OTG_LSPEED;                                //        USB Low Speed,         0 = Enable, Z = Disable: K$ x) l; p+ w
input                        OTG_INT0;                                //        ISP1362 Interrupt 00 A  W2 x7 m: j6 k" ?" s! w# R" |
input                        OTG_INT1;                                //        ISP1362 Interrupt 1" @  r2 L" Q# T3 [; J& w
input                        OTG_DREQ0;                                //        ISP1362 DMA Request 0
( w; J0 t! a6 X9 @5 j; r& }  ]$ cinput                        OTG_DREQ1;                                //        ISP1362 DMA Request 17 V0 ]: r+ S1 f7 f( j
output                        OTG_DACK0_N;                        //        ISP1362 DMA Acknowledge 0
$ [. j- U4 \" A! U1 V! |output                        OTG_DACK1_N;                        //        ISP1362 DMA Acknowledge 1
6 x  i9 A  M/ P; _& j////////////////////        LCD Module 16X2        ////////////////////////////" l. H) \  J; }2 g2 }* [/ \/ f
inout        [7:0]        LCD_DATA;                                //        LCD Data bus 8 bits% W; ~- U6 `* j3 ^/ c3 ?3 i
output                        LCD_ON;                                        //        LCD Power ON/OFF! @5 P9 W' c: t5 l0 E4 E# A
output                        LCD_BLON;                                //        LCD Back Light ON/OFF
1 c2 \0 o2 v8 c) c5 S' U- l- J8 soutput                        LCD_RW;                                        //        LCD Read/Write Select, 0 = Write, 1 = Read- ]+ x3 u; J$ l- h) D
output                        LCD_EN;                                        //        LCD Enable; D% p/ h/ v2 B, `3 z8 i2 g& t- P- A
output                        LCD_RS;                                        //        LCD Command/Data Select, 0 = Command, 1 = Data
% X1 ]( y' B2 Q; g9 Y9 @////////////////////        SD Card Interface        ////////////////////////9 P9 M3 x; f1 h; Z* `& _" a
inout                        SD_DAT;                                        //        SD Card Data
! ~+ z# D& S) ~; r* S# Vinout                        SD_DAT3;                                //        SD Card Data 3
+ Z8 [$ {9 \3 s# Jinout                        SD_CMD;                                        //        SD Card Command Signal7 c9 j( U3 `0 ^* W
output                        SD_CLK;                                        //        SD Card Clock
/ I" A+ B: X8 x8 I( R. }////////////////////////        I2C                ////////////////////////////////
; F2 H/ N% S. B& _inout                        I2C_SDAT;                                //        I2C Data
3 K+ y$ ^+ P! s5 a+ h0 s% Houtput                        I2C_SCLK;                                //        I2C Clock
$ \- m3 ~: B7 r4 ]! K5 R! u3 d" [///////////////////        USB JTAG link        ////////////////////////////  J; B7 @0 R6 A. r% b- a
input                          TDI;                                        // CPLD -> FPGA (data in)
% c8 h4 Z% r& O* |9 Ainput                          TCK;                                        // CPLD -> FPGA (clk)
) {) {* Y6 n& t1 C9 ]7 w+ ]' hinput                          TCS;                                        // CPLD -> FPGA (CS)) E# L0 g' I! |3 p& `
output                         TDO;                                        // FPGA -> CPLD (data out)
$ k1 E2 X& a0 U////////////////////////        VGA                        ////////////////////////////
: ^( z+ w- e* h" @( e6 Moutput                        VGA_CLK;                                   //        VGA Clock
5 d. P8 c6 D0 H" f  q$ Goutput                        VGA_HS;                                        //        VGA H_SYNC$ D" q) M% }! \# ~) r
output                        VGA_VS;                                        //        VGA V_SYNC
+ ], b+ y9 R7 k5 goutput                        VGA_BLANK;                                //        VGA BLANK
1 s# @" R: O0 p: d! moutput                        VGA_SYNC;                                //        VGA SYNC7 r  W' N6 V- ]' H1 B6 X# R! x
output        [9:0]        VGA_R;                                   //        VGA Red[9:0]
! {+ U1 u5 f' V8 ~7 Q1 o) v6 i# Ioutput        [9:0]        VGA_G;                                         //        VGA Green[9:0]
) I( [7 P8 E# routput        [9:0]        VGA_B;                                   //        VGA Blue[9:0]
0 {/ o. W7 d! l5 l4 \! t3 Q% L1 ?////////////////////        Audio CODEC                ////////////////////////////
7 t- ^) R. _0 linout                        AUD_ADCLRCK;                        //        Audio CODEC ADC LR Clock$ C! N& r! r8 |
input                        AUD_ADCDAT;                                //        Audio CODEC ADC Data2 W  w( p, j# x
inout                        AUD_DACLRCK;                        //        Audio CODEC DAC LR Clock7 I" L* t' i( h0 ]! n5 S
output                        AUD_DACDAT;                                //        Audio CODEC DAC Data+ ~" {! F9 Y) m. `
inout                        AUD_BCLK;                                //        Audio CODEC Bit-Stream Clock/ ?/ k, b3 h9 ?3 w5 p4 t
output                        AUD_XCK;                                //        Audio CODEC Chip Clock
+ L) D: Y7 z# @: t////////////////////        TV Devoder                ////////////////////////////
5 I+ N3 O5 S" B7 A0 Z/ x& d% b+ W9 B8 Jinput        [7:0]        TD_DATA;                            //        TV Decoder Data bus 8 bits& r5 h) @7 a5 t  X% B6 }4 Y
input                        TD_HS;                                        //        TV Decoder H_SYNC+ D! f. D: D  M1 b' ]( [
input                        TD_VS;                                        //        TV Decoder V_SYNC
8 X0 ^, [  j: o) loutput                        TD_RESET;                                //        TV Decoder Reset
* ~% M6 {# l3 @& M% a0 f* K////////////////////////        GPIO        ////////////////////////////////9 F. o/ v8 F$ G% I& w8 Z
inout        [35:0]        GPIO_1;                                        //        GPIO Connection 11 v1 |7 X. N# P8 @: K6 e' E
3 G& [9 v+ [$ I! O$ l
assign        LCD_ON                =        1'b1;7 Z0 X# y3 _1 k3 s$ |' [
assign        LCD_BLON        =        1'b1;3 G3 e' ~1 S; w* _' q/ E
assign        TD_RESET        =        1'b1;, r! L# V8 w% n, ^, X( Z) _

1 I) ^$ e2 h+ \3 v+ n/ T5 _7 K//        All inout port turn to tri-state' p8 V% a% |0 D; b+ [+ q' K
assign        SRAM_DQ                =        16'hzzzz;, K" P+ ~" Q' v& d4 ^( v+ U
assign        OTG_DATA        =        16'hzzzz;( F/ B+ J( {9 t+ B# `. l
assign        LCD_DATA        =        8'hzz;
7 N- R1 C0 V% f' W& g6 massign        SD_DAT                =        1'bz;
# j) l% Z7 i/ r; ~assign        I2C_SDAT        =        1'bz;- y0 G; N; @3 H4 _' I2 \! u. U/ V
assign        ENET_DATA        =        16'hzzzz;# }2 r* r1 B% z7 ~" v" X% b
assign        AUD_ADCLRCK        =        1'bz;# F- k! q% l6 K
assign        AUD_DACLRCK        =        1'bz;) u4 o/ Y0 n& y! ~, @1 r% e
assign        AUD_BCLK        =        1'bz;
4#
 樓主| 發表於 2007-2-15 17:05:19 | 只看該作者
//        CCD
, y* h* c* {! Z9 I5 Kwire        [9:0]        CCD_DATA;
" j$ l2 x' y' K, Ywire                        CCD_SDAT;
3 K6 e& \) ~$ rwire                        CCD_SCLK;! d; f7 P; B5 s# |  q4 {
wire                        CCD_FLASH;$ P7 ]8 F* i8 ?
wire                        CCD_FVAL;" L8 ~. c( b4 }% W, k) e; c) }; U; v
wire                        CCD_LVAL;
6 u. W; M. y# r6 d8 l$ zwire                        CCD_PIXCLK;
2 U1 g. G* X( @4 p; xreg                                CCD_MCLK;        //        CCD Master Clock
% [$ M5 k# B1 T5 f4 X1 h2 Q& W% N! U2 f1 D- w, {; F$ d
wire        [15:0]        Read_DATA1;
/ Z: @) |+ L5 v" mwire        [15:0]        Read_DATA2;* g/ Y6 R: ^/ R
wire                        VGA_CTRL_CLK;
. l, c2 w9 S$ H5 W3 ]wire                        AUD_CTRL_CLK;
2 S  ~, @8 b) Swire        [9:0]        mCCD_DATA;  O  [" i7 V1 N: y3 m
wire                        mCCD_DVAL;4 J; p/ w' H7 W& ^8 I- S" n
wire                        mCCD_DVAL_d;
6 n! O8 X; l" Y/ C; q4 fwire        [10:0]        X_Cont;* }% T- \# U& @6 l4 D+ _
wire        [10:0]        Y_Cont;# T/ y; L  U( Z' |  g
wire        [9:0]        X_ADDR;
- L$ E' a3 r/ ^( s+ Hwire        [31:0]        Frame_Cont;
4 O* [8 X6 m! \9 Z2 I8 Lwire        [9:0]        mCCD_R;2 P& \8 R6 S% d. Q
wire        [9:0]        mCCD_G;
# w+ M; \: ]2 x* Hwire        [9:0]        mCCD_B;# }% _/ \( y+ r: k( Z
wire        [9:0]        mVGA_R;) Y3 E; \+ y' e. D0 Y, m9 V
wire        [9:0]        mVGA_G;, X! I  T! f: A! F
wire        [9:0]        mVGA_B;) {9 Y0 s8 ~7 p( n( F! C- Q
wire                        DLY_RST_0;4 \1 m1 [2 _. J+ m
wire                        DLY_RST_1;
. i; G3 Q2 l4 D5 I. Z6 ]wire                        DLY_RST_2;
& K9 J; k. S9 qwire                        Read;
7 s7 P2 j/ c! oreg                [9:0]        rCCD_DATA;* `4 F9 l% Z7 w
reg                                rCCD_LVAL;
; P9 ?% s3 S, I& A; Breg                                rCCD_FVAL;
9 m# V: H( [' T0 l2 [( [' o2 B6 ]# ]6 P" a  J" E
//        For Sensor 18 ]' [9 c( \3 t6 M( g2 E8 P2 U# k
assign        CCD_DATA[0]        =        GPIO_1[0];) ~  Q* M7 P* m
assign        CCD_DATA[1]        =        GPIO_1[1];' }$ Z, a, }) h) b& q
assign        CCD_DATA[2]        =        GPIO_1[5];$ @% L# U* o; C
assign        CCD_DATA[3]        =        GPIO_1[3];; Z% t9 s# z6 |* |+ ?7 E7 u
assign        CCD_DATA[4]        =        GPIO_1[2];
& l) M) y  f1 H; L: _assign        CCD_DATA[5]        =        GPIO_1[4];
1 n* a5 R  d  T1 S4 A! Z' Dassign        CCD_DATA[6]        =        GPIO_1[6];& D" f" K2 O* M" J/ D0 E8 G
assign        CCD_DATA[7]        =        GPIO_1[7];" ]6 O  ^" x  e8 l) H6 E" p
assign        CCD_DATA[8]        =        GPIO_1[8];0 {! r3 s, I7 F
assign        CCD_DATA[9]        =        GPIO_1[9];
1 L$ H. z. Y. M8 y6 ]- g3 @assign        GPIO_1[11]        =        CCD_MCLK;
, O6 e; O7 t! N* Bassign        CCD_FVAL        =        GPIO_1[13];+ e% C5 y3 Z8 d6 l
assign        CCD_LVAL        =        GPIO_1[12];
8 u# f- n3 E7 M4 @% a+ D- x; lassign        CCD_PIXCLK        =        GPIO_1[10];
; @. E3 M1 N7 H$ T$ w* v
" i! I, E- Z0 h6 _, Y* Wassign        LEDR                =        SW;6 w* y( i' z) u5 L% r
assign        LEDG                =        Y_Cont;
, ^+ _) d0 P3 [) Rassign        VGA_CTRL_CLK=        CCD_MCLK;
& N0 `% ~! T  g0 y$ ]assign        VGA_CLK                =        ~CCD_MCLK;
$ W9 ^  |7 Q: ?- g5 F0 ]! p: ~8 S) b/ Q# v
VGA_Controller                u1        (        //        Host Side
; ?, m3 k8 R* [' [4 W4 V                                                        .oRequest(Read),* K- b/ x8 A; `9 m
                                                        .iRed(                DISP_R        ),5 ?9 ^1 Z# M5 c
                                                        .iGreen(        DISP_G        ),
* W+ ]( J% k7 W" b                                                        .iBlue(                DISP_B        ),( G+ Y" M) M( G6 }% f+ y
                                                        //        VGA Side
/ n' R1 P# r( i                                                        .oVGA_R(VGA_R),) b3 W7 a* _. z3 F& f% [
                                                        .oVGA_G(VGA_G),
' M0 m. o# M2 @6 L8 V2 M                                                        .oVGA_B(VGA_B),
5 I4 e* T1 w" h                                                        .oVGA_HS(VGA_HS),9 e- W# [  ~! H+ D- d+ `( i6 m' _
                                                        .oVGA_VS(VGA_VS),  l/ M" u9 a! o# ~
                                                        .oVGA_SYNC(VGA_SYNC),6 H: e+ \8 w2 [2 n$ S" ^
                                                        .oVGA_BLANK(VGA_BLANK),
) V4 C" Y* o# }  g* e                                                        //        Control Signal( Z! [4 I5 m& Z  ~  K. u: i+ R% O7 H
                                                        .iCLK(VGA_CTRL_CLK),: |3 z9 B" |. S- {) d8 D/ m6 Y2 H
                                                        .iRST_N(DLY_RST_2)        );
5 t  J% V) S" J) H
- s6 m- C& z6 `Reset_Delay                        u2        (        .iCLK(CLOCK_50),3 ~# @1 z; u6 a" q' n, m. Y* m
                                                        .iRST(KEY[0]),! d1 G/ i# J4 L( L" |$ a, p
                                                        .oRST_0(DLY_RST_0),
: q5 j! H0 H% s                                                        .oRST_1(DLY_RST_1),0 ~) {* ?" L9 k* T! c/ \3 U# ]0 E" I
                                                        .oRST_2(DLY_RST_2)        );
  y* O& X8 @6 `2 F" s8 o1 E' j, N2 K- X) J( l7 }) w) ]! o
CCD_Capture                        u3        (        .oDATA(mCCD_DATA),
' A3 n* V, W- T2 h; _                                                        .oDVAL(mCCD_DVAL),+ o  h; l% i+ A! y; a
                                                        .oX_Cont(X_Cont),
, a7 U) S8 h6 i3 v; j$ F3 g                                                        .oY_Cont(Y_Cont),# u) R3 s( w* k" Y- R$ {$ O
                                                        .oFrame_Cont(Frame_Cont),
, u  z0 T7 M- f, E0 u- i8 h% {                                                        .iDATA(rCCD_DATA),
3 N7 [  Y/ a9 w0 u! D                                                        .iFVAL(rCCD_FVAL),9 ?- l, @+ |6 r: o( B
                                                        .iLVAL(rCCD_LVAL)," X$ t) a+ G4 ~' ~
                                                        .iSTART(!KEY[3]),( c% t9 r0 h% i! G
                                                        .iEND(!KEY[2]),8 d0 Q2 j% O, x# f. j1 t7 ?
                                                        .iCLK(CCD_PIXCLK),4 C+ C8 H/ ^# c0 |- u
                                                        .iRST(DLY_RST_1)        );
" X) ~. B$ Z3 K9 g# `; ^. U/ H& `" U1 x/ i3 V* O! n+ A5 t. ]7 e- I
RAW2RGB                                u4        (        .oRed(mCCD_R),
1 I% P" N; m9 l* f                                                        .oGreen(mCCD_G),7 Z% f5 Q8 i- y- ?9 O# p
                                                        .oBlue(mCCD_B),9 m9 r9 I( M  X( Y2 h5 C$ n
                                                        .oDVAL(mCCD_DVAL_d),
( k2 l$ u& ^) K" l9 `, t                                                        .iX_Cont(X_Cont),9 p+ s8 v/ @3 `5 ?. c9 ]: T
                                                        .iY_Cont(Y_Cont),
% p. Z, r' x6 O$ w                                                        .iDATA(mCCD_DATA),
( j% j3 @8 O# B! t/ }- W% N% C1 y                                                        .iDVAL(mCCD_DVAL),; i( j! C% a3 x) _/ R
                                                        .iCLK(CCD_PIXCLK),2 p0 u5 R' o( l5 z. l( w+ Q/ G
                                                        .iRST(DLY_RST_1)        );3 [3 F$ G! i1 N0 n* U

) c* ]5 ?4 ?. x4 H+ l! Z$ |: c2 ^SEG7_LUT_8                         u5        (        .oSEG0(HEX0),.oSEG1(HEX1),( T) u9 O. F9 d8 C( q6 R1 n& G
                                                        .oSEG2(HEX2),.oSEG3(HEX3),
- K4 }' l& e1 U9 F" D7 M                                                        .oSEG4(HEX4),.oSEG5(HEX5)," N3 ~( u" t+ h( R* j
                                                        .oSEG6(HEX6),.oSEG7(HEX7),
2 b+ X; C- j( P& t                                                        .iDIG(Frame_Cont) );6 D* }! J) P9 `' d& u. r% G0 k: B

9 H+ w' F, A% D3 b2 kSdram_Control_4Port        u6        (        //        HOST Side: R! {4 _- e6 ?
                                                    .REF_CLK(CLOCK_50),% j( ?$ A  b2 T9 e# d
                                                    .RESET_N(1'b1),1 k0 P: q; M: W5 `2 a8 X% {% Z. t
                                                        //        FIFO Write Side 15 R, v4 X4 h5 ?4 T
                                                    .WR1_DATA(        {mCCD_G[9:5],/ h0 v/ W8 o% Z" c$ Z& D2 e
                                                                                 mCCD_B[9:0]}),3 I: A- {8 k+ ~7 ^8 e( f
                                                        .WR1(mCCD_DVAL_d),( v- K1 v/ I( J& q
                                                        .WR1_ADDR(0),
# F' l- v3 {: t; S2 ]                                                        .WR1_MAX_ADDR(640*512),
3 f2 k3 |2 ]5 ?: S% G. O) I                                                        .WR1_LENGTH(9'h100),- ^( a% B% U( h' m# r
                                                        .WR1_LOAD(!DLY_RST_0),0 I" [2 c5 W3 H2 t+ Q+ Q
                                                        .WR1_CLK(CCD_PIXCLK),
' l' G& s7 c' \# z( N6 U4 @% C                                                        //        FIFO Write Side 24 f- S+ K  q8 i* L: D/ \- e. N7 P$ w) ^
                                                    .WR2_DATA(        {mCCD_G[4:0],
: ]: m* e2 w6 j, Z- b                                                                                 mCCD_R[9:0]}),. u, L2 k; B- n, _! A
                                                        .WR2(mCCD_DVAL_d),6 R" o/ G) J% r- X# L  e" f6 `
                                                        .WR2_ADDR(22'h100000),3 l1 E% o# H; h1 K
                                                        .WR2_MAX_ADDR(22'h100000+640*512),  t) }* K- d7 i( z/ q4 z
                                                        .WR2_LENGTH(9'h100),
1 d1 C, A( l% K: {8 m) D* J4 z+ P% i                                                        .WR2_LOAD(!DLY_RST_0),
& V8 y) ^; z& {0 X- W5 d& C                                                        .WR2_CLK(CCD_PIXCLK),
! p( M# T. t6 M3 i                                                        //        FIFO Read Side 1
: R  q0 }6 }/ ]+ u) L: u                                                    .RD1_DATA(Read_DATA1),
+ m) ^$ ^/ Z4 B: P                                                .RD1(Read),* C9 ^, k: `# F$ j1 Z. X' R* h
                                                .RD1_ADDR(640*16),
+ i9 K6 R) K; G; `, f1 L$ t  X                                                        .RD1_MAX_ADDR(640*496),- U' Q9 g& @) K3 N
                                                        .RD1_LENGTH(9'h100),. V+ U7 t' n8 C- _6 l4 x
                                                .RD1_LOAD(!DLY_RST_0),
  m  e8 Y( [2 n* r$ W) V% J                                                        .RD1_CLK(VGA_CTRL_CLK),3 {+ r9 }# ^3 o0 M- ^
                                                        //        FIFO Read Side 2) n1 W) L2 j, q2 F
                                                    .RD2_DATA(Read_DATA2),
6 k, x4 X3 y' T$ a" l& a                                                .RD2(Read),2 y  c& ]% G/ l5 S# ?2 i# b
                                                .RD2_ADDR(22'h100000+640*16),
; X5 J+ e5 z; ?4 j# v! p7 \7 F                                                        .RD2_MAX_ADDR(22'h100000+640*496),$ C0 O; r1 ]5 l4 h  [  {4 ^& N8 B' [; i
                                                        .RD2_LENGTH(9'h100),
! Z' g$ k5 v8 Z# }, c6 H. d5 {                                                .RD2_LOAD(!DLY_RST_0),
. S1 S% x( w1 _% z* R( e4 m9 I0 D                                                        .RD2_CLK(VGA_CTRL_CLK),: v9 H3 r4 N- C5 A2 G
                                                        //        SDRAM Side4 ^  X. j$ d+ h8 s/ ]* Y
                                                    .SA(DRAM_ADDR),
1 k: p% e4 n7 G& p                                                    .BA({DRAM_BA_1,DRAM_BA_0}),6 V% t* j- S3 l* x: |
                                                    .CS_N(DRAM_CS_N),
# e& W0 Z+ h- t3 p. I                                                    .CKE(DRAM_CKE),
. e- e6 _, n& G2 E; `( Y* K. e                                                    .RAS_N(DRAM_RAS_N),: j5 h' e* b" M' t
                                            .CAS_N(DRAM_CAS_N),
0 q6 i- C# d: q- U5 f                                            .WE_N(DRAM_WE_N),
6 ^1 z& I' G6 F4 X& G4 x                                                    .DQ(DRAM_DQ),
" {1 @# K7 B* G1 U) ]( i& v; w                                            .DQM({DRAM_UDQM,DRAM_LDQM}),
3 R- w% {7 ]# X" C) [9 ^6 {                                                        .SDR_CLK(DRAM_CLK)        );
' x/ S/ S% P, [* J* A$ H" A; b0 E& a+ w% ^
I2C_CCD_Config                 u7        (        //        Host Side- P1 M* {& g. ?1 k
                                                        .iCLK(CLOCK_50),4 s( J  Z! }2 l3 p) A( K8 I+ n
                                                        .iRST_N(1'b1),5 X9 p" X3 P/ ^, Q4 Z: J% D2 O
                                                        .iExposure(16'h0600),# E3 {9 S' @/ Z5 ?1 u$ G
                                                        //        I2C Side! y" o& C) B% r" T, v1 B4 u
                                                        .I2C_SCLK(GPIO_1[14]),
( @7 F4 ^( U5 T' Y                                                        .I2C_SDAT(GPIO_1[15])        );  {6 N+ n+ P$ {% q9 }
/////////////////////////////////////////////////////////////////////# Q* w  \. H+ }- `; s* ]: z9 ^
wire                [9:0]        DISP_R;7 ?7 o/ c* _/ ~
wire                [9:0]        DISP_G;( [3 T. J* Q5 d. G1 ~
wire                [9:0]        DISP_B;
" I& K" L6 w$ e/ s) V+ f7 L" ^* y& z0 c3 v
//        To Display& D$ K! T3 y2 ^: P7 {; V; Z
assign        DISP_R        =        SW[17]        ?        mVGA_R        :        //        Red
' ]& r  L, g' W; I8 Z                                        SW[16]        ?        mVGA_G        :        //        Green
1 f4 n/ Z" E0 Z. \9 r. t                                        SW[15]        ?        mVGA_B        :        //        Blue3 Q$ \4 b3 A% V+ A4 ^2 D* Z! B
                                                                mVGA_R        ;        //        Color7 G* W$ H  w4 Y7 O3 e, @: X/ j
assign        DISP_G        =        SW[17]        ?        mVGA_R        :        //        Red
+ l9 c" H" v. s2 d" V& `2 N                                        SW[16]        ?        mVGA_G        :        //        Green  J  v+ y% a- I, R( H
                                        SW[15]        ?        mVGA_B        :        //        Blue1 i; A( [) l' q. L
                                                                mVGA_G        ;        //        Color5 ^1 A( q9 s$ H1 ~5 [" q
assign        DISP_B        =        SW[17]        ?        mVGA_R        :        //        Red7 [6 R' \  m5 d7 m9 l; N
                                        SW[16]        ?        mVGA_G        :        //        Green
; O+ n& l+ c9 _6 o( p( o; Z, v: _                                        SW[15]        ?        mVGA_B        :        //        Blue
# D7 t# n% o$ f: d1 v                                                                mVGA_B        ;        //        Color
- a* `/ [  ~& e2 }6 g/ M
/ H" e3 `1 h% ]6 ?//        SDRAM
( G; J' e7 Q* ?% K3 c5 F6 c& uwire [21:0] mSD_ADDR;
  a) Q# m; u1 pwire [15:0] mSD2RS_DATA,mRS2SD_DATA;
; G- x  x9 x6 Q, lwire mSD_WR,mSD_RD,mSD_Done;5 o1 c$ {3 R0 d4 }
//        SRAM Async Port* K* U( M5 k( P/ j& g. m
wire [15:0]        mSRAM_VGA_DATA;
- k9 B( Q$ u; n6 V9 N; e" Bwire                DLY_RST;: e! y: H. B$ ]; B8 Y
1 {6 |% ~: E2 i/ }* h, `: X1 v
//        VGA
* o6 ^  n' J& N4 [wire [9:0] mOSD_R;
6 |* l3 y3 C7 A) l* x: b% w$ [wire [9:0] mOSD_G;" y* R! e2 ?8 {
wire [9:0] mOSD_B;
( u$ J* l' n$ S7 L" L% Xwire [9:0] mVIN_R;
# l6 H" }4 O; p# T8 `6 \' `. Rwire [9:0] mVIN_G;
. A. n& u8 t; S) dwire [9:0] mVIN_B;
' a0 {* C; x  f: O& M( uwire [19:0]        mVGA_ADDR;8 Z. L* f9 z, B  @7 h$ `
wire [9:0]        mCursor_X;
; B$ t* v2 X2 Awire [9:0]        mCursor_Y;
  D# ~8 ^# q& m4 dwire [9:0]        mCursor_R;
7 f9 O' E% ^5 j  i6 Lwire [9:0]        mCursor_G;
( R- @6 I  ~. [) T" K8 d5 K/ mwire [9:0]        mCursor_B;
5 p9 D, Y4 s% t; mwire [1:0]        mOSD_CUR_EN;
0 Z! O  q1 A( K, x- q//        Async Port Select
6 M$ p" K0 R- B5 w9 [wire [2:0] mSDR_Select;
& a( O" |; {+ V2 D( l//        External IO
) T" H( n5 _* Y( Y  B/ E* Uwire [7:0] mExt_IO;" |  a, \: X! P5 S! Z
//        SDRAM Async Port- q3 q1 f, Z9 v0 T; m) G" b; C0 y8 E
wire [15:0] mSDR_AS_DATAOUT_1;9 c* m: y$ N$ }) i1 {
wire [15:0] mSDR_AS_DATAOUT_2;$ {  U  V; ]" @" q# n; g
wire [15:0] mSDR_AS_DATAOUT_3;7 Q( o# w% x7 ?9 E  q6 r3 O
wire [21:0] mSDR_AS_ADDR_1        = 0;
! R: o4 H7 c1 v! U/ N8 d$ n' kwire [21:0] mSDR_AS_ADDR_2        = 0;( F! i6 ]9 x) a9 Q8 X" u- M
wire [21:0] mSDR_AS_ADDR_3        = 0;
' G0 o; I0 c4 q7 awire [15:0] mSDR_AS_DATAIN_1= 0;
; P$ q% B' B& A4 Z7 bwire [15:0] mSDR_AS_DATAIN_2= 0;
8 K0 y  I4 [5 Q, Dwire [15:0] mSDR_AS_DATAIN_3= 0;% v) F" y, h! ]1 O3 u% e& Q
wire                 mSDR_AS_WR_n_1        = 0;
4 D! v+ F: m0 d. x0 E/ W) _  bwire                 mSDR_AS_WR_n_2        = 0;. ~( u7 [& l; v, w
wire                 mSDR_AS_WR_n_3        = 0;  r" B5 N: w/ x' }2 ?
//        USB JTAG
8 j' ^9 O5 F- D: t0 e. }+ ^wire TDI;% C" f% d  Q4 r: O; G
wire [7:0] mRXD_DATA,mTXD_DATA;
+ c2 A) X! S$ [& R0 k, i4 mwire mRXD_Ready,mTXD_Done,mTXD_Start;
  C5 r( a" m6 {- e& d8 Treg mTCK;/ ~, V2 k! A! `: Q* A9 K1 B) y
reg TDO;
" k7 k$ J+ @0 \2 Q! y' H) ureg [7:0] oRXD_DATA,oTXD_DATA;
5 Z: M$ g- r7 O$ ?reg oRXD_Ready,oTXD_Done,oTXD_Start;; @8 ~6 o. B9 [+ u) j2 y: i
//        All inout port turn to tri-state
# r) }0 i- W# B- Z, H! zassign        OTG_DATA        =        16'hzzzz;, k: @4 m/ v5 Y6 l7 c+ W' B% C# h
assign        SD_DAT                =        1'bz;( W7 E% u/ N* X, X) E
assign        GPIO_1                =        36'hzzzzzzzzz;* G  ~! g$ x4 v' Y
//        Audio
: {2 q7 @* U0 N; }. gassign        AUD_ADCLRCK        =        AUD_DACLRCK;
- n" Y6 |7 {/ Q, t6 x; rassign        AUD_XCK                =        AUD_CTRL_CLK;
7 y2 ~" ~5 T7 Z# N* ^5 E( [1 [- @! y
always@(posedge CLOCK_50)        CCD_MCLK        <=         ~CCD_MCLK;' m* G0 R! W! Z; ^" i6 M1 c
8 x$ Q/ p$ {& a) ^
always@(posedge CCD_PIXCLK). v! V) \* V% n
begin
4 V/ l& K2 P- s; t2 nrCCD_DATA        <=        CCD_DATA;
! B$ W. C& B& t6 SrCCD_LVAL        <=        CCD_LVAL;6 c( S; _7 w! A. b& D/ V
rCCD_FVAL        <=        CCD_FVAL;7 `% I! N6 E! p8 S
  if (!KEY[0]) begin& x) b: b* J: e# ]% J( a# |# ^
     mTCK   <=   TCK;% [1 M4 K$ z. |: ^& w$ A* l
     oRXD_DATA  <=  mRXD_DATA;
1 T! O! g' e/ B! q/ U     oTXD_DATA  <=  mTXD_DATA;
% g5 w3 Q- J; V& e( K7 E9 A     oRXD_Ready  <=  mRXD_Ready;
5 o1 S* ^0 L! ~     oTXD_Done  <=  mTXD_Done;5 |2 Y$ _7 J0 T' Y1 W2 d  I! ?
     oTXD_Start  <=  mTXD_Start;
6 h" E- v( T0 C% a  end
3 l* M, x" j" V  else begin 7 \) B' q* ]$ Y# n( K) t2 Q
     mTCK   <=  ~TCK;& L% S. c9 k9 T- Q
  end+ v- }$ u: r/ ^. m
end
( V9 K, O9 v, ^# _assign        mVGA_R        =        Read_DATA2[9:0];
* O) o0 r, Q$ k3 f9 G$ `: H! ?$ Uassign        mVGA_G        =        {Read_DATA1[14:10],Read_DATA2[14:10]};
! ^2 c4 W8 e/ S9 q( iassign        mVGA_B        =        Read_DATA1[9:0];
. I) Z% |* U; j5 {6 Wendmodule) G) p: p8 a- }/ z

& t1 u* q& u: [" q8 A1 O% T0 ^; d以上是我自己修改過後的CCD+USB程式,CCD影像還是能成功的執行,但卻無法驅動USB程式下載影像檔
/ E/ k: d% c* p先說明一下驅動的流程.....$ n. D: y8 `) l, Z& M
在驅動CCD程式之後,先按KEY[3]鍵,VGA螢幕就會出現CCD所攝取到的動態影像,
% [# z0 l9 s; C2 T9 t) D# R; Y$ c7 z待調整好CCD位置,按KEY[2]鍵,即可定格影像選取所欲下載的畫面...# K4 [( K. d9 t6 d, F, e2 H* l
只要再按KEY[3]鍵,即可回復原先的動態影像....
1 A" {! [& _6 p% \+ k5 f% ^+ f而通常存取畫面都是再按KEY[2]鍵等影像定格後,再驅動USB程式.
5 c8 i; ~7 i+ G, _& p: b; J" H* A8 o將USB程式下載到FPGA之後,即可在CPLD裡使用一套程式download由USB傳回來的影像檔...& ~/ u3 b; ~* C
等檔案download完成後,在開啟一個影像軟體打開下載後的檔案....% u- |/ a* s3 Y5 |' |
即可得到CCD所攝取到的畫面........2 T; _- Z0 s! n, N1 ]% s4 f, z. a
以上是整各程式驅動的內容及流程..
0 b  C. t* U- C請各位高手給予一些建議與討論....
3 E8 C2 e$ E6 X" o- C謝謝.......
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 | 只看該作者
嗯~~不是耶!!
9 g2 W0 D7 T# H0 M( i1 C( }其實CCD和USB程式分2次下載到FPGA的時候,USB已經將CCD的程式給覆蓋掉了....
$ P" e3 v$ ~2 [8 y9 EUSB傳送的影像其實是按KEY[2]鍵,影像停格時儲存在SDRAM裡面的資料....) }6 ]' A$ G- N1 T. O
漏掉了一像沒有說...其實在驅動USB之後,在CPLD裡download的檔案是從SDRAM裡面擷取到的資料...- Z$ j' B0 h+ F8 |5 [( R3 z
原本CCD主程式裡其實是有一些程式可以刪掉,對影像的出現沒有影響的...  ?- o. e. N% `2 `. y
所以真正關鍵的程式是在CCD程式碼和SDRAM與mVGA及PIXCLK的迴圈之中......
/ M) W$ p, G* G4 j8 E' w而USB的程式碼只有簡單幾個關鍵KEY,我再PO一次...
, Q6 ?2 x5 [2 R. Z+ _2 {6 b4 u' ~6 C  U; D6 P
module DE2_USB_API
+ t! S+ w% i& B0 S////////////////////        USB JTAG link        ////////////////////////////- i% K2 x' Y9 _4 x! f0 F
input                          TDI;                                // CPLD -> FPGA (data in)
8 ~1 o! E+ d7 ]- Oinput                          TCK;                                // CPLD -> FPGA (clk)
1 @- n6 I, S5 M0 s$ p& Ninput                          TCS;                                // CPLD -> FPGA (CS)
9 F/ M( y/ x; E4 z$ ooutput                       TDO;                                // FPGA -> CPLD (data out)* l7 P$ V: Z+ _
" h, y2 G: h0 i: r$ s
//        USB JTAG1 G+ f" q2 |5 ?9 a- R, W/ _
wire [7:0] mRXD_DATA,mTXD_DATA;/ x  [0 c& B2 Z) x
wire mRXD_Ready,mTXD_Done,mTXD_Start;* a/ ~8 p/ T6 _+ f
wire mTCK;
3 ^* `# [$ V, q( c2 ?endmodule* B( R$ ^) H. e) ?

  X' N; y) G7 ?. e5 _在驅動這個USB程式之後,就能覆蓋掉CCD程式,將儲存在SDRAM裡的最後資料傳輸至CPLD裡面.....
! x3 y/ O# Y6 k& @4 Z所以現在我覺得問題是在...
6 Z* @& v4 P+ z% [" c& o8 C4 \6 {如何在合成CCD與USB程式,按KEY[2]鍵將影像存入SDRAM之後....
  j0 l- G' s( {6 {( t# w- I8 r再行驅動USB程式....將資料傳輸至CPLD之中..." |& Y- f/ F8 I, y# P* V$ [
而前提是.........驅動USB的方式是依據FPGA裡面所提供的按鍵..如我想設定的KEY[0]鍵 ....
8#
發表於 2007-2-25 00:25:07 | 只看該作者
damy 大大...我是很想幫忙看一下啦, ?" k( c4 a. V% I2 e3 _
不過看到一大堆SOURCE CODE頭就昏了, 而且我猜這並不是全部的SOURCE CODE吧!# J" T( l( O) m# m( r7 |1 K! `" T2 A
$ C( x- m) u4 C6 a, t; `
你願意的話我倒是也願意在MSN上幫你看看 (雖然我不見得能幫到忙, 不過試試也好). t6 {9 \+ `  f9 U0 W
我想你會有一些設計的方塊圖, 如果有的話應該有助於我瞭解你的設計.& G' O- K8 z: [
我比較習慣從整個系統往模組再往電路看.
9#
發表於 2007-2-25 00:27:35 | 只看該作者
另外FPGA跟CPLD的編號能給我一下嗎?我可以從編號去猜一下你的設計會有多大, 要是能上傳你的report檔的話更好
10#
 樓主| 發表於 2007-2-25 16:16:45 | 只看該作者

回復 #9 tommywgt 的帖子

我是用Altera公司的QuartusⅡ軟體去模擬的哦!!- W" F9 a) e8 t/ L
另外,這套程式要配合友x公司的FPGA產品才能驗證....
11#
發表於 2007-2-25 19:54:42 | 只看該作者
tommywgt大大 加油喔∼! Y' z5 P( N0 G4 ], \/ f
小弟沒有這些裝備只能猜測問題點而已
9 T/ N) d+ @3 ~4 c' H; ^2 q; ~; s拍謝拉
12#
發表於 2007-2-25 19:58:45 | 只看該作者
@@...好巧, 我也沒那些裝備...
+ [. e' d- N8 P, i- o9 G& ?, n7 d7 Q7 A6 w2 T3 L
說真的, 目前為止你提供的資訊很有限, 4 @- M2 V$ c5 v- x  B
我先建議你回到RTL simulation環境看一下問題在不在? 
13#
 樓主| 發表於 2007-2-25 20:35:49 | 只看該作者
嗯~~用描述的比較不清楚...0 a1 O" j" B) T1 ]+ s
說真的...! I* t* D9 K1 n7 `
那套程式和軟體也是花了我幾個月的時間才稍微弄懂它的架構; N) o) R) d- G6 x5 T; Z- o- i, C
post上去的程式是完整的...' t2 R7 p0 d& ^) j
因為主程式和副程式沒有顏色上的區別,所以看起來會很吃力.., Q1 {& I; q( X8 ^. J; I
如果tommywgt版主有興趣.....
5 m( F) G  Z, [. X( L! z" ^可以到
$ d8 F6 E+ M6 o# v( ]https://www.altera.com/support/s ... a_ie_al_ap_ht_1_022
& A9 K, F' l; a' m
7 G; m2 v4 o2 e8 E, d下載 Quartus II Web Edition (v6.1) 軟體
8 W$ `" `  {/ ?  j4 x免費使用期限三個月,期限一到,只要再重新註冊就好了$ ?/ w( c7 Q( T1 G4 t$ V+ ]5 h
程式的部份....如您有興趣,我可以寄給您.....
14#
發表於 2007-2-25 23:54:26 | 只看該作者
Quartus II 我有完整版的
5 G& M! P- a$ l2 W' \
+ z' @. \% L* S興趣是還好啦, 但是如果能幫上你的忙的話我倒也是很樂意.1 {8 \0 v) P+ ^3 a( W# d3 b, |
4 ?$ ^4 L' S8 b8 C
你可以寄到我的gmail去 chiatsun.wu@gmail.com
5 e% @1 R1 s$ e: q! t+ `最好是完整的project file (要zip起來哦) 另外有多資料的話是最好不過.
5 F- C2 W" E  k7 y我手上有一片我自己做的EP2S90的實驗版, 連MPEG1/2/4都放的下, 我想放你那個project應該沒問題. 另外最好是有ModelSim能RUN的test bench file.
* e+ y$ x& \  V& C& r
. ?+ _9 x+ J2 Y$ H( O我會找點時間幫你看看. 另外可以的話最好請給我你的MSN, 因為只能利用下班時間看, 所以也許不會一下子看完, 但是我會找多點時間的.& b5 Y& M3 x1 c/ U. r, X/ d7 J

. Z) N4 ?+ w/ o9 l% t& J我不敢說交給我, 但是如果照你所說的, 問題應該不會太大才對.
15#
發表於 2007-2-27 16:44:13 | 只看該作者
看来在搞影像处理方面的人才还不少喽,小弟也在搞这方面的,不知能否能帮得上前面的大哥,) K7 j8 b9 ~7 M, s9 _
MSN︴email]Gzwb_345@hotmail.com[/email]
2 D; P+ f' t" @2 U; h) A% u5 dmail:  shine_zeng@163.com
16#
發表於 2007-2-27 18:10:52 | 只看該作者
哇...這個照片...帥
8 Z$ ~6 N3 c; G& u. I/ h
6 L( c) d# x% d9 K# X2 K) f$ p6 Z本人的照片也upload來看看吧
17#
發表於 2007-2-28 23:47:38 | 只看該作者
damy加油哦9 H+ y( c( t, j0 W0 _1 H) ]
有什麼問題的話歡迎你再提出來( x7 C, c3 m3 t4 k; \" i, U
另外也多參與論壇哦
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-8 08:28 AM , Processed in 0.131007 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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