当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
Thoughts on Technology Sharing
开发模式对测试的影响
机器人控制器编程实践指导书旧版-实践五 数字舵机(执行器)
罗克韦尔Rockwell Automation EDI 项目
Redis命令---key篇 (超全)
网络层总结(未完待续)
从企业的视角来看,数据中台到底意味着什么?
三星Galaxy Watch5产品图片流出 非Pro表款亦有蓝宝石加持
【FAQ】【Push Kit】推送服务,回执配置一直报错、回执过期修改、怎么删除配置的回执
实用工具在线网站
Toronto Research Chemicals农药检测丨甲硫威
报告详解影响英特尔10/11/12代酷睿处理器的ÆPIC Leak安全漏洞
装饰者模式
面试题 04.12. 求和路径-dfs+辅助数组法
MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先
JVM内存和垃圾回收-11.执行引擎
人生苦短,开始用go
flex使用align-content无效
6-12 二叉搜索树的操作集(30分)
定时器循环展示数组