|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
, @ }: K. Q. S+ umodule s4_7seg(clk,rst,
! A" r/ c* M* X9 d
+ t; L/ x. s" ~, U$ b s0,s1,s2,s3,- I- h$ n. C3 u
% _$ ^0 T! \# `/ C
d0,d1,d2,d3,d4,d5,d6,d7
9 F+ W l' b/ Y7 c7 L; h/ N# `) K% k+ Q
);: q! d V! ?: U. g. G
. L0 v" V0 z) @1 {$ g( [ m V: B input clk,rst ;3 s* R* u- m5 i, o8 P* i
- K# A$ ]" `9 |" v, o output s0,s1,s2,s3 ;
/ `: W& u/ I, Q$ b& I* j/ }" Q' Y( H6 C
output d0,d1,d2,d3,d4,d5,d6,d7 ;7 E5 ~- s! o1 Y* O4 j) B3 E
5 a5 D; Y; ~0 n5 W. ?/ L reg [2 :0 ] state ;
" K% s+ r* I$ @; u: c# C! b6 p" K) I& z- {
reg [2 :0 ] sn ;
2 w2 t, G# J, v4 c1 t5 x
, t: b% T5 w: o4 o8 X reg [7 :0 ] data ;
/ @ _4 S( L* v1 M z; |) p3 |& k3 v
reg [23:0 ] cnt ;' c2 A) |) W! l, y# m- @( s
/ G% K" r! ^0 c; I3 s ! ~/ L* k- A, |* m5 H
t3 m( ^1 w7 u w$ [, ?* \ o
wire s0,s1,s2,s3 ;+ y7 ]; [" x& u) G7 T- g" V) w! B
9 {! t+ \$ d) c wire d0,d1,d2,d3,d4,d5,d6,d7 ;
' z: y, |6 }% b3 q% l+ D8 T6 ~8 ?9 d6 I' i0 F
assign {s3,s2,s1,s0} = sn ;
$ `: @& Y- j9 G4 r
3 a0 e$ K+ h4 z assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;. J* @* S- N* c3 O2 z9 I) i
/ f. i, X: l7 I' }, u always @ ( posedge clk )# N6 X! ^3 K9 `8 E! n3 q
8 f! g7 J% e7 k: r. f
if( !rst )
* d0 }* F/ _8 [7 i. u% @' E: p6 U# c7 ?& v
cnt<=16'b0;
! b" D2 D' I! \) Q: k, g: {2 c7 J. Z/ _, Z
else
j! s; m; E% {" S; o, x5 b3 ]
5 ?. G; C% y: j0 E4 C3 q6 B5 t cnt<=cnt+3'b1;
! l; L% m: d& O( U0 V- E
' ^2 ~0 F* i7 a wire clk_slow = cnt[24] ;
^/ y4 s* W. T2 R5 T
. ^9 n. y7 m; d$ @6 ]" P' ?1 P always @ ( posedge clk_slow or negedge rst )4 g6 I5 ^" |4 D
* ]% u) y+ F. b, a* V$ N* l if( !rst )) T, c) O8 u! z- }9 y( A8 U
* F% a! q8 m% ]5 q( Z state<=3'b000;# n1 W" `3 t1 a F, Q# t# h
! E- h0 m$ j0 S% g
else! |% [ D- Z; J5 W
9 ~# X, n( V+ e2 C- O
state<=state+3'b001;
- e' a& X, ?. o4 }8 e& Z; X: F( X8 P
always @ ( posedge clk_slow or negedge rst )( `3 t5 n! j5 @9 T# I) A
3 d7 i4 S' N" Z$ |6 M" ` }) y
if( !rst )0 ?/ t/ u3 X+ C
% d/ g! z& s Y: O; [5 U1 g8 I begin" g+ D- Z4 b4 v
/ x) [! ]: x. x( V. @9 l! f$ x, v9 @
sn<=4'b0;1 }8 \# w1 d F1 F5 _3 I0 ?
% v' R0 ?+ H1 B. A5 g
data<=8'b0;
+ E/ ]' l9 q9 n: P# ]8 C: X
2 d1 z7 Q6 x) w8 { end
( Q! `1 N8 Z; E0 u2 A& v
) W2 \4 b4 `7 g* n' X4 g3 V' C else8 t# G2 Z0 F! C
/ A) Y/ b" p: \7 i
case(state)
, b, J' j1 i Y1 B' n- f r/ | M: _/ N1 s
3'b000:
+ v9 V# ?$ l- x3 ^- I- ]& S
) e) k/ e) z) K A& u' S3 P1 K begin$ @' L x( ~* c0 A
7 Z" \+ Q1 D( \! k3 ]8 i7 O) v( a
sn<=4'b0001;
7 h. y/ z* z) b# N; f- c* _2 b( l. U/ r
data<=8'b0110_0000;
% M4 Y" P9 c# s8 P7 w: w% @& e
! ~' f! n' e" a3 _1 i end+ Q- }$ E7 r/ e
( I4 j5 k9 ?4 j5 {# G1 L
3'b001:
& E3 f* ?; m0 i3 Z6 Q7 @5 C( b5 X& k0 d/ b8 U) p1 r& k
begin5 ^/ H% X; R& u0 ?* S5 Z, g
" j% }% i1 N- j* W2 \+ R sn<=4'b0010;1 W8 X" k$ f& ?# S* I+ d
5 N8 L, H, L* g* J5 a! l
data<=8'b1101_1010;0 X# S* }% P+ g+ m9 ~) `# ^2 z% l
* { p0 ^9 @, ^ end
7 G$ R* Y i; e. B# N/ L
7 P" ^' Q8 n& X( |' J 3'b010:
2 N8 f$ ~8 L, r3 e% o/ W
. n; t m* o2 q; S( m& Y begin
- w8 L. q; ~" _- q) y; K O
/ C m3 r+ p$ g4 U: T! _9 I sn<=4'b0100;
5 z7 e- X7 j1 k o5 V- T
0 T3 x3 H9 j x& R, c! L; j% T data<=8'b1111_0010;2 y+ V( ]# J( z- ]) i
7 y/ }2 X- E" x8 N end
) W' }9 x* r/ V3 M. C7 t" Z! j( G6 S$ D0 z* ~
3'b011:3 m( W E+ n' l; s$ c
: M4 K9 r. }2 {2 ]( t; R2 ]1 @
begin" W- x, f9 H$ [( U+ e1 _; h- Y" E8 t
: `" T5 u9 o. \- t0 H: Y
sn<=4'b1000;$ m: C1 v' C6 h0 a' ~/ x
3 @" i8 f3 o( h4 F
data<=8'b0110_0110;
4 N. h& \! i: c; s6 r3 H
, z1 f+ }9 g6 C) F. u9 j! z6 E# ^ end0 _ K1 G! E) ], `/ j
. k% D3 r- C7 M- O4 d( i7 ]: l+ O 3'b100:
/ W* t" |- y. E8 X7 d) i
* S( e# z+ P$ v; ~; H begin
% k/ x" A. B( b b6 P8 D! c Y7 d6 h- q) A/ i" j
sn<=4'b0001;. H+ K( G+ M, T1 [9 l/ R
- c" B5 S, Z9 E% N1 m) w0 @ data<=8'b1011_0110;8 \. ]% I) B3 d* ]/ d; d* `% H: K; w
4 M; V' E: {9 p
end+ x* a0 ]- I: _
0 v: {7 r5 ^. `! A 3'b101:0 _" r' e* V& U9 L( q6 a
1 B& `( A% `9 j- |7 Y+ I begin
" f3 o; U, d! c+ z) i( t" V. U6 Q- s0 h
sn<=4'b0010;! P3 k; ]% U4 h+ \
; f% j* T/ k( J data<=8'b1011_1110;
- F! P1 u' q0 O, p8 Z9 t
& |" r4 c) t/ i0 q E7 T _ end3 A9 J, j1 F7 h' K6 P, p* h/ ?
5 w& E2 f Q7 E' Q
3'b110:8 I& c! g# X4 T/ x- A; j0 _
* ]" b8 t7 c# s( o begin- g% R) u8 J# j8 K
6 [8 A+ M0 e% [, r) ]( }4 f8 Q9 R sn<=4'b0100;" i% e+ B! k6 a: Y. o/ ^! q' B8 p& o
d' a3 ?$ |3 V4 C5 y) w7 o
data<=8'b1110_0000;# d! E: q( Z8 ~1 K, S
0 i2 b' A: x6 u7 X. B. W" x- r& ^& r
end
# c. b7 s* t0 ^: }9 n0 X! Q T* c4 p% Z* m% ]( W1 L { T: b
3'b111:
9 W- D$ z# n h! z2 i* M. e6 E6 V" S; F) y8 X" r
begin+ D6 C9 B- V1 V1 t: ]+ s T* c) u' Z
* m! I6 O9 P1 }* ?1 @3 C0 X+ M sn<=4'b1000;: ]6 v- f! d3 @' v
: T. `9 x, \5 |
data<=8'b1111_1110;* Q% [2 U6 r2 k! w/ X Y0 H- z
+ Y$ B) d B* Q) ] ( e. T" a t# k- J. U' }
7 \4 h8 U! x: @0 G end
2 Z: y. {9 n" Y" ^" Y& ?5 e
, n: G& z9 a k endcase5 C P7 ?, L$ _, z: ~2 `! D4 y
+ l0 y' d) u4 C$ I g% J6 rendmodule. H6 A: i$ ]5 R/ T" c
) w; N( }8 k9 ?3 q
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
: O X6 D4 k% a, \. a* X' W* m |
|