|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
通过Verilog HDL用数码管设计了一个40s的倒计时,想在10s之后加上一个蜂鸣器,无奈本人初学FPGA,苦试多次无果,故来此请教各位大神,能帮我在40s倒计时上面加上一个蜂鸣器吗,跪求了,谢谢!!!!module led_rxd(clk,rst_n,SOS_En_Sig,led,led_seg);- a8 w6 Q/ P2 x& z. @
input clk,rst_n;
, l3 V, C% Y: u& }5 s- q3 {4 boutput [7:0]led;
# g3 D! M5 O! _" G, K* O" ^, J% Qoutput [5:0]led_seg;
, o2 M) l5 c. K" z) p, ^4 Houtput SOS_En_Sig;
% i+ e5 l$ a, r: C1 Tparameter seg_num0=8'hc0,
( J" E, Q9 O) D0 A6 [& B! {5 U seg_num1=8'hf9,
% j0 y( b3 g& z* x$ i! O6 D seg_num2=8'ha4,
2 K: d/ @. @) j! B9 R/ o9 c7 A seg_num3=8'hb0,+ Z3 M3 r; }1 `8 J) d
seg_num4=8'h99,, e3 }4 D: [9 Z2 ]+ c& ]
seg_num5=8'h92,: e. E2 B: f( K
seg_num6=8'h82,4 s+ h/ f- ~5 j& p0 D9 ^" H
seg_num7=8'hf8,
. j5 I$ h% G" O3 V% A6 I seg_num8=8'h80,* j# }4 C2 R2 V e
seg_num9=8'h90;$ f/ G4 \/ N: s3 i' W! L: f. i
parameter seg_en0=6'b111110,
4 [* j$ t' ?- I U& o' n' Z seg_en1=6'b111101,
: A1 Z1 H5 u' ] seg_en2=6'b111011,4 K6 ]0 X. o2 M1 u# n- p
seg_en3=6'b110111,1 J. ^/ v& W: y4 ?2 Q7 m! W" J" J& w
seg_en4=6'b101111,
/ R6 ~& `% v1 ?! C seg_en5=6'b011111;- V( j% U1 r% M5 ^
reg [26:0]count;* k1 j, A* X! L c1 t7 ^6 W0 {
reg [3:0] count1;
; y- ~, c0 S4 F" D9 Y$ `" ~- L# Nreg [3:0] count2;
' E4 w* C+ U* ]reg [7:0] led_reg;9 d; b. Q- V/ ?+ m; ]. L
reg [5:0] led_seg_reg;- E1 z! h; @' X
always@(posedge clk or negedge rst_n)
2 w/ i, \( H1 |) bif(!rst_n) count<=27'd0;
" ^2 |7 j" Y! f, \2 N) Delse if(count==27'd49_999_999) count<=27'd0;, @7 O" u& B3 g/ c# |* T
else count<=count+1'b1;
# [0 g0 J9 @/ B* twire clk_div=(count==27'd49_999_999);
( I8 Z$ e7 ~/ p+ T! talways@(posedge clk_div or negedge rst_n)
$ Q# T/ \6 ], N. G/ L* S. ]. Bif(!rst_n)
+ N1 J! ?& y' zbegin
7 ~7 `7 D- \, e0 V$ hcount1<=4'd0;3 ]+ B) x$ \# m
count2<=4'd4;; V( Z2 n, o# E% Q# y
end. v, `" S3 L; m; d+ q# K
else if((count1==4'd0)&&(count2==4'd0))' z! j3 ~$ n& b2 `5 H
begin
& l, s+ P% y4 ^- Scount1<=4'd0; 0 i5 T; x- \/ k
count2<=4'd4;6 ?& s2 r. _& |4 c, a
end
. b! _, W' [ T t* C# {else if(count1==4'd0)
6 B$ d; w( V S _/ O9 y" ^! _begin. o* D* s4 X/ y# D2 Q
count2<= count2-1'b1;8 \: \- U8 L- { w/ G; {
count1<=4'd9;; p* x$ P, `+ T
end$ q# O" ~+ S: a& y% P3 L1 z
else count1<=count1-1'b1;
. c/ `+ W6 H9 d* f$ qreg [26:0]count_1ms;//
* l# E) q& z$ ]7 P. kalways@(posedge clk or negedge rst_n)
4 j- w: t) L" W: |if(!rst_n) count_1ms<=27'd0;
0 W! Y8 K/ H/ P; qelse if(count_1ms==27'd49_999) count_1ms<=27'd0;
5 x! f2 u; H+ ^( r' {; zelse count_1ms<=count_1ms+1'b1;
9 @7 V! e+ w& ^ O# z$ Iwire clk_dis=(count_1ms==27'd49_999);//
& @0 R; F) W! |& L; a+ G7 `' E4 @2 q//5 y, t( A( W, y2 D& p
reg [1:0]state;
) f# P- G7 V6 M0 Galways@(posedge clk_dis or negedge rst_n)
+ m: U9 ~7 Q' r3 b6 a' Q, w& }if(!rst_n)
! N! a- O* K- _7 O! _! ibegin
4 t0 q- y3 {" W- L& l* Fled_reg<=8'hff;, r* Y4 Q# D. A! ^ e9 ]
led_seg_reg<=6'b111111;" Y" c2 e4 i+ f( @1 `& [+ b z2 B
state<=2'b00;
7 l# m; n# Q( v# O6 {2 @end) I# q( {6 e0 q! W! V4 a
else if(state==2'b00)
$ U' R: X% X6 O/ Kbegin
9 c5 c; Q, T% U- ?4 mstate<=2'b01;
& D% ~: r2 z# p# |1 cled_seg_reg<=6'b111101;: I7 Q/ {) Z8 R$ `0 _) o( v0 I
case(count2)
. q# z" s6 D2 x D4'd0: led_reg<=seg_num0;
9 B& `- d) D9 V: ]5 Z9 @( ] o' T4'd1: led_reg<=seg_num1;
& p( w/ {8 e; z2 w. S" T4'd2:led_reg<=seg_num2; 3 O/ h" A6 w$ e
4'd3: led_reg<=seg_num3;
3 p; h L8 c. O, L' b4'd4: led_reg<=seg_num4;
/ d5 ~' l* W) X" L# R, v; U4'd5: led_reg<=seg_num5; : U% ?4 h* _; v! Z
4'd6: led_reg<=seg_num6; % {. r9 o2 q( r4 j9 e: x! s
4'd7: led_reg<=seg_num7; " w$ }2 h; R& h+ n' ]8 [
4'd8: led_reg<=seg_num8;
5 C% }, V, o- C7 {3 g o4'd9: led_reg<=seg_num9;
! u3 K$ I9 z8 n4 Y( Q/ r8 M/ udefault: led_reg<=seg_num0; . v$ J5 v' j7 s& i
endcase
3 X3 p+ N6 _, F+ F- G. W& [3 aend
8 `# ]" ?0 j& D1 |. |, n3 B+ relse if(state==2'b01)
: f( d2 s# c- d2 s: Y9 _8 W0 Zbegin : S) ^' b0 t* P+ {& \# L) m4 I
state<=2'b00;' S) f i1 j8 Y4 r+ B' p* q' B
led_seg_reg<=6'b111110;
- A) c u1 G" k* {. l. gcase(count1)1 l7 a( N6 H: B
4'd0:led_reg<=seg_num0;
' y# x3 q/ \* ^; r4'd1:led_reg<=seg_num1;
. x3 r* a" I! j/ ]* k+ H) Q' @4'd2:led_reg<=seg_num2;! F: l b$ T, D# F. C8 C
4'd3:led_reg<=seg_num3;/ |* l8 c: u. K! L' F# ] \8 b
4'd4:led_reg<=seg_num4;3 O. E& K* x: D$ u$ w& Y# | ]
4'd5:led_reg<=seg_num5;% \) `8 p. F1 _7 x6 J6 Q8 [3 U* S
4'd6:led_reg<=seg_num6;& J) j; o9 O: G. N
4'd7:led_reg<=seg_num7;
& L2 W6 P i3 y" }( K) g( ^; C4'd8:led_reg<=seg_num8;4 h6 p6 H0 p3 d- P2 f/ O+ y3 p
4'd9:led_reg<=seg_num9;: i: e- k4 X8 V( o
default:led_reg<=seg_num0;
- ^6 J& h$ i" r& [: {9 I6 fendcase
( @( C- \( r# T# e( a" vend3 Y! ~0 L. \/ D0 x) j
reg isEn;* M$ l( N0 T' E2 Y
always@(posedge clk or negedge rst_n)
0 j+ J5 H) [) q5 p+ a! V% @if(!rst_n)
( _0 F* {# [4 \# Z3 R9 wbegin
" @* h& Q, W3 i0 E8 q; xisEn<=1'b0;
; A1 m c' q4 q: S5 Zend
: U3 e4 F% |9 d7 `3 r4 U' ?- gelse- J. H+ n: O% |: V
begin3 K) R8 T1 U/ y" S t9 G3 z
isEn<=1'b1;
+ L k8 p5 B# ?; C3 \0 ~& V2 Rend
& K! r. C5 w! C- V$ j5 Uassign led=led_reg;
4 x. a e- b# T3 I* r% {assign led_seg=led_seg_reg;# Y9 `0 H& w k
assign SOS_En_Sig=isEn;
: z. J% [# X2 cendmodule. E" r; x6 |" {% Y
- u8 h) w. B2 k- d A* _' G5 B
|
|