差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
后一修订版 两侧同时换到之后的修订记录
7._按键消抖 [2017/03/06 02:14]
zhijun [硬件说明]
7._按键消抖 [2017/03/23 10:22]
zhijun [Verilog代码]
行 37: 行 37:
 ====Verilog代码==== ====Verilog代码====
 ------ ------
-模块化设计是用硬件描述语言进行数字电路设计精髓代码可重复利用而且模块化的设计使得程序的结构也很清晰。这里我们首先看看流水灯的模块化设计利用了之前的3-8译码器和分频器你需要把这两个程序也拷贝到一个工+本实验主要通过按键来控制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>
  
行 150: 行 192:
 // Module Function:​进过按键消抖后控制led显示翻转 // Module Function:​进过按键消抖后控制led显示翻转
  
-module ​debounce ​(clk,​rst,​key,​led);​+module ​top (clk,​rst,​key,​led);​
  
         input             clk;         input             clk;