Chip123 科技應用創新平台
標題:
verilog 跑馬燈問題
[打印本頁]
作者:
lucky
時間:
2012-7-19 01:42 PM
標題:
verilog 跑馬燈問題
請問各位大大:我跑以下程式 出現了錯誤 它說 near "always": syntax error , unexpected always , expecting ' : ' or ' , ' 我那裡有語法有錯,請大大為我解答謝謝!
2 G5 Q. A7 J2 N4 }( ?* e( v1 P
$ ^7 e: n1 E0 {1 S1 Y6 l, W
module led_shift(clk,led);
' M2 i5 q% T) l) [" X% _
7 U8 k: G5 n. O- O/ E
input clk;
7 V0 U! f/ U" P l# E1 P
7 l' _5 z8 n2 L% D6 @% U
input reset;
" l% G' f5 _6 O/ M" o! m3 ]% s* W
9 o3 f0 m' z) ]+ E8 v7 c
output [7:0]led;
8 T& ^6 r5 v: _6 W( `6 }+ z
9 N$ P+ e. s9 [1 w! E' a
reg [3:0]rdd;
/ O* W6 R$ k3 P- W
6 V" \& h# _5 e5 J( @: J
reg [7:0]led;
( m% Y Y9 n* ~2 A3 z/ }! |- t
, o1 R. r' b2 k1 m" ^7 V3 b5 [
reg [2:0]cont
% e5 O* {/ p/ K4 {
4 @3 W( ~! d9 u3 E
always@(posedge reset)
9 K+ e6 @" r2 r* d! q' z
- Z0 K0 o$ Z) L1 l
begin
' c# D8 Y$ t' v
cont=0;
! n3 \ S) M$ {( l0 j0 v
end
, _" e5 R( f' \* g! r3 W t7 l+ ?0 r
8 L% e. R' q- S! e# x$ n
always@(posedge clk)
, x& j, F/ C& i4 c6 ~# x* Y
( Q+ D5 T+ d6 k# ^
begin
1 A7 y! |6 ~7 V, m# @+ Z9 `2 K* @* R4 p
& F- ^1 { Q. m5 r" e
case(cont)
# x: O, z! ^- c2 P! L. G! r! x
* }, P- S- `2 v. h5 u y
2'b000:begin
( `: l- U/ T, b! |2 `5 a% R; \: h
led=8'b00000001;
; z7 N% k4 r P/ J
end
6 ]/ g. w7 U0 x( W4 H( U% n
2'b001:begin
4 Z! Q! O/ R7 r. d) [; D. T
led=8'b00000010;
- R' B2 r- V/ r' d8 H; U3 J$ [
end
8 j4 h9 d7 C6 S$ c9 L1 [% \5 C
2'b010:begin
; u. e4 V5 _2 T3 n4 x- [7 j; g
led=8'b00000100;
% o8 W0 H9 G+ V, ~/ _; |
end
( C; s8 n- D: }
2'b011:begin
B$ X5 f9 I: Y3 r* l
led=8'b00001000;
5 f, C$ d9 q- \& P* L
end
8 s1 Y# O. i) \2 q
2'b100:begin
5 m+ w2 K5 a' f9 T. p1 O
led=8'b00010000;
1 P6 W( v$ u! u/ Z! l w
end
4 q. b l* e# y
2'b101:begin
* a: r+ f; |' N- I0 j
led=8'b00100000;
( ]" i) I2 S1 p; m4 N! n3 b5 R
end
; Q6 A) \# `8 `$ [
2'b110:begin
0 y* W* M0 b5 m: M+ k
led=8'b01000000;
$ ]7 @* i- ~ n$ j: Y3 v
end
) v1 ? t( ^% O. W E" T
2'b111:begin
/ j: L5 I! c) x. y/ R9 Z
led=8'b10000000;
& F: W; _; c4 {! w! z4 F5 O% x
end
- |/ u2 P# |5 s) |; l
. w3 V! s k9 a7 [
endcase
6 l F& q3 F0 k9 X, f
8 G' \% t: D" v, r- \5 s. V8 d! {
if(cont!=7)
4 V1 S6 ^" o8 z5 E
begin
, v: n" Y* z3 p! c
cont=cont+1;
- d0 {" R5 o m" D4 y) E$ P x
end
' m( ]' ?9 j/ U: n" P6 Q
else
* @2 m) g) f, E# T& A) c
begin
8 T' n0 `. I$ C1 O8 {
cont=0;
8 l! T" C/ P; L. {8 h' C9 n
end
. `& B) y* p4 R( Q
end
8 t$ }8 Q* N7 v. ?+ }
endmodule
作者:
card_4_girt
時間:
2012-7-26 10:57 PM
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯
" ]* X/ M+ M+ g4 Y( s
9 d4 o% }: [1 f) X4 F5 ^# Y# c
lucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看
; w% E! p) R& y: l
首先關於您提到的Syntax錯誤,應該是您忘記把
reg [2:0] cont
後面加上"
;
"所致
4 f3 V) O, K5 @+ M! e: i1 _
那個錯誤的意思是在always區塊附近少了
分號
(對不同行或不同類型輸出入之分界)或
逗號
(對相同類型的輸出入分界)
7 y" V/ s( [5 @ L7 m% c9 z0 B! ^3 x
3 D5 f! k( D& X# ?, l, g5 ^) u
module
led_shift(clk,
reset
,led);
//reset應該要加入input當會比較好,比較合理
" h+ K4 K2 l. s9 r3 i3 ~; a
input
clk;
) Y0 a' u: r+ x" N$ v
input
reset;
5 U) B, ~& d+ W) I
output
[7:0] led;
* I" Y7 a4 F( l1 D1 C# J" s
reg
[3:0] rdd;
//rdd如果沒用到就不用設
' q3 v: H( a+ ^4 ?! }/ N* K3 V& m2 x
reg
[7:0] led;
) _. a& O7 H: ^
reg
[2:0] cont
;
//記得要加分號
9 u6 u T( J' T4 v" f
always
@(
posedge
clk)
//同步計數程序宣告
( I8 l7 o; e. S/ ?9 a' w
begin
0 W9 f( I# [, P5 C' V5 A8 R
if
(reset) cont = 0;
2 u2 I+ ~9 H2 P5 ]- S
else
cont = cont + 1;
$ O$ ?& S! ?$ P1 y- U( ~- Z
end
% A) P1 l3 M. P# K& ~7 M8 s% w
6 h1 `& U2 m5 [8 E- Q( N
always
@(
posedge
clk)
+ D/ P7 w/ m; ^8 g# M6 G* J
begin
. A1 _ y& |" J+ `& V- q
case
(cont)
* H$ d# J5 f8 Q9 w$ g1 c& \8 c
3
'b000 : led = 8'b00000001;
//cont為3 bit register,不是2 bit,後面的也應一併更改
# u8 n& ]4 {+ t6 ]1 |
3'b001 : led = 8'b00000010;
# e, M! C; L. |& d6 ^+ ~7 |. p4 F) y
3'b010 : led = 8'b00000100;
0 S5 M( L U# a
3'b011 : led = 8'b00001000;
2 s' m: l1 E5 ?+ B$ Z. e4 i/ X
3'b100 : led = 8'b00010000;
9 e1 o8 {! S' P6 r; @
3'b101 : led = 8'b00100000;
0 W. X1 t3 C1 f
3'b110 : led = 8'b01000000;
4 o% v( X% y8 g4 ]2 c. Z
3'b111 : led = 8'b10000000;
4 t' z) ~/ H6 ~& ^- L$ q
default : led = 8'b00000000;
//設default避免出現無法預期的值,使用case最好要有,以防萬一
% u# V/ w( |4 }+ J0 M
endcase
) A7 m5 z% C, g3 D6 F
end
. B: l* q- @ k
0 B) q! ?+ R4 l3 G
endmodule
. ?: I1 Y$ l1 ^7 N: J
1 G7 W* a9 p' L. z4 a4 Y; f) z
順便附上電路與模擬檔案
' X7 W, Q$ q2 j# O! h
電路檔(led_shift.v)與模擬檔(test_led_shift.v):
: ]! z5 T, w7 {2 R' O" Q9 ^
[attach]17025[/attach]
6 a* L. L: J* l$ [& r3 p
模擬結果:
' u4 K9 u! F9 a" x, G
(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)
) a! `: H. m, l ~
[attach]17024[/attach]
作者:
lucky
時間:
2012-7-27 09:34 AM
回復
2#
card_4_girt
. W: J t2 D' K0 {% k0 P
5 Z" M6 a* @! a% U# A" j* f
大大真的非常謝謝你的解答,我已解決,
1 r4 c" D. w/ [. V a! {
5 A8 P& R+ D9 h# c$ o. a0 R7 A
不過請問大大,不知你有無用過vericomm 這套軟體,因為我用xilinx ise 合成之後再用vericomm 把程式嵌入FPGA 但它出現我的輸出沒有定義,可是我在Xilinx 中的Assign
( V& X6 E5 m0 @ e2 h- G
) @) Y! L+ |! _; O' [5 t
Package pin 早把FPGA的接腳編號打上去了,可是在vericomm還是說我的led 沒有定義!這是為什麼?
# u7 h, O4 t/ q
" @. @. i/ w" |7 Q6 y) F
其中FPGA有它FPGA 的LED接腳,我把它打上去對應我程式的LED,但卻還是說LED沒定義。
- W8 W, v \% H
1 G+ Q7 i m4 v4 b1 h0 v
) Q0 S7 Z; R( w) p4 }
不知大大有無MSN可否給我讓跟您請教?
作者:
lucky
時間:
2012-7-27 11:16 AM
回復
2#
card_4_girt
5 ~2 `! _2 G3 \% V4 f: ~
' T+ y l/ w6 L* m
大大,我還有第二個問題,
0 k2 Z( Z% Y4 u) _
5 L Q# W$ p h4 g- U) t# x
我的程式在Xilinx ise 執行 在implement Design 中的Place &Route 項目,出現警告,它說明如下
8 G/ o" W8 b1 ?( l& g5 v
WARNING
hysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal
\, q- m$ j- T: S/ j6 p: r
WARNING
hysDesignRules:367 - The signal <reset_IBUF> is incomplete. The signal
/ `! F/ q. m! B) u7 Y; G3 P, J
這些是怎麼回事能請大大幫我解答嗎? 謝謝您
作者:
card_4_girt
時間:
2012-7-27 11:24 AM
回復
3#
lucky
/ ~; l1 m2 p# h2 i: B7 K3 a2 H
8 F& T$ P9 A0 G- _' t. l
抱歉我還沒用過這套軟體
: [5 ^) h) W4 g" f( _
沒辦法幫你什麼忙
+ j V/ S7 P4 V; G( K% d
你這種問題我還是第一次碰到
1 m1 `9 D5 a5 d' ]+ R) s+ v
照理說沒宣告型別或輸出入埠才會有這樣的問題
作者:
lucky
時間:
2012-7-27 11:26 AM
回復
5#
card_4_girt
# w" r# J# v7 M- p& B" H5 r2 S
5 j) C* V- ]( n( p" W
大大:沒關係,真的很感謝了,非常謝謝您。
作者:
card_4_girt
時間:
2012-7-27 11:46 AM
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯
- F/ Z2 ]8 \( ?# M F) P: l$ s
% V Z" G6 K1 j ^
回復
4#
lucky
2 D5 V' g; q$ h1 D# ?
" C8 g) S4 S/ X% \' A
你的這個問題edaboard或Xilinx討論版有人提過
8 }$ V9 s$ q: F" ~
似乎是有些port出現loading的問題
; ]! G- q: q+ W" F
1 {" Z& x7 m- M' N. T
: O$ v; S9 m. y. ~0 t7 j
可以參考:
% M7 X* Z k0 R' F
http://forums.xilinx.com/t5/Spar ... question/td-p/44794
(沒有用到或合成時被刪除)
3 V) [$ f* L* m, A" O
http://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910
(增加clock的delay time,讓週期變長)
* v8 X& X7 _$ y; ?$ M0 G& L
http://forums.xilinx.com/t5/Hier ... s-design/m-p/202469
(每個always block用不同的clock signal來trigger)
4 J. J, V( |1 E
或
) T- s" _* c9 S2 A. E& ]+ @
http://www.edaboard.com/thread64628.html
作者:
lucky
時間:
2012-8-21 09:26 AM
回復
7#
card_4_girt
[/b
" y+ y8 Z" K0 R* r
8 C: J2 r" T( I
大大謝謝您的幫忙,問題已解決,感謝
作者:
wet0830
時間:
2012-10-1 04:38 PM
我需要多一點的教學 非常感恩
歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/)
Powered by Discuz! X3.2