|
|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
$ k# B7 q# U n- A) v2 g8 _0 M+ Y2 E, y
module s4_7seg(clk,rst,0 c' I; l+ {4 C! G0 @
1 ^7 i! y+ G5 l3 D. I/ r( y" a4 o7 o s0,s1,s2,s3,# Z2 [6 o- X- S+ [
% C1 w1 K' K$ |* a% i+ T/ D* O* t2 D
d0,d1,d2,d3,d4,d5,d6,d7
5 Z" h2 n) V3 E* y. i
& h1 G& _8 j, X6 E5 j. p& X3 M# L i- S );
* h$ l# d/ u* R( h$ U# B3 b; P- v0 m4 {5 @
input clk,rst ;5 p. ]/ a w1 V- p) O/ g
) `: I! I, |4 F9 ~( Q3 U6 Q
output s0,s1,s2,s3 ;5 D* A: ?$ k( L4 b/ N
5 }) D& Y& ?$ `1 V
output d0,d1,d2,d3,d4,d5,d6,d7 ;8 l1 S7 H# V1 l& k, |1 h5 k7 R& Z
. p. c3 M( |. T8 H4 }& q6 } reg [2 :0 ] state ;
' T; ?: U: e+ P2 u" z7 Y0 T9 g/ v* @6 c
reg [2 :0 ] sn ;+ V4 ^+ @' N0 ^9 n; z7 a( V
: V7 n/ {( F5 v P' Q reg [7 :0 ] data ;0 `( t9 ~4 W/ M8 v& T# k
- u6 b* W! m1 ~ reg [23:0 ] cnt ;
. {4 e- h! q s
9 h3 n, |7 ?# V& G& l
+ D, L, i# C& T }6 N
4 h7 y+ ^# `/ G4 c, i, @ wire s0,s1,s2,s3 ;
$ u4 L* O" k; h6 l( W
! x) o: G% E$ N( b, E$ J! o9 d) f wire d0,d1,d2,d3,d4,d5,d6,d7 ; # c# w) H) E2 w: B6 q0 ^: Z
9 l8 G3 _+ ?* A% ]* D assign {s3,s2,s1,s0} = sn ;
& b! o( [8 s9 _& u' S$ O2 o9 z M" A2 F" n" ^) P
assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;
, S. r c' R$ Y z8 k
' w, a( Y, Z3 p* h0 t# X1 D* K always @ ( posedge clk )7 A; O( x/ c( W6 f ^% D) ]" }) i$ W
9 s' A2 ]1 q8 Q, y( _
if( !rst )6 w: {) Y" H# r
7 ?' z" U' ^% W$ p) ]) { cnt<=16'b0;$ r5 y) s. A! y$ x9 ?! z
9 I) r& U, R9 b z7 Y# Z+ E! y S else
0 I& k) w9 H; `( K+ V3 a1 }) a2 B! N/ ]
cnt<=cnt+3'b1;# m# s6 W5 l5 }- v; Z
" w- s) T; a9 c- Y1 i wire clk_slow = cnt[24] ;
5 W( H M$ A7 N6 A( ]. G! b! r3 ?& ^
" N$ W& a* [9 J. p! I4 n always @ ( posedge clk_slow or negedge rst )
# v2 l' d* B1 Z! p- U$ [, O" d; A! Y2 F! n8 [5 [
if( !rst )
2 U2 Y% U2 m: r/ e# t4 r, u" D+ K" w c, y" W
state<=3'b000;% Y. m+ k: R: n/ a" n
/ Q0 s9 K( M" @, F4 ^" P! h4 v
else
/ q6 [) M2 F6 N" j/ W
' Z- L) E6 R) T6 S% l5 r3 @ state<=state+3'b001;
1 w9 I, _9 J5 v; F' ~5 S. D! S7 Y H/ u
always @ ( posedge clk_slow or negedge rst )0 |7 ?0 i$ y+ L! R( Z3 ?: {% t! q/ H
: o. K, I* A% k7 F$ \ if( !rst )
0 F+ I0 T5 |7 j* ^' c
\( S# F2 I9 X+ ~. `+ e) j begin
k/ m- V% y4 n9 \9 o8 ]
6 o+ m8 N9 |1 ` sn<=4'b0;4 P/ z2 k8 ~* ?3 B5 z' f3 R
" f) Z& O$ }1 E( d6 a7 f* A6 ` data<=8'b0;5 z- H _# n& y5 Z2 d/ z2 H
7 c2 Y I% t# E' O
end
5 X$ r' ]3 |0 l c* m% N% M- y
2 Q' T% ^8 |+ m3 f' [6 [7 v+ q% z else+ O1 `9 ]: ]! n; S. t. n, b9 i. a1 X! t
7 {. } M. i# Q- A% f case(state)' e& ~* h; H1 k9 o
q) p0 E" w# k; `+ k
3'b000: e8 _4 j" d7 x9 f
: T) p9 l% F/ g# h& I
begin0 O1 b- S4 n: D( p# y6 o3 e
4 s) O0 F& _& W7 f8 C/ J sn<=4'b0001;
% I+ v/ s5 n7 x0 ~% o- w" |. d8 I. o) R$ T
data<=8'b0110_0000; , T% R) ?4 |0 R; N; @# `$ _6 p" r, @
- {! x& c, I1 p# z9 _
end& y' w; n; ?4 }+ j- J2 Y
o2 X+ p# O2 z5 G" F1 j' V
3'b001:% l& u* a, p: l
1 |1 v" K1 i8 s* x, T begin" `7 X. u0 J O
, c! @3 m# ?3 c* T7 U* |& A+ Z' D: y sn<=4'b0010;+ h+ i( y, S0 `5 e" L
# g; F6 K2 U: Q3 G0 p- \) H8 C
data<=8'b1101_1010;
; T3 u8 @, L$ v- Q+ p1 M" g9 b0 w( W6 V4 A8 O
end" U( m) r. Q$ f4 C& s# Z7 O( k" V
; C9 a& r: L6 z
3'b010:
: E4 ]& c( p Y+ n% T8 g2 w4 T* W$ p/ S6 I
begin+ r3 H* [; r% k
P0 E7 d: k; x9 @0 ] i7 _/ r
sn<=4'b0100;0 ^/ L3 ~4 N: }5 a; e
& y" F/ t% ]/ b' y2 {9 x; C1 A data<=8'b1111_0010;
# h; W5 q. E3 J# s$ P2 g, K: w% x/ O* V1 f
end
0 i) Y& U) G( _- v$ }2 _+ y6 s0 o6 Z4 {9 L! X
3'b011:& l% j2 l, h- j3 W8 k, o
2 {6 Z7 |% L: Y, i" l begin
. E- M7 W. o* B- c. z% E" P
7 ]/ h7 o4 u1 C& I sn<=4'b1000;- y3 x) U+ b+ D1 n
: E9 l1 a8 A( C `- g
data<=8'b0110_0110;, s4 ^% W/ o" V% O$ b% |
6 F9 O$ O& g9 d
end- K' @$ }! K1 Q" Z0 C2 k
& E3 |! F C, b; R4 Q; j7 t 3'b100:
+ j" Z, b+ M( ^0 G. P: e# f9 K
+ ]' w$ B" d3 x% M" s, N* W begin$ J2 R/ ?$ U2 E( N: k
! }. I8 ` I7 b& ^9 d+ a sn<=4'b0001;+ D ?; _9 q/ H+ k) W8 w: O
6 L: s# a0 }7 K: i3 c1 v data<=8'b1011_0110;( o9 q2 e$ e3 K, S
+ j' F. _* I. j9 ?' k: @5 w end" w9 C. q# P5 u
/ |# n! M1 d# {' ]
3'b101:, c+ M0 _" V1 \! Y: L7 g
2 O+ B- ]5 n' ~+ V$ ]. z1 |* j; {
begin
, a6 h+ c8 Z6 O+ G. L1 S# s0 n* L9 n# X" W
sn<=4'b0010;1 J. H. B0 G9 Q) E4 R
3 r1 y5 S! ?6 E! Y data<=8'b1011_1110;1 a6 l5 A" L$ U: S+ n
% j5 K9 t& V% W" E: ?6 K
end
: m; w5 z4 m3 Z2 ^7 h$ D
3 g5 v, {+ B9 j0 {/ T" @ 3'b110: S4 W: s" O6 t$ |# l
: Z% c. b7 B; I* q& a
begin
% ]' h4 C# E5 x; B0 [% G0 u- f4 r2 D) D0 l5 i' _
sn<=4'b0100;
7 [! J V; [, q4 b! Y. J Z# i( T% E9 u/ p; A
data<=8'b1110_0000;, Z& M* Z; D. ?" A2 m
# ?8 C/ J0 R+ m! @
end7 ~9 F' x/ D$ k5 [7 Z
4 I' u- G t1 O 3'b111:
2 P- m' e* `" r2 W+ j) ~4 [* g+ f" R p, r* o, ]
begin5 A, Q/ K0 Q0 W' p4 k
5 Q- ^/ ^( r2 L* w. K: Z2 l* K sn<=4'b1000;6 i ]% w6 E1 P* Z( S- Z+ F7 V, }! ?
+ d2 ?0 p: O6 n4 B6 |& b
data<=8'b1111_1110;
/ w' v, |" j" M) L0 o- v# B( A
* t% u- \* l. D! O
! `) y `6 H( f" Y) E" ~5 }6 o0 i
end; T. z: F3 q8 M3 V/ P- Y& }8 ^7 O6 e
6 Y! {% ~5 l8 [6 B. f' d" V) T endcase
! U7 W+ S$ q# t8 C7 I; l9 I# ]4 p" j9 j9 v4 c7 m8 G) S% U
endmodule
1 M. X. r6 u) R& `
4 {8 g# L" X" B7 l4 m- Q这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?) |( s! V9 G1 A- R7 J
|
|