用户工具

站点工具


icore4tx_fpga_11
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-05-21 gingko 初次建立

实验十一:GPIO输入实验——识别按键输入

一、实验目的与意义

  1. 了解按键特征和应用。
  2. 掌握 FPGA 引脚的配置方法。
  3. 学习按键消抖的实现方法。

二、实验设备及平台

  1. iCore4TX 双核心板。点击购买
  2. USB-CABLE(或相同功能)的仿真器。
  3. Micro USB线缆。
  4. ISE开发平台。
  5. 电脑一台。

三、实验原理

按键动作检测和消抖

  • FPGA 的所有 I/O 控制块允许每个 I/O 引脚单独配置为输入口,不过这种配置是系统自动完成的。当该 I/O 口被设置为输入口使用时,该 I/O 控制模块将直接使三态缓冲区的控制端接地,使得该 I/O 对外呈高阻态,这样该 I/O 引脚即可用输入引脚使用。
  • iCore4TX超迷你核心板上是没有按键的,其扩展板上有个按键,可以通过扩展接口和FPGA相连。原理图如下:

图11.1

  • 从原理图中可以看到,按键未按下时,FPGA引脚是悬空的,此时该引脚对外呈高阻态。当按键按下时,FPGA电平为高。正确分配并锁定引脚后,一旦检测到按键有变化,即可切换 LED 的状态。
  • 也就是通过检测FPGA·KEY引脚的电平变化,判断按键状态,进而控制LED的亮灭。在按键按下和松开的过程,电平并不是理想的立即从高到低或者从低到高变化的。在跳变的过程中,是有抖动的,持续大概10ms左右。抖动会影响FPGA判断按键稳定状态的电平,因此在设计中要对按键动作做消抖处理。原理很简单,检测到跳变沿后做延时处理,跳过抖动阶段,再读取按键状态,从而实现按键消抖操作。

四、代码讲解

  • 本实验代码较为简单,首先使对输入信号进行延迟1拍处理,便于进行沿跳变检测。检测到下降沿后开始计数。然后在对时钟计数持续约40ms后,采集按键输入引脚的电平状态,进而控制LED的亮灭切换。代码理解和实现较为简单,不过需要注意对延时计数器的控制,使其在按键按下期间持续计数。按键未按下时进行清零。

其代码如下:

//---------------------按键动作检测---------------------------//
	reg key_r;
	always@(posedge clk_25M or negedge rst_n)
		if(!rst_n)
			key_r<=1'b0;
		else
			key_r<=key;//输入信号延迟1拍
	reg [19:0]cnt;
	reg flag;
	always@(posedge clk_25M or negedge rst_n)
		if(!rst_n)
			flag<=1'd0;
		else if((key==1'd0)&&(key_r==1'd1))//下降沿检测
				flag<=1'd1;
			else if((key==1'd1)&&(key_r==1'd0))//上升沿检测
				flag<=1'd0;
	always@(posedge clk_25M or negedge rst_n)
		if(!rst_n)
			cnt<=20'd0;
		else if((cnt<20'd1000000)&&(flag))//约40ms
			cnt<=cnt+1'd1;
			else if((cnt==20'd1000000)&&(flag))
				cnt<=cnt;
				else
					cnt<=20'd0;
	reg led_r;
	always@(posedge clk_25M or negedge rst_n)//LED 状态切换
		if(!rst_n)
			led_r<=1'd1;
		else if(cnt==20'd900000)
led_r<=~led_r;
  • 编译完代码,在将程序烧录到FPGA之前,要对FPGA的引脚进行设置。将时钟、按键、LED信号绑定到对应引脚,绑定信息参考下图中所示,为.ucf文件中引脚绑定内容:

图11.2

  • 引脚绑定之后,保存并编译工程,下载至iCore4tx双核心板,按下FPGA·KEY,观察FPGA·LED的状态变化。

五、实验步骤

  1. 将iCore4TX双核心版插入底板的金手指插座,轻轻下压,使双核心板和底板联通并固定在底板上。
  2. 把 USB-CABLE 仿真器与 iCore4TX 的 JTAG 调试口相连;
  3. 把iCore4TX通过 Micro USB 线与计算机相连,为 iCore4TX 供电;
  4. 打开本实验工程;
  5. 烧写程序到 iCore4TX 上;
  6. 按下按键,观察LED状态的切换。

六、实验结果

  • 按动iCore4TX 底板的FPGA按键,iCore4TX 双核心板上的 FPGA·LED在每次按键按下后切换亮灭状态。
icore4tx_fpga_11.txt · 最后更改: 2022/04/01 11:37 由 sean