Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2012-7-19 13:42:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!
& D4 E- y# w+ @9 ~+ m; {0 G# O2 E8 R7 H
module led_shift(clk,led);1 u$ M4 K0 |$ R. f- t

: F6 o0 {" W8 a( n5 Dinput clk;0 A* ~! K# l2 \) W5 E3 t0 \6 @

* C% M! J. l; L" g6 |, Sinput reset;
7 f1 p! a3 Q( q/ ?9 H2 }5 z5 G9 F2 C" e0 ^- h- u& k, \
output [7:0]led;
. a, H- y+ V1 @1 a' v) U3 P6 ]& b2 e- X  f
reg [3:0]rdd;
/ e. f" H; ]/ {+ g1 Q( D/ i
0 g0 f; X4 @9 k, xreg [7:0]led;
6 X- D0 |6 i5 ]9 p0 ?
& L% m% ]; v6 ~; [5 a; G, treg [2:0]cont
" {6 S- w: S* C, ~$ S/ F) s! B3 ~9 ~- j0 u% |& r5 r% ~
always@(posedge reset)
& W2 R5 h& x  K. e! ~7 r: K) C; A/ j: {, E+ T% Q
begin; g+ A. \  |! C& M) y* K
   cont=0;
4 O$ d! y' S& g% ?7 Eend. q/ l+ u: `' }' `: n& ?* v! ~2 o! n

! _* w" B# ~# d# b5 balways@(posedge clk)$ g' R2 y0 G& a/ C6 G, {
+ Z# G9 F5 R% v, Q8 f' `: }% {" H% o
begin  u0 L/ ?) y6 B# ?) `

