Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2012-7-19 13:42:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!
! ?0 Z" Q/ R# H- z/ g9 P8 L; q; V
) R5 i, K4 e; K' e9 p module led_shift(clk,led);7 H, `$ p1 z+ L  ^% ~- }$ N( U

" E; g3 a$ d& N$ \4 p+ V! W% uinput clk;9 f/ k9 ~9 ?2 o' X5 y9 b* h6 C
: v$ _! j$ m6 _0 |
input reset;* S1 R2 `% k# ^1 W# O

1 s! t# U, P, toutput [7:0]led;
, c1 c) G0 a# K8 E7 U1 M
! b% G6 \: C, W$ ^1 Areg [3:0]rdd;3 n0 [6 f* y& e8 ^) y4 `; b
3 w% O! H9 ^$ X) o. ?; O
reg [7:0]led;# u9 S1 {, o. G( E( e; O
( S: s( z; Z! e$ `* Q( S
reg [2:0]cont
6 R6 L. v, [5 ]5 x- h. ~* }( N% e$ n+ \6 i! A! N% \; c( H! \
always@(posedge reset). P4 R0 w& u, l% ]$ f- W( k

# }- T/ L: l6 `7 q$ Abegin
7 [. N! O$ K8 j   cont=0; ) E5 |4 F4 L" ~/ t; Q& u$ f
end; u% w# l5 q) u5 D
' i: g5 r! P& _  V4 U9 D
always@(posedge clk)+ w1 K) s0 ^) G8 `

! W/ Q- L; o6 cbegin* H2 [7 u# w' K3 @$ K6 g
$ R& L/ g& t: F7 y" w5 _. T% S
case(cont)
4 M0 F- P# u# o8 U1 K+ ]' |5 z" f5 X5 E+ }+ [2 A9 E
2'b000:begin
* N: E1 A8 b3 f0 z9 p8 {& M5 X; w  led=8'b00000001;! \& n/ O! X5 Z+ N  j9 ]
  end  c# O! I2 {# ~
2'b001:begin+ _* X0 ^- b3 m
  led=8'b00000010;
- V( l9 D0 J+ V# g  end$ q3 y/ E$ e; `1 [
2'b010:begin , D" ?  \! c9 B) [
  led=8'b00000100;
0 `* J% r( x0 J7 @  end3 I0 A: F& p7 V4 w- W0 A
2'b011:begin
9 S  d! d4 y1 F( I/ m, e+ O  led=8'b00001000;
7 n3 a/ p5 L" l. `" X* A5 U1 W  end0 D% V# R  Y; ?" t5 I. a  t
2'b100:begin   O7 H: X6 A8 O4 l9 o
  led=8'b00010000;5 s# Y2 p: V  y6 X& S
  end2 [. Y! f9 Z: d3 l( n- e- g$ S
2'b101:begin
' h% Z7 B3 S+ N1 A7 [  led=8'b00100000;
( f; U% |$ L! [& E2 c& g6 b8 z  u  end) z% ^8 |2 Z' a$ q4 S- P5 j
2'b110:begin
1 Y. J8 @; s, g( [1 d; H  led=8'b01000000;
  {8 c, G" {4 u  end2 e5 D; ?! n) v1 n
2'b111:begin! `( S$ A1 f1 K: L9 [
  led=8'b10000000;
7 {' r7 {! W/ g: Q* p: T6 K6 W  end
9 W% P( I* O& C, ^  S& e8 s* v2 |; b7 e! b0 N5 v
  endcase  ; {+ V( ~, v: ~' q# A6 Q

( h) X( ]+ x6 p! R  if(cont!=7)
* g, x- R0 I* k1 W     begin
3 s4 T+ T' W! y7 ?/ e) F( G      cont=cont+1;
. d* D  k& b, O     end
* k* }% y' `) V; l    else
* T* F1 C( y, x8 e3 U. E     begin
# s0 e- D# `8 ]# U3 ~      cont=0;& `8 g+ C4 S0 q5 W1 F1 n1 F
     end
! W  i6 ~; s# h1 Jend
- B! \, W" t  M8 o2 y/ L9 g2 G) Qendmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯
* b2 x. v& z( M1 E2 S+ L1 _7 L! Q6 \/ T, |; t/ j, G+ H1 F
lucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看
3 Z3 H( ^$ R2 o( V' N% I+ E. H首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致
5 i, e( v6 P( d& a1 B6 Y7 A. C1 l那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)$ I& ?; k  d6 P$ r: M1 i( p# E

# A; u. S$ o: A( G. Omodule led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理
0 w  V: u5 C. ?' t, d# t* n" ~input clk;
9 L8 ~% h& v8 v/ Ninput reset;: s, v- r- V8 Z1 i4 a
output [7:0] led;
7 e: Z# i$ q* {9 [+ Sreg [3:0] rdd; //rdd如果沒用到就不用設7 m2 z( q5 O( ]: b
reg [7:0] led;
8 Z0 R6 k! ]$ s: J" U' H7 breg [2:0] cont; //記得要加分號0 e; d8 `0 ^, t' U* o6 x
always@(posedge clk) //同步計數程序宣告
; L8 V4 t/ |' v! w  begin7 j: a. z9 [) _& h9 O2 l, c, X
      if (reset) cont = 0;6 |4 Y4 `2 f: L$ T" x0 j; }
      else cont = cont + 1;, B( ^% l% A  w
  end+ u+ j  e- N' v
  1 B, e! ~  E4 Q& ]
always@(posedge clk)% h3 L1 v9 N" g3 o
  begin
; [2 b0 W0 M" K9 E- q' l      case(cont)
. m6 s) n5 @0 ]4 ~- i      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改
1 M+ b6 l. n1 |! }: D: ?) ?6 @      3'b001 : led = 8'b00000010;
9 F' L4 m& G; S; U% b      3'b010 : led = 8'b00000100;0 X5 d' k: B( E" f& w9 N. D0 ^
      3'b011 : led = 8'b00001000;( L' J; h& O' A- o
      3'b100 : led = 8'b00010000;( O0 Z' b) m' X& T% P
      3'b101 : led = 8'b00100000;: u5 H. n- J6 [0 D  @/ c
      3'b110 : led = 8'b01000000;7 i, c: R# \1 J7 T' W' Z% v
      3'b111 : led = 8'b10000000;
: s" G& Y/ u3 G, \      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一
3 I, _& B% ?6 ]      endcase: ~) O( V( d1 T! m; n9 T, c& Y
  end  F. D6 y+ b& J$ ]; ~) Y7 p3 E6 J

) n9 f% V5 f$ }- Eendmodule
* x, T0 Q7 ?! J- u' U# P) O% X2 `
8 H# u+ P; }' |$ I% l# }順便附上電路與模擬檔案: x3 W) c+ S& R) J0 n
電路檔(led_shift.v)與模擬檔(test_led_shift.v):6 Y) C8 T) W+ O) W
, f' Y5 P9 ~* g# d# d
模擬結果:
* f  S5 E- K% P8 H# W/ k(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)
& G8 k) V3 z6 I& y; k

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt ( v' n+ x& a% ^

" z0 _3 o. @) V大大真的非常謝謝你的解答,我已解決,
2 V8 n5 n7 {/ q. L& D- x8 u' x9 q. B+ P3 S
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign ! a5 |$ y9 B3 [2 o9 }# [! o

1 ]- P5 U) m' Q7 VPackage pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?- o2 ]6 w9 U- g5 ]2 `

0 b6 o3 y) E# A- {/ G0 I2 V其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。
& v6 j( R7 o6 r% h* \& U3 T/ h+ y. F9 g

" ~( [2 k4 [7 l5 z! w) u- f( w不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt
8 _& V, e* z4 p
8 ~1 e( |3 d8 i- @' Q1 P) V大大,我還有第二個問題,1 g% }# i7 s2 K6 I9 ?5 c

" a9 q" J* t9 T3 S9 G+ A# w# V- {' \1 I我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
& b' e! A# q! m. D2 |WARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal
6 m, z2 O* }# F+ w  v( G8 S) E4 Y6 DWARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal5 x2 F0 L& x' q! p5 ~" l2 p
這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky 0 k$ }% z3 u1 R+ U, L  @( t

8 b8 L6 K4 {, S! d! ?' W8 r抱歉我還沒用過這套軟體
* H9 o6 H$ Z5 r% U, ], ]沒辦法幫你什麼忙6 V! X! U. P  X+ i% \
你這種問題我還是第一次碰到1 z* Z, s; `- y
照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt
( q) P( s4 B8 W  A2 m1 \- m  j7 M; I
; z; \: r/ r+ |- O! u5 ~3 N大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯 # t# y  H0 @, l5 B# T3 ~
1 F) P; k, H5 E
回復 4# lucky ' {6 ]. x: v- U: X: W1 |
* M& ^: q  |6 M& m" ^
你的這個問題edaboard或Xilinx討論版有人提過5 L7 Q* L! e/ a& E0 Y# {7 \
似乎是有些port出現loading的問題: M* p0 O+ B! j; w: ?7 \! ]
: ^0 ^0 E; @- Z. B

% ?4 {3 S3 a4 ]: s6 k可以參考:
; {; {4 w% x- P4 R# ahttp://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)
( s! s5 Q' U7 t! R2 ?+ H& y' whttp://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)
3 D8 C# ^0 o5 z: p, c( Phttp://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)+ [$ f; i. R* Q  M. z

* c2 x" Z. P( A/ G- x8 J# Uhttp://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b
" X$ n7 t+ `( x  R" j) x6 A- U  [& V) G) ?4 v
大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-16 01:49 AM , Processed in 0.134517 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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