|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
3 e/ v3 o- D- U9 |: W: p( h' Z" u4 W6 G# @2 R+ b
module s4_7seg(clk,rst,
; y. R6 | t7 I) j4 y2 f4 c+ n; |) @ K' f% [
s0,s1,s2,s3,
* R* t6 e0 @* |2 Q* G2 R3 _5 V' q M) P
d0,d1,d2,d3,d4,d5,d6,d7
" ~- s/ H( R3 v2 s, A8 c# g3 K: W; t
);
9 r4 n3 B3 v+ s4 \8 ?' m: s8 w8 X# g; A
input clk,rst ;3 `3 ^: t( Q& \! l9 ?
6 v3 c6 ~/ O0 M/ X
output s0,s1,s2,s3 ;5 L3 B- T# `& M0 Y* |, _3 {
, |8 Q* w% Z1 c3 D* O% x output d0,d1,d2,d3,d4,d5,d6,d7 ;& Y7 g1 H1 Y, Y2 _$ |$ C% O0 {1 V6 ~
& j7 i& A/ e$ e+ {( F reg [2 :0 ] state ;
! Z3 U# w4 {# ?+ w3 l% R( ] T' C) C: x0 j/ }/ W
reg [2 :0 ] sn ;
4 [- O2 ^3 S0 r, L- W
5 o ?5 e" v% D3 R/ P7 O5 A& c reg [7 :0 ] data ;% Y8 A1 \* n& t. a/ M% W; V( q
( L; C$ E8 {. `: B reg [23:0 ] cnt ;. X3 ]7 [/ Q* U: d" y
. d# ?3 G) n/ P- e2 ~' G+ T8 M3 S
/ X3 I! N; V* s* Y) n
3 _% w1 x, l& |! [1 l: X6 r/ ^ wire s0,s1,s2,s3 ;
$ ]0 r$ F; W* O; Y1 g) O
) W1 [: @) K& ]6 |5 e wire d0,d1,d2,d3,d4,d5,d6,d7 ;
! s8 y8 k6 q- ~2 e
& J4 u7 y# L; f. E8 p7 m( b4 s assign {s3,s2,s1,s0} = sn ;: N5 x5 [8 F% j0 b- M
1 r D1 X; H# r7 H
assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;
+ \7 `1 m9 m' S" K3 W% D+ \1 t: R0 J& o9 F
always @ ( posedge clk )
' j. D/ `0 Q- N F5 U, |# d. Z( `1 i: f6 g" X! K$ L
if( !rst )
, r: f+ N! H8 o$ ]4 r* D+ U Y! i# F# R0 A! t8 {4 K$ ^
cnt<=16'b0;& Z+ T H ]8 A b6 W% Y+ {
+ A1 G* P" m- S$ s; Y( s# y. J
else
: z2 T0 _. @6 e$ F4 C2 {5 F0 M
6 J2 ]* t6 t- Y. e' z( h cnt<=cnt+3'b1;
% y. g4 Y9 I0 w/ E3 j7 q& ^* N+ I
wire clk_slow = cnt[24] ;
* z7 m7 B. U8 t8 e, ?. n. V; \0 ~: R3 d$ r( n
always @ ( posedge clk_slow or negedge rst ): A! Y% W& p; R# ~( u K6 v% p
" ^) @1 S9 b9 X8 I
if( !rst )$ F! [) j* p/ H( }6 g9 w
) s9 K0 d* @3 ?* J: `$ Z7 b: c$ c state<=3'b000;$ @& Q# a q# \: ]
& V+ i4 F4 c& r8 x
else( A# @# G6 E( r F- o$ {( u* ?
7 k& G+ P c( z8 e state<=state+3'b001;
r$ u( B" y2 p7 U
8 T" R* N( Q5 D- A- ? N* b6 Q; l+ o always @ ( posedge clk_slow or negedge rst )( |# `2 T: Z5 n0 @
" n3 b5 Y9 k1 S5 x: y, P9 B( S E
if( !rst )
9 ^: s" b+ y O1 c
) A0 k, C" `9 c/ n+ x# y1 Z begin
" d+ y. T* I) c$ @( Y- w6 b6 |' {, |4 F+ u9 y
sn<=4'b0;
4 r% F- |' a1 a& w; {+ z% f1 r
3 e9 x4 H% n' @9 X5 k data<=8'b0;9 c3 ^: j% q4 t
/ b" j, n4 @) x/ h7 Y; ^
end
, c* }& Q8 B) Y. _9 v
4 I) @" f9 c' z) u/ D/ H) k' p else
0 M" ]# Z& `7 J
# | _+ i* K2 Y7 j# k" P4 W case(state)/ h4 k9 @) p" k5 g0 e
+ P% n$ ^6 F+ e1 G* \# R 3'b000:
5 c- \2 {( a8 [, w& o& H3 H2 Q( c* r/ Z9 [9 k- z
begin# a- O4 g3 T* s3 y {3 y8 Q& M8 V
. _) A! F; `$ R2 M
sn<=4'b0001;
4 u2 g& q# g, J+ m; y
# l5 |; ], y5 h& n' a( B/ x data<=8'b0110_0000;
( Z G2 x' W/ x. L
) N( w. l, l! y6 ? end8 z6 I. c' W4 e0 ^5 J# V# W9 E. {
1 a9 b5 m0 D9 U* C) ]: r
3'b001:9 ^$ u1 }& J% w# d8 s) k
1 j, T& f0 |% [9 X begin
7 Y* B* ?( k; B/ k7 \. H
0 } q5 s" T' ^/ y0 S2 t- S sn<=4'b0010;
" o2 ^! @* t# e. {8 h* Q# T( k
! g: k0 U) R* D1 J+ L0 t9 u data<=8'b1101_1010;
7 F4 ?" m, [4 m/ x8 V
6 P# z/ ]/ F& Q5 w7 v1 T4 n, O end( `9 j3 E2 |) D$ R
7 ?& `0 |8 X4 N4 u 3'b010:" j/ ]6 l, u# a: y
7 h, A& ]" g9 Y ^9 W
begin3 [6 V; M" q; k g; v% |0 c, g
3 w- Q/ q n: E' Y, E sn<=4'b0100;
3 q1 G7 Q6 u3 E! B) l# t7 h
+ `& F+ r7 y7 T( d1 `# T& | data<=8'b1111_0010;, ^7 L) h) x+ x
' Y; U1 v: a* A+ I* e0 G end
$ M8 J" y* H- _. N, J3 S
+ A0 k+ S* ]/ |9 \+ g 3'b011:
) K4 f \# V# ]2 H9 P
9 v h$ g+ K. l3 m begin; s/ p, r9 E2 ~# M& {0 j0 k) h
5 t8 B! S# q! Q b
sn<=4'b1000;
+ U- \) o' i3 ]$ d( F: j! m2 a! ~: }
! j% O |# F Q9 l) l: l data<=8'b0110_0110;" U5 j7 P; ?2 x$ R
! n0 w' \8 p( K# F; H( _5 h
end
& W) C7 c/ y$ Y4 ^* o) T* t( a) ]' O/ M. M- T
3'b100:& n9 v# y3 X& ^& t" s% f
" Z! Y4 U& W) e5 B begin
, T; a4 v& S: P7 d! J# K
0 D5 x& {9 g$ j L6 u! C& ]8 ~ sn<=4'b0001;* T& q& n% l- f& Y3 L
; s+ V% @4 R; e1 q3 w& C data<=8'b1011_0110;7 @$ e7 ^! M" h: |
6 p4 n1 [4 l5 H, t' R$ O1 F% z
end% }5 [) O7 ]6 a! V
d( u- t: C. k: M; {3 M+ E 3'b101:
( W0 E- k+ p8 D: o0 W4 a7 }( M4 P8 F' T R. k
begin
4 E! F3 R! M. q b0 z* P) d9 e$ m! K) @
sn<=4'b0010;
- F' b& _ K- W8 b+ X1 w9 d. a( u- P) f) W8 M6 T; ~
data<=8'b1011_1110;2 K% [' M6 M& E! v
6 Z, z5 K$ I8 x$ z# X" z S. u- P$ d
end
8 I( @ _: _3 A" d9 w& Z2 s) C2 D8 l$ `6 V* k: Q& U
3'b110:3 W: D% A- [. g. q/ J
% k: `/ W2 v2 e2 V begin
0 t8 P1 |' n' b# Y6 @& A0 f/ n1 G* ^2 f% c1 m' l( A8 z/ \3 ]! b
sn<=4'b0100;
: H* ?" U* m+ S0 L$ C
4 B3 L) Q0 M" g- H4 G7 n data<=8'b1110_0000;9 Y6 F t3 z0 \$ Z7 \3 U1 s7 B: @
9 \) {( T4 ]" L
end! ?" C- m1 v+ t! I" c; b
/ n; N* B& X9 o | m' g7 S 3'b111:8 q4 v& A, s! K$ j' j% k0 `; n
" X: j) N- N8 `7 ] begin- F3 [) z" I4 E) C s9 D2 N
+ T# W# [5 x+ E
sn<=4'b1000;
# }6 v# m+ E$ ~9 J! H A# F; k6 R/ l7 a2 W7 w, V6 X, W' c
data<=8'b1111_1110;3 y; h& A6 l3 N* i
; I2 ?* m7 b4 N5 y: ~ 3 C+ G% F" e6 n
6 L, A; z3 p$ O) p; n end" O- e" V* r) c; q" D7 W
/ W [$ _% f- l
endcase ?' h! ]5 b- {
8 ^3 Q, ^# m: k
endmodule
$ h( V5 G: s& F1 T' a1 i2 N X E7 _6 C N3 w% S7 s6 M
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?' A) o+ ^( b" E& S) v7 d, n
|
|