• 已绑定课时
  • 工程师可点评

实验报告 · 06 | 项目设计:按键消抖(含代码) 课程:初级 | FPGA工程师基础启航(含板卡+证书) · 第二节 Verilog HDL语法篇 发布自课程云笔记 · FPGA 实验证据骨架 【同步·课后作业】 【作业要求】 1、按键消抖有几种方式,分别是什么? ①延时消抖法。按键按下后如果有一个超过10ms的低电平稳定状态,则认为按键按下,并输出一个标志信号 ②状态机消抖法。通过状态机区分…

杜叙颉
100 1
1 位工程师评优秀

实验报告 · 06 | 项目设计:按键消抖(含代码)

课程:初级 | FPGA工程师基础启航(含板卡+证书) · 第二节 Verilog HDL语法篇

发布自课程云笔记 · FPGA 实验证据骨架

1、按键消抖有几种方式,分别是什么?

①延时消抖法。按键按下后如果有一个超过10ms的低电平稳定状态,则认为按键按下,并输出一个标志信号

②状态机消抖法。通过状态机区分抖动、稳定、释放等状态。

2、在按键消抖模块中,计时器为什么计到最大时是保持而不是清零?

当计时器达到最大值清零,会不断输出一个接一个的标志信号,则消抖没有意义

代码下载

`timescale 1ns / 1ps
//按键消抖模块(存在机械按键中,拨码开关不需要消抖)
module key(
input sysclk ,//时钟
input rst_n ,//复位
input key ,//按键
output key_flag //按键有效信号(按下按键,消抖完成)
);
parameter delay=50_000_0 ;//消抖所需时间10ms
reg [18:0] cnt ;//计数器
//按键消抖
always@(posedge sysclk)
if(!rst_n)
cnt<=0;
else if(key==0)begin//按下按键
if(cnt==delay-1)//cnt计数器计满
cnt<=cnt;//保持(如果cnt=0,会出现反复消抖的情况)
else
cnt<=cnt+1;//cnt自加
end else
cnt<=0;//未计数,未按按键
//输出key_flag
//[尖峰脉冲信号(一个周期结束)(使能)(短)]key_flag输出高低电平,如果cnt-1,就会一直保持,短信号变为长信号一直拉高
assign key_flag=(cnt==delay-2)?1:0;
endmodule

本节要验证什么?预期现象是什么?

用工具栏插入波形图、仿真界面或示波器照片

粘贴关键仿真输出或报错原文

板卡现象、按键/数码管/接口实测结果

结论、坑点与下一步修改

学习上下文

产出状态

评优秀1 位工程师
工程师已阅100 位工程师