|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?/ Y3 a1 S8 B1 z* ?9 z* i; c, Z$ W
5 t7 t9 n5 ^- h+ T$ T7 \
module s4_7seg(clk,rst,: J) U: M G; W, w+ t
# V0 {# E" ?$ |) K2 {; N: m
s0,s1,s2,s3,
0 t, D8 @/ V0 o, Q3 r9 h3 {- z* w; y( e0 c/ i3 p4 C
d0,d1,d2,d3,d4,d5,d6,d7
1 M7 O5 P: g! G v" C, ?) v) P
0 a) h; `% ^; U$ r& C: H2 q );
+ _" A! ]& n x9 ]1 a+ O* t) [; k N9 f& V7 i' w+ i
input clk,rst ;
) O+ J) J7 k0 \
! E& G& V* w! \ output s0,s1,s2,s3 ;! \1 u# b: O2 r# U& T
, ~4 r$ |. u2 j3 ? output d0,d1,d2,d3,d4,d5,d6,d7 ;- |/ Y( w+ R6 L
V( H' K' n* H! p5 x; Q
reg [2 :0 ] state ;
7 o$ p" I I1 Y4 ]3 N! ]( S$ D8 ? L: ]4 U
reg [2 :0 ] sn ;
8 V5 f9 j5 n- b7 R! h9 C% y* E, V( V& ~0 V9 t/ F" g# y
reg [7 :0 ] data ;
1 I6 r( w! P, t1 s2 d2 }5 r9 |; Z# }
reg [23:0 ] cnt ;
' d5 S1 Y9 t1 M% x6 N r& Q; Q
7 f, i' C4 F; R& n! f
/ b- p m% L8 H' X2 D
' ^$ x3 r5 }7 T" [ wire s0,s1,s2,s3 ;
: Z/ C7 }9 J8 Z/ G( {6 B! h0 z# N, K+ X9 q* V5 [) ?
wire d0,d1,d2,d3,d4,d5,d6,d7 ; / b0 Z0 r+ j) n, F( P6 `( s
; h i& J% G6 c Q7 g: F assign {s3,s2,s1,s0} = sn ;
* J9 j; q. [- o9 r1 m* C5 P1 @. B$ y' l
assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;: D* r/ }' G. [( F
2 W* {7 w' A9 o; d0 y) i T always @ ( posedge clk )
2 }1 k6 C5 T& p& z2 M) \
; s+ S" v: Z, g& ?4 R if( !rst )
1 p7 z5 O- m! I, a* T
4 u+ Q w* x$ U cnt<=16'b0;
) b7 Q- I% |7 U# f+ r2 |
5 ]; ^7 Y. K7 F* |- G4 C1 `# F else
/ v, p+ C, s( W, ^" Z! u R5 J
4 D2 u" c ?9 q' S+ X cnt<=cnt+3'b1;5 U+ X( _3 I3 [3 o
; F/ |# ?7 A+ r* W. [, Z
wire clk_slow = cnt[24] ;( X. J( i8 k" I: c
& E( y- E1 f0 q8 v8 x: k! V( k
always @ ( posedge clk_slow or negedge rst )5 N, i5 b( L$ T' u6 j5 w0 ]" }
+ ~$ W; ~1 r; n4 r5 _' K
if( !rst )
+ U7 l; l; I) b9 Q! W' W% [; o
' q) [! @! l% T3 w state<=3'b000;
1 V2 o1 q* }7 ^7 t5 ~
* @4 M: q% N1 B8 p% S; ]. { else
$ v, ~0 M9 m$ Z* w
9 F, i; t# I0 N! H" A state<=state+3'b001;% I+ H% i$ x( W1 d1 D: `& u
, D8 v; @6 P5 y m9 Z always @ ( posedge clk_slow or negedge rst )
! q- c' h+ Z5 V! @5 b) \8 q1 |$ \1 D/ f5 v: X4 R4 G
if( !rst )! @$ o- M" b% Z- E+ l2 n
9 U' i e9 ^* y T D/ v- B
begin
0 l( \9 p2 e% Z2 q, E5 r$ J1 R8 t- D, F) ?
sn<=4'b0;
2 W! e/ Q1 w; g; y
' a( p6 c/ g! Z4 m data<=8'b0;
' C0 a. J/ L& f8 U4 y
7 c+ |# j$ W8 Z/ Q: q" K5 } end
' P* _* E% ^) u, {' z4 h9 X0 \3 o7 s2 H: }( V; V" F. `
else) S) i: m. }3 p' }4 w( z, ~! y
* h9 G9 L# a3 f6 v8 } case(state)
; d D% X5 t# T1 H0 y! q' n, Z: P0 `7 g V0 q8 v/ ~% U
3'b000:- _# T- |% X/ y8 Z& Z* A7 _6 F
2 A! S' B9 G4 ?3 f u4 N7 |4 \
begin1 S5 w( |4 Q* P" g4 S
& \2 f: `: x1 }0 R. X. | sn<=4'b0001;
' i1 e) j2 ]; x5 Y! ?! h
, _+ D9 D, v J3 f0 k data<=8'b0110_0000;
/ X) G* x" {& v! i$ a: N0 s( z6 C# m
end x# S. M: C( R7 _7 x" Q
! B0 v4 ]: b9 |! U4 C0 N, Z8 J 3'b001:5 z" f, C4 z7 v' @( Q$ a; ~5 K
0 O* F0 T0 Q; u/ d begin- j' v; n: C0 w, ]) q
+ [; {( L2 K6 z, Q3 q
sn<=4'b0010;* ]4 l% y' E+ I4 O$ B
o+ O Q% i d0 v7 c; l data<=8'b1101_1010;4 X [: B" k$ V" R6 g
; ^9 L9 \8 G- C+ ] end
# V; Y5 S0 [9 `& x' j- G5 E6 B* {
7 p7 S+ b& k2 a: _/ W 3'b010:
# S4 e0 L9 Q% F
, D- }- O- n5 U4 A5 M7 X1 e begin7 S3 r& S: h/ G) [ x. [5 K: Q
9 z; C0 F5 ~$ } N/ W" @5 `! ]2 c' u3 V
sn<=4'b0100;
# ?, I B6 K& j. s: I" w
4 U3 j s2 d' D+ L! ~: a data<=8'b1111_0010;
: K+ ^6 W" f% u' _
/ _2 V7 o8 U4 l end% O( w6 F& }( f5 e' b5 F h
% f: Y2 X$ U! B0 x3 M 3'b011:
. e1 |" |7 c- B, A% U5 r; |$ G
# m9 f; i: P4 c' x% H begin8 ^. i" h' h) j1 @* d4 ?/ o& x2 D# y
- d2 u2 w' _7 G, f6 b, {
sn<=4'b1000;
" D" H2 L# U$ b3 m& x; R$ A9 C- e9 ^9 t; p
data<=8'b0110_0110;+ |) M+ D A/ a8 O) `
+ J7 a* Q4 C$ ^! j# a# R end
# f; ~; U; N! e" B [1 A& [7 Z* }' h0 [8 l
3'b100:; K4 s P: G3 I3 j4 A4 s- W
% f- C; |2 V! d. e0 Q: t+ s begin
/ u* g+ X6 |' N) N% k( l% s1 g- i9 c6 p+ Y$ k" v) r
sn<=4'b0001;
. e! d9 A( y1 O4 P; I! n
6 @7 r0 i' q: s9 { data<=8'b1011_0110;' X) p9 Q5 N' n! B
& k$ D H, ~. {3 e, x
end' t* e- ^, r( I8 Z2 i( A! e( x. n4 ?
1 g+ g8 ^2 c# Y 3'b101:
" c7 \/ U# e2 H# O% ~
$ C% y: L& p; ~- x begin
5 f5 ~' X/ c4 }7 f
. g) X0 X+ C2 h& }' J' S sn<=4'b0010;
' O; s" b% y3 V. `3 e5 v
' T+ Y% n5 m q R$ F data<=8'b1011_1110;
5 _* A& w. k- J* N. t! t- I' j3 ~3 W" }5 W9 S' }
end# u- M3 p. B9 k+ {
" z& A% q" ?/ G
3'b110:
) _+ w1 T0 k* y0 k/ a+ F* {( N0 Q7 r. I7 U
begin
! i0 b5 j/ m9 G5 o1 N. _* G# b' h
sn<=4'b0100;
. d- ?9 B+ P% }
& W# _+ r3 E4 M5 |9 \$ _/ E: x$ D data<=8'b1110_0000;
! c3 H. L" ~* A4 j$ K( L
1 @# a; v% M$ c; u$ w) ~ end4 z7 G( T7 z; j- z
* m2 L, M3 r1 d 3'b111:/ o; U8 A5 \7 y0 `* y T
# Y- a1 u' q, b% R
begin
6 u) o' ^# _: w: q3 y* [8 _2 m' `' @( m) L3 ], @6 l
sn<=4'b1000;. e4 T1 z# }& t- I/ g# F( c
4 B2 p7 D! L9 f3 E- J% B$ Y" T0 B data<=8'b1111_1110;
; c5 E, x( J+ J7 O
9 k) f, v) e$ m$ I
# n* Q/ V, f9 j; {3 @( n" ^# h1 o" {3 Q0 p* a. d0 t* M
end
' x$ f+ _% u9 _4 `/ q& l0 e! }2 S" B( J+ S) ~7 \
endcase
3 T4 S5 K6 s* U
5 q8 R1 {4 T1 o, S% d& S8 Y% Fendmodule( p0 w) s' M+ a
, R- i6 G2 l6 z( M这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
7 G4 n% _7 e5 B |
|