|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?" n; d) n; w/ P" I) v/ e
" |$ Z6 F$ k7 V* L" m1 o! o) v6 c
module s4_7seg(clk,rst,8 G* S' l) ~5 n/ ~' E# Z7 e
) j" u- D5 Y! Y" v2 m s0,s1,s2,s3,7 M+ n0 y5 K& }3 v. E. s8 q9 p
, \" K# R5 D- ~$ ~0 x1 }
d0,d1,d2,d3,d4,d5,d6,d7
7 P* }- v P) g- |' y5 j
: s" B% \% \7 n" |1 B! Q3 O _) E' J5 } );
: e% o( X* Y- n, d) \8 g! D/ N9 ~# _6 |) m
input clk,rst ;
3 p, {2 I, d& M. _7 f
; F! ~+ t: T8 U8 M& d+ w output s0,s1,s2,s3 ;0 S7 g. P7 C# Y
3 w/ z7 e! J' M" z5 u$ S6 K output d0,d1,d2,d3,d4,d5,d6,d7 ;
- d- ?4 c" {5 c8 s# b/ }# \8 N5 ]% _* |+ a9 [2 e+ ^7 c- j3 b
reg [2 :0 ] state ;
0 k3 c4 \- x7 ?
8 l8 B! Y2 r# \+ g reg [2 :0 ] sn ;
7 C! F4 t8 [, I; V* j) D: j. p* s& j" V0 |
reg [7 :0 ] data ;, V7 `- f1 {# h. U) q" c
$ p& v" f! k: ~* {# v reg [23:0 ] cnt ;( q, O, q+ x1 _# G* [" H+ z' V
4 A% G4 X- g7 W: I0 Q' I
" l/ A$ S+ G: m0 V0 L+ q4 F: o- Q
P8 |/ Q0 l7 U2 Y+ t1 w1 k u! G wire s0,s1,s2,s3 ;2 L7 T4 S1 J( Q( H
/ u! Q# E2 D8 h9 m: y# R
wire d0,d1,d2,d3,d4,d5,d6,d7 ; 7 a8 i# u) C1 S5 q/ h0 l0 ?
, S, R" s$ D$ S4 `
assign {s3,s2,s1,s0} = sn ;
; ~1 Q6 d; F$ `1 S# _% k! K' N, Y, ^ M, O$ ]. z7 u" O! ?
assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;8 ?+ d0 ~8 f8 ^0 R4 R7 }
$ K* ^! _! B, V+ M( Z7 m$ Q always @ ( posedge clk )+ l0 A% o! o8 E' S4 \! t
, V) [, P" _4 c. f3 d' @ if( !rst )
6 { T; w% a4 \ Z8 X- M
. q. ?( o8 v; x3 e3 q cnt<=16'b0;
, J5 [( c3 D! S) v4 C8 p! g3 |# W2 u/ r
else
& [; u- ]/ o! `% ^- S* L2 M6 q9 U
$ v% Q% M! @' |! n3 W cnt<=cnt+3'b1;+ o. W1 n, B+ B& l
5 _3 [! P' H% b. D
wire clk_slow = cnt[24] ;# ~! t7 d' d( u% o3 v4 T
0 i# x( f% L% n: S7 A
always @ ( posedge clk_slow or negedge rst )
+ s9 O0 K$ J( l9 H1 ]* d
! ~9 j N; ~) E if( !rst ). T7 R; c( {' C
; N9 L' X/ l% Q( R0 `9 u
state<=3'b000;+ h( Y* z" |- n! }
: J+ v+ t6 T4 D9 L* V8 {7 T* a
else
4 P( a. H- b) A6 ]
2 W5 Z) @ ~7 U/ p3 e state<=state+3'b001;
& x( H; R5 N: Q! b" a5 V/ K3 n g- [4 Y
always @ ( posedge clk_slow or negedge rst )
5 [6 P% D; `& i4 C! E
1 N& h/ q4 K0 G3 K' B9 s if( !rst ) n+ k' a* P6 I6 L" [& b
3 ^+ V8 _! |, _' I
begin# w) d8 z: Y: j0 B$ O
$ c1 w$ B* L$ A Z1 B* f sn<=4'b0;
, R! y8 |7 w. O+ T
. Q2 j# c5 D4 _8 O; c8 b0 s9 a; J! N data<=8'b0;
9 q9 Q4 F2 S) S
4 @+ U1 b/ ~5 V% K8 [ end
: ?, N" B8 X! s: P3 O; {4 ?& @3 ?. m/ u7 i1 ?% [2 f, d+ F% p! G+ @$ Q
else5 l. P5 C! ` c ^- f1 I
& N. b/ I. r8 o1 w! E p7 U
case(state)' q, d& y1 }/ \- P+ u1 V
$ C* _" Q0 p0 Q) U& P. {9 N( O
3'b000:
! k. F% h% A, S. v) E
) F4 D( x2 S7 P/ p begin( u! A: e7 T4 C
* `9 i0 z t: ]& X6 `5 t
sn<=4'b0001;
5 N6 O; Y( z1 {0 r# Y$ `, U9 z* }4 Z/ Y
data<=8'b0110_0000; 4 e4 q7 x# N+ q/ J; q
: ]3 F% r: `: Z* F. o1 i. N end: o7 ~8 P+ \ ] ^4 D9 u" }0 i" f
3 @6 S$ u- K I3 _2 b
3'b001:
$ b1 X8 E! z$ Q$ x, G9 h' \. B& R" F; _7 g& I) M4 D7 S
begin
3 u. Q- v& C& B1 V0 P3 i3 c$ r/ ~# z4 I( I( U
sn<=4'b0010;
; V+ S2 i. r' o
- K4 N) W8 D" U. K! v. D! l% i data<=8'b1101_1010;( Q% B7 l7 t0 I, H9 {
% K: m) t9 Y7 w4 y; I
end
: H) J0 g* H1 j6 V( _1 _& ~' C6 U4 c2 ~. J: g# z4 j5 A# v* J9 u
3'b010: k& B [9 w! Q6 c4 b
* A2 [, y7 r4 j( c K; L, Z
begin
9 k. c W2 y& ]( c& L. i; o1 A" E3 p; q' h9 z; I4 _7 r
sn<=4'b0100;# h! J& M: H. D8 }* L
) e+ K) `+ h3 G) d0 M6 @0 y, p data<=8'b1111_0010;/ e% u' P( q: k3 f
: m" ~9 z+ ^0 F) J4 P' e end
" Y2 Q: W" m' ~' F* q+ s
+ r6 @- g1 Q5 B% i! u, n 3'b011:
9 C0 ~ d! u5 w/ f1 [- F- @
8 e4 w. z0 Z3 U4 L; W# O begin ~* J3 u. z0 Q# B8 T4 G. e
0 @' A& r3 _. |& I; b8 X' j sn<=4'b1000;# z6 v' n5 w& e. L& m
" Q$ |4 Z! Y8 T ~9 c, G! { data<=8'b0110_0110;
l9 r. B7 [- h+ G2 E v- [$ R
7 b5 q" j, p+ _ end( _/ W+ T" w: P# d* j' |
. ]7 J* P% M9 U3 E2 v/ B% a
3'b100:2 y3 n9 t, U- L- R: D! t, E* w
C k. ]9 a4 Y/ T% R begin
! Y8 f* }$ X9 h0 d0 B
/ ]% I$ u# o- F3 Q9 E4 O sn<=4'b0001; e8 P: j5 o& s6 E7 `
/ H! p/ h9 E0 s. c- l
data<=8'b1011_0110;$ F% X+ p' r9 \ x7 ^. ^) o
% r; l2 V! P4 I5 G
end
& J. Q; q% J# W q$ v6 }4 _
; m7 B' K7 u, B! G 3'b101:
; ]$ q; t" y5 y7 f* b
- a% _; l, L- A$ z/ z, x5 l4 N begin
/ J7 @' M- l! h; N! t; a; }3 A2 |4 d& B
sn<=4'b0010;! L' X- R5 d! o6 [1 I. n. Z
: g) z9 M6 O2 v data<=8'b1011_1110;
8 ?7 D" v' T4 ~" g5 w& n
$ z- m j5 g9 B. f9 _0 I5 X2 T end6 |) v* L. Y% J* v5 V2 z, m( H+ K/ Z
. S: w d# c3 K- c, E$ l1 t 3'b110:
0 m' X6 H9 o: V s( f$ q7 }5 h/ m9 q( r' @ d
begin
: \& k& f! h3 n* E8 j2 ^7 x( Z! D6 e B4 D- d; K$ a9 n' V
sn<=4'b0100;% O! Z8 I; f7 l- s! y. V
% G! F6 y! n3 `% u1 Y$ C, [ data<=8'b1110_0000;
9 {# v' y) N, G( e) C0 e1 [' _7 a. ?5 S7 B' y$ V; I& a) }
end |0 j% c' |, \6 X; p. C8 x2 p3 w
/ t% B6 }% A- z$ i/ b+ B8 P 3'b111:
- m3 y2 i/ C+ W7 T" `# Y) U( t% p5 S
begin L6 @# [$ ]) K# j8 t
: E1 o7 u \$ b% ~2 r! y6 r sn<=4'b1000;; U3 S' N7 G2 ^$ s( D v
0 N+ [3 y. M" ~6 D4 v data<=8'b1111_1110;
! r2 M8 ^- D0 ~3 B' F1 p; M" o
1 ~4 J/ f& Z$ \5 b* p 9 z. [* o9 u- s4 ^* F
; W" R* f' |0 g* [0 p end
9 S0 T% R, r) U" {: \) l$ W1 O% [0 @: ^1 c0 R0 f
endcase
+ u) j6 s" I( P! ~6 U3 w) p3 e$ o3 w# n7 H* x' ^" n4 E' A
endmodule7 q: d5 B& D( _! L5 m
5 A1 H( U _& V7 I. h+ C5 a% n$ c
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
* e" ]+ j0 l- O/ x. O& ^4 U6 M |
|