Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

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

1 ^# {  \2 `! W3 K/ p module led_shift(clk,led);
1 m& R* d6 U  U) Z$ y% Y+ d* B1 N( K7 n2 }
input clk;: K; l6 M% J; K1 l- Q, v) ^& q6 `
# z3 \2 L' q/ g5 Y1 o* J2 D
input reset;2 @$ c* q, x& J1 ?& a  Q+ K  @, w

  L. `' R8 {: _7 H- d& uoutput [7:0]led;! w0 m9 z% f7 P% i  W

1 G- W4 i; c, I9 Z7 y' @4 l6 Oreg [3:0]rdd;
2 }6 S% J/ }! @6 h  z/ ~/ ~# d2 Z1 v# Q! O' l
reg [7:0]led;5 L4 z; o# w8 ]' l" l5 ?0 u  u" [
: f: m$ f$ @+ j' U) H2 V; ?' G
reg [2:0]cont' w* K& T( w4 I

  G3 }2 F4 f. g% \3 p' `0 J" Dalways@(posedge reset)
9 P# `2 x% w; S1 f3 U' o: o8 T! J; C. [8 @, l$ F" G* o
begin4 J+ r8 V$ \- [- a- N5 F; |5 u
   cont=0;
/ K) g. Y. g: h/ i" j& M$ zend
3 D) k/ n+ s) v/ b- e" x2 e4 p! x5 _8 l  D( y- b, L
always@(posedge clk)' S( ~, }* J& c% e* G

) O/ I, @- K$ D5 P. l  N) D0 lbegin( f. n3 R) G. `: Y) F# F) W' I

. d8 P2 X6 `+ K7 M1 x/ [, Acase(cont)# P# T/ _2 D5 [! S7 c& k

- g# r; f$ F) @2 P2'b000:begin - {- z% z" _/ g2 h
  led=8'b00000001;1 x9 ^  g& h7 E* K$ R- R
  end
% k: B4 E! y% X7 c; p- m3 v7 |- G2'b001:begin1 T6 Q8 Q9 d* b2 h+ T: Q3 ^
  led=8'b00000010;
6 `- i; U; I+ Q5 J( W$ s  end* Y, ?! W9 A& l5 U
2'b010:begin
' t2 z: J% G# S% X* h. m; f: ]  led=8'b00000100;0 E- }0 J/ F. d
  end& K& z5 q& V" q- m" H; e
2'b011:begin1 I9 V  H  q% f: K2 {& h
  led=8'b00001000;
6 v% r8 g  n8 |' m7 _  end
$ Y4 S+ Q- ^/ z5 S. ^2'b100:begin   d, P8 m* o* y2 F4 P. {# B) v# K
  led=8'b00010000;' E+ ~% c7 U- c4 T! @
  end; L) @: N. j' Q* I0 K
2'b101:begin / h4 o. c/ L! F' O
  led=8'b00100000;
- g( Y9 h5 R" a, n* z  end/ ^* x  ^/ p& o# ?# m& u5 C! l& u
2'b110:begin) U# u- [$ ?& \8 y
  led=8'b01000000;, E+ G* R  u9 m
  end
6 c) I; ]. |( q, D2 N* a2'b111:begin
4 d& y9 _- i# t  led=8'b10000000;
  `' X) P" d6 |& i$ z  end
$ N4 R$ m" N% M% F- v* P  t3 Z- o- _) K  {+ ~, Z. X+ u
  endcase  : [, A! I$ V5 Q# R
; h" ]$ {! a8 l2 ?  J
  if(cont!=7)  d% b7 J) \$ ?& ?# ]& {3 G
     begin   w) {$ @" T1 F7 ^
      cont=cont+1;- g3 L; X) A: I$ x, `
     end: V8 H( _0 O& _# i- m
    else
3 c4 d7 O+ c) D3 r     begin9 `4 A7 ]. b; n5 l' e9 S! x
      cont=0;
& g% B' m* y& t2 P& Y6 e& W     end* o5 k- |) u$ P$ y; I
end5 ?8 P3 U6 a( U+ H4 J/ [2 _
endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯
9 l- W2 W1 S5 {/ z5 V9 u. P. S7 F4 D" a
lucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看) R+ q. B2 F. Q+ W0 |7 ]$ m" t
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致& t/ ^6 L8 }( J' A+ [
那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)' Y0 u5 Q$ T. D, }3 h! }* X' T0 t$ M! x# ^
) R8 G/ H/ v* \8 q& o; c  L
module led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理$ X& z3 G' H+ N* q+ B
input clk;
) V: l3 Y5 D# k" I# a3 [3 p7 z  X! _  {- `input reset;
" W- ?) C1 P' {' v) }- u# Toutput [7:0] led;) E6 G2 \4 e: z' \6 [
reg [3:0] rdd; //rdd如果沒用到就不用設
* f( b# T8 d$ ?reg [7:0] led;  y9 G% V7 v9 R% c' Z
reg [2:0] cont; //記得要加分號
) z& I, C$ Q. ]: j- w. b6 Aalways@(posedge clk) //同步計數程序宣告$ k7 A7 {4 ^/ t6 _, I
  begin  O- Q$ W) b( U$ Y: L1 c0 E& k
      if (reset) cont = 0;9 i0 b  Z; E- }+ P: b/ v
      else cont = cont + 1;: @8 U* D& C" \0 f* z/ Y
  end6 X+ `- H6 Q& S6 `4 k2 z! X/ R
  
) s( h/ W" m! E' Y1 y- `" Galways@(posedge clk)2 K, F: _) G8 M# h( F. a
  begin$ x7 ?4 c' I6 K- t: e
      case(cont)
