Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2012-7-19 13:42:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!% S! I' J5 J2 v1 I! A# R. ^8 x' i# Q

& {& z5 V8 e+ {3 i, L' v4 @- ] module led_shift(clk,led);
# W8 [0 X( y1 O* w6 ]% |2 F; N$ Q; ^4 A$ ?2 _( ~+ J; J9 \
input clk;: o8 ]4 ]& O, G  G% ]; w' R$ F/ T4 a
1 a! Y, z, ?8 d  {6 e; W  j
input reset;% x! Z( n  H) v3 |
1 P$ x/ T7 ?( o: h0 f
output [7:0]led;
( Z# d$ B% t4 `" l2 c
9 A2 I" ?4 x+ t' Vreg [3:0]rdd;8 y/ m' C5 q2 ^% j0 ]/ y

; f0 K1 m& u' lreg [7:0]led;/ y9 ^( }9 y* s& Z" Z

) S3 a( M) f8 W% S2 n4 g2 a& jreg [2:0]cont
4 |+ N% a8 ~  u& \4 T6 p4 F' ]5 ~  X! }
always@(posedge reset)
5 Y& S1 v$ Z0 ?1 f# a) J4 N# S1 X# n0 Z: `" h2 R
begin
$ k2 G! T. }7 E3 d$ @7 z   cont=0; * @! N  t& q$ q6 t( a
end$ }' ?' \3 A/ A3 R6 K

1 ?1 t2 T1 \" Y  Dalways@(posedge clk)
6 Z. c9 f  f1 G, a; _0 M+ e
4 c$ `. s2 n+ Z* T+ @! \begin
2 D- W7 R. }" c, }( V! Y+ C
, l9 l$ v# S* j* Pcase(cont)
& A( C" A& e1 K# c& _+ _1 E7 ?; E! z+ Q8 i; Z
2'b000:begin * l0 I* X: l5 o
  led=8'b00000001;
% d1 ~% p0 {8 l" }  end
) O. f+ R3 N4 _2'b001:begin' A& ?3 S6 j! Q
  led=8'b00000010;
1 J4 o* l; G" T: ?' S: J: u3 ^  end* S, B) T$ F' ]/ `$ [% a7 `
2'b010:begin
6 I! q& |3 s( z9 G  led=8'b00000100;
& b  B7 K- n6 _) U  end
" ~; _- y# V% [2'b011:begin  d4 }, E, u& D) f& p
  led=8'b00001000;
) X5 `  H/ K/ N  end
- T# Y4 D6 Z, x+ ~* ^. X* Q8 _3 X9 e2'b100:begin
. ^9 D& ]9 u5 v  e  v  led=8'b00010000;
9 i4 S' S% v- X7 K; Z7 e* m  end
- m) h* {; x' C9 e0 v2'b101:begin : ~8 w$ p1 u8 N
  led=8'b00100000;
4 }/ q% @7 J3 a8 a# x  end0 L* u' ~$ N  \, a; W% K
2'b110:begin
: W% h) G0 q' V$ `  led=8'b01000000;9 ?  E2 W+ H' O
  end
3 q* h9 u" X& M$ K$ `9 o2'b111:begin" x# p5 F0 ]8 d! N
  led=8'b10000000;
