|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
$ K* W. C+ F0 Y! j5 t; r% t! D+ hmodule s4_7seg(clk,rst,
7 r* y5 S6 b" [3 {, A. ~* T0 y4 x* B; ]
s0,s1,s2,s3,& N6 p! g& H; ^+ S. S& |( g
5 O' [8 `6 P! r/ Y- V8 k0 z* N6 I! G
d0,d1,d2,d3,d4,d5,d6,d7
7 \/ @( s, U5 R/ x
: h/ @5 z2 N. K( ? );' E' c7 z+ h% x8 g# r
0 a/ G) i. v, L& W# k' B
input clk,rst ;
! D8 I5 ]. W- f. C; [3 g+ v# P
" ~( m# c. k3 _# t+ @ output s0,s1,s2,s3 ;
0 T' _; }" X* P1 z! k/ W# k
" [$ r# ]) A7 J output d0,d1,d2,d3,d4,d5,d6,d7 ;
@% g" `' p: D. O& l
3 y5 p3 V# _: B5 B, ? reg [2 :0 ] state ;
1 R3 E4 s/ z q D, H+ V2 G) r
reg [2 :0 ] sn ;
7 |$ I# T# \ K5 o9 ]* [. N
# T- t8 [% N1 J3 _! {/ N4 R+ |, [9 S reg [7 :0 ] data ;
2 E; s( ]/ K$ z# G. z7 G/ a$ r- Q1 @: Z4 p0 Z3 M+ g M
reg [23:0 ] cnt ;* O5 b" w* q/ B- T6 [
1 K. v4 Y$ b/ j8 k w, `& G d * w& n" W: y* d
9 u) k0 l6 n, H- ^! `& A wire s0,s1,s2,s3 ;% H* z% p+ f5 j, d
& |& @$ Z9 F; W' q9 J1 N* J* V k wire d0,d1,d2,d3,d4,d5,d6,d7 ;
+ n8 w) r! K9 U: C
1 h' ~( d6 \! q% _: I9 s/ V assign {s3,s2,s1,s0} = sn ;
. X: h9 ~4 R7 I4 k1 c: H9 V! ^6 |& [4 {
assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;
+ ~ b# P4 @" i2 P& |2 e8 }1 y0 h7 Z7 t# V( l# C4 v% j
always @ ( posedge clk )
- w1 b* d( i- k: a7 B
! B) H8 l" p, R+ s k3 a+ S if( !rst )6 G( `. _) b& A8 E6 M T5 V
2 g$ a: D0 I# r; V4 C( C, p4 F$ w9 r cnt<=16'b0;0 \- a8 W. P. D
: V" r d; d% ?: U8 }8 c- e else: J1 J' g$ h/ I6 b: S- ?
5 c$ p' R1 t1 { cnt<=cnt+3'b1;6 J6 C( U& Q; R, K2 d, B' F4 v& R
: N u* W" Y. q" d3 S
wire clk_slow = cnt[24] ;* K9 X$ C8 P( i, ]
9 w; o2 k' c8 A5 l always @ ( posedge clk_slow or negedge rst )
3 }! R7 V4 P s9 T. O. c0 F+ g3 U+ |: J9 x3 n+ `- b8 g
if( !rst )
! s! w4 R7 h+ g, Y/ ]! J! m& Z
, o( o+ S! k7 b state<=3'b000;
( V5 n. w& }3 Z2 o" N* z: p) X$ w3 L% s
else/ ~, `8 g( p9 e- u- y
* w, b; e0 \9 ~% d state<=state+3'b001;2 U) W7 J! e S' ? i# P5 u
/ d6 O& j! y. E( y) @
always @ ( posedge clk_slow or negedge rst )
0 Z3 ]+ ?, ]3 \: J- r
2 E$ V7 G( h1 b# n; \ if( !rst ) G5 K2 V; Q% ]
( m) J" f, R- a( T' @ begin7 t8 R6 k; S$ N/ m- Z1 e' ?
& ]% J1 }# R6 k& S sn<=4'b0;! l0 u) p. u4 E9 ]
0 V/ h9 k# L! m4 A2 F data<=8'b0;7 T( h+ F1 a$ |& D/ F) Q
; Q+ g7 }1 r1 h. N- J end# T4 U( ]. u" p9 ]3 o
* s$ I$ V, i3 O! i else
+ p5 C3 X2 E. ]2 Y" U, l! J4 P8 X; j, K$ o5 w
case(state)
7 r8 ~' k% B( g3 ^; ?1 X+ j5 i& A6 X6 R# T
3'b000:) \/ ?% ~& I N+ x L
1 B# c9 _1 k4 }- d$ `, C" k% T begin
0 v ~2 S% D# b F* k
2 i, i, w% k9 W$ |+ @- f sn<=4'b0001;
3 z) p9 t: [9 P
6 a& `$ ^8 Z$ u } data<=8'b0110_0000;
9 t0 Y% }" I3 `! t1 L
9 U/ Q$ d6 ~2 o; c {8 } end7 R- m1 F' ^$ F+ r `! H |1 a- Y
$ y: q! \% _' _ 3'b001:8 C' L( N+ ?# u
5 U, N9 q0 ?* G, L: x* @, f
begin
& t" R& r& v/ J7 M, B+ }3 ]- P/ K: T5 t! ~# F
sn<=4'b0010;
' r! T) C' J! N4 o: N7 N3 U" U* m6 e: y2 ]& Z
data<=8'b1101_1010;. c* G) r8 m0 i- |( [
! z+ ]% {" e2 o" D) D1 \, \ end
0 x1 a. r8 Z5 Y, ]8 Z& L/ W# o x8 R2 j5 D- Q
3'b010:# \& f+ l( t7 O/ u7 X3 f: T
, ~- Q! q$ j" R: Y/ M. E5 B# f begin
& U! j Q& W) T, H' q, T- K4 R% h& l# f4 w+ A3 x; Q
sn<=4'b0100;
+ R1 c! v) v# M. M4 w v' \$ O; h8 ]
data<=8'b1111_0010;
1 H: d# w1 V h' [0 Q
0 } H6 F8 x) c/ P! ~( }: l8 ]( Q1 ` end- i7 \! L, ?' o& N$ a
6 s2 W3 o% ?/ m" S! m 3'b011:
6 k5 X* \8 t6 A O7 g+ C0 `* M0 n- C
begin
* u: G: [/ l6 Q- }( S: l4 Z. S! g8 ^6 j# ^+ B
sn<=4'b1000;" N0 O0 O6 j, W3 y* E0 W
% j2 \* x6 l( d3 } data<=8'b0110_0110;
4 X5 k6 L; C/ b* E! L3 U( H; [* r: k/ S8 t9 T7 f9 j4 Q) i
end) H4 Y. D9 G F1 W4 X9 N
3 p' h: E$ P9 c4 v" V$ `
3'b100:
+ \6 p. {& X) H) k$ k( |" [: J- k; a& M( b8 P3 l3 q4 x" r
begin a& p$ |7 \9 Q/ a& l1 ^" A9 d
( Q3 A. R% w7 B sn<=4'b0001;; G/ u' W& e2 {. C
* h& r( j& Q2 C- w" p* A
data<=8'b1011_0110;: m9 H I- i2 E; _( i% E: B7 n
$ X" J" J2 }+ {% K" ?; T% w end
) g' X; _7 }# T4 K/ J/ I$ T( Y! _% g! m# g* |8 k
3'b101:
9 {- N1 o* P- T! t x+ i+ J% u7 g$ K% v% G
begin
3 }! B3 t2 E1 {8 _9 a) G! |: k, i! |, d+ |2 y
sn<=4'b0010;
( u9 X _' r3 U5 u3 ~( M) r
) |3 ]4 ]) z: W1 ?4 q6 |4 l data<=8'b1011_1110;" P/ |" {+ e- m3 j/ S& n2 n) D! q5 X
9 W# k, v) N# y7 o end, i8 e( \7 E7 f% d& l% Q
# c3 {* p5 M2 d 3'b110:
0 V. d! u7 N4 ^! t2 n& E/ C
# S# e5 X5 B% ~+ ]' ] begin
, ^9 i0 j2 X/ u' ]0 z. v7 t5 ~5 M+ K, T+ m/ S
sn<=4'b0100;4 ~5 G5 e/ H* A3 p% `) }) J
4 S; {8 G9 n! w; b5 y& o
data<=8'b1110_0000;
- n' S' e7 |5 Z( F- Y% ^1 ~' J7 q/ S: U7 o P5 B% D' M/ \* R
end
* D+ O2 T5 v+ @' B
2 A5 y( k) k r 3'b111:8 i! d2 T6 ?+ x W B( Z/ @4 z
( ?! H" a/ Q+ t: {0 Z3 Z
begin! M% }: d' G! b- S
, w! I2 |- v/ D2 P7 Q$ C( S# _: P; v
sn<=4'b1000;& o/ s) ^, {) [5 }
9 B- y/ _! ]6 @& b9 ^5 l' t
data<=8'b1111_1110;
$ K$ z6 B+ X/ q; }$ b6 `8 j7 ?- a& o$ _3 _5 ]; z- t
8 @5 _/ {, B# K( K$ {
& o; C8 J% ]2 d3 K. U$ r end
: e5 `8 H5 ~6 z1 ?* p/ N9 ^% Z- s
1 O/ N* r* P; ~7 F, _* ` endcase
4 {3 j& v) r; P' V, p2 k$ ]0 U' {# a8 N6 D
endmodule
& C5 W* B, l. O. D; x! P' N. L* Q/ [( I- e
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
8 L) s5 `% p& N" T9 Y# {& {) t2 _ |
|