当前位置:网站首页>FPGA:基础入门按键控制蜂鸣器

FPGA:基础入门按键控制蜂鸣器

2022-08-10 18:21:00 最早的早安...

题目概述:
使用按键控制蜂鸣器发声。初始状态为蜂鸣器鸣叫,按下开关后蜂鸣器停止鸣叫,再次按下开关,蜂鸣器重新鸣叫。

key_debounce.v

module key_debounce(
input sys_clk,
input sys_rst_n,
input key,
output reg key_value,
output reg key_flag
);
reg [19:0] cnt;
reg        key_reg;
//按键消抖
[email protected](posedge sys_clk or negedge sys_rst_n)begin
     if(!sys_rst_n)begin
          cnt<=20'd0;
          key_reg<=1'b1;
     end
     else begin 
          key_reg<=key;
          if(key_reg!=key)begin
               cnt<=20'd100_0000;
          end
          else begin          
               if(cnt>20'd0)
               cnt<=cnt-1'b1;
               else
               cnt<=20'd0;
          end
     end
end
[email protected](posedge sys_clk or negedge sys_rst_n)begin
   if(!sys_rst_n)begin
      key_value<=1'b1;
      key_flag<=1'b0;
   end 
   else if(cnt==20'd2)begin
        key_value<=key;
        key_flag<=1'b1;
   end
   else begin
       key_value<=key_value;
       key_flag<=1'b0;
   end
end    
endmodule

beep_control.v

module beep_control(
input sys_clk,
input sys_rst_n,
input key_value,
input key_flag,
output reg beep
);    
[email protected](posedge sys_clk or negedge sys_rst_n)begin
   if(!sys_rst_n)begin
      beep<=1'b1;
   end
   else if(key_flag && (key_value==1'b0))
   beep<=~beep;
end          
endmodule

top_key_beep.v

module top_key_beep(
input sys_clk,
input sys_rst_n,
input key,
output beep
);
wire key_value;
wire key_flag;
key_debounce u_key_bounce(
.sys_clk(sys_clk),       
.sys_rst_n(sys_rst_n),     
.key(key),                  
.key_value(key_value),
.key_flag(key_flag)
);    
beep_control u_beep_control(
.sys_clk (sys_clk), 
.sys_rst_n(sys_rst_n),         
.key_value(key_value),
.key_flag(key_flag),         
.beep(beep)
);     
endmodule

上机实践:

QQ短视频20220805152356

原网站

版权声明
本文为[最早的早安...]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_50426849/article/details/126178328