|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?! ~ Y( k/ F0 I
module s4_7seg(clk,rst,
/ F' J" k% }: q3 i4 l ~2 k: r! A0 z. f1 v
s0,s1,s2,s3,/ ~$ I' }4 w5 f7 B, I. a
8 g. A+ a1 V6 Z: p4 J
d0,d1,d2,d3,d4,d5,d6,d7
# v; a8 L/ v- M/ }/ T& ^( [
4 Q, x- X* E; R% \ );2 C5 Z- k4 \, F; T
' r1 Q# J! G5 e, S' G4 |. n$ ^& V input clk,rst ;' s' H5 s* E( { Z8 d& _6 c
: X+ Q& Q$ K' V: _% y3 J+ P output s0,s1,s2,s3 ;2 Q; k) P( Z; `% ]
' `+ t. d ~" z8 }* M& f H) q# \& T
output d0,d1,d2,d3,d4,d5,d6,d7 ;6 M* M+ Z" M: ~$ O1 z
7 j) S5 }: p* Z, Y: O" Y
reg [2 :0 ] state ;
! K: a# ~% W# m7 b( v/ E8 j) R
6 d9 `" [" g2 `% }$ V reg [2 :0 ] sn ;, z6 P7 _ Z& g t9 B% [
3 n% W. \6 P, _+ r- @/ b) D reg [7 :0 ] data ;& g* n" S& p- v3 |" \
5 z9 g2 i# O9 }. R! I
reg [23:0 ] cnt ;
- l$ v i9 F8 H
/ A0 W' _9 q0 v 2 O3 p# G& x k( D; D
) p; f- u/ p2 w1 {
wire s0,s1,s2,s3 ;
- C7 c {, d9 _& @, l
I) e6 V/ Q% N( ^, O# Y wire d0,d1,d2,d3,d4,d5,d6,d7 ;
; H* u0 C* K3 y1 ? v6 a m* h' Z/ b) [! l/ c: b
assign {s3,s2,s1,s0} = sn ;; I0 w: `0 ?/ D/ i7 J5 M
% l. n. z& X! }4 o assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;" B* h) [6 c7 N9 v+ K
' m# ~# }. ]7 Y% \( R8 R
always @ ( posedge clk )9 M4 Z" p3 E, N$ U2 Z: n7 Z1 O
+ T, a# v$ C& E8 C: [
if( !rst ). a a, I b# t% V. q0 d
: p* u. Z( B+ l" {% B* z) R" z( c cnt<=16'b0;) Z2 s% i5 K/ b: d, D! D( a6 T2 I# S
" x4 \8 t8 J" D+ s. Z7 W- {3 V else
! p' u, g0 X% _9 U9 V6 c. H0 G: X( ~
cnt<=cnt+3'b1;; `' h7 X) R9 K4 m- J& l I
5 b0 B5 ]0 ?* b$ r) ] wire clk_slow = cnt[24] ;
' ^9 p; }" o' u1 A3 h
: k9 n" P: ?6 H always @ ( posedge clk_slow or negedge rst )& O; ^9 p- z/ x
# S6 ?3 D' b' B5 \' L; q
if( !rst )
1 A) I$ r$ }/ ^! v C- B+ X( Z3 ]
state<=3'b000;, ]# f2 \9 H1 w: z: w
$ r8 j, C% j0 ?" T: E else
; [& u1 y; B0 n! N3 h" B2 j
( L+ ?* D% p0 ]4 R& o) | state<=state+3'b001;
" a4 S+ T) `' V- v) K5 l4 b8 T" c1 L% s0 Y7 [
always @ ( posedge clk_slow or negedge rst )
& s2 E7 f, A1 s9 H2 D5 o! l) g. S; m2 q0 ]* O1 u n# A$ a
if( !rst )6 I( J% y6 r1 [" m5 ~+ ^
5 e6 X3 _' M. ?) ` begin* U5 ~1 x2 ^! E
7 X1 ^" s/ T5 Z4 v sn<=4'b0;
" Z9 [2 m$ n9 F' ?) M
5 j4 N+ B" ?1 k" O3 t/ @ data<=8'b0;
% {+ p+ a/ a' z0 ~8 b4 h: W& O, O: g- y6 z; C3 O) g
end
* Z; ]! K1 w4 E! A. Y! u7 e/ W% b" \" P; i
else4 m4 u: P) p7 D% I* U6 x9 t
+ Y' w! d" x4 h4 F0 o& E* m" Q case(state)
: g. M* N7 g4 X2 t; g8 V7 g+ ]) B. K0 ?& T. c
3'b000:$ p2 C8 Q: j/ u' |: W! d! c
* u! @+ R2 @5 v7 `2 I begin( f$ ?; ~, `* [( `5 E
" p) P' [1 {5 ]. F0 H
sn<=4'b0001;
7 `5 S# K7 r1 a9 C7 m: ~; G$ f$ v1 y/ N& Q. }+ H4 ~# d. e
data<=8'b0110_0000; + ]3 r$ C3 i# z: J- i% B, z6 z' j& j
$ g( a4 x- o7 s. u0 I$ L end
7 w, T* T6 j) m2 u5 H' s- Z1 a. x5 A+ O# b& C9 Z0 N2 F \" V
3'b001:
! _4 a7 G- Q+ _5 J
! m: d; |; k& p: d begin
9 n0 j" P3 Q; I, B7 b( z- x
$ t: k: E0 f/ b- S" ~2 Z sn<=4'b0010;* O% Z) u) n3 a+ U
# o$ W7 t- S7 w7 Q! u$ \ data<=8'b1101_1010;
2 Q* \: j1 x" b$ R2 e5 R1 r8 [3 v' _" j+ U' Q6 ?8 r2 O" E
end
?9 o j- O( h: J$ p/ ` q3 w* \ G* Y9 u7 O: `" P. Z3 v0 U
3'b010:
* p! l- [- b0 h) }& {4 }$ S# {- T
3 _" t5 o1 c$ w8 { begin! D. r6 U) {% K' |
) m! F/ i9 w2 W3 e sn<=4'b0100;
# o% d O8 q4 R* J
7 }- Z2 z: ~; a/ ? data<=8'b1111_0010;
" s7 O' \; x5 D
3 z: c8 h& f5 d) E end
4 c; d1 h% J8 E' s/ R# S
& [' d. M5 T, L, D7 F 3'b011:' H* z+ K+ M: j5 A0 Z% K) B
) i7 [% c, L; c7 Y1 l4 U4 | begin9 g& o L5 ^/ h ]
$ { y) v9 I1 |7 A sn<=4'b1000;' i' E2 R" ]6 R
9 n( x8 p3 s) k! k+ S' m7 o
data<=8'b0110_0110;- X/ Z: Y, |) Z2 L$ k8 d
7 j, U1 t2 w! |% p$ I$ z/ A end- K9 V$ r9 x$ O% W" P* L7 y8 N
3 K- a, E% c+ O% \/ ^; f
3'b100:
6 O0 b8 D$ Y, N6 h( G) d$ n9 y' o! E! @, n
begin
- z7 U# P1 z( s# G1 A9 {( p& a" R! k' \! W- T
sn<=4'b0001;
/ D! V1 z9 u- x3 Z/ a9 C; v* B) q
data<=8'b1011_0110;' M1 \! y8 t$ N% _
, J/ _) e% Y% C+ ` end1 Y) ~1 g! \7 [0 k) `
) R0 W/ E( M7 a5 [! i 3'b101:- R! H! ]3 Z1 X! C: E0 M: {
' x% [/ A- y6 o( y9 u ^ begin
# h* n! T* H* Z! c1 A- k$ V7 v. \. p0 j1 { |4 h9 s* k
sn<=4'b0010;) P% v) p7 x7 s9 U+ f/ B3 u, y
5 n8 n5 M* U7 t& I1 I0 E
data<=8'b1011_1110;6 W* }+ `: j7 @. E& j
" f* A+ k$ d2 X
end
0 ]% @4 @2 h0 r8 l0 U* j; _1 _0 F) W. k' g
3'b110:
9 U1 D. ]- l9 {" D4 [
, r& x6 S0 `9 e _+ y begin8 \; T- K" p$ r" R) @6 \
# f5 p2 `( M6 M! q( O3 ^
sn<=4'b0100;9 e4 i' Z" `) B% v
7 O8 j v% L! S. H! h
data<=8'b1110_0000;
, d% }+ J6 x1 |2 _& l
& i- C, h2 o) N% D. J( n9 {- X end% C: G. m8 I$ h; R( h) |
4 ]9 q! ~! D* E. S
3'b111:; `( _6 ^5 v! w+ Z, P e' e& o# ~
: [9 D9 t U( ]3 D! i2 D7 p
begin
6 ?- f$ T) ? D4 w. K0 K0 Q+ X& `$ y. s2 f( ?# [. @. c2 l
sn<=4'b1000;
# l: I/ ~+ ?$ z3 G W+ l7 D8 y: d( A2 P+ C- j
data<=8'b1111_1110;
4 V% k; d) G4 m/ [# S- o- F( _, u% p+ T Q! Z" R. @
' s8 P7 j* R! o' H; \5 c3 R5 F7 a3 _/ |6 w/ [( J. M+ N* j
end
. w9 p) H6 i0 W/ t
~% v: s# R/ @+ w; L7 l endcase `3 V# Z g: l) O
0 L# B; D( U& kendmodule& Z. G4 C( w v8 o' O5 }) d1 ?2 c& l
( j* d7 U2 F# s1 c: H
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
5 p, r7 g' C( Z3 r/ T |
|