Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

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

4 u; [4 k2 L4 ^* K  n0 s module led_shift(clk,led);  g. Q7 f) ?; d6 H4 Y9 [
. A4 r. M% [1 x! X4 D) R. ?5 a2 k
input clk;
* e& C. b( b+ l
" I/ Y8 k3 X8 r% t8 k) w4 E: q+ Einput reset;+ ~3 [5 s: g3 p  G7 O. X' `
6 B' @* `  W& H3 o2 N! i
output [7:0]led;
& ]- S% I2 d2 {: s. h
7 t1 l3 x4 V  q& i9 u# Greg [3:0]rdd;3 H3 V* E% w  ?; Z$ T
; k6 e* E+ R1 U/ i
reg [7:0]led;
+ m) c8 v2 I; I+ s4 c3 q
! l* A! {4 L2 E: B0 V1 K. H8 areg [2:0]cont
" y" v- B- ^2 G$ p9 R+ _+ s$ v
4 g8 U4 W1 U) l* \% j: Dalways@(posedge reset), h! |4 b1 L7 n4 \. g

2 y9 c  r+ ~1 }$ k/ Xbegin: \8 h) s+ ]- B, A' y! E( ]8 s7 T
   cont=0;
, ~1 N. U( V$ ~. hend
8 K! [) Q) ]9 }4 q! f; }0 c% e) q, ^$ r& ~6 K
always@(posedge clk)9 a; i0 W4 T5 M1 `+ ?

! v! c( z' n9 V2 x& r3 L5 k: b$ T$ Sbegin
3 R: Y& d/ K, `- `# Q& E" w. O
. W, [) `7 `/ r6 icase(cont)9 l+ }/ \5 r+ H' z7 i( Z5 e
/ e4 x4 E3 a, O. K+ q  T
2'b000:begin
  j; B2 V* w8 v  led=8'b00000001;5 @4 d. q, y6 k. d
  end
% V' [2 z" e9 g  K, m. D. T2'b001:begin: a4 m1 s% }; x) {
  led=8'b00000010;- d; @/ c* ?) ^- C  w& n% I
  end
# d9 `0 j: y. ~$ P: i2'b010:begin
- ?( v! F( q" L# r$ P9 y  led=8'b00000100;
# Z: P# I( t) N# D# ?8 y7 l  end# k0 W3 i+ ~8 g. T) t
2'b011:begin
2 r; A  E3 t& g  i  led=8'b00001000;
+ D& t9 ?5 k/ ^* b$ i  end
; w% M5 O3 p) ^5 q2'b100:begin
6 r# z- C1 d) q# j1 E  led=8'b00010000;) w: B+ d, D$ {% _7 }  U3 Y
  end
+ z2 L& o% i# L0 P6 y0 V6 G& {$ Y( @2'b101:begin
" r2 t  p" P; l0 C( u& @) [  led=8'b00100000;: l3 N) i- e7 j* V
  end
! q9 v( ?8 x; I  `9 P0 n" M2'b110:begin7 J. w/ g) d  e) W
  led=8'b01000000;
% v: t. g4 H& [2 C  end& F0 `* f/ f4 [8 N* O3 {  C# M
2'b111:begin: X; R0 q' l7 F. ~4 b# @
  led=8'b10000000;
: s4 K4 \1 l8 Z  end* r6 I* y3 s5 k* o- ^& t

" Z- L. F' A5 w/ i  endcase  . |8 o* v0 P3 V1 H7 |% }* a3 F
1 |- h% `0 ?5 r7 y0 r5 r) h
  if(cont!=7)( G. S5 K; h, o3 X
     begin 1 {% ]1 r& D: G+ A9 M6 g
      cont=cont+1;
& X/ r& z$ G3 J; F7 E     end
: j9 ]  f) J. F1 Y* `: L    else5 [/ n& R. r8 W; o; l
     begin
* W8 Q0 c& W" Y% Q  n  s6 O9 H/ z- n! @      cont=0;: U' n9 B' Y! x( h4 b# `' {5 N
     end0 j) i! `; c3 _
end% v2 B+ C1 G9 a, ]) Q$ b+ a/ X
endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯
% G  B2 ^0 Y* _- p
) i7 c5 s2 ]* Q9 Jlucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看: {( r; @- [6 N! [
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致$ C, @1 i- J4 ~  L5 t0 ?" A7 C, E
那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)3 w# C: Z+ C2 O5 r: p
; }( ^+ q: M2 {2 F
module led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理
/ }" w9 i" V" winput clk;
" m8 r: l8 N- Z! p8 @input reset;; D0 s" M& E0 d1 b/ c2 r
output [7:0] led;
$ D& B. g$ Q) I& g9 J* q3 @9 ]reg [3:0] rdd; //rdd如果沒用到就不用設
( x  i6 f  J! L; i8 h) P+ q0 ureg [7:0] led;
; F3 y" \& y3 |2 H( Y6 breg [2:0] cont; //記得要加分號
! M. M" A6 k* }) Z- A/ Balways@(posedge clk) //同步計數程序宣告
3 g( L; U  q5 v  begin" j, C6 i' G: J* E
      if (reset) cont = 0;$ F; U+ l. u# E# ]) w
      else cont = cont + 1;
+ n) s  g9 M# e2 k3 h$ w2 N  end+ s$ W( k8 J% c4 V( T9 ]
  ! Z9 C9 J8 v- a7 {+ G4 g! l9 g3 _
always@(posedge clk)
3 e/ b) p6 H2 p! {  begin
+ |1 S" B3 \3 j, z" v      case(cont)
% V* l) I5 T$ C* J3 j      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改7 m; {2 E- J+ @  a2 Z
      3'b001 : led = 8'b00000010;
# t" j2 U6 \3 q) |5 s& G      3'b010 : led = 8'b00000100;& ?. z  C2 ]7 V& j( Z) f9 |( e
      3'b011 : led = 8'b00001000;
- h2 y5 r& Y7 \9 Y# U      3'b100 : led = 8'b00010000;- Y0 r+ ^( j  y% k
      3'b101 : led = 8'b00100000;5 k& D+ k9 R" C& S$ \
      3'b110 : led = 8'b01000000;( R9 B3 a( V- z* R0 n
      3'b111 : led = 8'b10000000;
! W6 l0 A! S" E6 H6 S      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一! ^% |6 [+ c8 u% }8 l' A# c* C
      endcase
+ ]4 P, U" e$ w- v  end
) T" m' n* a5 {- r0 I" Q: P, W/ Z1 i) U% [
endmodule, m4 y6 x) C4 x  l
  r0 |$ @7 T2 V( w, @+ p7 @
順便附上電路與模擬檔案0 \" Q* S- d- ^, v( y) k8 }
電路檔(led_shift.v)與模擬檔(test_led_shift.v):  b3 z% e) y8 y( R9 `
* i) b5 T' l' n0 N3 @
模擬結果:& u2 f! m( C+ v2 g; e6 M
(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)7 Y! `; _: {  x; Y7 t: X2 T! V

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt
6 X/ {( O' O2 P
7 m' P: W- T* a; }大大真的非常謝謝你的解答,我已解決,
, C+ |+ I  I  C2 l. n% T2 n& c8 J9 V; v! R
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign , i% V6 l, z$ b/ I( z. u3 ~1 J
% v7 P5 P  u# o# [, @! }
Package pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?
0 W# C& y. j. N: P& k+ n' l" t! @1 s- h/ W( x( c
其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。) ~- m3 R0 ?5 s0 Z0 a1 K

% D& L% K3 g: M7 z4 \
$ q) ~, f+ r8 P不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt
3 t# D1 b( C; j* R* o$ e9 ?3 n6 N
6 H* h) [3 N9 _' Y4 S大大,我還有第二個問題,2 p1 z1 ]* c& j' k1 d8 b5 F7 U, n

+ a4 z/ A+ |3 s$ o8 a# U7 J8 h, r我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下7 y0 t8 l! l6 M/ U+ K- Y
WARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal* i3 r  w2 u& e# k2 c; X/ ?
WARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal- ?( s# ?! E! {, M" X8 A
這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky & @+ [% V3 ^" Y! s
7 |, y: C5 l7 V2 N4 M6 E5 J
抱歉我還沒用過這套軟體- I3 L- X" b! [: B
沒辦法幫你什麼忙
' n7 d- E$ w$ ^. C2 q2 w+ A/ e你這種問題我還是第一次碰到  W" x& S$ K2 C1 b9 \
照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt
3 ^% @- w: f1 N2 k
! Y8 [5 V4 i7 i8 S- D大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯
' x6 N6 e& {8 g$ e9 M: m0 _7 d
9 R  x" N9 C  T9 j& U3 L回復 4# lucky
: f- B. P6 d7 o4 ]* t0 J  g5 Z0 J& C0 `$ e, C
你的這個問題edaboard或Xilinx討論版有人提過- C: |2 _. c' p; t# ~  V
似乎是有些port出現loading的問題
3 o4 T% _6 T% X5 \9 q/ q+ c) |: v: F( m
9 Q# U) }% w& a4 G9 U
可以參考:5 F' A5 f. Q$ T  I
http://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)
, X" j' C6 r& V/ t4 d2 G8 Vhttp://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)
6 Q# \) M' l' l/ _6 Y) K" Shttp://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)
( u5 T3 a8 Q! g2 G: a& a& w  Q# E- B% T  B" |' t
http://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b
0 E4 ^/ b5 s4 A5 ]! k4 _
) }9 l, p2 B: o, J# `$ N8 v! `+ G+ \: S( j大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-23 12:52 AM , Processed in 0.178010 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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