Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 22758|回復: 8

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

  [複製鏈接]
發表於 2012-7-19 13:42:35 | 顯示全部樓層 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!8 x: e  k! C9 k  `4 v8 \
% _( I' V( {  T! o
module led_shift(clk,led);
' t6 h" W- A6 P! U
9 D8 ~0 {& V# V0 @- o3 \# Ginput clk;
0 v0 d% n/ W7 {/ M. |0 u
; L  f( Y$ |8 O: l6 j, r4 F. ?7 H; Uinput reset;
5 s6 G1 I. |! r! y: r; t7 g' Q  Y& A
output [7:0]led;
/ J0 k) X: `1 E4 R, z% a& W: k7 c
' h- b1 u3 O# B$ j- areg [3:0]rdd;$ F$ X; l7 s7 ~, |5 A/ E
7 g, ^. O: ]" v6 ?8 J0 k% a# ?
reg [7:0]led;
5 Z+ R' ?5 ]2 [2 n# J* Z
7 M" S5 k! ?% ]& D" |reg [2:0]cont, A0 e, z. x2 H) I1 }6 u

/ T/ D/ G; H/ b( z* qalways@(posedge reset)+ M/ h) r; J7 R) N& I1 V
/ z# e. B" ]! l
begin/ ~1 F5 B; K! k+ L1 v9 H
   cont=0;
; F6 I& E2 U# U% Qend6 Z! ^6 @7 {$ K' Z
% e0 |- V4 |. h# V
always@(posedge clk)
+ }+ L5 k0 R3 C" W! I, g5 ]( p" V$ F
begin! T! p2 r7 X, k! B

: O' V, ]1 V. a6 Icase(cont)
4 {" x9 z) O% h; Q
! j$ p: i. d4 W! i# a2'b000:begin 7 B# {5 J& P4 m, a1 E- a
  led=8'b00000001;+ f: L8 i( s) @
  end/ Z9 G4 d0 n% a, g  Y
2'b001:begin
! D' S, w! I% B3 _2 [* N2 I8 y  led=8'b00000010;) u' j- u& G$ R& d# V# G
  end1 b2 b1 _9 M" @- p0 v
2'b010:begin 3 L+ E$ P; c7 w& b/ D" N
  led=8'b00000100;+ }* r; L% v8 o3 ~( r3 _
  end
4 p  f, D$ B9 m2 y* ?- C; U2'b011:begin
1 E1 x2 g: P8 A& ]8 C: E% _& X3 E4 s* V  led=8'b00001000;" ^. Q. w1 ]: s  {& ~. R3 m
  end! O7 U8 \$ \2 Z# X* V- a( C* Y/ e1 d
2'b100:begin
( W% h8 G7 I- s: l: U  led=8'b00010000;
: |# V1 U/ O6 B! l8 A( [  end
; y! g4 j$ S6 H2'b101:begin # |4 W% e3 G# m& a6 m
  led=8'b00100000;
4 d) f) d& H" r6 `* g% s  end
1 `+ `1 w; p6 J  L  k2'b110:begin
$ T8 L/ ?- U# h& [- X! `  led=8'b01000000;" V* ^2 a& \% f; C( i; ~) ~* l. _
  end2 s, f3 i; u- s+ B% M
2'b111:begin
% y6 o0 T7 `5 Z. I  led=8'b10000000;$ @4 r8 a- R! ]
  end$ \7 E+ v- P! d- _, k: H
* P" f- _4 t+ c9 ]
  endcase  8 m; X+ |3 u) c5 V
- `& ]. L- D) q* j
  if(cont!=7)
% X3 G; D! w0 d: V0 e3 z0 q     begin 8 K# O6 V6 a1 S9 K0 P1 _
      cont=cont+1;
5 J6 m/ O1 Y# E5 y& _     end
4 K7 V; |0 _* w5 P( D    else* c7 ^& r2 I% h
     begin/ X; Q3 p  A$ J& d1 _% C' }& M# k
      cont=0;% x; k" r) o7 P: x  s  v! H
     end
" v0 @1 u% n! a/ _# v: t3 pend
5 b2 |7 p8 q' xendmodule
發表於 2012-7-26 22:57:19 | 顯示全部樓層
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯 5 {6 c8 p! H0 v' j4 F

! h* H) i% T& ]( }$ L- F, v6 clucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看. f; E5 H# {5 J  Y- X- F- U5 X
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致
' [* ^0 }0 S: k  x( x9 X3 c+ K! s那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界). M  V5 g0 F4 i" E' }8 Y3 H! l* m; s
- N& v3 z; e% M6 K8 Y# w
module led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理. N$ l  r- j  r! u
input clk;5 j! c4 d0 s6 `& S* c( o2 s+ \; q7 ^
input reset;9 C# ]: Z6 s( O) ?
output [7:0] led;
  l9 K/ G% v, ]$ l+ {reg [3:0] rdd; //rdd如果沒用到就不用設
0 X8 h. L3 {! n0 ]# Lreg [7:0] led;2 n# l$ {9 {' H+ S
reg [2:0] cont; //記得要加分號
1 n, k' R1 L0 U7 F2 m3 E# t4 xalways@(posedge clk) //同步計數程序宣告
0 q+ [- t+ h6 O0 s- B9 k* q9 n  begin
% Q: I5 _, L- g% D: J" |9 \      if (reset) cont = 0;$ E9 J- b, x: |6 w5 J$ a, @1 P
      else cont = cont + 1;% n+ ]/ i: o! L& |9 H$ a8 p
  end
9 [5 a: c$ p& {9 i  ) P! n" T, @. t3 t8 b- D5 q) i
always@(posedge clk)
7 I9 h  s' S* O  begin
  q: k3 {; q) c1 S! X6 v& @0 z      case(cont); @  L) _( ?1 w3 b% a) w9 H) m4 _
      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改6 I' p* M8 x  o
      3'b001 : led = 8'b00000010;  s) u  b  ~6 d+ {- o# K
      3'b010 : led = 8'b00000100;9 {& H1 }# z2 e" v6 p- j: i) B, ^# P
      3'b011 : led = 8'b00001000;2 }  L. M+ O/ s
      3'b100 : led = 8'b00010000;2 X; `3 h2 F, Z0 z3 i
      3'b101 : led = 8'b00100000;0 ~: Q" _( G6 D  ]0 q1 U
      3'b110 : led = 8'b01000000;/ h8 ~2 n8 o7 z& C, G1 g7 G
      3'b111 : led = 8'b10000000;
