Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] verilog 跑馬燈問題

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2012-7-19 13:42:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!
; R- A) j3 u& x/ d; q& ?1 ?% H8 C" N+ P* I8 j( D/ N  E# n6 X
module led_shift(clk,led);9 C  y7 @8 c- q0 q* q! v
# T# n5 p% h  B$ e6 P# F
input clk;- j- e) r; x, T  A* V
5 I+ x' n2 [( V2 g* X  U, d
input reset;
- I9 m0 m. k: A7 @2 d
- Q8 v* k7 T" Y# s8 n3 L' Woutput [7:0]led;
7 i' G- x" c& q. X1 S. A
& G! {6 \# f  p8 u& e6 yreg [3:0]rdd;3 v3 S  p! c9 n5 m2 j# l

7 T4 @6 n, D* J* {reg [7:0]led;
8 v) s$ L% O, R6 }3 U' F8 W6 Z& n9 _2 T8 u
reg [2:0]cont! E/ m) w/ Y' G7 ]4 T
0 a$ a  z5 }1 _& ?4 {9 u
always@(posedge reset), D, F2 f2 ]; N8 q9 s
+ E% @" I  X$ B9 V
begin
) P4 Z1 v9 ^2 J   cont=0; ! d3 x. S6 E" v' R4 p8 H
end; W) ]- h% j& n2 w5 L3 z* z$ ~
7 I" x$ E3 n8 {" n8 y1 P3 S
always@(posedge clk)
$ y' `# P, U: _) j3 b1 I7 a7 p5 |% U; D8 w! L& h/ B
begin" M) L  Q! G+ V. t

" X1 I: o7 S9 ^9 m' ^case(cont)
8 M# s% `: {. V+ t' D/ j7 g, R7 l7 j4 \2 }) ?- L4 h# r. \3 y' e
2'b000:begin * g* R4 q# \$ j7 p
  led=8'b00000001;
