差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
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. 呼吸灯|呼吸灯]]。 |