Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2012-7-19 13:42:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!6 ^4 D& V% A7 r' V. R0 S
, }+ v2 q* O) K) Q
module led_shift(clk,led);
) `1 n: y% u& Q6 H! I7 @# \4 c; S
; u/ p2 ]* e& T- ginput clk;) L1 E& u4 s7 Z- I- R

4 z5 U1 z  C) N' l6 `6 qinput reset;2 J; X: u- v+ {6 z, R7 Y! s( [* h3 t. J

, u5 G% z5 D1 S9 c3 p* R$ Houtput [7:0]led;7 e0 A0 U+ T1 }* g" ]
0 [! L* K, ~  a8 H. y! |4 Q
reg [3:0]rdd;2 {" t; {# K5 V; S' _
2 p* h) _6 C0 F/ Q
reg [7:0]led;9 w3 v0 T  w% [% G/ E4 I
; ^7 Q. b- O" n! H
reg [2:0]cont% L0 p* c2 b6 q( \) {
$ g( _7 u, Q% U. @. X
always@(posedge reset)
! |0 ^% F$ n' G' k- Y$ u( L1 d" p+ B6 Z! i4 u" r# U1 x. ?
begin: X* V9 |% y) }  g+ m' a
   cont=0;
% v* ]! x+ m! u) Eend
/ b; o+ n0 S3 \6 E- A. c) A- b
always@(posedge clk)8 j+ t  F) ~+ W
$ W$ @3 z/ b( t% I0 u: R& O
begin
8 V6 K( P2 z, j4 m0 K' u6 F" K8 }6 e3 \# B# n
case(cont)% d( F( ^: s* H( x; |
4 @$ C% s0 k1 p$ w- n
2'b000:begin 6 Y) C7 F* y! J/ k
  led=8'b00000001;8 X( Z, w  }4 _. P" g+ P
  end1 {; r1 G/ s0 ~# N1 m8 g
2'b001:begin
! I" v7 v7 I" ~3 \  led=8'b00000010;( |: [3 m( f' g$ b
  end, c3 v9 J' m5 N4 Z& w* ]! t1 V& J
2'b010:begin
* u6 a( s2 I) k1 V: e' H2 `0 y* |  led=8'b00000100;
) v% o  O& b) X: M7 i3 L; L2 E+ k  end
7 ~# j- r4 D# {" `2 H" g# L, ~2'b011:begin( V- q1 T! ?0 s0 Q4 R$ \
  led=8'b00001000;
3 [0 R3 [9 s& U- l8 o/ }. ]# O% G  end, n5 d: g( p5 z! e$ x
2'b100:begin
: {, s5 f( A* v' M7 Y  c& f  led=8'b00010000;) p7 o2 Z$ U4 n% x; h! j- p
  end$ d1 G' }/ r0 h9 [* L
2'b101:begin
1 H3 R, b) P* d  O6 e5 X  led=8'b00100000;
, H% {- h9 J7 z5 P3 N. a9 a: m  end  i* C/ F8 L4 G. ?
2'b110:begin4 D- i6 y! U- X5 M
  led=8'b01000000;' P" Z  Y* j, d
  end
+ Z+ j* ^. B% K8 B2 z2'b111:begin
. \, Q* }3 G: C. t/ G  led=8'b10000000;1 J9 \& i2 ~+ U. x; ]+ O
  end" I7 a! M" V! s) h: I( H- m

: d! J% a6 U3 @  endcase  9 ~: m$ r& P! s  s
& w8 x$ z1 f9 b& w% `
  if(cont!=7)
. R- D+ A' Z9 U# p; o- ^     begin 9 m7 V! u6 Y5 G
      cont=cont+1;
& @1 R7 K5 H' m     end
4 Z1 Y3 a8 S: T) `4 @" Q    else8 i* N' K6 R) F3 D5 r9 b7 R
     begin
9 N# R) L3 m4 t/ g1 e      cont=0;3 _* @. @' I% f, m* `4 P& {
     end
1 r# S6 `4 p3 t- ]5 p$ {* k) ]7 i1 @end
* ^) m. H3 I- ^: p+ n( P( {endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯 ! e' @( O1 y, ^0 @& v) f( R) H
3 A3 [) @: A& C% c% @. [& f
lucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看& ?5 p! u. E8 e6 Y  T# {# s. V8 r
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致
8 S: e6 H; u) {7 r* r6 j那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)
6 r& H* ^, Q6 G; G3 v% ?" ]7 Q( N( J/ _  T& ?; Z; R
module led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理# _3 ?, R) b6 x$ q8 _
input clk;
) o) u. I8 ?1 S3 Iinput reset;8 n9 s: b2 P( Y  A# ]9 M
output [7:0] led;4 K% ^% w* F3 a" f9 {- G7 w
reg [3:0] rdd; //rdd如果沒用到就不用設
* R& m- k$ H' A0 Z9 d1 {reg [7:0] led;
1 l0 M& [" V- v# V6 Zreg [2:0] cont; //記得要加分號3 r" e$ i2 K( y9 g/ i0 g) U
always@(posedge clk) //同步計數程序宣告. O( c$ ^9 Q" r* G* k
  begin/ F# l% G5 G1 |! d+ E- {2 w: E* Y9 [
      if (reset) cont = 0;
8 T$ |1 ?/ M' P2 b3 J& G      else cont = cont + 1;
2 \" i( b* C" a: I; s8 o  end
% `! H6 ?: F/ ?1 k  
4 d4 m$ I2 ^6 J! J- |8 oalways@(posedge clk)
. l' z. k/ f* ]* W' u; t8 ?  begin
- }. h) ~  s' x, W* T3 A  G      case(cont)
( d! x% [! d0 x% @* ?, F' g, H      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改
5 r* W6 R2 g: C5 X& \9 q      3'b001 : led = 8'b00000010;
8 x/ F* x* |+ [' Q2 i) N      3'b010 : led = 8'b00000100;
2 ~, f: l+ `5 O      3'b011 : led = 8'b00001000;
  c9 {! r5 Q+ v/ D5 d: q/ _2 o      3'b100 : led = 8'b00010000;" S: m! Q# I+ \2 P2 a
      3'b101 : led = 8'b00100000;5 g3 W. d9 ]) A( c3 N' f" o" I3 h
      3'b110 : led = 8'b01000000;( T. g- k- W& w0 a' t
      3'b111 : led = 8'b10000000;
4 i. g) P4 ]& c* W! Q* v      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一
3 }$ e8 G9 t  l( V1 W      endcase0 e" `2 h# M$ P# k
  end
) M% p$ _' y  W9 X" C9 k1 Y
8 S' ~+ v: k( w8 [endmodule0 ^" L9 T0 a+ q. m, A, Q8 k1 X' }" W
# y; x% |  ~8 j- G/ m" t9 O
順便附上電路與模擬檔案/ q2 F6 ]" L! q) t/ j+ x( h; X
電路檔(led_shift.v)與模擬檔(test_led_shift.v):
  \1 W5 G: t2 I- T9 x% v' P/ N& W1 {- q8 L$ E3 Z* c/ b
模擬結果:
" g% |2 T. U7 E" |0 j(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)
  ]1 S- K) U! E3 \! G4 \' c4 T

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt " [9 L/ @  F3 U& C4 @
8 Y# b0 N( R' O% b/ u1 ?( P
大大真的非常謝謝你的解答,我已解決,/ ?* `6 y) z0 \3 R' y- i! G

1 H) p% J" c5 ~4 U+ ~不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign
! ]. \# W0 u; M7 L) Y" ?/ E. _) S# L2 x/ W6 [3 d8 b
Package pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?
- j# ~- V" l" v0 s* {. q/ x0 ~4 G( R; }. _* U/ h( t) k4 f. v
其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。
% L# q% f  Z% }9 B& \/ `6 s
8 G/ A5 U" p% D" ~9 W0 ~8 y/ D6 M, q
不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt $ _+ c3 }2 }: m! ~+ C. E5 ]
% H: I7 q$ a3 P- Z& X. w
大大,我還有第二個問題,
* o* K* j- g: n7 q! S# m, D
( @9 V# t( @3 g7 ?2 S% R; k1 v' Z我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
) a7 K- @' M# b" kWARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal3 g% g4 p% \7 I- Q
WARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal
  N# s+ A# n1 t' S0 s4 Z 這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky
