差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版 两侧同时换到之后的修订记录
7._按键消抖 [2017/03/06 09:54]
zhijun [Verilog代码]
7._按键消抖 [2017/03/23 10:22]
zhijun [Verilog代码]
行 37: 行 37:
 ====Verilog代码==== ====Verilog代码====
 ------ ------
 +本实验主要通过按键来控制led的翻转,当按下一次led变亮,再按下一次led变暗。首先我们做个试验,对按键不做处理通过按键来控制led翻转。
 +
 +<code verilog>
 +
 +// ********************************************************************
 +// >>>>>>>>>>>>>>>>>>>>>>>>>​ COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<​
 +// ********************************************************************
 +// File name    : top.v
 +// Module name  : top
 +// Author ​      : STEP
 +// Description ​ : control led through the button
 +// Web          : www.stepfpga.com
 +// 
 +// --------------------------------------------------------------------
 +// Code Revision History : 
 +// --------------------------------------------------------------------
 +// Version: |Mod. Date:   ​|Changes Made:
 +// V1.0     ​|2017/​03/​02 ​  ​|Initial ver
 +// --------------------------------------------------------------------
 +// Module Function:​按键控制led翻转,未做消抖
 +
 +module top(
 + key, ​         //​按键输入
 + rst, ​         //​复位输入
 + led           //​led输出
 + );
 +
 + input key,rst;
 + output reg led;
 +
 + always @(key or rst)
 + if (!rst) ​            //​复位时led熄灭
 + led = 1;
 + else if(key == 0)     
 + led = ~led;   //​按键按下时led翻转
 + else
 + led = led;
 +endmodule
 +</​code>​
 +\\
 +未经过消抖的程序下载到小脚丫上会发现按键有时不能够控制led翻转,这是因为按键的抖动造成了led状态变化不可控,所以我们必须将抖动消除。下面是一种延时去抖的程序
 +
  
 <code verilog> <code verilog>