FP入门实验:按键消抖控制LED亮灭.pdfVIP

  • 0
  • 0
  • 约2.47千字
  • 约 4页
  • 2026-02-04 发布于北京
  • 举报

FPGA系列实验——按键消抖控制LED亮灭

1.实验任务

实现按键控制LED亮灭。通过这个实验,掌握采用VerilogHDL语言编程实

现按键控制LED亮灭及按键消抖方法。

2.实验环境

硬件实验环境为电子型号EP2C8Q208C8增强版开发套件。

软件实验环境为QuartusII8.1开发软件。

3.实验原理

当独立按键key1按下后,相应的LED被点亮;再次按下后,LED做翻

转输出,即LED熄灭,从而实现按键控制LED亮灭。本实验对按键进行了

消抖处理。

作为机械开关的按键,操作时,机械触点的弹性及电压突跳等,在

触点闭合或开启的瞬间会出现电压抖动,实际应用中如果不进行处理将会造

成误触发。按键去抖动的关键在于提取稳定的低电平状态,滤除前沿、后沿

抖动毛刺。按键消抖处理一般有硬件和软件两种方法。软件消抖是检测到有

触发后,延时一段时间后再检测触发状态,如果与之前检测到的状态相同,

则认为有按键按下;如果没有则认为是误触发。硬件就是加去抖电路。

4.实验程序

modulekey_debounce(rst_n,clk,key,led);

inputrst_n;

inputclk;

inputkey;

outputled;

//通过降采样对key的输入做低通滤波,将其高频分量滤除,得到low_sw值

reg[17:0]cnt;

always@(posedgeclk)

if(!rst_n)

cnt=18d0;

else

cnt=cnt+1b1;

wiresample_pulse=cnt18h3ffff;

reglow_sw;

always@(posedgeclk)

if(!rst_n)

low_sw=1b1;

elseif(sample_pulse)

low_sw=key;

//在整个low_sw(active_low)有效过程中取一个控制量作为led的控制信号

//本实例中使用low_sw的下降沿

reglow_sw_r;//将low_sw信号锁存一个时钟周期,延时不是真的“锁存”

always@(posedgeclk)

low_sw_r=low_sw;

wireled_ctrl=low_sw_r(!low_sw);

regled;

always@(posedgeclkornegedgerst_n)

if(!rst_n)

led=1b0;

elseif(led_ctrl)

led=~led;

endmodule

5.实验步骤

(1)建立新工程项目:

打开QuartusII软件,进入集成开发环境,点击File→Newproject

wizard建立一个工程项目key_debounce。

(2)建立文本编辑文件:

点击File→New..在该项目下新建VerilogHDL源程序文件

key_debounce.v,输入试验程序中的源程序代码保存后选择中的

按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编

译成功为止。

(3)选择器件型号及引脚的其他设置:

选择所用的FPGA器件EP2C8Q208C8,以及进行一些配置。选择配置

器件EPCS4,设置不需要使用的IO功能为Asinputs,tri-stated。点击两

次ok,回到主界面。

(4)配置FPGA引脚:

在QuartusII软件主页面下,选择Assignments→Pins或选择上

按钮,配置rst_n,,key,led以及clk的引脚。

(5)编译工程项目:

在QuartusII主页面下,选择Processin

文档评论(0)

1亿VIP精品文档

相关文档