$ h0 i) M. c' w: g7 |! }      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改
; p  e+ {9 i/ B9 s& {9 i# m3 f9 @( s      3'b001 : led = 8'b00000010;
' Y- y5 X5 o3 k  [/ T- K, I      3'b010 : led = 8'b00000100;
) {. `% ]" R. Y% k& Y# R; _      3'b011 : led = 8'b00001000;4 O6 C6 K! n$ K- I0 z+ E
      3'b100 : led = 8'b00010000;; S9 l8 R) @& Y- S: |$ @7 H
      3'b101 : led = 8'b00100000;
9 t/ a- C+ W4 D2 F1 W      3'b110 : led = 8'b01000000;
9 T" P1 K# w. C/ u& {! S( p6 J      3'b111 : led = 8'b10000000;
0 ~' w6 U  F8 ^      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一' `0 C$ J% Z4 X  [
      endcase
; c7 u3 s4 w# P5 W  end
- G. m7 O7 c% a+ a- V0 J3 _0 X' b) O9 @8 ?. l3 K
endmodule5 k. P- r# y/ d/ F% ~  U

8 a! F, K  z! k& ]  `: V8 F順便附上電路與模擬檔案
* R6 }( T7 x/ d/ I  _電路檔(led_shift.v)與模擬檔(test_led_shift.v):6 u" R& G( B' o
4 S( T, R' g( ?" T- B  L
模擬結果:# ], o3 k/ H5 e; r& F
(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)
# R) [% C  T+ n$ M

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt
7 Z9 a$ [6 X/ W& P2 W. a! R% d! H& {, e6 b
大大真的非常謝謝你的解答,我已解決,
0 i- K5 G3 d% R& T! w3 N8 |3 V9 P5 N
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign 2 `4 q6 I( L8 L# U4 c

0 G0 R' K$ Y1 f% }! g1 nPackage pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?
* `! }. _& v2 o1 K6 M$ g' g% ~: P) q8 x; W+ ?7 X5 w3 N- G1 G
其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。; J7 ^% S0 x  F2 U7 G6 v4 S1 H: {
. `9 x& V% ^# ?4 L* ?+ [" }

6 L0 E. b8 [9 G% R不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt 8 o0 [( ~# Y: a- r7 j+ {
+ l+ Z# b4 v4 i0 @% a7 V3 V
大大,我還有第二個問題,  j0 ^9 `8 K# i3 y% [5 k/ o

( y* {4 \/ C8 k' s我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
* c; w, G8 f2 pWARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal
! D0 G1 m, o4 jWARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal5 b1 ?, f6 N6 R5 g
這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky 9 G# I) s! z( N. }
! \, _" E- a6 V: |
抱歉我還沒用過這套軟體
# N. j5 s9 k1 ?( _! J$ Q沒辦法幫你什麼忙
$ Y4 J2 M! p% O0 {: S. g) f2 N你這種問題我還是第一次碰到7 ?: h; w1 i; V# `7 u
照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt 1 J9 q, ?' J& i: v( F: y, \9 M" a

  M$ `8 [0 \* }% E+ J5 d大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯 9 w' r  x# M1 _
4 v8 [% z- Y" Z. T
回復 4# lucky , i, W/ y' s. y  ~
, N5 v$ {3 p; ?" s& h; b# E- k
你的這個問題edaboard或Xilinx討論版有人提過
& V3 z4 h9 F! x& H0 |# D似乎是有些port出現loading的問題
: t9 [9 t! C) s% Z- k: ?) i. L
3 ~" R0 n2 y- c6 q9 @- b' [! \" `$ N2 O2 R9 c# U
可以參考:. A: c+ j5 ?7 L
http://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)
1 N5 v4 r; C1 D2 A0 g0 P( b/ vhttp://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)
( d6 w5 x% B1 ^& bhttp://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)
2 c1 p$ J$ ]$ u% p( m# I2 q1 w* K, w4 S* F$ A
http://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b
4 c" t* G3 h) l: Y6 `- u  x+ @# @$ m  P$ d3 g6 }3 n! u' [
大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-8 02:27 AM , Processed in 0.134517 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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