|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?7 C: y/ P6 k% a2 `4 B3 b; H
: |. b* L& |: ~4 y
module s4_7seg(clk,rst,3 Y8 f! }) i8 _8 Y) U8 w6 ]- ~* Y" B
; S" F/ l1 q% A: }( ^- e- f; X
s0,s1,s2,s3,' Y$ w5 E2 c$ a6 }4 g- W5 y5 W
5 K& x& e, h4 l( B: z" v I) n
d0,d1,d2,d3,d4,d5,d6,d7: S) e* J/ v* I# U- A
" r @6 ]' c+ [. ]/ h8 i" p
);
" w8 V5 h- w$ L9 E9 c' b: y' `: a& B) J0 g# i% X$ [2 B6 N" P
input clk,rst ;2 R5 B1 G5 L% M W! s+ f3 M; v/ B' R
0 D+ B1 [- q" Z1 E4 i0 A9 v
output s0,s1,s2,s3 ;
& R v- h K4 L( e/ X
3 H5 ?. F, y% t* m* z1 C+ z, ` output d0,d1,d2,d3,d4,d5,d6,d7 ;
}# M! K6 ]4 t, r1 T+ L7 t( m% `/ e- t+ \- U/ X# C$ r( @
reg [2 :0 ] state ;
% z6 o5 b" v( I" J
W7 l! h% _0 X, V- L reg [2 :0 ] sn ; d' N0 x0 M" {
3 ?. a% i1 T$ [0 X reg [7 :0 ] data ;. B8 h2 Y: m0 o# I. s
; O n) L. y5 N
reg [23:0 ] cnt ;5 z) A) d/ C% ^3 p
) U- T0 {3 O" e/ A ) m# n: N7 a# o8 r# E0 S6 \
+ W6 R- l" N: m* R0 ]5 S+ O8 _ wire s0,s1,s2,s3 ;6 ~, P2 {# t- H: S# J) i$ F
: k. U, C5 n8 u1 m wire d0,d1,d2,d3,d4,d5,d6,d7 ; 7 E. T4 U1 w+ R, J! V) i
+ `& e# q% K0 ], s assign {s3,s2,s1,s0} = sn ;- _ `. L) }) H0 \# B8 Q
4 f. n3 M1 B, A; _8 z) F- j" U# b! a assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;
, [3 ~4 D; m6 M4 h1 ]: X* n2 E9 Q
# M$ W+ ~& \4 C; A always @ ( posedge clk )
" z4 [& v/ a2 Q2 ~6 y; m( }1 v/ I/ G8 K% V& U( Y/ V* I7 T1 H
if( !rst )4 f3 s g% ?1 I% H* G' U5 X5 z
. X( ?. A# Q. H; g% S \8 z/ L
cnt<=16'b0; w" K5 k5 g& h( b2 A+ ~ h4 D
! D+ H0 m2 z1 Z! T4 g8 f1 b" M- H else) ]$ H6 M! U) b. n2 |+ U- l
+ Z \6 r; U0 m! Z. S: h2 F& f& F; v cnt<=cnt+3'b1;( I B5 c- Z8 N5 k2 w0 ~# P, J
, T; [: q) |- k
wire clk_slow = cnt[24] ;1 v; `$ A3 e% g. s% U: t3 Z
! `8 [2 g) v$ N9 ^ always @ ( posedge clk_slow or negedge rst )* H, j4 q1 X7 H7 f8 e
; C* C* D# ^) g& K0 q+ l2 {5 K if( !rst )
6 X. G2 C. F5 |# a1 X7 e! s1 t! M3 w; @6 g1 h
state<=3'b000;
4 ?3 x% h8 L" L& O/ Y6 J
0 b# X5 q7 B6 {5 [ else3 J; ~- Y0 ~& `; m3 j. r3 i
3 b. O, N4 _0 {4 N2 z, p/ o
state<=state+3'b001;! l; [+ R9 ]. c' u, A
! r3 M, @# X/ e/ s" @
always @ ( posedge clk_slow or negedge rst )
* {, q+ x# y$ v- {, k' \5 {" }9 _/ B, m7 I
if( !rst )$ P, j; n) d( e/ U8 `% {0 B
) Y3 g+ P& }# k
begin
: s; w4 P# T+ I& n% n9 L0 b3 X: s
3 R8 s( g9 t' C( f+ R& p' L P3 F sn<=4'b0;
$ Z1 L( V$ _# y9 m. i+ X; B4 {6 x
data<=8'b0;
( b' I$ Z) @% Y3 e/ @ L% W! l0 X1 r/ S# M3 u+ r+ i
end
7 J9 ~' p* X9 } t+ o' i0 {$ u1 I+ I( G/ J' v1 T
else
3 Z0 n, j* z5 W& x% e2 Q8 J; ]2 s' e3 |5 R+ |3 C! T E
case(state)
. }1 E: T" n. e4 g z! Q& c6 i
{0 G7 Q) T4 j 3'b000:3 o8 B' d5 {0 }/ [
& K4 N- t0 Q5 A
begin
6 j8 g$ ~5 j: Z5 h1 H3 f' `; {; v+ ^$ [/ S
sn<=4'b0001;+ r# m; k% Y9 Q n
- ?8 Y# w# V% K% R
data<=8'b0110_0000; , l/ ?2 @& p1 B' h/ R2 t- t" [# E: e) _
- u( c: g! I9 W1 p end
9 |2 c, i7 \7 N( O5 g/ a9 V/ g' k7 Y8 Q/ S
3'b001:
) G' J! E7 x0 _9 L
% @8 x: `( Z/ q% n) R% s begin7 S2 U8 I' a" d' C0 H0 a
( M' T/ m4 |7 n3 Q5 t; ]% A$ h7 p
sn<=4'b0010;9 Z. }/ l) [ t/ M. _5 I8 r
- ~3 K& ^' C' ~( \# h data<=8'b1101_1010;
( O2 g4 a2 {! W5 ] [7 o
0 C( w( L2 R6 T3 p V. _: w end! G; n6 v' L4 `7 N0 d
( g. c5 z; h0 `8 w0 c
3'b010:
4 t0 L: |4 m- H4 z3 r, J- a. i0 K# {) f2 H* s
begin* T0 Y+ u0 ] z; O6 c+ |
. @1 {+ \, p0 E7 g- S# Z' `/ o: [/ j sn<=4'b0100;
% k8 s% H0 m, z1 O2 k ]% J& C# |3 b( w. r
data<=8'b1111_0010;6 B: L; Q3 I) Q/ o$ b, z# g
8 j: t5 T3 w. T m5 K$ \9 w+ F
end
# R7 O% s; \( L5 D! |2 p
% t; q# Y, z( a* W0 @2 ^3 H) ? 3'b011:
T- U7 N+ n0 l
4 l" b8 r% y9 @0 o" S6 D begin- s/ v$ P* I& _7 v
, e& ~0 A O) k* {8 l
sn<=4'b1000;
7 h& A" i; C' V/ k% b$ a" R
5 Y4 a7 M6 V$ T; x1 O6 s" z" A data<=8'b0110_0110;4 b* a( h; _* L& i! h* @
, u) c9 M& C* i
end
0 c& Y6 f! u6 w9 H$ O8 j9 V
8 Z1 X3 A. u% k: L( l+ F; j: x 3'b100:3 d+ |$ T: P/ L) r4 T2 I0 N
- B. \# F' ^- D$ e; {5 `. d0 V begin
! D n. M% |9 B8 ?) h, m( ]& v, U- t
sn<=4'b0001;
# u4 G+ ]3 b) o/ {3 q/ G w& B, ` D" d$ H8 D% X8 g
data<=8'b1011_0110;
/ V1 a8 y3 X7 ?! `4 n1 r* W9 ?$ _ @, j- ]7 N- d! x
end
) ?9 D4 i! g0 A y
1 C* \( M8 Z9 S7 E, l& l$ d+ e 3'b101:
+ f3 u* N7 y7 y9 q# c; v
& J, h0 Z) p8 n1 G" c begin
q6 e: O( ? o2 X- W4 l0 Y0 V5 \% Y( J( q+ L: G8 j' x/ v
sn<=4'b0010;
+ _2 f! z% J! t
/ Y" B2 }0 G3 R8 k data<=8'b1011_1110;9 k8 {/ B8 g' G) g3 W+ g. h0 p
& }( N, A. g! d) Y5 ? end
% w3 k- K5 C3 O- d6 t( U; R& i2 c4 K; C P7 Z
3'b110:) Z" C$ G5 k6 p Z/ e1 g4 ?. q
9 L% l% K3 \0 Q8 W* b1 c begin
" k$ _5 {! y* g0 @* x o2 {
6 @8 N, O# e, \4 t sn<=4'b0100;
% t3 V3 t7 }. R, O5 z! r# ~$ Q: n, N* {9 ~
data<=8'b1110_0000;7 V% Z* g* U9 S4 O
- _ v) ^& @* A) h- ~5 Z/ |; a' m end9 Q" R1 N- |5 S9 x4 m0 d
, G* i2 m" }7 {" h) k 3'b111:) Q. v# F, N) B1 L
3 p- g' z, O6 N- S2 v& x; B! _! n; d5 { begin
) {3 h2 H5 h) P2 _% V1 a& R- s
sn<=4'b1000;
6 t9 D3 H$ I- j9 C; F: h5 B) @) |2 u, u( ^' l0 X6 ]
data<=8'b1111_1110;
, w- j- }/ y* A* c3 ]% b$ ^4 J [
9 a) Q' H& ^6 b% @8 {; u" i
k2 L8 N3 ~( c- n; x: ]. p" W/ B: z end+ _, f1 @2 ]: y3 g9 W0 O
0 u7 g5 c* H8 u( _. O- I. ^* u endcase
9 A- U5 f" Y& r6 Q
% C" Y7 |- |5 Y0 R! \1 m5 b ~! _endmodule1 l2 l. j: i a
# H& K& B) T* X+ y3 X; l' |
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
$ A* A- h+ Z) Y |
|