Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2012-7-19 13:42:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!! c' L: I+ L9 f5 J" E$ f% o

' G1 Z1 q* T2 J# h3 n module led_shift(clk,led);0 ~- @4 Z" K! M* s- p2 h

+ `/ \) G+ r3 y" N$ Q2 [9 Jinput clk;' H3 K" _8 x0 G3 \0 k; L$ h
/ d$ n2 m  M8 m% f
input reset;
9 a- ]' Q8 |% Q: F1 v1 b1 q; ?$ S; P$ {) T
output [7:0]led;
/ }4 S2 z. y( n* _5 T( f: I. [7 d% y: A: u$ z
reg [3:0]rdd;
/ Q( o" Y4 q' O2 s/ ^( }8 ^) E$ {! v# W. j2 C- ~7 K. A
reg [7:0]led;5 _7 b1 ?/ f8 G3 e! H  |- C
: ]6 T/ P0 [7 e$ a: X6 d
reg [2:0]cont
' i6 t! t4 Y% `- _+ ~7 D, g$ O  x0 M% D# |7 Q2 f6 v5 o7 z" Q" ?; n
always@(posedge reset)& E* t" _& R9 n4 G) N$ f

' v7 }) y% o& z: j& hbegin$ P3 j; Y* v( c5 _9 d) J+ G
   cont=0;
2 M) M8 U9 P& U  t8 eend
$ K* m9 i6 a/ ^6 B* n. l/ p& [) g* u2 c8 D$ k7 f$ k5 z
always@(posedge clk)5 J) }. j9 U# Z$ V( j' I

5 s8 _+ k& p2 ~# B( Pbegin
7 V+ U6 y  A: T* k: C
0 A) d6 Z0 |# g' G3 J- z, T# ycase(cont)
3 r" z' k7 k0 n# u* C4 H6 o
& M: b* D% ?2 Z; I1 W$ X0 f, z2'b000:begin
, ~2 F$ ?' T) `# }! ]6 v  led=8'b00000001;. u0 {3 u$ n' m+ v
  end
- B5 X. |4 Q& e1 l9 K) H" Q2'b001:begin1 c2 H# }5 Z, q/ C5 b7 ~. s
  led=8'b00000010;
7 w0 g: T- n1 `! B7 M/ A  end2 K# T  |- b4 [# m
2'b010:begin 9 J! A  F5 r; |
  led=8'b00000100;8 Q/ r4 K. [# M0 X/ {' A' N4 z% y
  end- K2 x, y6 z* e
2'b011:begin
( a, J7 d4 k/ M  L  led=8'b00001000;
. C$ I0 R! H/ C1 a) b' _2 v/ h  end
; `# U8 }* l" ^1 L7 s8 ?9 H) Y2'b100:begin
+ u" w$ f$ v" B$ V  led=8'b00010000;, {. i8 ^* V& g" b4 F; w
  end- k; i8 b3 M8 f# Y" H3 a( O
2'b101:begin
/ [, K0 r- ^6 I, Q: V/ p- n+ s4 u( W  led=8'b00100000;
" n6 s2 c' B8 m/ z! e  end
& q9 o/ `" Z& w9 N2'b110:begin6 k7 [, r1 f& D. o" A6 U
  led=8'b01000000;
5 j, _, c0 _# V5 I8 E  end
9 Q/ U, a8 p, H/ C  n' d+ w2'b111:begin
  c% _5 |( n, g5 Y* s) y  led=8'b10000000;. E3 f# h! ]3 [7 Q
  end
% H8 r+ B) S* |% |0 H7 v) M
% _0 B$ Y# r6 c; d; E. g  endcase  
. r! Q, w" o% p# l7 o/ a- ^  O$ j- h" q- H5 i
  if(cont!=7)
6 j* q, z" S& `: o     begin
+ v( w' a2 }1 F; F" C) y      cont=cont+1;+ t, W2 |5 o8 M( L2 P; P( i
     end
" x8 b7 ]* b$ w. t5 R$ f    else, E  h# j9 q( d1 J
     begin1 D) q1 _; ]9 x% f. H
      cont=0;* A0 D  E0 w3 U
     end. g& x) b7 m4 n4 p
end
4 ^; k% z' P: L' Aendmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯 " k# p1 Q; [+ j* A- u# u

