|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
8 B- a% j" \1 H/ K6 M4 u) z- N9 d @3 e: O* G' c
module s4_7seg(clk,rst,
7 E: `0 u1 m( v& y1 g9 p! T
& O( O4 M/ H! D/ ~8 ?2 f* { s0,s1,s2,s3,1 y/ o4 d; A% a/ O/ H! ?; g, L% f
1 V5 [5 Z9 j0 A' {8 U5 ` d0,d1,d2,d3,d4,d5,d6,d74 Y; ^0 j0 L7 h. w9 E0 c& V8 N
) V5 p$ H6 G& C3 B# ~0 Z4 ]
);
z' Y. V( n0 I
: g% J7 i. I( i" k input clk,rst ;7 v) R7 ^. P# e$ R3 d' t
o* x# U) V/ C- {, h
output s0,s1,s2,s3 ;
. Q ^+ d0 g; x! E3 d
, G1 n" @; h( I) N output d0,d1,d2,d3,d4,d5,d6,d7 ;. y2 ?. K0 r4 }& F4 t
/ e/ l' Z5 s) i, i
reg [2 :0 ] state ; b: O3 G2 S& c* K; ] S
5 \1 E% v+ W( r4 j+ Y/ Q reg [2 :0 ] sn ;+ x9 y# Q8 x4 ]" t- N. r6 p+ o" w9 t- t
7 n% _( i9 p9 F% `
reg [7 :0 ] data ;
2 m/ u5 X5 B& k3 p; e+ X
7 J7 f6 [6 Y5 ?* T4 T, C reg [23:0 ] cnt ;) g2 ^8 l2 j9 e7 b" `+ r: K/ x
! ]. r# C$ y0 t& ]! Y4 }. u+ p( ` * G- J% f( x* L( Y
1 j* ~ z% x* r/ B# ?: @% h9 }
wire s0,s1,s2,s3 ;
, [& {6 i/ c" Q$ W$ V: m
9 @/ @$ E0 k9 h wire d0,d1,d2,d3,d4,d5,d6,d7 ; r/ r2 k0 D7 I9 P6 _% [: ^
1 p( y: K/ r% ]# c% \ assign {s3,s2,s1,s0} = sn ;# e- k8 q( h; Q4 U6 A% @( j
) A: W3 _& v2 n( y) k; R+ u
assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;: E) E1 R2 E' g8 D
- R: G5 \ ^7 D" Z. ~: T always @ ( posedge clk )
0 M2 g5 I% R; f5 I( O# e! Z# L
8 F. O: T0 u) g4 j, d if( !rst )
9 Z( V! z% t- j
( R: K& ?. D. F- S) B) | cnt<=16'b0;& O( z$ W' d# l+ {3 m2 z3 R
, v9 Z* r3 z+ Y+ b+ S& U; G$ S
else
1 v9 U9 F# Y* t m! ~% u+ }
3 {3 e- i/ ~+ Y9 }9 |/ d5 X cnt<=cnt+3'b1;! e/ i( n9 K6 T5 N% H1 M3 ?/ X( ]! P
5 ?$ g. N# }+ m; Z
wire clk_slow = cnt[24] ;. x/ i' P* \/ [. t+ G+ r
4 ? S' N+ k2 K% `0 B9 i always @ ( posedge clk_slow or negedge rst )
2 j% h0 v' n* j) e( s' ^
. t* c6 i( M0 z) q! q: o U if( !rst )- \' L7 z# L& Y! Y
& a! ]# |1 u! B, _) ^5 A' U: M
state<=3'b000;
! q$ y3 Y! U5 O4 {6 W4 {+ o& E
9 b; ]8 d }) I/ h! L5 { Y else
8 v! j8 u. I$ q# c; f
/ x; q/ x; R3 A* N4 n( O! F state<=state+3'b001;; L" b6 }6 j. k' J) o/ l
; n* L3 ^) e3 @8 S+ s7 p" y always @ ( posedge clk_slow or negedge rst )
. A' I+ r/ x. R) @- ^# y- c) ^: c
- \$ y* Y) J$ W if( !rst )# Q' O" a0 M0 b: q
$ K9 z6 X: L/ t. B begin
, ?: ]& Z2 a3 z6 [8 d! R
- p; u( @9 Q8 B( c) T3 ` sn<=4'b0;# G: f* S C4 p- r# f
6 G; K. c8 T2 |* K$ Q
data<=8'b0;# q1 T' o+ ^' B# W6 U" ]1 d4 @
) G. K: M7 x$ R6 ^5 B! K9 W$ B end
/ z F2 d( w- A$ d( e& S
+ w, _2 E8 Q7 e; q3 x, D# @ else7 \; j# Z5 t) R8 u
# J1 E; d. i# T' a7 b4 A; F" v
case(state)
- |6 @( {# Y- }
) z8 D4 w1 ]! c4 w) R; B 3'b000:( R1 p, [$ o9 B
! E6 t3 L: p1 Y9 ~ begin1 Y/ ], R9 ^" y V9 v4 \/ T
9 @4 g6 P3 [. v# p. x* h# v3 W
sn<=4'b0001;0 m" |0 {6 c+ I' s5 _, \1 l j
2 i2 s" ]4 F' P! M @
data<=8'b0110_0000;
|% o) X0 N4 j6 a' T5 A" _" k9 K( z1 u; F
end0 o/ f) ?3 i4 W
! B& \' x$ M2 E4 M- V% b) f) D( M! A5 X
3'b001:
z- [# I5 r$ e- H, L
4 g2 I2 c' b% B$ n2 q: C begin' h. O, I3 C6 @2 g D3 D
2 U M8 G) G/ _8 F+ H sn<=4'b0010;1 e' T2 X/ P! [; `& A3 C
; `) l9 h! j. e6 r# i3 V data<=8'b1101_1010;# v7 I8 x& s) W4 q, y8 y
, h$ Q+ u) H" ~) e9 n end
+ }% \! J# X; ]# v9 V: |' p
1 U. K# r! Q$ l 3'b010:. `1 u9 w- ?: l6 B/ p0 I9 _
) X- K- G& L' |2 Y& N* W
begin4 Z- z2 l: J6 H( I9 z
7 T) {9 {% o. C6 @4 Y/ f; X& U sn<=4'b0100;7 C1 E: c+ x6 O0 _
' u' g4 C- A" _7 h' b7 u8 C" k
data<=8'b1111_0010;; R% X* J2 e {4 ]
* l* W" A& Y" d5 k& \! I, a end
# I/ e2 A; [) P1 T2 e0 e/ C5 y3 c J9 U
3'b011:
; X( q3 e: R! @3 a6 P: t0 |4 t4 i$ w% {5 x9 X/ S5 {' o0 H8 U: `2 G
begin
. C% @% c5 x1 X
2 u% Q: m3 K4 Y sn<=4'b1000;8 [ v5 _+ K2 T: d5 w# P" b
3 c2 t/ c& c. Y7 K* u. m; K' t data<=8'b0110_0110;
+ O6 n5 n2 y X+ ]" D% ^" l; q8 H8 u" V4 r5 {
end
# z. A+ ?9 l% y8 h) \! S0 E! A, ]0 O
3'b100:
- T3 ]. M2 E% [+ t- e1 c+ `, V/ }: X6 Y5 l& M( [
begin8 x% r) k3 }1 l6 g L
8 n4 G( p M- F+ `/ Z) _+ C2 ?7 E sn<=4'b0001;
1 E& G/ g9 n2 {! @* R# W6 G2 U2 @3 R0 ~& D- }4 `! Z5 N
data<=8'b1011_0110;* s' H8 G) y) f4 n! E( Q& |
5 F, w5 e9 I) V& X8 i4 ?
end9 C: p; e9 g+ j+ n. O
( f% R5 T1 H5 y' n. z$ Q/ i% V 3'b101:/ R$ N$ |: f) I& I3 E- x
. E7 [+ r* u, k) S( V
begin
& i5 c. {6 R# S6 e3 s! C
0 A! L5 U& W, B sn<=4'b0010;
- R1 j4 r$ r' X5 w: C1 J5 l* P J4 _' a* w" a3 d5 U
data<=8'b1011_1110;
7 @9 e9 P0 i7 r7 ~9 H1 D5 `
}+ a& G! r. k" }5 P! Z& _5 Y end5 k( H A. p7 _5 J" E1 m" Q: x
; b$ _8 `' y, D" ]" a 3'b110:
9 l |5 Q; ^$ Q. Q4 M* N r5 W) M- l
% n2 H' ?+ D- n; c begin
4 x$ d& @0 }6 z3 U( Q' _0 f
2 e) Z, A- D" \ sn<=4'b0100;" d, F J8 i" z* b5 y3 I0 P
8 I/ o v$ c6 W5 T$ R data<=8'b1110_0000;
) P/ l9 G* @6 M: o8 g+ o. \- B8 ?
& z/ `5 I# u/ [6 m2 m end7 m* {+ } _! U% h2 w" R0 S
7 g/ v4 H3 q5 U! y) T+ e
3'b111:
& j0 V1 ?$ X% a6 p4 W% H3 B
) _" m7 g2 c: }1 I& D begin! Q0 l5 l& r- c9 i" h0 N( D
* ` s5 p* O; F
sn<=4'b1000;
1 ^# C7 q6 v9 A0 h0 J3 s' }& l5 V2 R! u
data<=8'b1111_1110;
& _0 F6 _8 D Y' B8 |$ T
/ S9 f5 N- Z0 h4 {7 p8 T
4 l8 M y, H. y6 h+ _ ^9 ] l. H# X/ m' j" O6 L' ^8 y
end
7 a+ u9 N8 I/ n' O8 h" X
* r" A# ~0 Y2 B* I. \% b/ c endcase5 }( H! u) }. a& _& [
, X. d8 C s3 q% N( b8 M
endmodule) W' S* m6 M" {$ P4 K
4 M/ `& ^8 q$ e* Y. c
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
- _" O$ a8 u) G# { L |
|