|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
! b2 M" v7 ^# w3 W: }! y9 @2 m' U5 |module s4_7seg(clk,rst,
- r& [4 \. Q4 s1 t$ s7 J9 _, z& G
- R! _. y. S. m) M% T% i, q* L9 |* _; q% w s0,s1,s2,s3,) \- w$ V% b: f
9 {% c" c$ M; v: ?9 O4 i" U- ]0 m
d0,d1,d2,d3,d4,d5,d6,d7$ G9 S4 ~- m" I* G$ w
+ J5 X- z# Y( L* R/ L1 ~9 G! A" ]2 l );
* K& e7 [. S0 B8 W: e \5 E7 O# L0 a% Q* g% ^
input clk,rst ;* p. o' E: K: L! ^; s( g
( ]% y' P( T/ }! } output s0,s1,s2,s3 ;$ g" O \# U& \2 {/ D6 m
% O$ F) ^& J: s" V. }# f% N @
output d0,d1,d2,d3,d4,d5,d6,d7 ;5 U8 \0 l i( N8 O3 q' N
2 [8 J' v0 ]- D( H/ N9 V) J. N reg [2 :0 ] state ;, z0 W3 _2 g9 L3 q8 f ?" ]
5 ]6 m. ~' {; C% x' v/ I! X reg [2 :0 ] sn ;
! r* P% a0 q/ Y
6 {, _, h0 R7 n/ H. o" W reg [7 :0 ] data ;
( A6 v3 q) B0 j a n
. g" v* v5 m, o5 C reg [23:0 ] cnt ;
* G5 \6 K; g' n: K, r
* j5 a" d( L) B) I. h" C5 U# B
6 q2 |9 {8 G# A8 S9 d, x2 ^9 G* r
wire s0,s1,s2,s3 ;
7 N5 k7 W* f% W" ?
1 y a4 Y8 M- `# o D: S wire d0,d1,d2,d3,d4,d5,d6,d7 ;
; n, r, W* q" h& D- w" |
# c: h+ T2 F% Z8 b2 e2 H assign {s3,s2,s1,s0} = sn ;
3 y* H |; g T' Z$ M9 W! v: Z' L: H% n" N( n2 M- {% }
assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;* d* q2 X# d$ m+ x6 t& `0 `7 s
* S" j3 Z, B, z; d) f# r0 a0 n always @ ( posedge clk )
v) D+ b5 q8 h' U; P3 O1 p, ?( ]* @* W: f3 ^! o V5 ]# I; n8 \, q
if( !rst )
6 `8 Y2 d) X" S2 F p: [+ t3 T. q2 t; C! I1 L( i. d- Q$ V
cnt<=16'b0;5 h4 M3 O4 w5 m0 l/ A% Q. p' b( @& m
3 v+ e, F' Y% N, z0 n% y" q
else, Y0 [9 C( S. O, Y- g5 H
4 ^0 |8 J; H# d* v2 q8 b
cnt<=cnt+3'b1;9 w* F' k# j, z, p- T6 v0 E
) g5 ^0 z! s) g6 g wire clk_slow = cnt[24] ;7 e. Q+ o1 O j% T
, T" [$ ~0 C2 t$ I( k9 m, Z/ M always @ ( posedge clk_slow or negedge rst ), @ G/ V5 s, g
8 D1 h6 `# Z6 ^9 e! Q9 ~6 H if( !rst )$ H" |' V8 ?! v1 [" l1 {' N
( T5 i# ^3 q" J% Z! N+ [
state<=3'b000;" l! k: ?7 Q; o6 V, W1 g6 v! j
' M [' a5 i/ T0 l# E else' { a2 p" ]( X1 Y9 }
& U9 _! F0 t" c: r
state<=state+3'b001;
8 c1 X: ~. ], w! l( i1 g
/ @: l3 F1 C+ c8 ^* a& d! d always @ ( posedge clk_slow or negedge rst )7 ~5 H% h% Q8 m7 Y5 F/ d! Q) a6 L: M
8 g- e$ s) l6 b$ b$ j
if( !rst )1 V# s2 Y4 s/ `/ m1 k1 n$ D
3 I: u. ~5 {$ e5 o8 R" D+ Z begin$ ^8 C( u! n& @2 C- r: [8 z8 m
3 N1 ]; _; ?' ?! H( ^% v+ Z9 q
sn<=4'b0;+ h, ]* p* f" X. o6 j9 l8 P
( t5 u$ p. K$ I+ O# p: ] data<=8'b0;
# P& z! j& ]$ G) h! e& |- @
6 M& c- ]# s" I/ |5 `. e% M1 t, V end; ]# w& G, Z5 e9 n7 C9 z, L
6 x2 P$ ]5 a. Y2 V1 ] x( y, m. T3 `$ ]" p else6 r B% a1 F1 X9 k
: \$ y. D" h I& j- G' c case(state)
1 N) f1 T. k: j- x8 I
; \! a3 v3 ]) M$ y) G( J( Z 3'b000:* Y6 m5 t6 v9 ]' q5 H1 U- X: V
6 Y( d z- m1 _$ w( l! e6 l6 d begin; [& v! q/ p) d3 g' L7 u
/ G% [9 J2 \4 o* R sn<=4'b0001;
8 y6 |6 J0 X# i% O8 @' a6 N0 \9 Z0 K: }8 g! d
data<=8'b0110_0000;
8 x7 t; i/ T) V9 m9 u# o! z1 C6 C5 m
end
8 d+ d: {7 H$ a0 b' S0 u
1 m0 U' ]. Z' F# Y. r% ]9 f 3'b001:+ ~6 _; W1 {; ?
" A! P, y. Z% H# w* z
begin
* h/ T8 c4 a# {" k K, I: g
. }5 W0 W D3 j: P+ D, m$ z4 a9 |) m sn<=4'b0010;
/ A1 j$ a9 l3 `: x% P3 G7 ? M8 z; { R, A, c( S% P- l
data<=8'b1101_1010;
5 x% y# }0 r: A! ?) n6 `$ I [6 K# ]
: i9 E. j8 g0 F/ p end
+ i; y" _* c. `/ @8 W: I0 K# ]
/ g; \4 j3 F0 _! e) O3 d 3'b010:
! h. L, m7 t" @! d) X! q( G& X- ]0 S$ ]
begin
! G8 Z% M% i; p( g- }
6 o) N9 [2 _% a& i) L; D0 G7 X sn<=4'b0100;4 U, g, m! x# U) m' ~! B, e
5 E$ K) R! ]- e: s) Y1 Y data<=8'b1111_0010;6 T6 X; O# ~# g8 _$ D, i8 V/ l
_! K4 q& | [ end: J5 t% g0 M$ @4 a1 J
/ l) e7 A+ Q. V1 |% P( \* T
3'b011:
' l9 O3 k9 J1 A. N0 {* P( [" i$ R8 k6 `2 Y! o S
begin+ r8 Y0 J& u* `( }/ O4 q6 o" u
$ A5 G9 [8 L2 \" @6 b sn<=4'b1000;4 p6 g8 N2 a& U! y& t# b0 G9 k
: P t/ l! U! R. O, o data<=8'b0110_0110;* S1 F+ b5 |. i' l8 D/ n
. _0 I+ u7 I- c; ?
end
+ y, Y% d' a) R% @. x3 g U+ _7 |# }; j
3'b100:
" |) @6 N o8 A! j; }9 }
: O x2 R& P' m& ] begin
. ?8 c1 F* D' z* k
( {4 W* u+ |+ c2 j9 {1 D2 @ sn<=4'b0001;
& C$ T5 a. |" I3 h: W; U: V+ S: E' u0 K: s
data<=8'b1011_0110;
2 f1 A% c, x4 V0 k# y' w7 s7 n
# q6 I! f& R. c9 o* i# w% c4 P end
: ?0 y ~& u2 P! h( B8 x( r3 B+ U) V3 z
3'b101:3 |$ [1 H4 G2 l; C. _$ a
7 n/ |. [7 [ d! F; P* z8 e8 M
begin, {9 t2 }" G; f, y& y, Q3 P
5 H2 K# @; z @ \) [
sn<=4'b0010;
! }* X B* r7 S: n" E" O! H3 D5 f6 c
data<=8'b1011_1110;
3 r9 B0 I5 K% S8 }
* j9 y$ r. D6 O" h end
! G, X8 x: q& \6 r4 P
* _; r; c5 f. Y! L 3'b110:; i* x# r T: d# H* M. [
, Q& D. x& ^9 G" u& c; N1 r. x+ B
begin" N0 F$ r7 p* V) J! k6 O. l
+ B0 k4 p/ ~; |- R
sn<=4'b0100;, m9 [( u6 q$ H4 p
8 @, l/ @- f9 J, ?
data<=8'b1110_0000;
4 P4 K. C% e7 t9 a7 N/ G' e3 D+ o m3 R( O8 G* W6 C+ a7 p1 }
end4 }* J0 c& N) X5 `4 C u
) q4 R- u* K( `8 u3 C 3'b111:5 z, B" R* B- U/ K
1 e# G% N. P/ c7 }) z) D3 N begin
' b+ L9 I! G- L+ _" _! q7 @+ E7 G) {) I8 Z3 d% m
sn<=4'b1000;
3 w) q/ H" _# O1 z2 `$ t: P( L/ W: b
7 M5 t" f. L' T m6 M: j) C( k data<=8'b1111_1110;
% Z' }) c& B) P2 X- j/ n' d' P8 a" S$ q' t4 z/ Q+ Z
; c0 q9 L4 Y: ]- b
4 ^3 _+ F: b% a
end+ O. V. v7 c- |$ [" X, d7 j- a, a
1 ?3 @+ J! h3 a' k endcase
7 D' y( ?9 ]: f9 y8 [3 F8 d6 z3 o. ]$ E0 I
endmodule3 `( n$ ^. I3 o: A( C4 }7 o9 u0 T
+ o8 K& z2 o0 G; |! _8 F
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
1 c3 m R$ d Z; N- Z |
|