7 W' a' _- J4 ^9 p) ulucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看8 j/ ]# E% e- d
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致& c6 ^! \! x6 [+ {; r+ K) L/ U
那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)
; O; s" E' [5 ?& w
/ a  X$ n& J% m+ lmodule led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理6 \$ O* `) b) E6 z) M4 ~- c
input clk;' _8 C+ I. Y, B/ K2 N
input reset;
0 ~6 b# t6 e) f6 I0 [, Joutput [7:0] led;
& r7 t# e& @5 z  V. U) S8 nreg [3:0] rdd; //rdd如果沒用到就不用設4 ~" v5 D0 [& U1 ~: v; C% r
reg [7:0] led;) u6 y' ?( I; Q0 X+ e
reg [2:0] cont; //記得要加分號$ g) ~9 v+ t: O0 f
always@(posedge clk) //同步計數程序宣告3 Y9 N+ @8 c$ h) Q8 B. G
  begin
9 h5 s6 f* \/ {      if (reset) cont = 0;: ]3 k( q9 N3 B* M  q5 t/ }
      else cont = cont + 1;$ T3 r* b' Q0 {* Y3 H# s
  end
4 H  G" k' T9 O* G, y  2 \  s2 H- L1 H9 R
always@(posedge clk)1 }+ X' o' O. y/ s8 g9 u
  begin" b  e) B4 u$ f& j# {
      case(cont)
# J' c3 @# v4 K- E      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改
! D. W5 g3 U* |9 Z2 W1 T2 N; J      3'b001 : led = 8'b00000010;* D+ s; O9 w; ]
      3'b010 : led = 8'b00000100;
% L; e% B% e1 i% l: ?, ~; v3 o      3'b011 : led = 8'b00001000;$ ~) m" f" v2 ~0 X- q9 |
      3'b100 : led = 8'b00010000;! P1 ^- h3 T% ~; m4 N
      3'b101 : led = 8'b00100000;3 N" o! `( t/ ^% i. H+ J
      3'b110 : led = 8'b01000000;
4 {- s3 ^: v% h9 d# b% A1 X& A      3'b111 : led = 8'b10000000;
& @/ j! q: {# M      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一2 A7 K$ ~7 A) ]" D
      endcase6 h. e0 j; J6 x, M
  end
2 u+ E; Q7 g& L5 c" x) _# ?" q  c* Q2 L2 x6 t1 `( z9 e' y  P: x% L
endmodule
  Q- ^% _) Z8 I( ~' ^' x2 V
8 h# K; h2 y: g3 O# _* }順便附上電路與模擬檔案
; P9 x8 |/ L* U電路檔(led_shift.v)與模擬檔(test_led_shift.v):! P5 j; {( n' l; G! }, I

+ k: v' q4 {( `% J# U模擬結果:8 Y$ ?& X  O: T  A! t' k9 F
(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)
( R: h7 ^. k+ ]3 Z- u

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt ) y6 Z# |5 A: P

6 I' h$ V, O* K# r  k大大真的非常謝謝你的解答,我已解決,
1 K# p( A! g3 P6 H; D8 c( g5 V, C; C6 P. [2 {- w
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign 5 _3 b; V% c7 A. u

3 @# A, w5 U! c. z2 @2 O6 ~Package pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?+ x1 q4 C9 K$ G+ p) w8 Y

" f( `9 j9 Q! \其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。
* `+ t" w) l) J2 y! [' X) i0 o0 q
! x6 x. I7 F2 ?* J% q: B$ `7 H- u8 z. w& p. Q& u: ^, s( ?) t* f5 O
不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt 0 m6 u7 J  {7 m6 C# I

. J% V0 ^" w( A- o! K大大,我還有第二個問題,9 M: q( T8 ]2 x( O' a! E0 r

( x; S* H  c; a- R  p* \我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
4 y% Q0 K) B( T9 q4 Q8 cWARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal
; Z+ L' p4 V- L% r5 V8 Y4 OWARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal
) h7 @& d. M' `! p 這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky / A( ?* \0 `& v
/ y" y& x4 P* m$ A* ?, ^3 P' b
抱歉我還沒用過這套軟體
3 T' e" ^5 v6 h) G, A) V沒辦法幫你什麼忙: j& P3 t6 g' _. o
你這種問題我還是第一次碰到
, e3 X/ E# W$ U% n9 U) k, B( L照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt ; j5 m9 z- K8 N  ~* Z# I" L( L

& g$ i% b( e: ]0 _: q3 P大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯 $ ?( v& X5 W" K1 e- [" j' c/ t
# q& Z, }% [# |0 b$ M8 q1 K8 o* d
回復 4# lucky : O$ V- V0 c. j5 q- K

+ T3 E7 v/ U# E6 F你的這個問題edaboard或Xilinx討論版有人提過
0 v# D  w9 O8 ^: [% D3 \) d: f; m% g似乎是有些port出現loading的問題
7 @( v: e3 `2 y* ^9 G  k0 i& X' ~! @/ D8 N: Y
8 a- X. n1 N" Y' K+ X4 L' F
可以參考:
0 M& z; t  a' F. P2 ghttp://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)3 D; ~/ Q' {* i- j5 t$ v7 l: q0 k
http://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)/ u! F6 A. z8 r3 a
http://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)( N8 _" I8 P% T  u

$ S3 a0 T4 ?+ i0 d) Thttp://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b7 R( O5 B: N. f

) C8 }( a; W3 B6 p/ j大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-28 11:23 AM , Processed in 0.120007 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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