Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2012-7-19 13:42:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!1 |0 M* @' Q/ S3 h- \
. R! |3 `6 M: R1 p) b5 x
module led_shift(clk,led);
9 v6 L" g/ f9 R6 Y9 s6 z6 i$ \# A- }1 [0 @7 A* M
input clk;
3 D% }5 S3 h. B# Z7 P6 m7 O. ?& k) A3 v4 i' I$ @
input reset;
% A+ G& e8 r1 P1 q8 i9 e
1 U$ s9 A% j" r% }: o- G: s3 Koutput [7:0]led;
* n2 M  R( z" W5 ?+ i3 p
% \- K) b/ K' |1 `3 ?1 h4 S9 w9 Ereg [3:0]rdd;
& M. T: o7 T/ Q- K
$ C; h8 v5 w) Ireg [7:0]led;
# \8 ^% `6 t* {) L5 [
# r0 I, J2 K  _reg [2:0]cont
+ Q  B( U  d9 ~. Y2 ?9 D$ a* {3 z. |& z, \1 J
always@(posedge reset)
# s+ l6 r' p$ Q" Q. }! N5 O5 z% f
5 H4 t5 K0 c+ A% O0 \% ibegin
5 z* y' P6 j" c) G1 G4 }# g   cont=0;
6 v8 n$ y9 ^. `. a( |8 Nend
( \1 r, P& |' F8 F" g+ U& X3 X- n! J( {5 Y. D* c
always@(posedge clk)
- Q4 H# h& |( ?- R  Q0 Y
5 l! s0 K; |7 n  ?+ vbegin
: [+ ~' F- A" ^, C9 i5 x- F4 A0 A& G8 Z4 Y/ a
case(cont)4 F& d" W2 k' U. p

# N4 w: u, A0 h, @4 l2'b000:begin
$ }' G1 {, g: j0 e4 K5 x  led=8'b00000001;- C$ z: x9 F' Q) T
  end
. q. [' {6 B  J5 |4 f2'b001:begin
& o+ b2 x1 |3 X! v1 i* B% }- r) j% A  led=8'b00000010;
& e2 {5 v$ Q! i# K3 b/ t6 Y  end- Y+ v1 a, A, q! H
2'b010:begin 8 }, w! D: u4 Y0 t- h0 u2 g
  led=8'b00000100;
/ I5 k' l$ k! D4 v; N3 \  end
' }6 \& l, C; ]1 \% X2 Q$ V2'b011:begin% G6 h3 L3 _$ [6 \, F' S0 _
  led=8'b00001000;
% D) [5 a1 m+ C. d, w) C. ~  end) e; P5 B$ c  d/ k
2'b100:begin
0 K& [- @  x6 v  led=8'b00010000;
  f  _# j- P" n" Z& J, d) ?1 ?  end
0 \. ~9 l2 P6 N0 N/ G2'b101:begin
% o. [0 X. \# U7 Y8 |  led=8'b00100000;* {9 ]9 ^! k6 X/ G. A9 b- ~  Q
  end3 y! F6 ]  [  H' l' K; P
2'b110:begin  K7 G3 ~7 y: s
  led=8'b01000000;6 A! H6 ]  ]! z) e
  end, I2 P' ~( |* p$ ]4 m
2'b111:begin( q5 Q! I. [- t4 H6 n6 v% W# v
  led=8'b10000000;# j" B, o5 h3 w) `5 w& p# ~
  end
6 z/ M, s& o2 z3 Z. P! _8 x4 d( |' R; S' _/ n' g
  endcase  1 a  @) s$ B/ N' _

( N8 N, _+ O0 ?. R  if(cont!=7)& e/ X* b  @, l! A
     begin
" z2 w+ c% l/ u& R, ~! `      cont=cont+1;) f) t/ v* B  S  b* s
     end* i2 `7 W8 x) g+ X# p9 r
    else
6 Y. }8 S% h8 x9 k  C     begin/ g9 F1 r6 b2 ]; t
      cont=0;* R: l# W$ S8 P" [8 x
     end
  r/ e/ s$ |! \end
! W& v+ c6 w2 ]0 r4 }# }. ^endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯
5 B2 r7 [8 V4 P; @; N( N" j
" Y1 _! I# `- [9 g1 e" blucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看/ c( M1 j. W- k& {7 a+ p4 ]( [+ A
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致' r' X( _* g9 I2 @
那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)" A/ K: m: ^2 v! d2 X* ^4 [

( P% a, O$ P6 p* f# M, q' v( imodule led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理
$ i+ v! O; `0 i+ S7 Ginput clk;
- R$ x2 z' U$ t; n% U; einput reset;9 S! J/ @& U, a& U8 a! H
output [7:0] led;
* n) M6 X0 S+ [9 Sreg [3:0] rdd; //rdd如果沒用到就不用設
" _$ I: H; _$ c: e8 nreg [7:0] led;7 K; Z" d/ U1 V* g
reg [2:0] cont; //記得要加分號
5 l# i8 w9 `9 G1 ^$ c% |- falways@(posedge clk) //同步計數程序宣告" ?: N$ P, A0 Y) J$ Y6 y( \
  begin: r6 O, u! n/ u9 A7 w
      if (reset) cont = 0;' U; ~) O& Z- ]6 W
      else cont = cont + 1;
- Q0 v- S/ X# C" p9 B  end9 K+ U  D4 B9 i- u8 j
  
1 P( ^3 f3 a. Q8 Oalways@(posedge clk)
% v9 l! W% e& Y' W( u  begin
, M- G2 q% W0 J. v  F0 O. h  v      case(cont)
. I* ~& t* v% v2 j) ~1 i& _      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改
( ], K0 e( y% p. q# a) U1 U      3'b001 : led = 8'b00000010;; w% w/ n0 p+ E' D9 o  Q
      3'b010 : led = 8'b00000100;1 _* p0 I4 z# v& e, W4 f" \( ~
      3'b011 : led = 8'b00001000;/ \6 C- d% g. }7 P) \6 B: K( k
      3'b100 : led = 8'b00010000;
% Z' ]+ f% C4 V8 d0 Y9 ^4 `      3'b101 : led = 8'b00100000;' S* Z. X- @% ^! C0 Q1 j4 R
      3'b110 : led = 8'b01000000;6 v9 r7 D1 U* A3 m) q
      3'b111 : led = 8'b10000000;0 _- S8 [3 Y% u
      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一
# S9 h5 D5 v7 D1 b, \/ ]& U      endcase
/ x, b4 i& ^* s  end
4 }. o5 Z/ x9 F, b, s- j7 D; j# a1 S/ Y0 F" U. k
endmodule' m) c  I' E6 Q* q) D( X/ K
, e3 x4 H3 B/ @, r2 _
順便附上電路與模擬檔案# h/ d' G. g# j3 t
電路檔(led_shift.v)與模擬檔(test_led_shift.v):
' m3 o3 v8 B. }" v/ W6 J$ \
8 m$ o6 i  b/ {- U模擬結果:4 X' S* w* ]6 x& p
(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)  U" W  K2 B* G6 q7 y

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt ( o9 y8 y8 c9 W$ I" S3 u

% L3 f' V' s, r1 O: @; |& U7 O大大真的非常謝謝你的解答,我已解決,  H+ y* x8 o8 J3 L" C# U
: N6 l0 W0 B# y2 f$ u+ K# j
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign 7 t) y* I8 c6 a% O8 U. L

/ `$ \. ]) {7 c9 rPackage pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?
( m1 M$ `" f! ~+ f' _, e7 g) M8 B6 `# Q) h
其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。2 P% x5 W6 a. |7 O9 I5 {1 S* w
3 i6 E  J; Q8 T1 ^* g+ W

6 u5 X" s0 X5 g1 f7 W不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt
& x6 @5 Z2 j) W0 W. V9 n5 }" W) Z; V
大大,我還有第二個問題,& j+ x- J% j# m: g; {3 _
+ \+ ~$ s1 m! \/ W" X
我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
8 a% m# t' r+ F7 L$ hWARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal% W( X$ J. P2 ]/ t1 ?: X
WARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal
0 I8 o5 W3 w( K) ]. o 這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky
+ y8 ]0 `% `7 o# w4 y
! l. i9 m7 Z! ^抱歉我還沒用過這套軟體
2 ~# k; I4 _% A沒辦法幫你什麼忙
) ^, ^* F0 C3 U你這種問題我還是第一次碰到
6 @# {: n3 M# s% y% T4 F% u照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt
" Q  Z; m$ k0 M# a$ H: Y
" ~. ~* D( I4 V$ z* `/ h大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯 / S$ O* O# e& X4 z

0 E. J2 c* v" R( E0 r2 e回復 4# lucky 1 W9 J! {9 z: r* [

) J5 a( V1 o+ V; t你的這個問題edaboard或Xilinx討論版有人提過
4 m7 Y! A- ?" R# p. t% B1 ^: `2 K似乎是有些port出現loading的問題
: m+ K( Z/ U+ i' G
, z* d: a6 F3 |) \- B6 r9 X4 ^2 C. a) `& j- ?- s
可以參考:
8 Z# Z! `2 g0 g7 T. H! thttp://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)
! c( I( D! ^4 `4 k2 [! Hhttp://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)
$ u; d7 h# K! I8 |9 X( Uhttp://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)* H6 ^, G9 [' d8 N7 B( l. t
9 b, m% w9 t  [7 J6 D: M& j& d# @
http://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b
2 E8 D+ {* t2 S- l* K% C, `. q
& {' G+ a( G0 b1 u. G+ G  I8 S1 H大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-28 03:55 AM , Processed in 0.175010 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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