Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2012-7-19 13:42:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!
9 i' q. t5 b  P
0 W# m. B4 p! r  t3 C module led_shift(clk,led);' K+ W5 J& s' t5 U: K
- i* i& j6 d& Z: r3 O2 g
input clk;* i5 k8 x4 M" q8 K: U: R* X
$ Q- J5 {- k; \0 X6 r; d6 R$ j4 s
input reset;
& h$ l8 ~: L3 t4 a0 h9 `* Y# _0 V5 b8 M- Z1 J
output [7:0]led;; r* r( i% f7 Y9 a& H6 V

* @. @1 B; |  E( R' W+ |. [reg [3:0]rdd;9 ~5 p1 X' `. [! E; A: c0 B
; A3 h4 w1 i) `3 T! T; n/ S+ h
reg [7:0]led;, }- c* g  t3 _0 \

% g: F" m2 n* R; [& \2 }5 t( s' zreg [2:0]cont9 x4 x; u' Q6 L% V* N: z

8 t1 ]8 v3 ^1 X6 {& Balways@(posedge reset)
$ K$ @! D5 E2 }! s+ s! |
, E% K, G* C2 Y% j0 f6 k; A* Y7 obegin* z6 P% t" y8 D
   cont=0;
+ L' e/ P' p( c# D8 p1 Fend9 I3 D( {2 W) Q- F/ X
4 B3 v" q3 {( y# A2 n
always@(posedge clk)
7 j2 `0 i" r+ F$ s: g0 f+ Y/ _5 R+ z9 @2 Y/ j) S1 E( g
begin+ s7 Y2 F# |1 I$ z/ @

* u4 B% j$ r) f1 a0 d, Vcase(cont)
! C# c! C! ?! @5 k2 `! x7 P( [! M3 g& h' S6 t. t
2'b000:begin
1 d3 ^+ A" G( ~  [  led=8'b00000001;
# z* z- }4 `6 V" I: e2 k1 a* Z  end
" a5 i- D8 E' u5 J3 F% B2'b001:begin
) o" R3 g; A  j: `5 v% @  led=8'b00000010;
: v8 b: [2 U% d- d5 d- m! o  end
1 S5 G  J2 F& G0 u* u0 L2'b010:begin
$ R8 G7 ~* b6 O- \  led=8'b00000100;
1 n: {& d, v. J8 p, d$ }  end
, R+ ?/ V. v8 y7 h3 L$ X" d- S2'b011:begin
/ f( v# ?. X$ x; d0 `; W; Q3 U  led=8'b00001000;
: i9 g4 w, h% T; w8 K  end# ~( u9 Y. C" l, \0 W0 H; r. \
2'b100:begin ( c4 H5 w! d. u1 L  T
  led=8'b00010000;2 }6 e4 O+ _& N' M
  end
' o8 a9 H6 \: ~- N! W2'b101:begin . a7 u& M* ~! k- G
  led=8'b00100000;6 W- p9 j' Y' }" a5 j4 E
  end; v4 A" b7 `1 W2 S
2'b110:begin
4 }! v8 ?5 A( @1 z+ s$ R! w  led=8'b01000000;
0 N# P2 K1 y3 i  end
! I  z) c: g8 F7 m2'b111:begin
) ~" U5 F! N6 h* ^+ w  led=8'b10000000;1 f4 Y" [+ i* F2 t3 Y
  end
( s: ^$ C, r! V/ y5 j- n$ |4 s. r7 w' M
  endcase  
8 u4 W  N' V! m/ O
1 F7 P  C) W9 h) c9 H7 u! L  if(cont!=7)' m' L8 R, M/ n7 p% h1 T, A. O' }3 q
     begin
+ K+ T! ?/ u! k5 Q9 @- q      cont=cont+1;* _# w6 p  v# L8 ], S
     end
/ L) \; g5 L  z    else
7 [. }' C8 C) U0 H. m4 B3 u     begin" z$ i! i3 n1 S7 }
      cont=0;
