|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
通过Verilog HDL用数码管设计了一个40s的倒计时,想在10s之后加上一个蜂鸣器,无奈本人初学FPGA,苦试多次无果,故来此请教各位大神,能帮我在40s倒计时上面加上一个蜂鸣器吗,跪求了,谢谢!!!!module led_rxd(clk,rst_n,SOS_En_Sig,led,led_seg);; C3 ^5 Q! |" m% ?& w1 `0 m
input clk,rst_n;
: K0 {7 \0 n. Noutput [7:0]led;8 h4 h0 r2 d4 d2 ?
output [5:0]led_seg;
3 C; i; ~ [: M3 S4 h# {output SOS_En_Sig;
# ?7 x$ m8 p" s dparameter seg_num0=8'hc0,) i8 g$ Z c- E% ]: H
seg_num1=8'hf9,
, }" d' T: X9 X# H) ` seg_num2=8'ha4,
, T5 ?; [ n. E+ v7 K, H seg_num3=8'hb0,
' }$ e- n" z5 [' N" R seg_num4=8'h99,
$ |! |- C8 B5 T1 v seg_num5=8'h92,7 r' A1 t. s& k- ~" d
seg_num6=8'h82,
) x2 O" e6 s# ?$ S) U5 S1 H( D seg_num7=8'hf8,2 L) B! t4 r" M/ h/ P+ Y ~5 u
seg_num8=8'h80,. m) b% t9 f! v! Y
seg_num9=8'h90;
* ]9 I2 ^/ i0 J. Cparameter seg_en0=6'b111110,
3 v6 H o9 [" S- y* ` seg_en1=6'b111101,2 Y# e+ F2 T" D* X( m$ e6 p* n
seg_en2=6'b111011,
2 n# O* q6 c* v seg_en3=6'b110111,% e$ s2 ^, h/ @& U+ k
seg_en4=6'b101111,# s7 s Y0 ]+ D D) @8 v
seg_en5=6'b011111;
1 l) U4 o* W2 L- d$ _( ?; |! d' oreg [26:0]count;0 B1 ?" K( S; k' Z0 _0 D- Q
reg [3:0] count1;
?0 M- v; P% ]# Greg [3:0] count2;
! n$ [: Q# \3 G2 h0 P5 areg [7:0] led_reg;
- X. Z: B7 ] S% p( W) }* L/ v# K$ }reg [5:0] led_seg_reg;0 I1 ]3 \: N# T
always@(posedge clk or negedge rst_n)
8 ]% Q1 G l5 @: qif(!rst_n) count<=27'd0;
: m" Y( n2 Z$ P! G# L' }else if(count==27'd49_999_999) count<=27'd0;
/ y! r# z3 H$ B$ J$ S* y1 aelse count<=count+1'b1;5 g. o& C+ G+ P" @) t
wire clk_div=(count==27'd49_999_999);
# I5 q5 J9 c" ealways@(posedge clk_div or negedge rst_n)
F0 j9 v/ x$ K! `if(!rst_n)
: C& |# s& _4 tbegin
% S; K/ a/ k$ S6 X1 [8 W: B5 Qcount1<=4'd0;- N3 |! s5 L% ]* U: E3 C4 w* j% S
count2<=4'd4;
: W4 w! B9 A1 }! S" ]4 R* mend! b. O1 C; q6 O
else if((count1==4'd0)&&(count2==4'd0))0 y9 ?, j2 Z# k
begin z# j% K% A1 R' A8 s
count1<=4'd0;
4 o2 p3 F/ X# v. L% S0 xcount2<=4'd4;8 ~9 _6 U9 G: M
end, D) ~; t4 Q6 S% w3 q% I
else if(count1==4'd0)9 ~" E" O Y3 ]5 b* ~3 e( S
begin3 c6 \9 U. c; J$ M4 i" C4 {9 f
count2<= count2-1'b1;
& Q/ c; D( h; K4 v' w& @count1<=4'd9;* O; }6 T+ ?! t! h
end! c- @9 }, l3 A
else count1<=count1-1'b1;
4 n2 k" c2 ^2 s; Sreg [26:0]count_1ms;//
6 i1 x2 R1 h1 W1 ualways@(posedge clk or negedge rst_n)1 W" a& \3 S( ]: b0 z
if(!rst_n) count_1ms<=27'd0; 5 z) w5 i' M" J) A; u
else if(count_1ms==27'd49_999) count_1ms<=27'd0; K) ?7 O: C$ T0 P) v
else count_1ms<=count_1ms+1'b1;. c# e [& `, b6 b5 V7 y
wire clk_dis=(count_1ms==27'd49_999);//9 ]- D8 l/ i& p5 {! o, ^
//1 F5 @& x" a# a5 V: C; {! f
reg [1:0]state;3 h( @) Y; |) g( g8 Q
always@(posedge clk_dis or negedge rst_n)
9 M( C3 \9 I& X+ \3 Sif(!rst_n)
, q+ M$ u; W) K0 B& |& t* s% V& \begin
$ p: f8 V# K7 k# U! |5 {+ \8 \0 a0 uled_reg<=8'hff;# u T2 r; e( ^, V5 W7 [/ l
led_seg_reg<=6'b111111;
: Q& I" Q0 i0 f6 x! s, ]+ ?2 Lstate<=2'b00;3 D5 o4 W- ^* P0 |$ b- B3 F% `
end
6 P2 i) e4 B, p& J2 Y0 ]& |else if(state==2'b00)
" Y7 C5 K7 s* F3 ]4 Nbegin& }; [; M0 p) V0 c( c1 \; |: e
state<=2'b01; K" g6 f% K B; O
led_seg_reg<=6'b111101;
, e @) r2 Q0 X* w3 r0 xcase(count2)
/ D& e5 J) p7 \! @6 x' F/ S) E4'd0: led_reg<=seg_num0;
9 x' Q8 Y& Y, `" k# |' _4'd1: led_reg<=seg_num1;
8 q0 I1 D6 b; L# G7 C' G4'd2:led_reg<=seg_num2; 4 ]" l7 |# X) O* `& x
4'd3: led_reg<=seg_num3; 4 \8 H f! j% |8 |# f
4'd4: led_reg<=seg_num4;
: G) r) c9 o: p- \- ~4'd5: led_reg<=seg_num5;
0 _- q" m0 F* y4'd6: led_reg<=seg_num6; 9 a: l p0 Y$ e) u0 E
4'd7: led_reg<=seg_num7; 1 u8 V$ ~. y3 k. j& L
4'd8: led_reg<=seg_num8; a4 w: t: Z0 q* E2 j
4'd9: led_reg<=seg_num9;
2 @0 S. t* A3 m {: U% ndefault: led_reg<=seg_num0; ; f& \6 J# Z8 U% U
endcase4 g% X# E5 c G8 K) V- B
end. P( }+ v: ^0 S0 p4 S- R7 \* ^
else if(state==2'b01)
! {, R' m3 g# d. _$ Q. _begin
7 h7 j, E m$ p" rstate<=2'b00;
7 i% |- ^% @( a, ?- ~( y( Aled_seg_reg<=6'b111110;) f' L* G! [+ C) J" t1 i) R( }
case(count1)
$ k# ]+ n4 I3 N% i7 T0 N4'd0:led_reg<=seg_num0;! ?! Y5 q3 D) ]; K, r4 L( K7 A& \
4'd1:led_reg<=seg_num1;, `$ [8 @7 ^# I! R- `& u$ l3 e
4'd2:led_reg<=seg_num2;" ^ V T1 g6 C6 t4 R1 ]" N* n4 O
4'd3:led_reg<=seg_num3;
! O* W: l2 o9 i% }% z6 L* h4'd4:led_reg<=seg_num4;* o8 v; k) |9 C0 Y8 w1 b3 ]1 I
4'd5:led_reg<=seg_num5;9 x8 [$ r7 U6 k3 ~4 K$ n" z
4'd6:led_reg<=seg_num6;' j8 Y) N* d7 E$ c
4'd7:led_reg<=seg_num7;
, ~& J$ \8 e7 b( T' T7 W4'd8:led_reg<=seg_num8;/ U( B+ i7 R' |: x1 C
4'd9:led_reg<=seg_num9;" K# x3 A8 f: \, f: q# L# E& [
default:led_reg<=seg_num0;/ I9 u, V% v4 L8 d8 r0 \! {/ ]* _
endcase
- V3 n3 m& L% @* h8 kend8 H: t$ P- C+ l8 X% \
reg isEn;) }8 n! H4 i9 V9 J
always@(posedge clk or negedge rst_n)
7 b$ t+ I9 U. q1 f: |7 P# ?) [, Iif(!rst_n)
* Y4 H6 M; Y0 }begin/ R" G$ l& K2 U
isEn<=1'b0;
5 h K9 z- |0 ^/ Send3 y# i6 g8 n/ k. |. i
else
" \) F, Y6 J8 _$ c# K5 N4 g/ dbegin
3 W, H$ i( q( g0 f' _; zisEn<=1'b1;
( ?/ B: j" p8 i/ q& o. g" |end
) q( U n. ?/ D: I3 ~% Lassign led=led_reg;
+ S; J. V! y7 m- o' l5 }0 zassign led_seg=led_seg_reg;
; T/ z3 E+ @4 t( n5 ^" @assign SOS_En_Sig=isEn;6 j! r i% \# o& T
endmodule5 J$ A, L/ ~6 J% d: b/ D0 U
: A- m( \6 N7 C' ]% b ? |
|