( \. d. U  v$ P      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一
! H# U, [( w  B3 A3 X( W& t0 g2 W' V      endcase
# X# Y. @/ O6 t  end
$ p2 t1 a/ o1 W# w
) Q( c7 H5 t0 o1 b3 P* wendmodule
* Z- |4 N8 ]# N9 ^7 o
# M+ K6 |: J. S' c/ o; g6 N順便附上電路與模擬檔案/ W3 @. ]8 V, Y, [* s
電路檔(led_shift.v)與模擬檔(test_led_shift.v):
& u. X6 a  `4 q: |/ s# w+ Z2 m( D- `2 c+ O* Y- S
模擬結果:! ~; O2 u( M; Y! Y4 U' E
(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)
2 @4 t  ^, z: l1 S' F

本帖子中包含更多資源

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

x

評分

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

查看全部評分

 樓主| 發表於 2012-7-27 09:34:45 | 顯示全部樓層
回復 2# card_4_girt
' v- @$ q# \+ U. |9 @1 Z5 K4 z% K4 ^" G: O1 \' v
大大真的非常謝謝你的解答,我已解決,& e* i2 B: S( A
" h$ k9 Q8 _* t$ U; T
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign # f6 }+ b: [; j5 B' h% J
$ ]# {' @6 V' L/ \; N+ H/ }* g
Package pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?7 u* s  A. h+ Z  k3 H6 h

% o, x, {; z# G5 X: W' a* ^其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。
8 T' o$ o0 h- J4 C$ B+ D% q  {' n, q0 j) T  j9 w0 {4 ^
% V0 a1 e* S) c
不知大大有無MSN可否給我讓跟您請教?
 樓主| 發表於 2012-7-27 11:16:39 | 顯示全部樓層
回復 2# card_4_girt
0 g# _$ R" \- C* d7 ^
1 q4 v" ^9 m9 ]" o0 @. P' m大大,我還有第二個問題,+ ^& r: I7 C9 T& z

. C' ?1 E5 C/ `1 e$ s$ E) u( J我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下" o- Q+ z; B2 f0 z
WARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal: o* I, k5 p2 G$ e9 ?' e8 B% G# x
WARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal
$ }. S3 O8 F! W/ b7 F, w 這些是怎麼回事能請大大幫我解答嗎? 謝謝您
發表於 2012-7-27 11:24:56 | 顯示全部樓層
回復 3# lucky " ?- }% d0 O" [8 r9 ^5 L3 W

7 ^* S2 b3 q  q. }# b9 M7 q抱歉我還沒用過這套軟體
6 ^; m* P7 p8 a# p沒辦法幫你什麼忙& F: x' @% @3 }. G; i6 y
你這種問題我還是第一次碰到7 _8 E5 P6 K4 T, t% W, y& e
照理說沒宣告型別或輸出入埠才會有這樣的問題
 樓主| 發表於 2012-7-27 11:26:34 | 顯示全部樓層
回復 5# card_4_girt * F. |. l+ y  k1 j2 v9 w! K

- y' \/ k8 b3 }大大:沒關係,真的很感謝了,非常謝謝您。
發表於 2012-7-27 11:46:38 | 顯示全部樓層
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯
9 A$ ^+ d! a/ \. r" d* N( }  B9 h% _# \' g, T2 g' A0 N
回復 4# lucky
! x- Z1 |3 L9 p, G
  |# `# c+ Y* `0 b4 `  Z. [你的這個問題edaboard或Xilinx討論版有人提過4 h3 L% }( B1 A  J
似乎是有些port出現loading的問題7 Q" d1 d0 L7 W! C
' J* T+ A" [- o8 G1 k
( L' y- q5 e' i3 O' K
可以參考:3 h6 `: |- B, ]7 z# P8 v
http://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)! d/ G4 T6 ]! A
http://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)+ N; i# S) ?; z) \' \+ s+ I& c: {
http://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)
5 D: L3 m6 s0 J) i! }/ n* A( T$ j5 }# A
http://www.edaboard.com/thread64628.html

評分

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

查看全部評分

 樓主| 發表於 2012-8-21 09:26:10 | 顯示全部樓層
回復 7# card_4_girt [/b
6 D; e' J4 S1 }
2 d6 b  w) m) U1 P/ I3 `% a大大謝謝您的幫忙,問題已解決,感謝
發表於 2012-10-1 16:38:19 | 顯示全部樓層
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-3-28 06:57 PM , Processed in 0.127008 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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