6 ^' N+ c2 P: b     end
' a; X6 Q' y+ W4 }) C; H/ Z" lend
/ ~9 m, ^9 \2 Y9 D- U3 Z, p2 O1 [endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯 + r/ X; Q! c0 V8 V* i

) l# r1 N$ C' R9 }lucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看
1 {% L$ ?) c: k- A. h# K# W, x首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致) X& }+ d; n  n! P& F
那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)
8 x! a$ K- t2 e3 g  G6 Q! Y7 v' \7 c3 B$ B1 J
module led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理$ w1 |; ~$ M: J- S9 S
input clk;
7 }* b6 e. d0 |6 f2 p. }input reset;+ `( c/ @' A' p) \$ l- d8 r! C
output [7:0] led;
& V) u9 M; a9 k" Y; u2 ^0 z6 Areg [3:0] rdd; //rdd如果沒用到就不用設# o4 }8 L; W5 H* v: ]! }
reg [7:0] led;) ]" F5 |) B0 w+ }/ k( t; M1 r8 `/ C- Z
reg [2:0] cont; //記得要加分號- g- B) T  A# q: M2 O: O
always@(posedge clk) //同步計數程序宣告
/ y# `* n3 X: |" Q& `' \  begin
4 |) l4 U! E, d      if (reset) cont = 0;
+ K: |' ^: `: k+ Q      else cont = cont + 1;9 R  H+ F  ~: _- o7 F5 l3 M
  end* r8 F7 D( n6 \+ q
  ' f2 L  J8 n6 F+ L8 F( z
always@(posedge clk)
, D2 n; r8 b# w  begin+ H' p7 c# Y2 J. p0 X% V9 Z
      case(cont)
0 T0 K7 M* ], h; Y! M/ c1 c" J      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改0 X9 m3 [( u) s9 F
      3'b001 : led = 8'b00000010;& J5 T; E, t: S3 _8 q7 e' I4 F
      3'b010 : led = 8'b00000100;/ q' I- t; o( B1 x- @# Q" d
      3'b011 : led = 8'b00001000;2 E# H- ]7 Q" A/ y* h
      3'b100 : led = 8'b00010000;
! _2 j5 ]. R4 W" O3 Q; K( z3 t      3'b101 : led = 8'b00100000;. B4 V% o/ N1 `7 B( [
      3'b110 : led = 8'b01000000;$ @* r# ?- S8 ]( m
      3'b111 : led = 8'b10000000;, D+ I+ S' m: S+ v( e
      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一
1 H2 H# W  ^4 v5 T, N0 o! h      endcase" ]9 h' e& l2 o" r( y
  end1 @+ a. e) Q) d" m6 r; a

; Z4 `: n3 _, {' dendmodule/ e! l& O! C; r+ `1 R/ c3 f, y
! l6 Z3 b- r% t; \( v" k& b8 X9 `3 ?
順便附上電路與模擬檔案& Y+ E; J, `7 h  ?: @1 W; I
電路檔(led_shift.v)與模擬檔(test_led_shift.v):4 H$ p& C3 N  M$ [5 d1 W
4 x- T# l2 D: B8 t& e% A- A: o
模擬結果:' M0 K% }) g0 J5 W8 S
(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)
9 c# p" H3 g! m7 y: C( C

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt
# R: n+ ^+ p9 y
1 k3 A% c, y" I+ T6 k3 ?大大真的非常謝謝你的解答,我已解決,% E( S: L$ [, z7 U, f, K

. p+ T( p& U% `. J不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign
. {4 Q7 a# O+ I' r9 d" s1 B
5 F: M9 J1 K% Z+ r# S1 _Package pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?
% _+ ~  t; I: a+ i1 t
( ?- g+ _" o4 M8 I* c2 i$ z其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。
; @8 A) y( x! {- M: O
( p$ X6 R2 b( R% j" F6 [0 \5 C! p* j* p- F) L, y0 X
不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt
+ _3 E$ ^8 D; [0 h! ]2 \& W5 g- K
大大,我還有第二個問題,3 B8 g8 C' O- z/ g* q1 \/ z
2 a$ M# B8 e1 ^, P4 a1 W9 y
我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
5 ]) p+ i2 m/ x3 TWARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal
. v2 q1 ~( `9 A- P2 e) Q  [WARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal
  c/ V9 O) B3 R7 E$ k3 x1 I0 i6 l 這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky ' c- B& h" z/ w, \" d3 W
9 G$ T$ d' u. j; d
抱歉我還沒用過這套軟體
. a3 }! F5 j' z( e  x沒辦法幫你什麼忙+ i; ?- B$ Y' `5 q+ G* g  r
你這種問題我還是第一次碰到
! A; L5 v/ l8 Y' u- S# P; N照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt
, }+ w3 w; X3 P: a' s$ J3 C( R$ R. i; _+ l
大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯
: ^4 k0 U1 s) J, D: [# R4 h
9 ]/ K; p% v( @% T' t6 A3 o回復 4# lucky
7 Q; F) c( h' U* a4 q& z7 H8 D  W0 M) A
你的這個問題edaboard或Xilinx討論版有人提過
7 f- h1 V& ~4 G, i1 J; {: B似乎是有些port出現loading的問題
- s5 P. q  r5 M. e8 ~
" u! ^8 H& l5 h5 ]$ T$ O
/ ?& Q0 r5 x; M! x; p  ]( }可以參考:) p# a& H; F8 Q7 d8 }
http://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)
8 W$ O  q; Z# u. ^http://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)+ ~9 T- w" R  s8 T
http://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)1 h* ^  y/ |/ R& p
* e+ u" {3 |/ i% I
http://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b
4 L0 ?; y5 C( E9 P3 w! y. d; \" [# ]; @
大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-28 05:53 AM , Processed in 0.125007 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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