用户工具

站点工具


icore3l_fpga_11

差别

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

到此差别页面的链接

后一修订版
前一修订版
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>
icore3l_fpga_11.1606265347.txt.gz · 最后更改: 2020/11/25 08:49 由 zgf