|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?2 S u5 g# H' X: U* X7 R
module s4_7seg(clk,rst,+ T0 k4 g& o& S5 c D
6 Q- c5 D1 f9 f: B4 M
s0,s1,s2,s3,
/ K+ a3 q7 D/ t% B/ ?
' \! @- O% _! y: a" F d0,d1,d2,d3,d4,d5,d6,d7) T+ }( \1 Q9 t" _% r7 v* q0 a+ I
/ l$ S6 Y; O3 o5 u3 t
);& F8 f7 [9 v) X) P/ f
% H$ _: c4 x- d4 U input clk,rst ;
0 Z* }% O; {- _* n; \/ W0 P4 J6 _& I# L7 X- l* r
output s0,s1,s2,s3 ;: S5 X; `+ |6 n$ r! B. `
) t( c h6 C# T5 {8 q3 i1 _7 z+ S
output d0,d1,d2,d3,d4,d5,d6,d7 ;
& a& V' y9 T% [, `3 Z, `; v+ b! A9 ], a# G
reg [2 :0 ] state ;
$ m6 z* W. ^8 T7 {/ X) h" n
* {& a3 I( l+ o) E reg [2 :0 ] sn ;+ i( }6 e8 E- Z- l5 G: M
A; T/ `. k- [) f2 t
reg [7 :0 ] data ;, _2 r* l' U+ G" z3 ?
# f# p) Z; x v
reg [23:0 ] cnt ;
/ l; x G' b( C# ]% e6 B8 @
( Q: s% I) p, n9 R, n$ I* ~
- h( j: j8 M# W5 |9 R+ }
+ g1 o7 |$ g0 u7 i9 n wire s0,s1,s2,s3 ;
& X- S! I, e# M8 u6 @. M; O
, P q- B* k8 M: K* v* s wire d0,d1,d2,d3,d4,d5,d6,d7 ;
9 W. u; s6 |) i. j- M1 J
* y8 \. f; ?0 D, M( O: O6 q assign {s3,s2,s1,s0} = sn ;
/ E+ E- F) |1 d; Q2 o1 Y! ^# e
' C! M+ f) [' F$ B7 M assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;
/ A/ r; c% k; \# C/ W+ v
+ l6 p0 [ G% B always @ ( posedge clk )! T/ Z- i' q, U9 I4 q
, U. i% h' O- c6 D0 {3 f- w
if( !rst )( Q7 g; x# E' w
+ {, H/ n; N0 y& J cnt<=16'b0;$ h6 m) h `0 Q5 B+ Y! g3 H6 m
1 j+ l T8 M( a& C else9 T# J3 G+ H- i# j$ C& m0 ]
. w- V) @0 C: j3 e; z
cnt<=cnt+3'b1;
. J3 r+ P3 ~: d& R& a- o* |4 X7 k6 v" c6 Q7 w! ^% e0 J
wire clk_slow = cnt[24] ;
4 s) w6 i8 i/ H' p' x( h
+ m* Z0 D! Q7 y: L# x6 ~! N always @ ( posedge clk_slow or negedge rst ) m9 ~* [ r1 \
3 |* ]8 x7 q+ ]2 ]0 S& [ if( !rst )3 d8 [9 B+ l' E2 N/ J
' m- @4 ~9 N4 S
state<=3'b000;, x V. G+ c3 C0 L" ~% C( N
* }3 b3 a/ {+ ]/ l I% _% @
else
2 W+ }; V! i" O+ Z
( _) q1 H9 ^0 k' t: e# l$ p/ Q state<=state+3'b001; G! N/ m! Q* @& d
, D3 j" w; f0 r5 F. Y always @ ( posedge clk_slow or negedge rst )
, Q( {0 }9 x$ K/ z8 M3 P- y& h" `( n1 ~# N
if( !rst ), O# Y5 u! S2 ]
6 d0 \7 Y/ w' t9 \8 j6 ~
begin7 z# a5 y7 y! B0 e' ?; }
2 U3 ]) F; ]; R- j9 `( P sn<=4'b0;5 O4 ]: u1 A j$ G" x- C; E
+ T9 C2 T$ e0 M/ c
data<=8'b0;9 o$ _) e9 i$ }! E
( ?$ f4 L% ^3 H$ k8 K5 w
end
% k; o9 ~# z% z# u0 V
- Z% }. R. g% Q4 l* e5 i: m else
8 B5 `- K9 N3 U' Z: c+ s! [* X$ Y5 L5 c- K
case(state)" b% i3 v# g9 H
% L7 Z: w$ G9 |0 M 3'b000:0 q2 o+ ]% c- O- r& y) h4 Q
0 X- J$ o3 k' `# G begin2 w; g0 D7 N4 q D) U; o9 |4 A
% d; E1 m5 | F0 u! R* R0 b# r* h sn<=4'b0001;; g. r( V) }0 ~+ Q+ ~) |
6 B3 b8 s8 W; Y$ Z n data<=8'b0110_0000; 4 v( k5 H7 J, ^* U7 q" L; ^
( X6 b7 O! F/ ?+ i6 h0 f
end
5 @0 s m9 t( F% `
6 l& T6 G$ P Z9 ^1 D& ~; [% z 3'b001:
* H8 t. `, E; l
" L/ X, q$ a9 x2 \. n begin
" X' w; h* M5 E% I0 C3 M/ {- o; X9 W; z
sn<=4'b0010;
8 b/ G+ z, Q# H/ E% N7 R
# b- [# m5 G7 d' m4 w data<=8'b1101_1010;
0 ~' [2 t$ I: q5 B$ V7 Q4 b S6 i' V" P
end7 o6 g8 _) |* S1 b
5 B/ A2 n/ v$ i3 e. O 3'b010:; k. }$ ^! w9 o7 T
' S4 s% }: A; g5 u5 j, d8 Y begin5 n8 Y ?6 j2 L
3 i) k7 p4 Z. h( J$ V1 }+ m6 O8 r
sn<=4'b0100;9 [0 d( k4 \0 t7 I+ |) l, C
z4 d' U+ X4 F$ w5 q data<=8'b1111_0010;+ @4 C8 z& z- o1 J; o
! l- {7 M0 Q2 P! T2 y end
9 ^! I. R' ]0 r; V! k/ o4 o0 C( v( w7 j9 X' U* `
3'b011:
( v4 G/ s7 d1 x3 I, Z( Y
5 U0 U, m: F: p0 M, ? begin
& a; g- s0 ^6 i' \# m- }" j( {* _7 [0 G ~6 d
sn<=4'b1000;2 f* e3 W$ q" K$ d9 v
# U: r& G, O2 f8 G( ^; B! N2 Y: E& D data<=8'b0110_0110;# n; a+ A/ K$ d1 X8 V# q
* |5 X# D/ ^% }7 d! v
end
! s2 G/ B5 K0 u# I) e8 E5 z M" l& h) P/ d% A
3'b100:, K' F0 V6 b' ?0 t% H3 [ P, n* y1 x
1 l b& E, y0 B: F: _ begin
2 u) I. _5 u- A5 ~+ y( E: B+ n* `: H, {; q- U4 }
sn<=4'b0001;7 T, j7 a5 W' a
& `; D' T5 t! ^1 K data<=8'b1011_0110;
8 K2 W( q4 H4 F/ J
& c+ q/ d8 d- O& M* b. k4 M end1 x5 D- ~1 L4 [/ {7 G8 s
8 {( P, \8 e0 o* b 3'b101:
. p0 Z* V( A5 y4 F# V
+ K- D2 D3 R9 k( }6 z; T9 d begin
& f( ?& i( D- R$ v+ E( T) e1 ?6 P9 W: s4 ]5 k
sn<=4'b0010;* b. |/ M. P# k9 E( I/ `
, S+ r2 x$ i% k: F5 i! k* } data<=8'b1011_1110;
$ {8 W* u/ T! m! l/ r1 b& Y4 u, n$ v: @# a4 l
end+ U7 Z. L& u* G6 }' x5 ^; J
, o9 g9 y; y! a: e# Y6 w5 Z
3'b110:
! s9 O }( ^: P5 M3 ~, B! o
( @/ w5 ^# A; W3 y, g begin
% b4 L e$ ]# B' m: w1 Q8 A! U* T- l
sn<=4'b0100;# d7 s, a" S3 H. O R4 r7 z
) p2 t! P* ]3 X% s8 n data<=8'b1110_0000;
, p4 x- L% C( j% d# y8 Y0 o; i
- k. w" c! @) [' i. U& | end, M/ g8 \. I: M7 X
) h2 D$ T1 G) C' e1 r8 Z 3'b111:, q" V7 `/ [& q& n0 t
6 p+ t3 @6 I8 e/ O/ E* l1 H6 e1 Q
begin
' ~5 {# C( b- O9 G% P
! M0 q% U% O- L sn<=4'b1000;- o! E& w! ?/ y' X2 I: v
) a$ P/ {" r6 v \ F3 n data<=8'b1111_1110;/ O) d$ c0 ]. C0 F& |$ C) a3 G
" `9 ]3 q8 @/ Q6 Y! c% w! M( M 4 L, G; L4 @' b2 U) f+ T. ^0 B/ u
; J% {4 o+ z- Q9 d end
7 U6 U$ L( l1 x, r7 _, R
5 \$ g" q9 _8 H' a: p, L endcase
, v9 H% ~% m& Y9 w5 R
$ r; R$ h" S# T+ dendmodule5 Q" |+ N, J }9 b) G
* [8 W2 V6 i( q这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
5 _( T+ A$ j' V, E3 q |
|