这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
icore3l_fpga_11 [2020/11/25 08:49] zgf 创建 |
icore3l_fpga_11 [2022/03/19 15:27] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-11-25 | zgf | 初次建立 | | | V1.0 | 2020-11-25 | zgf | 初次建立 | | ||
行 28: | 行 27: | ||
* 当检测到按键按下,设计代码功能为控制与LED相连的引脚电平为低,此时点亮LED。从而实现按键控制LED状态的功能。即通过检测FPGA·KEY引脚的电平变化,判断按键的状态,继而控制LED的亮灭。 | * 当检测到按键按下,设计代码功能为控制与LED相连的引脚电平为低,此时点亮LED。从而实现按键控制LED状态的功能。即通过检测FPGA·KEY引脚的电平变化,判断按键的状态,继而控制LED的亮灭。 | ||
* 在按键按下和松开的过程,电平并不是理想的立即从高到低或者从低到高变化的。在跳变的过程中,是有抖动的,持续大概10ms左右。抖动会影响FPGA对按键状态的正确判断,因此在设计中要对按键动作做消抖处理。处理方式分物理消抖和软件消抖。物理消抖则是通过并联电容,消除抖动噪声。软件处理则是通过延时处理,跳过抖动阶段,再读取按键状态,从而实现按键消抖操作。 | * 在按键按下和松开的过程,电平并不是理想的立即从高到低或者从低到高变化的。在跳变的过程中,是有抖动的,持续大概10ms左右。抖动会影响FPGA对按键状态的正确判断,因此在设计中要对按键动作做消抖处理。处理方式分物理消抖和软件消抖。物理消抖则是通过并联电容,消除抖动噪声。软件处理则是通过延时处理,跳过抖动阶段,再读取按键状态,从而实现按键消抖操作。 | ||
- | {{ :icore3l:icore3l_fpga_11_2.png?direct |图11-2 按键动作过程电平变化示意图}} | + | {{ :icore3l:icore3l_fpga_11_2.png?direct&600 |图11-2 按键动作过程电平变化示意图}} |
* 如图11-2中所示,在实际的按键动作中,按下和松开的瞬间,电平跳变的过程中是有抖动存在的;在硬件设计中可以通过并联电容削减抖动造成的影响。在软件设计中可以采用延时消抖的方式进一步消除抖动的影响。 | * 如图11-2中所示,在实际的按键动作中,按下和松开的瞬间,电平跳变的过程中是有抖动存在的;在硬件设计中可以通过并联电容削减抖动造成的影响。在软件设计中可以采用延时消抖的方式进一步消除抖动的影响。 | ||
* 延时消抖的实现方式也较为简单,当FPGA检测到与按键相连的引脚出现下降沿之后开始计时,约40ms后再次检测与按键相连引脚的电平;如果电平与之前不同,则判别为有按键按下。这样通过延时的方式跳过抖动阶段,检测稳定后的电平状态,从而降低抖动对电平判断的影响,识别真正的按键动作。 | * 延时消抖的实现方式也较为简单,当FPGA检测到与按键相连的引脚出现下降沿之后开始计时,约40ms后再次检测与按键相连引脚的电平;如果电平与之前不同,则判别为有按键按下。这样通过延时的方式跳过抖动阶段,检测稳定后的电平状态,从而降低抖动对电平判断的影响,识别真正的按键动作。 | ||
- | * 同理,按键松开的动作也可以通过这种方式进行检测。在按键按下的状态,检测电平的上升沿,待出现上升沿后,开始计时;==== 延时40ms后检测电平状态,从而判断按键是否松开。 | + | * 同理,按键松开的动作也可以通过这种方式进行检测。在按键按下的状态,检测电平的上升沿,待出现上升沿后,开始计时;延时40ms后检测电平状态,从而判断按键是否松开。 |
- | 四、 代码实现 ==== | + | ==== 四、 代码实现 ==== |
* 本实验代码较为简单,首先是对输入信号进行延迟1拍处理,是高低电平数字量处于稳定状态,便于进行沿跳变检测。检测到下降沿后开始计数,然后对时钟计数持续40ms后,采集按键输入引脚的电平,如果为低电平,表示按键按下,则控制三色LED颜色切换。这里请注意对延时计数器的控制,使其在按键按下期间持续计数。按键未按下时进行清零。代码如下: | * 本实验代码较为简单,首先是对输入信号进行延迟1拍处理,是高低电平数字量处于稳定状态,便于进行沿跳变检测。检测到下降沿后开始计数,然后对时钟计数持续40ms后,采集按键输入引脚的电平,如果为低电平,表示按键按下,则控制三色LED颜色切换。这里请注意对延时计数器的控制,使其在按键按下期间持续计数。按键未按下时进行清零。代码如下: | ||
<code verilog> | <code verilog> |