' H) I" o, m6 z/ H+ b$ @# e( f) `2 N; g8 B* M
抱歉我還沒用過這套軟體1 _* ?2 Q: l% S- Z
沒辦法幫你什麼忙3 L+ ?3 b1 F2 ]+ t/ }; D- M
你這種問題我還是第一次碰到  ~# l2 z, r3 `  c- Z
照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt
5 E" q0 U/ {# `
6 I" c) T4 P" q大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯 ; h1 g' {* A3 U. O9 M) z
& H5 @5 E+ j. A
回復 4# lucky
4 F# t% F! [: P, T* c
; \/ X! s  x, ?! W' s/ E, C+ x9 Y. k你的這個問題edaboard或Xilinx討論版有人提過
1 o6 g: Q7 I7 o* Q  I$ t1 t" A似乎是有些port出現loading的問題+ |' L/ E1 H8 v8 s& a0 A, J
) F4 b9 j% J* F
) u  ]5 h$ w8 A* O+ _
可以參考:
( b2 H! ~  I7 e2 D  S/ t" U5 ghttp://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除), S# r6 ^) s& N7 j& s$ m
http://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長); H3 u9 I. e, m- V5 }$ f
http://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)" r- ?# m+ L; s: P) `1 m
% Y# H- X4 Z3 G4 c
http://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b- ~; {7 M+ K/ k. V% Y/ `

: @( q" z2 K* z" H- I! n8 S大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-27 11:55 PM , Processed in 0.119007 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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