- e6 {6 F; @4 |$ Z( p  end
/ c; |5 j# b, |" Z2'b001:begin4 x' y0 q" m6 J* T2 i+ B
  led=8'b00000010;
- g3 }  \, v4 X0 ~- D  end
3 w2 c/ C6 b* o/ j5 V, h2 R- G% h7 W2'b010:begin
/ F9 j& H5 }  |  [  led=8'b00000100;% p2 h& y. B* }6 |4 O
  end; ?3 R8 _' Y$ a: d/ n
2'b011:begin
; }- W( V0 n1 {# g  led=8'b00001000;8 y: ]% ?5 D& f8 {" @' D
  end. c2 d8 u; k5 h0 O( S+ T1 \7 {
2'b100:begin & n9 D5 K( l* f. w: ?
  led=8'b00010000;$ q- K  O9 O2 @2 e# t* b! U
  end5 W. P5 x& B( M7 C$ o4 T" v! Q
2'b101:begin . V  I0 U6 b3 R
  led=8'b00100000;
$ ?# D" v) _* Z7 |* E) g" n  end4 v3 v% m) u2 R" p
2'b110:begin$ W% B6 o: b( e& P" y
  led=8'b01000000;/ ?- P  x& L& S) X3 S' c9 T+ v
  end
& {( e! c6 T, j% x  v' a, H2'b111:begin# A- R6 e3 }) {7 g3 h8 ~
  led=8'b10000000;
$ S$ |# `6 g8 t0 X$ K. K  end
& _; [# Z7 t+ v( ^, O  v8 {; c# S+ u# W
" j: d" i+ _9 c8 B4 N3 }' [  endcase  
! x8 e9 c- i3 e
, @3 \- Q. }' Z  if(cont!=7)
$ w4 Y6 E8 B" V1 i+ @     begin + K8 y  L, P, n& G  P& W" G+ d
      cont=cont+1;6 X+ Z  f- Z( Q) h8 E3 F4 b
     end
+ |7 N- D8 P+ D0 h, h+ w9 E* G: D8 r    else
9 [2 ~" s! p# J' T& Y     begin  N+ m9 R: ^  I1 o: C1 _
      cont=0;
7 j: H4 r$ p, K9 _     end6 E/ W5 v3 r1 l9 Q6 u- h
end* ^; y; C# B- Z  u
endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯
* f: ?& o! }& F3 T
" _# r' b; S8 v0 ~# s- l& ?lucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看6 ]1 ~/ i! K  N. p5 y& U
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致
, N  j% Z2 N$ }  G8 ]( E' ?那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)3 _: F' \% k* R8 Z! v
3 q. G! E3 z1 a' L+ p* G8 q* {! N
module led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理
& F- B: U' \% I, }" cinput clk;1 N$ y( m  s8 j. h& [! C" m
input reset;
% p  E7 \; ~  uoutput [7:0] led;
, ?+ W; i2 C6 m) @: Greg [3:0] rdd; //rdd如果沒用到就不用設
; n/ `1 |0 u: [% {4 Oreg [7:0] led;
; K& i8 e, }: ~" {reg [2:0] cont; //記得要加分號
9 s& G4 g% L6 M2 Y# zalways@(posedge clk) //同步計數程序宣告3 X& D4 h( b4 A+ m
  begin
: X; [7 c. Q1 o5 s      if (reset) cont = 0;
  U: |; y* q4 {& ]$ T7 S      else cont = cont + 1;
% v" J: I6 F, T9 F" d' ~1 [  end
$ i: j! H# w2 T" H; [3 g9 @  
3 L) A9 m* ~" A% z( v5 ?always@(posedge clk)) [% f) F5 ^1 @9 ~' q8 y5 H
  begin
4 C2 w6 T1 M- A2 I. J$ T      case(cont)7 O+ o, O# k: O2 t/ D- c# T  S* B7 K1 s+ z
      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改
# ?& w% C! a$ V; N/ P0 E      3'b001 : led = 8'b00000010;) z& J% ~: p% r% Q4 X$ d* n
      3'b010 : led = 8'b00000100;) b8 x4 V5 U. R2 x+ C: d1 s5 l2 u
      3'b011 : led = 8'b00001000;7 X9 ^# L$ m3 r% U& @
      3'b100 : led = 8'b00010000;; G5 G7 @# n' J; a* m* D
      3'b101 : led = 8'b00100000;, P# W! ?8 k, h4 u6 C$ `- j
      3'b110 : led = 8'b01000000;, g- L2 O6 |" @/ _. D1 S7 u
      3'b111 : led = 8'b10000000;
* T; b; q6 x0 W$ V6 C% u6 `5 U' A      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一  L% h& n7 O9 ]/ R
      endcase/ p! `2 ]  c1 V4 C% o, c7 K- ~2 |! @# L
  end
- y* k- A! e+ W) Q* b4 r
2 x8 {8 ?: F' |  oendmodule
. c  m/ h7 k' R  d- f# U
/ s& ^- N* X. y% p, E0 K/ U順便附上電路與模擬檔案. m" _4 @; a) l3 O! b0 T- c: }
電路檔(led_shift.v)與模擬檔(test_led_shift.v):
, S& i! q7 M1 u3 U
9 T; S- {9 _0 o) T6 m1 q模擬結果:
+ o1 f1 ~* N5 G$ z1 u2 M(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次). `4 S9 \3 j+ L9 X$ ~

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x

評分

參與人數 1感謝 +10 收起 理由
lucky + 10 非常感謝

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt - z( t4 U7 k5 ^8 c( v0 s  |1 i
# L  E. W5 ]( u3 M2 z1 u3 a
大大真的非常謝謝你的解答,我已解決,
% f0 i7 F- F" a: M, j1 O. F2 ~0 M2 Q( n& \6 `% R5 M: B
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign
2 T9 m5 D9 D/ {1 D4 [
$ ]" R, Y; [  E& S' a! r, nPackage pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?2 a- g& {: R! r* l- [2 \+ o

) w  D; U! @9 x' e# A/ ?( ]其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。
& ]% x* z* N& E7 ^) p& N% C9 f7 B) d7 N& v) E' ~8 \- ~* q  j# m
) n5 c, f' o1 g4 C: T1 S
不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt
& S4 Y6 L* S+ b7 Z! Q$ C( g4 }5 F( \4 ?
大大,我還有第二個問題,; b2 F+ s- e, [+ q; u

) c1 T0 q. r7 h2 ?  W2 r, L我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
1 q/ G" ]. G1 B) j7 SWARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal
3 o& e2 Z, f/ w- D% qWARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal
9 A; D2 P9 i& ^. v" R 這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky , h9 m( B% t6 g( ]
7 _+ g6 |9 c3 T' b
抱歉我還沒用過這套軟體
/ a7 f* W& R$ h沒辦法幫你什麼忙* e( p4 v. E. _* O; }: Q+ F. q
你這種問題我還是第一次碰到1 |" k& x( U; L; b9 t
照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt
. p, _' K0 u# G/ F
6 J: L' w' V) {9 G. q大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯 ' S5 ^. H$ X. D% A6 H7 [$ B

1 \$ C' h( r/ W) k* Q7 p% z0 c回復 4# lucky
' f! z  z+ f( o2 p
. Z( M+ p- W8 w% z, F0 F' {你的這個問題edaboard或Xilinx討論版有人提過
: S: h* y! s" z3 s% K" o5 }5 F似乎是有些port出現loading的問題+ R5 y* i. w4 T$ h
% f6 D; @( `0 Y: ^4 C' x

* `( v) ^/ \! e4 B7 `! x1 A可以參考:
! o8 l2 d9 ]4 e0 O) qhttp://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)
4 I( w$ t2 Y, j5 ~2 E. Fhttp://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)  Z( g4 z% \0 J
http://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)& D$ q0 h# H; w* \/ l, b
* E' v& c+ X* j9 G8 a, f
http://www.edaboard.com/thread64628.html

評分

參與人數 1感謝 +10 收起 理由
lucky + 10 非常感謝您

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b0 }/ y+ b* _" ^
4 V* @! y$ N9 o/ l# P% |
大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-2 11:25 PM , Processed in 0.114006 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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