- e9 E1 f, N) p8 J  end) _0 [1 h  s- D9 C! T
3 _& L8 T' m* _9 ?+ f0 @$ t
  endcase  # R9 b0 Z5 M: l  S  N/ K
0 e7 {* ^/ A9 U) [" r" j0 r* M% Q3 l6 K
  if(cont!=7); F2 c0 M9 f& q* ?' R6 `- U7 h
     begin
2 X$ S4 @# m3 j1 z      cont=cont+1;1 r) Z% F0 Z3 a5 i
     end( x( b0 J- d3 y* @- t9 T9 |
    else
  i3 R6 h5 T) M( n9 w) U     begin
* L% t' G, L2 R- Y      cont=0;
' r2 |1 G% S! z" q% ^1 }     end
4 h4 l/ S3 p: O0 [: T. Fend
! X( i, Q* j, u- e5 xendmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯 2 y" t+ [8 K% U# z3 l# j
6 I/ N2 D; Z) k
lucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看) }  l4 [! T8 [6 H7 y' I. @9 j1 ^
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致
4 ~; T( _+ G6 Z7 R那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)
& W- A6 [4 v7 ~$ {4 t% ~5 ]7 S. r! S
4 g* q7 l  F) q. Wmodule led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理
; H' ~8 B' t% [( d! J/ E: g$ X3 {input clk;7 y' [3 }: a$ g$ @, z/ |
input reset;7 P; T* A' }  i4 v' I
output [7:0] led;9 K( E1 t. A$ A& s8 S
reg [3:0] rdd; //rdd如果沒用到就不用設
$ m  B2 ]$ u" P- H$ e0 Ereg [7:0] led;/ @! |% m6 T1 [7 l3 B/ @3 U% A8 A
reg [2:0] cont; //記得要加分號
/ D0 C7 }' d- m9 U% ]" e- [always@(posedge clk) //同步計數程序宣告* i4 y$ w5 C# T3 b$ v9 O0 [
  begin
3 ]* |0 e0 f+ t$ W( f$ j      if (reset) cont = 0;! o& T0 m) K( o8 n. V- v
      else cont = cont + 1;
' \3 @9 f6 I& i" \  end
/ ~) x5 S2 B1 F0 X! _  7 N( e( l) D1 O4 g& ]- _
always@(posedge clk)
0 Q) z1 r# Q8 }6 q- D/ u$ `/ k  begin
4 j. E, f. |& v9 p. F5 k      case(cont): H; J. _+ L. S9 k& H4 n
      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改
# a1 s7 \/ d4 s. X5 d) ^6 B      3'b001 : led = 8'b00000010;( g& b- g$ R  ^4 i3 d$ R
      3'b010 : led = 8'b00000100;7 S# B/ _# j4 V$ P% b" R! M
      3'b011 : led = 8'b00001000;" X; m; b1 d1 |( |' V# k# [
      3'b100 : led = 8'b00010000;) d6 j) v6 _# `2 |
      3'b101 : led = 8'b00100000;
) M4 l8 O1 i2 e  U      3'b110 : led = 8'b01000000;
; A# p! p+ ^: m2 V; t( H! J! f      3'b111 : led = 8'b10000000;
# y* U3 |: C5 ^1 T! |      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一
6 t. h! `- _: X1 W, n      endcase) A( |. [/ W  ^; y$ Z
  end# n1 A  F* }# ?( n! ~
* t. Z$ r, [  Z7 {' @+ q5 Z; |
endmodule" z' n! ^0 L6 w4 ]

. C# X% _9 D% r2 K順便附上電路與模擬檔案
9 I4 j9 q; l2 m電路檔(led_shift.v)與模擬檔(test_led_shift.v):
2 [& `7 M  T8 @9 B& V* e6 A/ ^. l% u4 S1 e
模擬結果:
  D0 J4 i7 l, M2 K1 C  T(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)6 b+ C& C% s( F  V

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt
# ^9 k1 {/ \) O/ G% I: u
7 u4 W2 x4 V& E, i* ~大大真的非常謝謝你的解答,我已解決,- ?' @* J1 e! p' ]% Z6 \' ~* L( G* c
8 Y* T' Z% p8 u0 ~# a
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign 9 }9 L$ B* F1 b' X: q
- |' l' B# G4 u" s% U
Package pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?9 a" g+ w' R" U0 U* h, \1 D2 e8 J0 N

) s2 f' E* ]$ T# i& x5 _其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。* N1 I+ q6 T3 o" ^& X$ r

, {! Q# I* u/ k- X8 Z- x
. G3 G( [5 s0 M5 O不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt
  y, E- Q; t2 J- j- ?2 X1 B3 p" E  d
大大,我還有第二個問題,$ R* y% j3 B; D$ R+ h4 P4 ^

4 N( {/ L! Q; j0 j, `我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
7 a) v, c! o  B2 X1 Z/ h, ]WARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal" r! `* S$ J) X8 v- d  T+ c
WARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal! |3 E# m. J3 {
這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky
4 R/ A* b  b: q$ H2 O
3 o$ A; y5 h# |- K抱歉我還沒用過這套軟體0 l8 Q3 k5 ?6 Y# r' O6 T' Y
沒辦法幫你什麼忙4 z! S# ]( A. ]5 X- @" B7 c2 B
你這種問題我還是第一次碰到4 X- @, m, ~" {! v' o
照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt
* j4 o/ `4 S7 D0 T7 D/ |- x3 d( Y- F- J! o$ e% s" ]
大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯 " F; d* h, s2 @5 C2 u6 G4 _' S
" V9 R" l2 o1 {3 q( U( e: b1 H4 @
回復 4# lucky + m! z+ u! V; Z4 U
5 \/ T4 |( o$ C. x4 G8 x6 [
你的這個問題edaboard或Xilinx討論版有人提過1 }5 M7 c3 o. F! _
似乎是有些port出現loading的問題; L; g9 r# H4 z! G

, x+ {0 {& S; ~' q
1 n: v. j8 o, L可以參考:
. l+ v' l- _% r- T/ f; t7 Yhttp://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)
/ Q% K  ]3 p5 L& Chttp://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)1 t: o/ Q; I" s) A1 V
http://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)
& e3 P- O  n+ j* i3 S
" C! I- F7 k  J3 ?+ b; @8 v8 J/ Bhttp://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b
: [  x+ \+ Y0 z1 S7 J$ P1 D' @7 E, ~% f0 G, N' o
大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-4 03:32 AM , Processed in 0.114007 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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