EDA365电子工程师网
标题:
各位大神,请进来看看,急急急~~~
[打印本页]
作者:
zhangsong123
时间:
2016-4-13 10:36
标题:
各位大神,请进来看看,急急急~~~
各位大神此设计有什么毛病吗,能麻烦你们帮我指出来吗?
7 i2 H0 ~" H6 c+ S9 E: W6 Q- w
设计要求,40秒倒计时,9秒之后3秒一次的SOS警示,我调试之后蜂鸣器不响,怎么回事,跪求大神指教!!!!
) H3 H/ {* `% u' H5 R5 d
module led_rxd(clk,rst_n,SOS_En_Sig,led,led_seg);
7 j% D1 r9 v; h+ S0 T0 }/ H
input clk,rst_n;
, Q/ W, N: ^/ N. F$ D( x
output [7:0]led;
" o1 @* } \% v7 a8 T2 s
output [5:0]led_seg;
6 u" Y8 O% r8 Z- E8 f! a
output SOS_En_Sig;
9 P- |, k4 u. j/ W0 ~* M/ k3 S
parameter seg_num0=8'hc0,
9 j3 ]( z( f2 e C$ _% ?5 z" r7 p/ M$ D
seg_num1=8'hf9,
) p! A9 H! B& c! v
seg_num2=8'ha4,
. H0 @2 R9 {4 L+ R6 l& G, ]
seg_num3=8'hb0,
4 F, d* p! w) u8 e
seg_num4=8'h99,
5 P7 q1 u* C8 G9 V6 b! c
seg_num5=8'h92,
) r+ P% E7 d) A3 N( v5 X# C( Z
seg_num6=8'h82,
+ F- r( ]4 F' @1 W y t7 l/ w& Z
seg_num7=8'hf8,
) G h8 o& q; f& M
seg_num8=8'h80,
7 a# \6 C6 q3 P2 ?0 T9 u' E4 h s
seg_num9=8'h90;
1 [# w; L2 e% M+ l; x
parameter seg_en0=6'b111110,
; e, Z9 c& B* \% x2 @. t
seg_en1=6'b111101,
" ?! W6 L* J, Q7 H& Z8 I
seg_en2=6'b111011,
6 i8 Y/ h1 D* J3 R; T! w
seg_en3=6'b110111,
5 ~# R1 S1 t! y6 h
seg_en4=6'b101111,
9 l7 f* f" z0 ]) D$ P4 c
seg_en5=6'b011111;
' q ?5 y' Z2 q
reg [26:0]count;
- O1 Y9 ~; M9 I5 R P. M
reg [3:0] count1;
9 r- D" k3 s* Q" `# @* V: P
reg [3:0] count2;
4 F% N5 f: J$ a: T
reg [7:0] led_reg;
2 E/ r/ a, w. S+ |) w# W% U) ?. l
reg [5:0] led_seg_reg;
4 w( b8 T3 c3 n- V, O
always@(posedge
clk or negedge rst_n)
' c5 t/ o/ q' T0 H
if(!rst_n) count<=27'd0;
& r( |- y P/ q2 i0 _9 I% ^) [
else if(count==27'd49_999_999) count<=27'd0;
6 O5 S" D5 P6 s% Z& w$ P$ I, q7 T
else count<=count+1'b1;
* q& m! K# T7 b; x
wire clk_div=(count==27'd49_999_999);
6 {. W) l2 Z" G' F. c* u4 ^4 _- p1 h
always@(posedge
clk_div or negedge rst_n)
2 X: `" A# R {' F( R
if(!rst_n)
5 I% I# v, g* T+ F# i/ _
begin
+ V( e% f! @4 O9 n/ s8 D2 O1 s$ E' Z
count1<=4'd0;
% Z; [0 \0 Y- C8 A
count2<=4'd4;
) B, K2 b& G1 K% Y. m9 C0 x
end
6 U1 J$ D5 k7 k- w/ S& I4 A
else if((count1==4'd0)&&(count2==4'd0))
: Y9 r# S5 N# ?& t
begin
2 G2 y/ r0 _' ^! [
count1<=4'd0;
) _& q% c2 J. n
count2<=4'd4;
3 x [9 F3 w/ H
end
, Q' x' O6 J |
else if(count1==4'd0)
5 e/ O7 S* a/ G) v. q
begin
- n B" M" e- ]& a t
count2<= count2-1'b1;
6 b. k! i/ ]. S+ i) b1 S+ d! B/ M
count1<=4'd9;
- Y! J9 h7 u9 u, [' e/ d. L
end
0 }) G! r) A! j9 Z+ @
else count1<=count1-1'b1;
/ I2 ~- k1 U6 }( f
reg [26:0]count_1ms;//
8 P A I) l7 r9 K( L6 q
always@(posedge
clk or negedge rst_n)
0 C2 T/ G$ H) U$ l8 S
if(!rst_n) count_1ms<=27'd0;
2 R0 a& {# D+ Z3 M
else if(count_1ms==27'd49_999) count_1ms<=27'd0;
; Q$ l% P/ j9 X8 ]9 j( d
else count_1ms<=count_1ms+1'b1;
' D* L2 `) j9 k2 R! J: m
wire clk_dis=(count_1ms==27'd49_999);//
! M- F* l9 |& |% X1 g: e
//
" d+ ^! L' x& o N0 j; u3 g
reg [1:0]state;
( j' S2 N6 }: w- P1 A" n
always@(posedge
clk_dis or negedge rst_n)
$ y! R* d- P$ G
if(!rst_n)
1 C8 z+ h1 q4 Y, i- M
begin
! ^/ K7 j2 C5 [3 U
led_reg<=8'hff;
# P4 s7 R1 f' [# ]$ u8 ~
led_seg_reg<=6'b111111;
9 I. O; ^% I/ Y* [; G
state<=2'b00;
4 t; r2 r5 E2 S
end
0 ]2 T1 J/ ?8 I+ m" x
else if(state==2'b00)
6 j9 ], M) G& w' {& z
begin
7 E9 A: |) J5 ]1 q% u4 T1 z2 A5 O
state<=2'b01;
+ C# v; C7 M, A3 m/ h" y q
led_seg_reg<=6'b111101;
3 U0 Z3 b( ?. ?8 O, ?0 }6 C
case(count2)
. T4 r0 R* O, V; R* @
4'd0: led_reg<=seg_num0;
( E9 `3 o6 v: O L
4'd1: led_reg<=seg_num1;
8 b1 |1 _! g4 P6 J4 H6 B7 ]
4'd2:led_reg<=seg_num2;
+ j+ Q: C" o3 K
4'd3: led_reg<=seg_num3;
) }/ \3 J: i2 |! i4 n
4'd4: led_reg<=seg_num4;
$ H& Y' s: N) K% Z! z9 f
4'd5: led_reg<=seg_num5;
r( M# ~ ^) V. r* g7 g* F+ U
4'd6: led_reg<=seg_num6;
; {# C) Z6 i2 j( k) s9 l3 h- @( Y
4'd7: led_reg<=seg_num7;
/ g3 |* E# u/ ^) S
4'd8: led_reg<=seg_num8;
: w6 w E. _( \
4'd9: led_reg<=seg_num9;
. ?6 N& z/ {. C8 @; H
default: led_reg<=seg_num0;
8 K, H' h5 \. T9 X" D( k7 W
endcase
- a) E1 _ S. l+ D# Q) l! T# I3 V
end
5 I, F: d* I1 D+ ?4 P* l
else if(state==2'b01)
3 Z/ c0 o) U) U
begin
- J7 I' u" a; B# A
state<=2'b00;
; E* L1 X7 |. z) g) O4 e V; _
led_seg_reg<=6'b111110;
+ k% [) w# A9 D: s1 c0 Y
case(count1)
+ l% o% j) S& H3 S" C9 A6 Q
4'd0:led_reg<=seg_num0;
% Y$ R4 g0 ?/ a/ U
4'd1:led_reg<=seg_num1;
6 }" Y$ |, }" l0 J0 s) V) `
4'd2:led_reg<=seg_num2;
4 }9 e4 V; U0 i: R- ]4 d r& @
4'd3:led_reg<=seg_num3;
7 F4 H4 R) n, h9 X/ F
4'd4:led_reg<=seg_num4;
5 V% [" Q. G2 X% o1 S/ {
4'd5:led_reg<=seg_num5;
; K$ S/ S+ j D" M" D4 `
4'd6:led_reg<=seg_num6;
" b" R% J; R6 W5 n/ E& i
4'd7:led_reg<=seg_num7;
' V% t! E) [9 o
4'd8:led_reg<=seg_num8;
7 c+ i5 u; l E( \1 i
4'd9:led_reg<=seg_num9;
/ K4 n- [- S( y
default:led_reg<=seg_num0;
! U. K( b5 Q7 G5 T
endcase
+ N& g5 \) X4 {, v" j/ R( m N |
end
$ Z) v, A- f2 v4 _# i. E6 e# f
reg isEn;
+ d3 o6 F8 |: D! c* ?, a% P
reg [27:0]count3;
+ A4 ?$ v3 P0 M8 g$ K4 f, T
always@(posedge
clk or negedge rst_n)
M; n8 ^# j' j$ ?
if(!rst_n)
3 T& ^1 K2 ~ t1 h4 [. s( e
begin
2 d4 n5 B; O8 F" B/ I2 }9 g: y
isEn<=1'b0;
9 `, q' R# Q6 e: u9 _' z
count3<=28'd0;
$ ]& L9 A8 g( Q
end
k+ \) y4 N1 j: b
else if((count2)&&(count3==28'd149_999_999))
( G6 v- q. ^$ l. A ~+ i
begin
6 K5 Q6 [4 u8 N/ D2 V
isEn<=1'b1;
- \. N; t* ^3 Y
count3<=1'b0;
2 Y+ q# l7 j$ I, G {
end
8 y. C7 W4 F6 u
else
( ~4 a+ U5 ?6 z2 O, \$ M4 o4 ^
begin
5 r4 ] T; P/ h
isEn<=1'b0;
) ]$ M5 Y" [; C2 \" b
count3<=count3+1'b1;
' }; Y( d5 Q Y- y! Q
end
/ U" f( o1 Z+ [7 ^% m/ L
assign led=led_reg;
% B& z3 H5 e$ F8 v% N. K" R
assign led_seg=led_seg_reg;
U; Y/ |' ?) B' a4 N( p9 O
assign SOS_En_Sig=isEn;
0 _4 b# c. X( V9 k( D: }' `( w( v
endmodule
/ i$ f' X( R; K! l( N
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/)
Powered by Discuz! X3.2