# y) K8 W! n  d2 Wcase(cont)
8 [3 o- d6 i' H# _& m7 D
7 v7 K5 @) P2 F" K2'b000:begin
5 C) |9 C& S+ t  led=8'b00000001;% S3 x7 D+ ~) k& X4 S  ~
  end% _2 h) h0 n7 Y  C. ]2 {% V4 |
2'b001:begin
) j6 w6 N2 B. O- G* L# H  led=8'b00000010;
( f8 w9 E9 Z: t+ a. i9 {: m  end
# m+ F( ]% g: r4 p6 S- n2'b010:begin
" C1 B! X3 D; e; @  led=8'b00000100;: H" B4 v8 V+ q" B, \# V
  end4 ?7 B3 X0 n/ _) F. v
2'b011:begin0 t' f" A% ~$ k2 m2 g
  led=8'b00001000;
' m. _: k/ t. B- }; P; @  ]& T6 ?  end
) U) H0 d( {: Q/ P3 _2 q. H. R; ]2'b100:begin # }3 ?, U2 D* q. f7 C) C
  led=8'b00010000;7 a. D6 C8 Z3 f. L' ?$ t
  end$ T/ k/ ~6 N( ^
2'b101:begin 9 O0 [5 P6 u0 K# e' U
  led=8'b00100000;
( [2 @7 d9 S4 w$ Z  end# Z3 N: S+ ~! I7 }2 n
2'b110:begin+ K, A3 G: L  z  S9 h1 V! R) ~& w; k
  led=8'b01000000;
' t1 E8 s( C" T; [9 Y6 ?/ [" _  end2 f- |' ~+ Y2 N  S
2'b111:begin" I- q) E+ t6 t6 t9 x, C
  led=8'b10000000;
1 |7 T7 R( o" Q: S' M+ w* I  end/ U4 s! c. m/ e& k4 U2 o

" E3 C( W6 l. }5 p# V" }  endcase  
3 Q5 c& F6 c* d$ _, u( B- [/ V  e" n4 L( {
  if(cont!=7)+ u6 e' F5 w3 c$ G, J! r/ O' g
     begin
" m' {! w% {- X      cont=cont+1;) P7 z; I9 J4 h! F" c: ^
     end
' M( h* Q4 H; M; _8 W2 Z/ w    else
  r& _8 {, ^. v+ ?     begin; f' Y0 e, V* l( \5 y' D
      cont=0;* {. }! `, r/ [3 j3 O$ n9 G( R- h1 S
     end
  W( n, {* P1 d9 i6 I& L3 Fend
% F3 E* s, J# g% k8 W. P2 cendmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯
1 r& F0 S* k( u2 h5 b) N
! L2 k5 e6 \$ l1 T3 A  Olucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看4 q: H6 A2 H3 Q: m3 a" |
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致0 q, R. _) A! j8 w
那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)1 R+ p# i5 }6 x, S* G

& [) w+ Z1 w+ ]3 Tmodule led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理$ \6 ^# l' t5 p5 A' ~4 q0 r
input clk;* W- D3 v* O, w: }5 J' }
input reset;3 w. U  {! M" \+ q, l/ B3 b
output [7:0] led;
7 G) R7 W6 e# g  C# Z% Qreg [3:0] rdd; //rdd如果沒用到就不用設3 E8 |2 X+ D2 i6 |- q. S
reg [7:0] led;, b4 N5 x5 ?/ G# t! [
reg [2:0] cont; //記得要加分號8 O9 U9 }( j% a
always@(posedge clk) //同步計數程序宣告! `& U) d+ e8 Q; T
  begin
8 E- o% s% ?# X9 Y      if (reset) cont = 0;+ [" T" ~* e9 D$ K
      else cont = cont + 1;. j5 {2 `5 U' T. Q) U
  end) ^6 u( a2 `/ P3 [; }
  
- k2 }$ E1 _, `. K. Qalways@(posedge clk)
. g9 X/ m! ^. c5 ]/ ~- a  n! e  begin
# Q$ V; z" T" G0 V; r2 x( T      case(cont)  y9 q. `# W4 v: B9 n( v# V
      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改' D7 a; L+ F" m7 I
      3'b001 : led = 8'b00000010;5 Y6 X. S: r: R' k) }0 ]3 z
      3'b010 : led = 8'b00000100;( g/ p" Y2 O+ O/ w* C* _9 Y
      3'b011 : led = 8'b00001000;, W, U; {3 `9 O# `
      3'b100 : led = 8'b00010000;
" K2 w" c0 }' _5 M2 E% p! L      3'b101 : led = 8'b00100000;
. y/ _- w' i; i/ |      3'b110 : led = 8'b01000000;
& R8 r9 I: t& H+ }      3'b111 : led = 8'b10000000;  F: M+ g7 F: \- @
      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一3 h' i' G) ?# }: b* p2 Y. Z
      endcase+ w$ R7 b* P$ F* q+ A* {
  end
! V$ T$ T( _6 z4 O& g- ]8 q4 L9 D
; K9 i! p6 S7 H5 F5 ?  y8 eendmodule
1 s8 B+ Y$ g$ D9 y' L0 @& e* K4 `6 X+ P
順便附上電路與模擬檔案
. y' y* m1 @+ p/ ^! _/ D電路檔(led_shift.v)與模擬檔(test_led_shift.v):  W; m, s9 H9 I$ q- q" A
! S/ s  \: X0 A$ e; R, c
模擬結果:
# V/ x1 R( C9 D0 }0 U(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)( u+ @+ `; {  t  X. x0 E" v9 ~

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt
& h) p! o9 e) p" H3 ~0 h
3 m% n4 u; Y' X( N& M2 H8 {大大真的非常謝謝你的解答,我已解決,
. a) z' B% h, W& W0 [" ]/ ^# c& U
- W& g& V8 L% v+ X* z不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign
3 t7 @" Q9 i% l+ \* w: J- _, S4 ^4 V' q0 Y
Package pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?
' L" E$ z6 n1 e5 J% k* S# o8 i) B% F0 o8 l
其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。
& G9 ^5 i" N5 ~! s" E) N: R% W  T1 |4 A  j. [2 ]

" A* C( y: K. W. t不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt
( {5 @1 `( D; W9 _
  A6 l9 `. o% c; Z5 }4 V0 A8 t大大,我還有第二個問題,3 \1 N0 R3 q: v8 U  U1 ~: D8 g
- y1 Y2 k% g3 D; @" s
我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下0 x; M2 R  D/ j, ^0 q  h
WARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal% v3 {  g7 }  d9 k' V7 M
WARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal
5 k' @# v. @* Z8 l* e/ y; s 這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky - T+ T6 M& w! \) U. D9 w" L

1 u) T! j, _* H- t抱歉我還沒用過這套軟體8 S8 a8 s1 g( C/ d" ]2 p
沒辦法幫你什麼忙' Q/ O) {2 o# [( N+ F; U- u5 s
你這種問題我還是第一次碰到/ m( F) V9 `$ |  l( @
照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt
3 l9 Z$ ^) N+ h% P2 B) W
7 c' q; F, w- ]8 T8 Q! t* d大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯 ; E: ~3 n0 F9 D  _* S
& m4 v: _( m/ d' x
回復 4# lucky
. ^6 J' Z' h; w. }6 b  Z" L8 e8 G
& d8 g8 m+ t0 `& O& p( d你的這個問題edaboard或Xilinx討論版有人提過
6 d3 C3 |* f0 n' `" S% F似乎是有些port出現loading的問題
5 \& f( w& U+ ~9 k/ K2 f1 G" x6 o5 E; ^$ n

) B0 W2 o/ J7 I7 l. C' A( G; {可以參考:
4 Z; p. e% W+ Z8 r$ M! whttp://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)
/ O* A/ Y/ N: I' ^3 [& Nhttp://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)( K4 t5 Z9 s. d- ?, I4 z& X
http://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)
3 r) g- N/ K! w9 W/ p' |1 M& x$ x( m/ v/ z0 }0 L! f+ j4 n5 o8 X
http://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b/ r' O" g) `  `2 M& \) A* K
% P! f8 p( }. F  A
大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-16 03:07 AM , Processed in 0.158020 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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