目录

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

实验九:GPIO 输入实验——识别按键输入

一、实验目的与意义

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

二、实验设备及平台

  1. iCore4T 双核心板+iCore4T扩展底板。
  2. iTool A(或相同功能)仿真器。
  3. USB Type C 线缆。
  4. QuartusII 开发平台。
  5. 装有 WIN 10(及更高版本)系统的计算机。

三、实验原理

四、代码实现

//---------------------按键动作检测---------------------------//
	reg FPGA_KEY_r;
 
	always@(posedge CLK_25M or negedge rst_n)
		if(!rst_n)
			FPGA_KEY_r<=1'b0;
		else
			FPGA_KEY_r<=FPGA_KEY;//输入信号延迟1拍
 
	reg [19:0]cnt;
	reg flag;
	always@(posedge CLK_25M or negedge rst_n)
		if(!rst_n)
			flag<=1'd0;
		else if((FPGA_KEY==1'd0)&&(FPGA_KEY_r==1'd1))//下降沿检测
			flag<=1'd1;
			else if((FPGA_KEY==1'd1)&&(FPGA_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;
	always@(posedge CLK_25M or negedge rst_n)//LED 状态切换
		if(!rst_n)
			led<=1'd1;
		else if(cnt==20'd900000)
			led<=~led;

1、点击Assignments,下拉菜单中点击Device…。 2、弹出窗口中点击Device and Pin Options… 。 3、点击左侧边栏中的Unused Pins,右侧下拉菜单中选择As input tri-stated,然后点击OK即可。 4、回到工程主界面后点击保存按钮,然后点击编译,至此完成引脚设置。

五、实验步骤

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

六、实验现象