|
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
+ r4 ?' F1 G7 g% w! {. v0 ]
$ s0 z& \4 `8 X- |# i) @module s4_7seg(clk,rst,
: C- e8 e4 H# ]/ N) a9 g
% v9 K" r4 f4 ^4 _8 B s0,s1,s2,s3,
6 R$ m" F9 Y) H7 l% B% i2 }3 o* M8 |6 G3 w+ r: l( V, R
d0,d1,d2,d3,d4,d5,d6,d78 H! ]( [; s* {2 W7 F
8 V/ p& Z. F' \
);' O9 o0 ]# o* A c( D
" f" s8 ^' `0 i
input clk,rst ;
% z6 Z/ t& `1 t$ T; m) M( k, J% Y* Y0 m7 _ C8 `
output s0,s1,s2,s3 ;, @5 L6 ?6 }1 w$ ?8 L
" W2 S8 d0 q; \" V# h. V4 U# |, Y
output d0,d1,d2,d3,d4,d5,d6,d7 ;
1 I) J3 d" z* M" u! Z
' y/ Y, f; d& H: c$ |. o reg [2 :0 ] state ;7 J) o- K/ l# \0 _4 {2 x$ J x
5 _; g& C/ E+ x: P reg [2 :0 ] sn ;
3 I+ |; `5 S: Y( d, |' D. S
1 M! F4 V0 @9 {, \9 [2 o* A) a reg [7 :0 ] data ;
7 l" r# e6 U( s' @* I7 ^* c) ~0 g. f3 | z J( H- b
reg [23:0 ] cnt ;
4 P6 Y& p5 ^! {4 I& c! L7 ^" a1 K8 `5 ]) \6 X9 @" Y; I1 T& z' ^
! @# G# m9 X z/ ?! g
6 D5 {$ p" l( j4 i+ d5 A wire s0,s1,s2,s3 ;
8 e9 l/ S8 |" X/ h7 h+ t; p4 F! ~
wire d0,d1,d2,d3,d4,d5,d6,d7 ; # K. a: B6 ~4 M7 o
6 |( g. D9 l! s
assign {s3,s2,s1,s0} = sn ;
$ C+ G0 R+ R6 }8 u
|9 ^( t. m% p) A" Z) A6 A- O7 [ assign {d7,d6,d5,d4,d3,d2,d1,d0} = data ;. E8 v5 H2 ^ h) w
3 C. o, e) l8 ^) n. E# X
always @ ( posedge clk )3 E. _' L3 X& m8 d0 F( \9 v. K
" I/ O! f, b6 y8 m2 n, w if( !rst )
2 b3 {9 {, v+ X* O: j; y# a+ C1 B/ j* f
cnt<=16'b0;# a/ R; N6 b9 x, q
3 j4 H6 L9 i& K" h% a E2 O
else- x& ^" M/ R$ t% h. [3 z4 ^
7 l7 a! B8 u- O. O% o cnt<=cnt+3'b1;
( P1 ~% ?# n& B% ~* z6 u; G8 T! \6 M2 j& p
wire clk_slow = cnt[24] ;9 M% L7 E# K1 b( E/ Q# p
9 i) F* ?8 u' o; I ]3 b
always @ ( posedge clk_slow or negedge rst )
/ b9 y5 L7 Z; Z% a9 O+ l- ~: o" D1 @' `! c' k2 s9 i
if( !rst )
- {- A n0 G o9 H
( Y3 A9 Z9 k% e1 J state<=3'b000;
- {# Q! |; e6 [" Y1 R" K
9 X" k" d* [% {% g- R2 P else8 |4 v9 J8 x) \( m5 o* r; \
$ B" H8 h) h( [ state<=state+3'b001;
( e2 q0 R2 [; K; B4 Q! b9 [; s5 |" K, P
always @ ( posedge clk_slow or negedge rst )
( D, v8 Y4 @4 C/ B" _6 U+ Y! e! s2 U5 M
if( !rst ) Z" D' }: ]$ b6 ? h$ d- c
) f0 f" D6 m: y: y( Y2 v' n* x7 o begin% z# t" n" ?% ]1 h
0 q: w. \2 M. O sn<=4'b0;
+ Y k+ c& L7 q' [# s
; Q; U: s* }6 D4 G data<=8'b0;: B. ?+ _' f- @
% l: A1 O7 v9 k# D. H2 v
end
0 [ T5 B- T; s+ u2 q
: {3 o- x0 D0 [3 D0 d& { else
% K$ r) N, ], C
# W" G \) k3 C0 W* o8 |. {7 w" f. f1 k case(state)5 z: d" U/ z) J
6 I# D/ Y) k" D5 W
3'b000:
+ I8 ]8 O8 i3 c% A! X: V8 g# M$ p$ D& I# I+ _: \
begin
2 D) @4 W0 I1 q1 E
; ~# O' j3 E3 f1 n$ M7 l sn<=4'b0001;. G; e1 t! ]' m1 T* N
1 q/ R1 {1 H0 h9 z3 C
data<=8'b0110_0000; ; n, K" i# X. M+ \7 |
7 s: F6 m2 s9 r7 h3 D) | c5 P end
- n9 T" B' E& a' m
" Q8 [& B' q0 d8 q. k 3'b001:4 y1 {# J4 \! u9 r0 G
- j8 L, {- Z: h0 E6 I0 H, x' S begin( s2 O. U1 K. L
. o5 a8 ^1 x6 y3 g% \1 U( t, s
sn<=4'b0010;; S) [( M8 V+ Z
" R' ^7 F7 I, B' |5 S data<=8'b1101_1010;
9 w, V4 r7 [4 }- P+ P# F- w* f7 ?4 D- F2 @) N
end0 i- d& ~0 Q) s/ U. C: A1 N8 H
- {) z% U3 d+ C- F" G% M$ b
3'b010:
, P s5 Q4 \% l5 q4 S, @1 W! J
$ j7 g( j& P/ R1 L$ C& Z/ A* i1 l X begin# ?; T* X9 L4 l& G
' q& V& o% o0 J2 j2 X
sn<=4'b0100;
' n, J6 d. u7 O9 Q% _( W
& s' C! ?6 `$ M( n' z! F# K data<=8'b1111_0010;
8 e1 p# i3 w4 ^% Z7 M5 U+ |9 W5 M, E; z2 v4 A3 q$ I& Y
end' Q4 `9 V( f& d) E& d. o
1 d4 p" |& y% W: U% C 3'b011:
) n% {9 x9 {* M
! E( y" A, m8 a9 \2 c# t9 z; m/ ? begin# l; C; U/ R. g/ O) `) W
: m! C3 A5 d3 E, Z2 D7 v sn<=4'b1000;7 ~% S: t7 e1 w3 z. _" q% h, r" o
5 ?1 j! j2 M1 T7 [* k) x$ m
data<=8'b0110_0110;
# r2 t' a3 N. h, p: |; k" ~% n ~7 `7 o& m
end
1 Y. D4 w; ]& d) J: o5 Z3 z
( H8 S+ r( {3 U- v3 @' l 3'b100:
! R: y! F7 m* z6 k& L
. `- C: n0 x3 n# C. j5 @7 w \ R begin7 \1 v9 M, E% \
) ^3 w# d% }% O
sn<=4'b0001;
3 j2 D$ R1 P% o! M* F/ A8 R2 [! V$ S: V3 j- w8 [
data<=8'b1011_0110;
$ P6 ~: v/ L! E( A) W+ ~8 ^$ T+ Z& W i+ G
end
* o# M6 V) P4 G( b/ U J
$ \% |; Z; i1 J4 Y& Z( X1 a0 ]1 w 3'b101:3 G* p: ?, Z0 E
7 J g3 R- A2 g1 ] ]3 H begin' O |6 u- G0 H5 s
) o6 r0 `1 T. F( N4 f0 b3 F sn<=4'b0010;( o$ y1 }4 h& A, C9 U0 R* Q
- c7 }* {1 k( s C* G data<=8'b1011_1110;
. k/ s1 _' w& I5 L# y! c2 Q" ~
: V0 n3 a" t b( p' `6 h0 ` end
0 a) Z3 {: C6 T8 W* W$ N8 ^4 D6 b. J5 a! T( s2 \, [
3'b110:
* g/ U, V8 ]$ D2 J; L* @6 v6 _" Z( ~- t# C) Q G7 v7 H/ D
begin
% Q i, }8 X$ }* D d" s3 s9 h' s6 q" {
sn<=4'b0100;
/ | u" j* v1 c- ^0 m& d
4 {9 G3 D6 G* l7 R' v data<=8'b1110_0000;
7 R4 r$ f: K$ J' _* K! @9 H$ q2 {4 z. r. Z% b' \, {
end' H, ~) ?% u5 I0 ?/ Z/ r
" o% J- A) |" i( u9 B, ?6 y5 {7 J8 M
3'b111:
9 g- _, o# A* I4 {7 {0 _3 X: I6 M/ z$ _- F. }# P- _
begin
2 n; b' o' I* y0 c$ U) f# j1 k9 Y# k* \. g) o
sn<=4'b1000;
* w4 A( f* j! m+ C7 t/ P+ Z3 {$ V; {5 l
data<=8'b1111_1110;
0 l+ q7 p0 O; M
Y; [6 M) K, H# T2 `; F+ O* ] $ I( y$ } o# F3 x, V. c
9 z& |, M& T; F7 [- }+ g& k) c4 ^6 e end
* \0 Z/ q* S) u( v* ]4 d
" u8 }# i, Z \* K, c, l endcase. _9 `- }2 c+ p3 O( T A) b
. _- Q0 Y% T' Y- n4 Zendmodule3 |% Q$ l2 W/ W+ [2 K9 d" o; l
7 T! L- o! l; C2 `
这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
2 I, A: d- M. F" v; O* i3 I |
|