Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2012-7-19 13:42:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' ,  ' 我那裡有語法有錯,請大大為我解答謝謝!
: I4 ^9 h) f4 A0 s) N: D: t4 v* H$ ~
% O/ n6 T# [/ C( T* w2 m8 M module led_shift(clk,led);; Z/ V6 h6 M' b; D
4 J$ J% J$ V  X& |8 ]) n' Q1 z
input clk;
' b8 j3 x$ R/ I  |/ w) Z8 N7 c7 b  i2 }5 ^3 Z' k% c
input reset;
, c% m) p, U* ]; k8 C) ]  a# l
output [7:0]led;
- ?- x& B1 \1 P( H( w: s+ y2 `7 A6 W6 {& d: ]& s5 f: Q& d& H7 m7 f9 a
reg [3:0]rdd;: x- j3 a: h' b" l9 B
! \1 i, _7 q6 B( Z! u
reg [7:0]led;: y% o. X- ?6 L9 }

/ k' ]7 q* f2 q1 b# ]. Ereg [2:0]cont% W+ o0 z; ]2 O2 Z& j9 s0 [1 N3 U! A! r

" I: ^% E+ X# S; Y) Halways@(posedge reset)
" N3 ^9 ^- v5 K4 T1 c1 {" h! T, K+ K7 O1 H  C" d2 L, s0 K
begin% h# f! I4 X' ^
   cont=0;
% [6 ]/ D* t; Y3 `2 oend
) j0 n. u! l2 r9 Z+ `5 v
& c/ A- r3 A5 d. aalways@(posedge clk)
* _( D- J& L" d: n! P
! U# ~, ~0 l" S0 i7 `$ nbegin
+ x5 [& O& j# f0 H& y7 U
, \& @- K( A9 j; a* Ncase(cont)
& t* A! l3 h7 y8 ]5 D$ D, T
2 m( {( l& o! i7 A9 {: Y' ^2'b000:begin
9 n; _. b6 f+ S1 o" Z( X' m  led=8'b00000001;
; ~4 v$ O" b; @7 h. J' @1 P  end
2 _9 r/ O; M$ c2'b001:begin
9 F+ z8 n9 n" \: F1 g) d4 ?$ P5 N  led=8'b00000010;
* l3 a9 E8 [' c* Q  end
# K1 q+ p" e/ f6 S2'b010:begin & p3 C9 G% X' R
  led=8'b00000100;
' t( b: D7 t) f& ^$ b  end: a4 x/ a: G2 Z
2'b011:begin: u, o8 I# O  s, R, q3 t
  led=8'b00001000;9 B! }( M" s1 f+ z/ X
  end  _3 [7 \8 V8 ?( F7 B
2'b100:begin
& d. g8 }  @* q, A2 [  led=8'b00010000;
7 C3 t1 W! G# y$ H. r" S  end- y; {6 y: I% c  Q  |8 x9 v
2'b101:begin ' g- J/ L7 y/ a( q9 a' a' Z( H. ?* f
  led=8'b00100000;& x$ @( X9 O1 A' I4 m$ n9 r
  end, L2 q; \2 H  ?& `+ f5 D
2'b110:begin
& z0 s) \5 H. F  led=8'b01000000;
; T7 s( k' y: Y, t$ K5 J1 M  end
1 Y, }5 X( [2 K5 e# B9 j. P2'b111:begin6 r9 o# e: ^; k+ H3 {6 I  Q  Y
  led=8'b10000000;1 S# t4 E( b0 D9 B
  end
1 p0 ]9 R) ^: G& w5 O
2 A9 g7 U" @* V8 i; R2 j  endcase  
5 g) {% `+ l3 m$ W2 d. z4 w/ c6 F
, |1 `4 V9 U, |. m( q& T  if(cont!=7)
5 B9 z  l, y- X$ s# H3 j     begin
% l5 r; f( u) p$ s+ `      cont=cont+1;
/ j# b$ ]9 Z+ A4 @7 e9 g" d     end
# ^* \0 |4 q1 v9 U- l* ?    else
3 l( L+ V& x, k' D  y     begin
9 x9 S9 O4 ^" l2 ]% t+ X      cont=0;
: J, H- ]! |1 f; \2 B     end
1 ]' q1 ^, n# v" F- R4 send
! m9 b2 ~+ {$ X- Tendmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
發表於 2012-7-26 22:57:19 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯
. W% r* z( E- a0 @
' r+ M& a, J% m5 f3 j* y. i4 blucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看! I2 Y3 {* b; _9 g2 j5 t
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致1 y' S  k2 u4 O$ ~9 ]( @
那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)% n& i; N$ u+ L, y& X: O
* s/ ]5 Y& J, m
module led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理, W+ K8 h! B0 _6 V* S6 z
input clk;$ p" Y, T, p/ k+ B5 V
input reset;  a% E' p1 Y  m7 a! \, O1 L
output [7:0] led;
4 V" J$ ^2 |# ?3 q, Q  @reg [3:0] rdd; //rdd如果沒用到就不用設
8 N; R# m5 ~8 I+ ^reg [7:0] led;- X3 J% t$ Z  X' U
reg [2:0] cont; //記得要加分號# b- Z- Y7 {0 o' O# @% m# H+ B. o
always@(posedge clk) //同步計數程序宣告/ P+ N; y/ L& d: B1 m# q
  begin
- O/ H, n3 w$ D7 H      if (reset) cont = 0;/ g: ?: H/ {* h/ ^( ]) q7 X, I
      else cont = cont + 1;# l+ `$ E$ x2 X1 c' s, |
  end2 T/ b4 c3 r& g
  
- K. N) a+ y) j3 walways@(posedge clk)
+ n) d/ u, N3 K* P  begin7 c5 l' G4 D9 T- H
      case(cont)- _0 b* ]( D8 @; w9 O
      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改
0 K- v- \# c# p) v      3'b001 : led = 8'b00000010;
9 N: g: Z6 {7 G- z, o* S0 F9 l      3'b010 : led = 8'b00000100;9 |: O) V2 \6 `# ~" J& t8 w
      3'b011 : led = 8'b00001000;
  N# y5 ?% }% K3 `* l" S8 N8 J      3'b100 : led = 8'b00010000;. v7 H% }1 j# z& s; J
      3'b101 : led = 8'b00100000;  t$ T( q- ?2 I' R: n
      3'b110 : led = 8'b01000000;
& u1 h3 h" |  k! I; |, g* q      3'b111 : led = 8'b10000000;
4 |& Q, x& H  X' X      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一
& b( h8 ]7 y1 x. I6 i# i/ c/ m      endcase
: D* C; N/ ]" @! J2 h  end
7 `, s4 r) E0 [, Z4 |
  p: l0 L: |& y. nendmodule
  Z; J5 [; ]+ M1 z0 ^$ G% C4 L( }# j. o! N3 Z7 R3 M( p
順便附上電路與模擬檔案6 M: s6 n/ G. s# m  y8 o
電路檔(led_shift.v)與模擬檔(test_led_shift.v):
% V8 U2 |6 y4 c4 l; N
6 E  F4 ?9 F+ ^% C! a; }9 A6 F模擬結果:% t# R# }5 Q  d' C8 X$ T# ]
(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)
% d  [3 r+ v9 {, a; j3 k

本帖子中包含更多資源

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

x

評分

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

查看全部評分

3#
 樓主| 發表於 2012-7-27 09:34:45 | 只看該作者
回復 2# card_4_girt
4 }! G% q: o8 \8 z5 @: \/ D4 p$ X# W3 ^) D. z8 k: U( [  k/ y+ C
大大真的非常謝謝你的解答,我已解決,% |9 x+ |- O# _  S
( [6 }8 b1 E9 N/ }0 p) w
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign ' i: G& G: K( D% L# T4 @- u$ D
6 E( u# `$ H5 |$ x: K9 c" y
Package pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?$ `. L5 j! [+ Q6 L0 q
8 i3 C, Z; l$ y) i4 f
其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。: z2 |0 T5 N% ~" X" ^8 A7 L

! _5 _( T; m9 S$ f( r5 F: t# e1 O
0 a( |6 P6 |( }% E不知大大有無MSN可否給我讓跟您請教?
4#
 樓主| 發表於 2012-7-27 11:16:39 | 只看該作者
回復 2# card_4_girt
2 ?* V! b' R+ e. I. f
% J8 k2 ]' U" t7 ]3 Q大大,我還有第二個問題,
: F' d* c4 {& d* ?0 N
. O% o, C" u" }. O6 }, O我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
- Z  N* d! M. bWARNINGhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal9 U& n* @8 s1 f
WARNINGhysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal
8 a6 Y! x( ?; o) W9 U 這些是怎麼回事能請大大幫我解答嗎? 謝謝您
5#
發表於 2012-7-27 11:24:56 | 只看該作者
回復 3# lucky * J% q6 x  Z8 A, ?1 o$ K: ^' ~

/ ~; G: ^# G# x2 r抱歉我還沒用過這套軟體* ?0 b+ O% C0 {6 a* K, V0 }/ U
沒辦法幫你什麼忙" M4 J: A3 |2 C
你這種問題我還是第一次碰到; y( x4 N4 d. h5 j1 {
照理說沒宣告型別或輸出入埠才會有這樣的問題
6#
 樓主| 發表於 2012-7-27 11:26:34 | 只看該作者
回復 5# card_4_girt # C8 P* V$ o3 Y/ |7 E% w
) k/ p2 f# \: A$ p+ p/ K' p
大大:沒關係,真的很感謝了,非常謝謝您。
7#
發表於 2012-7-27 11:46:38 | 只看該作者
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯
2 v) L- c, I4 u% b
- p$ i3 {9 A7 `( u回復 4# lucky
% X  `; j6 u1 \- W/ E
  ?, I0 E- k/ ?3 _7 G3 X你的這個問題edaboard或Xilinx討論版有人提過( r% C6 Y9 H. B5 K
似乎是有些port出現loading的問題8 K6 v8 B# {4 P5 V- a" k
! Y: o( ~( @+ ~( r! P. M+ L

9 x, U3 G* p/ ?" j" [0 D% U4 q+ L可以參考:
4 O' ^+ e7 O% n% x" Nhttp://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)
5 p0 n( _: G# p  q# j7 whttp://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長); P  Y9 A$ {0 u
http://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger)
+ ^5 C' I' b8 m, a: ^
8 X, Y& [9 Z% k4 |: F7 S' Shttp://www.edaboard.com/thread64628.html

評分

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

查看全部評分

8#
 樓主| 發表於 2012-8-21 09:26:10 | 只看該作者
回復 7# card_4_girt [/b/ |5 B; q- F2 h, \
, F5 O# A  y, W1 v/ e: X3 ?
大大謝謝您的幫忙,問題已解決,感謝
9#
發表於 2012-10-1 16:38:19 | 只看該作者
我需要多一點的教學 非常感恩
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-21 10:39 AM , Processed in 0.184011 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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