差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
后一修订版 两侧同时换到之后的修订记录
8._计时控制 [2017/03/23 00:57]
zhijun
8._计时控制 [2017/04/03 21:04]
zhijun
行 54: 行 54:
  reg [3:​0] cnt_shi;​  reg [3:​0] cnt_shi;​
   
- parameter PERIOD=12000000; //1秒+ parameter PERIOD=6000000; //1秒
   
  initial ​  initial ​
行 129: 行 129:
 \\ \\
  
-以上就是一个N位按键的消抖程序,如果有按键按下会输出一个时钟周期的高脉冲。下面我们可以试试用这个按键消抖的输出来触发LED的显示,既按键一次LED翻转。你也可以不加按键消抖试试用按键来控制LED(按一次变亮,再按一次灭掉)。 
- 
-\\ 
-下面的程序是例化调用debounce模块来控制LED 
-\\ 
-<code verilog> 
-// ******************************************************************** 
-// >>>>>>>>>>>>>>>>>>>>>>>>>​ COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<​ 
-// ******************************************************************** 
-// File name    : top.v 
-// Module name  : top 
-// Author ​      : STEP 
-// Description ​ :  
-// Web          : www.stepfpga.com 
-//  
-// -------------------------------------------------------------------- 
-// Code Revision History :  
-// -------------------------------------------------------------------- 
-// Version: |Mod. Date:   ​|Changes Made: 
-// V1.0     ​|2017/​03/​02 ​  ​|Initial ver 
-// -------------------------------------------------------------------- 
-// Module Function:​进过按键消抖后控制led显示翻转 
- 
-module top (clk,​rst,​key,​led);​ 
- 
-        input             clk; 
-        input             rst; 
-        input           key;                       
- output ​  ​reg ​     led;        ​ 
- 
-        wire              key_pulse; 
-        ​ 
-        //​当按键按下时产生一个高脉冲,翻转一次led 
-        always @(posedge clk  or  negedge rst) 
-           begin 
-             if (!rst) ​ 
- led <= 1'b1; 
-      else if (key_pulse) 
- led <= ~led; 
-      else 
-                led <= led; 
-    ​end ​   ​ 
-         //​例化消抖module,这里没有传递参数N,采用了默认的N=1 ​     
-         ​debounce ​ u1 (                                
-                       .clk (clk), 
-                       .rst (rst), 
-                       .key (key), 
-                       ​.key_pulse (key_pulse) 
-                       ); 
- ​endmodule 
-</​code>​ 
- 
-\\ 
 ====引脚分配==== ====引脚分配====
 ------- -------
行 189: 行 136:
 |clk             ​|C1 ​              ^ |clk             ​|C1 ​              ^
 |rst             ​|L14 ​             ^ |rst             ​|L14 ​             ^
-|key             |N14             +|hold            ​|M13              ​
-|led             |N13              ^ +|seg_led_1[0] ​   ​|C12              ^ 
 +|seg_led_1[1] ​   |B14              ^ 
 +|seg_led_1[2] ​   |J1              ^ 
 +|seg_led_1[3] ​   |H1              ^ 
 +|seg_led_1[4] ​   |H2              ^ 
 +|seg_led_1[5] ​   |B12              ^ 
 +|seg_led_1[6] ​   |A11              ^ 
 +|seg_led_1[7] ​   |K1              ^ 
 +|seg_led_1[8] ​   |A12              ^ 
 +|seg_led_2[0] ​   |A10              ^ 
 +|seg_led_2[1] ​   |C11              ^ 
 +|seg_led_2[2] ​   |F2               ^ 
 +|seg_led_2[3] ​   |E1               ^ 
 +|seg_led_2[4] ​   |E2               ^ 
 +|seg_led_2[5] ​   |A9               ^ 
 +|seg_led_2[6] ​   |B9               ^ 
 +|seg_led_2[7] ​   |F1               ^ 
 +|seg_led_2[8] ​   |C9               ^
 ====小结==== ====小结====
 ------ ------
-本实验学习如何进按键消抖在很多应用情况下我们必须采取消抖才能更好地控制逻辑。在下一个实验[[8计时控制|计时控制]]中我们将学习计时的显示和控制,在这里我们要用到按键的消抖以及数码管,我们甚至可以用小脚丫做一个计时器甚至电子表+本实验主要介绍计时器的实现方式,并且包含了复位与暂停功能,读者可自修改程序内部时钟参数来调节计时时间下一节将介绍PWM调制技术的应用[[9呼吸灯|呼吸灯]]。