fpga入门系列实验教程按键消抖控制led亮灭_第1页
fpga入门系列实验教程按键消抖控制led亮灭_第2页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FPGA 入门系列实验按键消抖控制 LED 亮灭1.实验任务实现按键控制 LED 亮灭。通过这个实验,掌握采用 Verilog HDL 语言编程实现按键控制 LED 亮灭及按键消抖方法。2.实验环境型号 EP2C8Q208C8 增强版开发套件。硬件实验环境为实电子Quartus II 8.1 开发。3.实验原理当独立按键 key1 按下后,相应的 LED 被点亮;再次按下后,LED 做翻转输出,即 LED 熄灭,从而实现按键控制 LED 亮灭。本实验对按键进行了消抖处理。作为机械开关的按键,操作时,机械触点的弹性及电压突跳等原因,在触点闭合或开启的瞬间会出现电压抖动,实际应用中如果不进行处理将

2、会造成误触发。按键去抖动的关键在于提取稳定的低电平状态,滤除前沿、后沿抖动毛刺。按键消抖处理一般有硬件和两种方法。消触发后,延时一段时间后再检测触发状态,如果与之前检测到的状态相同,则认为有按键按下;如果没有则认为是误触发。硬件就是加去抖电路。4. 实验程序module key_debounce(rst_n,clk,key,led);input inp input outputrst_n; lk; key; led;/ 通过降采样对 key 的输入做低通滤波,将其高频分量滤除,得到 low_sw 值reg 17:0cnt;always (edge clk ) if ( !rst_n )cnt

3、= 18d0; elsecnt = cnt + 1b1;wiresle_pulse = cnt = 18h3f;reglow_sw; always (if ( !rst_n )edge clk )low_sw = 1b1;else if (sle_pulse )low_sw = key;/ 在整个 low_sw(active_low)有效过程中取一个控制量作为 led 的控制信号/本实例中使用 low_sw 的下降沿reglow_sw_r; /将 low_sw 信号锁存一个时钟周期,延时不是真的“锁存”always (edge clk )low_sw_r = low_sw;wire led_ctrl = low_sw_r & ( !low_sw);reg led;always (edge clk or negedge rst_n ) if ( !rst_n )led= 1b0;else if ( led_ctrl ) led = led;endmodule5. 实验步骤(1)建立新工程项目:打开 Quartus II,进入集成开发环境,点击 FileNew projectwizard 建立一个工程项目 key_debounce。(2)建立文本编辑文件:点 击 FileNew. 在 该 项 目 下 新 建 Verilog HDL 源 程 序 文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论