当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
【OpenCV】-物体的凸包
Toronto Research Chemicals霉菌毒素分析丨伏马菌素B2
接口测试进阶接口脚本使用—apipost(预/后执行脚本)
stm32中的CAN通讯列表模式配置解析与源码
redis.exceptions.DataError: Invalid input of type: ‘dict‘. Convert to a byte, string or number first
剖析Framework面试—>>>冲击Android高级职位
机器人控制器编程实践指导书旧版-实践五 数字舵机(执行器)
【快应用】如何使用命令打包快应用rpk
瑞吉外卖学习笔记4
MySql main performance indicators description
选择是公有云还或是私有云,这很重要吗?
shell运算详解,看这一篇就够了!
微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理
破解校园数字安全难点,联想推出智慧教育安全体系
1720. 解码异或后的数组
欧洲核子研究中心首次在量子机器学习研究中取得实效
MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先
企业如何通过北森HR SaaS 自动化管理员工账号生命周期
机器人控制器编程实践指导书旧版-实践八 机器人综合设计
[Image segmentation] Image segmentation based on cellular automata with matlab code