|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
2 }2 o$ J/ E9 Q2 }module s4_7seg(clk,rst,
$ N6 o- V" n I, i9 Z- ` _
+ @, B, i2 Z4 @/ w7 U$ Z& E3 |7 K s0,s1,s2,s3,/ c5 a; I1 f7 s M" ~8 e; y
) U9 g3 e' G" b! h/ K d0,d1,d2,d3,d4,d5,d6,d77 n. a l! J6 t s+ o/ m4 h7 i, `
T0 _/ w' `( H/ n1 O* L );: E3 z$ w' O, ^: F+ c4 ~: R/ P
8 Q1 k( p$ z: G1 y/ N" }1 P" B
input clk,rst ;
, _/ o) Q( B7 K8 `2 F3 s4 t# T1 Z5 S# K! E* O& k# L9 R
output s0,s1,s2,s3 ;
6 n# f3 E3 t: F$ _! G& {6 w& {! f Y% x$ h3 }9 ?: o
output d0,d1,d2,d3,d4,d5,d6,d7 ;
* p; _0 {( y$ E( R2 d' a( T7 e8 z5 |) `& z: \
reg [2 :0 ] state ;
, e9 ~3 |3 t1 |+ t
6 i( y7 b1 g. X1 K reg [2 :0 ] sn ;
" u/ s' [+ f4 f+ @8 X! i* y( `$ Y2 R% n* v( P. i
reg [7 :0 ] data ;
3 f% v1 O$ c# ]: J; T, g9 g* i- l5 t" b
reg [23:0 ] cnt ;
- x; @+ c* g# |* _: x5 L5 q
& J2 \" A& j) N
( i' [; S+ O2 [/ N' Y9 `/ w
0 E3 \4 K$ Z% ^3 F% M, j wire s0,s1,s2,s3 ;
. I/ B: L/ e8 V0 M6 }; T
0 d/ Q: T* f3 E( l. r2 }; x wire d0,d1,d2,d3,d4,d5,d6,d7 ; 6 v$ E' ~# H8 z/ H
' ?$ F2 J3 V, Z) @( {; x2 B assign {s3,s2,s1,s0} = sn ;
6 S1 r0 W" ?! s, q1 |/ M/ L! G8 P" `/ G m- I
assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;
4 q3 T5 U; T0 |1 h' ^" A# q7 i" K7 K. ^% @4 K# I& R, B3 u
always @ ( posedge clk )1 C: ^- m1 p4 K5 A( p
E" U( n/ g( ~- Z2 O6 R
if( !rst )
: {* ]& x+ E2 v* t
7 x. B- D. @1 s9 i1 s. ^ cnt<=16'b0; l* o, |& R: w. k7 A
8 X6 X& R1 z3 v1 Y; N: I
else5 k) [& ^, W/ Q7 O
, X3 Z2 ~% m. D* U, B# `+ H$ Y' ] cnt<=cnt+3'b1;9 N! X& j4 C s' E- [
7 K) p! ]" T' K# p) ~
wire clk_slow = cnt[24] ;
, ^) [) J9 g% d* z. C( {& e% N/ J
always @ ( posedge clk_slow or negedge rst )
. e5 p2 f/ k9 f: d2 p7 l& O6 X* l# t/ ^: u- S! U$ N* ]
if( !rst )# R+ C. S' N2 r
* L: S% n. z6 t; q/ I3 l
state<=3'b000;& p( X4 d$ C' x5 V5 U4 J+ z
_2 f$ U2 z* P2 |) W else3 v* ^* ]: L$ K& [5 C( s+ ?# C* t
7 P. P( _% p6 O( D$ q5 N
state<=state+3'b001;* I! |+ n( m. R7 h" G# e( c; Z
# V5 [, _' h4 }6 k) q# q
always @ ( posedge clk_slow or negedge rst )+ X1 U) @3 A4 \
3 H4 o* ?8 V2 E3 |3 ]8 a6 T
if( !rst )! C* q6 d* t2 T6 V4 ?
8 q( G9 x3 I6 w( ], n* _ begin
/ w1 X2 w0 @/ j8 e
) m' D) _1 J* M# t1 J sn<=4'b0;& @! ^" A, X; C* X1 W
: z) Z) V( h' h. @& M
data<=8'b0;2 C R% y! s2 X3 G+ A+ E
) ^8 I# p" u9 u% S end2 y2 O1 J# E+ S4 K. i, ~8 c
- A* w1 \- |& Z! b$ I- z3 O! `: q
else1 A( _8 j2 [; W; x7 s! {2 e
8 h9 G& W3 r: d# w7 d. L
case(state)
6 y" t6 y: f- y
$ ^: \ i0 v" P2 E* m( t 3'b000:
: U7 n1 O+ S( I y+ O, L @- @* c9 t/ X' `% O7 f
begin
* T/ y' N0 ^( y( y
) T, O$ f! ~2 r- `2 T sn<=4'b0001;
" {! t6 ^! m, J; Q
! \0 V8 w6 M+ S5 B* E3 H. D data<=8'b0110_0000;
* L4 ~# _3 V f1 i' Q1 K5 |5 k9 \6 S" m7 B5 v8 K
end7 s7 @ Z' Q, C6 L2 |( J% N
8 C8 g. I$ v+ \/ E1 B3 Z
3'b001:- j; X0 a9 |" n) R# F9 \
; v! E. K+ i# A, D3 D
begin
& a C4 B3 T! R! a- K3 O4 R- c* }, {/ U) b' l
sn<=4'b0010;
) X' \+ @$ C5 w& T- x
0 l7 D) L1 h& W" ~ data<=8'b1101_1010;5 ]( S' ^: K7 M5 R
2 S2 C4 ]# }! g6 c& M0 C
end- C, p$ Q( j: _7 x( V* E
% @1 u+ e' g. h3 Y 3'b010:
( R! }& z" e7 e: a+ p: L6 d. U, E6 f* H) Q' K7 C6 A% j% b
begin
; l5 c/ }* D; k' R3 s w
% c4 l6 Y( g+ [, w e6 A sn<=4'b0100;" y9 O# d/ ?8 M' o
6 V, y/ f6 W; \. i: W( U& {2 y& R* x data<=8'b1111_0010;
: C* }8 O- d- m7 w- S. \& `5 [" V9 i1 f% V9 d3 W
end" Y6 \- f; f/ O9 _9 k, I" ] P
5 U0 b& q. z* F* x 3'b011:4 S6 @) b& c4 D9 d2 D/ t
) e+ `, H' K1 P/ I; n+ R. T' f begin
3 u% f- \9 Y: W% K$ d1 {0 @
f5 Y' h2 z i0 D7 L: ? sn<=4'b1000;- [7 x- B/ [7 l; ^# p( v1 f$ H
* B/ Y- X( H; U4 M, R! v data<=8'b0110_0110;1 o: Q# ~& x) r% S7 |/ m
5 e! w9 y6 M0 z! C8 y | end( r W# c. J1 v1 t* C/ V: K( y
0 _0 y7 [+ [0 K, [" ?/ r) @/ N 3'b100:
0 W/ z1 |3 G5 g3 h3 b
3 p2 o. O2 s5 Z/ c% ?# `8 z begin9 } ~, [( q: ?* @. U( D0 B7 j
/ U. _- N: T- Q& \3 V- s X2 m6 X
sn<=4'b0001;: n: S. T5 s8 j7 [. I
b! N( l' d; z. J7 K7 L
data<=8'b1011_0110;
g* Q- }. `4 h
# Q$ {+ B: a; G3 G) ^; E _ end4 \& Z! b, b5 w- d) O2 l, X0 |
# ^) p( c- A0 G) M) c; v. E
3'b101:" A' a! m# s" e) ~+ ?0 F- n' g5 n
; ?0 \! t4 T* V( Y+ Y begin. r9 }9 n$ P% J( _: h3 T. x
6 K3 i3 L6 x& i" H4 {$ ]
sn<=4'b0010;9 H1 r! Z6 G% L- a$ q% f
4 c& I* C' H2 [$ s$ d! N. b
data<=8'b1011_1110; p3 u3 m. m2 E9 [) C' G
& o7 u, W1 m4 ?8 W9 l end
+ c6 l5 j# x) R8 Y& c9 k" z9 U1 x4 i/ P5 ?4 c# F% B/ _- E
3'b110:
/ z" c2 }& J; f" k4 m! h9 @# e9 h5 h, d: i5 k: b
begin
" J5 q% g( O( j6 e r w8 @
/ E; w* {4 E: e sn<=4'b0100;1 W9 I; H& A& c0 e
. L4 K0 }: Y! I% L. y data<=8'b1110_0000;0 c/ r$ x& d, |
2 A8 C' k6 i( `9 W" W
end5 P) d7 k& ?4 H8 j
+ a4 J( f* f! w 3'b111:. x9 b9 U! A" D' U
- ~: x }- G j; e- t. n3 @ begin2 ?+ S. V6 q6 k; M+ q
6 g: U+ m9 {+ Z$ F4 i" H
sn<=4'b1000;9 G4 l' K& I8 P% ]. A0 s
1 O, G0 D2 O' \: F/ a
data<=8'b1111_1110;
# |% R9 u8 f5 h0 Q0 g! ^
& L" O5 ~ t1 A. n' l: q) V# H. i; D
3 n" M8 o+ N3 v3 v
( d$ ~! I$ i$ h. |. f; t end
. ?, k. H- y6 O% ~, N8 [* s
( f+ N' _: `. ^6 i4 n" J endcase. U! y O1 T1 k1 V' l. [, [
f/ U7 R$ w- Xendmodule# O; H& Z2 r- q0 O* v; V
0 @3 u+ C7 j0 g5 f$ f k
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
! F s. Z- A) W. H. N |
|