|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
通过Verilog HDL用数码管设计了一个40s的倒计时,想在10s之后加上一个蜂鸣器,无奈本人初学FPGA,苦试多次无果,故来此请教各位大神,能帮我在40s倒计时上面加上一个蜂鸣器吗,跪求了,谢谢!!!!module led_rxd(clk,rst_n,SOS_En_Sig,led,led_seg);6 K0 u8 V) m2 h- E; U* _& M
input clk,rst_n;
6 Y) o( ]+ k# S/ B' Voutput [7:0]led;; L. _& W& }( o% `$ [; T
output [5:0]led_seg;" C$ c! U7 c/ G2 b
output SOS_En_Sig;
; U2 |9 y9 a1 E1 m& V" [0 dparameter seg_num0=8'hc0,7 T: S+ \* y* X; h1 l) J
seg_num1=8'hf9,# h: A1 a: s9 k+ K' O2 B z3 E
seg_num2=8'ha4,
. y# X; y, }# ^4 o5 t9 ^7 y seg_num3=8'hb0,
5 X/ y N9 b7 r7 w seg_num4=8'h99,
" p* I* }; K. q5 q seg_num5=8'h92,) |5 F9 {# V2 c( H6 C/ n
seg_num6=8'h82,8 q' d1 O3 L0 m, p/ E- f
seg_num7=8'hf8,
( p- l5 R. [& b$ X& x& M2 n seg_num8=8'h80,
0 {7 `4 |- c. d1 h6 t2 k/ T4 C seg_num9=8'h90;
& F: D! A( L* v0 n; iparameter seg_en0=6'b111110,% t# F- b# y% F
seg_en1=6'b111101,2 A# s. O1 T1 E" y5 d
seg_en2=6'b111011,
* j3 Y- i/ F/ f3 A seg_en3=6'b110111,
}" i: v% _ a seg_en4=6'b101111,
4 A. I* Q: i$ @7 g& ] seg_en5=6'b011111;* w6 M, j+ ?& D! B
reg [26:0]count;
6 J5 k, n0 A+ B4 S( ?reg [3:0] count1;
+ V, m1 e2 H3 R& q. B \reg [3:0] count2;) F8 k9 B/ J4 S* O1 J7 {- N5 e8 M9 B
reg [7:0] led_reg;
l" Y7 F. i: c; Z1 hreg [5:0] led_seg_reg;. j2 `; E' D( N5 C' b
always@(posedge clk or negedge rst_n)" G0 d+ v3 Z9 h: c3 ^0 R
if(!rst_n) count<=27'd0;( b. Y8 O, j, N }
else if(count==27'd49_999_999) count<=27'd0;! c% F3 m1 U6 ~1 S: K. J k+ m
else count<=count+1'b1;8 R% `$ R( P; b. C
wire clk_div=(count==27'd49_999_999); F4 n' M& t2 O7 e
always@(posedge clk_div or negedge rst_n)
0 X1 O# K5 Y, [% W/ F" f5 Zif(!rst_n)+ a1 y7 J; y) R% V$ U+ O6 M# `" l* y1 L: d
begin. T7 k! Y0 a8 t. c T
count1<=4'd0;
3 I) Q! L, t5 x+ v7 fcount2<=4'd4;9 X$ A3 ^# m( J: A, W) O
end+ l3 W, ?: S, S4 S! ~
else if((count1==4'd0)&&(count2==4'd0))
0 |, ]8 \4 U. ^% E% nbegin
' t. F# x5 S% H& N3 A, }2 ?2 ]count1<=4'd0;
4 B" G' K) A4 scount2<=4'd4;% D( A( m: q( y2 Q8 Z* y6 A$ ]
end$ b: O3 [4 b* J( S7 X9 h
else if(count1==4'd0)
% ~1 w4 i, G" L2 @ @8 m5 Ybegin# @2 K( J0 w; T3 l' [- d
count2<= count2-1'b1;$ m2 c: }# D4 z5 G$ L: m
count1<=4'd9;
z; @4 X, C$ c, tend
+ U c" X" {. G. ?! Selse count1<=count1-1'b1;- K d: s* a5 W F. }: G
reg [26:0]count_1ms;//
% r+ S8 z. i% V" qalways@(posedge clk or negedge rst_n)
( J. e5 Q3 \+ k+ T( m' Kif(!rst_n) count_1ms<=27'd0;
: A3 }0 @1 U% K; }else if(count_1ms==27'd49_999) count_1ms<=27'd0;
; f- v4 `% P$ G0 d0 p8 p3 p: x' Uelse count_1ms<=count_1ms+1'b1;! K! z0 e& ]5 ]0 r5 u
wire clk_dis=(count_1ms==27'd49_999);//+ i1 a, d4 B; I# H
//
! D5 H( l1 T# I& [8 a0 j" p% ]reg [1:0]state;+ e1 g. R# Z* j) n( ~9 U( j3 c
always@(posedge clk_dis or negedge rst_n)* ]& V y' E. P9 r: V! @* ^
if(!rst_n)0 B0 J J% {7 r8 c
begin
. p1 a$ r' h1 f! X5 u# nled_reg<=8'hff;9 X! t L9 b# |+ ~# _! {# c* f
led_seg_reg<=6'b111111;- ?+ B4 @/ K( \) ~
state<=2'b00;
0 f& L& v1 {8 A8 u/ F. d' Qend
9 I) |. X/ ?: S$ r$ [) a, uelse if(state==2'b00)
8 X% K. a {7 t6 m+ ]( Bbegin( O/ p7 [; m# ?4 `. k# [0 `3 z
state<=2'b01;
# K( d& j* r, c, j3 }led_seg_reg<=6'b111101;9 i; r9 K1 ^* {: c5 H+ p- o1 v3 ]
case(count2)- ?% m; }8 v) g8 e+ _( o! Q$ o
4'd0: led_reg<=seg_num0; " d8 U- p* O3 C
4'd1: led_reg<=seg_num1;
/ A8 P8 e" l3 K2 j+ _7 \1 r2 v) @( N; ?4'd2:led_reg<=seg_num2; ; ?! Z& R# x2 U9 l( c
4'd3: led_reg<=seg_num3;
! e K E9 I9 r. q% Z* l: L4'd4: led_reg<=seg_num4; # c& d: ^( z; K, ` g: [
4'd5: led_reg<=seg_num5; ( U5 r) D- O9 R) m, ?
4'd6: led_reg<=seg_num6; , s! a9 B6 L* g. y
4'd7: led_reg<=seg_num7; - M5 r; V2 Q. D# N7 ~
4'd8: led_reg<=seg_num8; 5 n/ m; R9 _; G! v6 K
4'd9: led_reg<=seg_num9;
: n! {+ S8 a5 y! r1 F; ~default: led_reg<=seg_num0; 7 G& E& m# X0 G5 T+ p. z
endcase
" ]# ^/ H( W9 d: dend" {; n% m1 v3 t x/ C
else if(state==2'b01)$ i; x% r/ b/ n
begin
2 p/ \: r% I/ Q: i, |state<=2'b00;
4 ^+ ?# s; {5 nled_seg_reg<=6'b111110;8 n( I) i# _6 z
case(count1)
# N) _2 p6 z. d4'd0:led_reg<=seg_num0;
6 ]* A- N4 O- w D/ u5 d: I4'd1:led_reg<=seg_num1;* U) M- G( k: ?( ] ~5 _. T
4'd2:led_reg<=seg_num2;$ ?1 Y8 U/ J8 u' ~
4'd3:led_reg<=seg_num3;! T5 f8 |6 x- W) I8 d& V; H! j
4'd4:led_reg<=seg_num4;6 Y- u5 Y& o' s' V" ]' v- M9 j8 R; E4 u
4'd5:led_reg<=seg_num5;
" R, C9 Y% @: W4'd6:led_reg<=seg_num6;
1 P! p- t; s& H5 N' f( t4'd7:led_reg<=seg_num7;. {/ w2 I' l l6 o
4'd8:led_reg<=seg_num8;
7 b( l4 Z+ c- X4'd9:led_reg<=seg_num9;
4 U2 L" o/ O; N" F& v& ddefault:led_reg<=seg_num0;6 S- @4 u, y& t+ T/ O
endcase4 y+ ]" ]; R6 B6 [
end$ q: W8 H! Z7 @0 U% [
reg isEn;1 g) _ U7 i- B2 U; @
always@(posedge clk or negedge rst_n)
" z/ p+ o# ~1 v5 `' Fif(!rst_n). I* E: `' n1 v
begin
2 s) v3 m5 m! h" E9 Y: FisEn<=1'b0;
7 ^1 ], h6 Q6 c) mend
3 r& Q3 N1 Y+ N" R) r% ^else( ]( r( r, D/ B+ b
begin
0 q( t. `) g7 o0 J; D2 E0 X! RisEn<=1'b1;
5 g# U( H1 `) w: L5 ~end" _( p) h) G" x4 V7 @2 W8 k# r
assign led=led_reg;
: u; P3 O/ b* |1 F8 Wassign led_seg=led_seg_reg;
9 L9 ~- M: n5 Q; H" |' O _/ sassign SOS_En_Sig=isEn;* W' g$ F* B% x: ~ C; Y
endmodule
5 Y9 @& |+ n6 ]4 T# y0 Q7 b+ D; N) k" E# ? _9 C& r2 Z9 _
|
|