|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
1 H0 ^3 I' o5 u7 ^+ y# {) n5 ^, D: I2 p: X6 q0 k" l
module s4_7seg(clk,rst,# X8 b0 L; }: `$ ?1 }6 k. M! D2 @( q
! X; U+ u9 o- }0 ?% z
s0,s1,s2,s3,; ^7 f, K4 f- n2 H2 z
3 v) O7 z; E7 u9 z4 |: L3 b
d0,d1,d2,d3,d4,d5,d6,d76 K% @7 e. t. ~% m& p# h- X/ o
' y0 A" s8 ?) Y2 k" R) j2 M );
" O% b8 h, q9 ?1 T& Q2 q9 Y" X. g& C; L7 q4 f( a* W4 h: p
input clk,rst ;# `) q/ Z. m8 T
- H) z9 N9 k$ t0 D, Q
output s0,s1,s2,s3 ;. v% p" A7 z2 o/ K$ F0 F
4 q: o+ a A/ Z" g% i- {$ B output d0,d1,d2,d3,d4,d5,d6,d7 ;
" ^0 A1 u7 z8 F7 }( q, F1 w& o' C6 u4 u
reg [2 :0 ] state ;5 g# O, J. V) f) |2 c6 F4 k2 p
) z: r. z9 l! i7 Y$ T4 |# s
reg [2 :0 ] sn ;& D) _$ X) V1 C
1 ^* J6 m/ C8 M6 W3 k
reg [7 :0 ] data ;
& S0 E+ e0 H ?+ w! Z6 A" u
; A. t4 U9 l7 J$ B2 t reg [23:0 ] cnt ;
8 ~: D; {2 F: F8 I9 k
9 N6 `5 h4 f z! S% l+ Y- M( Z) e: z
! \ a) S x5 q, L. {0 W$ R
R! r5 z0 [) M [ wire s0,s1,s2,s3 ;& y4 V; f: z9 ?* E0 K3 A
6 O: q5 Y m8 m% o; }0 c9 t/ W wire d0,d1,d2,d3,d4,d5,d6,d7 ; , z& |& i& J. G: a0 ?7 H/ n
9 [9 X* P1 e6 ^4 |' E" f3 C: z assign {s3,s2,s1,s0} = sn ;) e: L5 E) k6 Y- ]" [; I4 t
9 r. _9 |* A, g1 x
assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;
x- Y2 j& {$ i Y4 t- a3 c2 L: Z+ j( d% m5 y: f% p4 B6 H% E
always @ ( posedge clk )
* P2 J1 U+ i# ^9 ]' r% E* V1 G6 `5 Z2 `3 O6 L8 G) N6 E' x
if( !rst )
. {' L3 O8 j+ j
* F1 o% L2 E3 w cnt<=16'b0;
- W7 [2 r' b6 h) F( _/ O+ T
) g$ K' B" k1 d3 H else
8 R# ~% v8 x: M! P& P
% F* y2 W o, S z1 n4 ~0 j cnt<=cnt+3'b1;
9 ^ u6 [, c) W$ \+ c3 j! Q+ D
2 x7 w- D! a- }( P wire clk_slow = cnt[24] ;" P! \8 A2 O3 J
* _* i; x: l/ S) W* T; q i/ w
always @ ( posedge clk_slow or negedge rst )3 C- B/ f7 u. T
4 k& i% I% B: S+ q1 e' C if( !rst ) }( N4 e- ]# P
9 S3 K5 m" }/ y/ @/ i! C, |$ j* C+ i; g
state<=3'b000;
: C2 H1 i, c1 X& G' f6 n8 T9 b, S& c& [' {
else
% l0 ^6 i# m l# W* Y% \. v* D
* q$ l# w% M; J; [! o state<=state+3'b001;
& k* N& q% J: o; e" Z+ m: ^* X
! m' X( j/ a+ F$ Z; P; U; Z always @ ( posedge clk_slow or negedge rst )
4 J3 {$ Y8 D) l3 ]( k
: Q Q, \0 q# u* m K0 ? if( !rst )
5 x9 ?( u( F1 ]% p. ?; P' f, F, n6 J" B+ w! k+ ]+ t" W
begin, W+ L$ A2 l+ b% S
G% [0 D6 n% U, x; H$ X
sn<=4'b0;" m5 a+ q `- v9 ~3 X! s/ O1 _! y
$ P) j& @0 f$ K n data<=8'b0;
2 O) c: g: [1 ^$ o0 ]; i! ?& x- G
6 j. y$ T& { _4 z& h end
r) K! W. I5 }! }- V- T% m3 V/ M3 D X) K: N+ `
else: }) Y- B* g& M/ c/ ~* x4 `! z
9 ^" s# Y) L# r4 B
case(state)
7 b" E( a4 @* j6 e4 S# b5 w+ t, N/ }5 \' b
3'b000:
z3 N/ q+ ^/ b) b) ]) q7 K8 l/ K
% X' k ?6 J1 w" D5 N$ u begin9 s- H/ P* h! Q5 J* _
6 X( T8 V3 J/ z- d
sn<=4'b0001;
. g6 W: s2 p$ o- R2 a2 \' \$ d0 a9 P+ b
data<=8'b0110_0000; s, i. U3 I' ?- o* k
$ m; V$ m4 r$ Y, ] ~4 F! m2 b
end2 H( T8 t/ O; D+ e" v* `* R7 O
7 g1 G7 N7 f6 [
3'b001:& c) ?6 [$ m0 W9 r3 p k
5 ^" D( b6 S9 ~6 U- l& G W
begin: o- L) z8 l4 B
+ B) ~5 l M z$ S+ O
sn<=4'b0010;
' D- c2 [: R: j2 q
! j4 V5 d8 G9 h( W4 a! \ data<=8'b1101_1010;
9 ~3 G0 P! B* F+ B
. N- L1 e! i/ u- h% Q end
. }8 N2 Y6 c) F2 X+ X, U+ f4 l
# I* }' k1 t! O- ]$ x, G) }, W2 k: o 3'b010:1 y# I+ k$ Z) H# Z, I
2 _( Q$ N5 x* U+ U% r' o0 C begin
' U( I3 f2 e$ S% ~6 v# W9 T4 f
: F: p& c+ I& _ sn<=4'b0100;& {( J2 A$ q @; M5 O) E
# H$ ?9 I! B6 y$ [3 N) i
data<=8'b1111_0010;9 r3 K* R: s# [ A" Q; D
- T( G& j/ \0 Z+ q$ h6 P$ m8 j end
( r* M- R8 q: y* ~; @4 ]8 ?
* J9 H4 G/ O, @8 e+ h: a 3'b011:
! W4 a3 z {5 Q0 q
$ ]6 [4 e# @) K8 E$ @$ { begin
! l% @" h. I& T7 r; ^. o5 E4 m5 x$ {+ l5 J5 ?. l$ |
sn<=4'b1000;' {, e' _% q0 A. w: L) q8 j
- l& Y# a* x$ N2 X F" m, t
data<=8'b0110_0110;& B) _& S+ P9 ^4 ~
* M$ w% s- ]$ z" P end" a! m w% S k% @# n6 X7 Z
6 i) t: ^+ H& z
3'b100:
& V3 f( H2 a. X: ]* K! Z
/ n1 h% |9 ?! H6 V$ q6 ] begin" T2 A. P# S( ?6 b9 v7 ^
# Z% `0 q* Z3 V
sn<=4'b0001;7 O& E1 C) W- X! P8 S, |
" g8 b, i7 G5 [" j8 H$ t
data<=8'b1011_0110;( W4 }9 W, C2 D* |1 {( U/ Z' t
; e! R) } A! e2 K, ~8 k/ n' B5 @
end0 Z* ?$ c/ k! ~. j
& T' w& A. k3 s: Z, l1 U! H
3'b101:. d1 k' ?% y4 l- M# Y' |
v Y' h8 d" H- `) m0 L# q begin$ H) s9 r* h# G8 `/ K
8 U5 M* U9 ]9 m# [
sn<=4'b0010;" V! ]/ P& t6 \; U V# W
8 }3 `: g' q; |: D data<=8'b1011_1110;
0 g/ }" y3 y: _1 ?3 L' i$ T4 x
0 d3 | r1 ^( i) h- B end6 O1 X) w! R# z" o$ ~2 A
7 R+ P" y5 a/ h0 X+ Y0 h 3'b110:* C0 C& c; Z4 F- ^9 M, }$ x
$ k9 J V# f% I: t
begin
2 [8 Q, P0 G4 y
' o% G1 E1 i5 r) ^2 c sn<=4'b0100;6 L; Z7 O1 X, f7 H$ l0 ^
! f8 W3 D7 T' e; Q7 |- g% t data<=8'b1110_0000;6 u H) r& J. k. M
5 b2 H6 y: }! a9 l
end
0 k+ T0 }0 m0 J1 c* d1 X+ U5 [& h5 m: w7 F
3'b111:
$ P q: l! d Y. x
4 h" n5 e4 q5 ^: _4 I begin {# c& p9 B' I* B; S, `$ f7 J
! p7 \* T0 {2 T# e/ Z1 D+ D sn<=4'b1000;
. q" y0 `' y- L' e7 z6 x. Q' m0 x9 [# x2 w8 J0 _
data<=8'b1111_1110;
' a; c7 Z2 X5 k* S, i' H. L
* y P! {$ d' i/ M& p4 @/ Y, [
9 \8 {2 {) M W4 e' q3 M- G
: a9 t# m5 d7 F; K end( m3 T, _+ W, E
6 d! ]" I4 h' f& \8 Q- k* [( \1 \
endcase
2 {+ q* z! O! \; J" Q7 D3 D: P
9 A h0 _% [3 E {% f% Pendmodule! z! u& J, C2 @# h2 q8 }
) z2 E/ e q# k' t
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?* @4 w f9 B1 w/ P
|
|