【iCore4 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
2017-08-04 08:43
471 查看
实验现象:
按键每按下一次,三色LED切换一次状态。
核心源代码:
源代码下载链接:
链接:http://pan.baidu.com/s/1kVkOCgJ 密码:u1gd
iCore4链接:
按键每按下一次,三色LED切换一次状态。
核心源代码:
module key_ctrl( input clk_25m, input rst_n, input key, output fpga_ledr, output fpga_ledg, output fpga_ledb ); //--------------------key_in--------------------------------// parameter ms_10 = 250000; reg key_r; reg [17:0]low_cnt; reg [17:0]hig_cnt; always @(posedge clk_25m or negedge rst_n) //按键消抖动,提取按键状态 if (!rst_n) begin key_r <= 1'd0; low_cnt <= 18'd0; hig_cnt <= 18'd0; end else if(key) //检测按键状态为高时,延时10ms,把按键状态提取出来。 begin low_cnt <= 18'd0; if (hig_cnt == ms_10) begin key_r <= key; hig_cnt <= hig_cnt; end else hig_cnt <= hig_cnt + 1'd1; end else //按键状态为低时,延时10ms,把按键状态提取出来。 begin hig_cnt <= 18'd0; if (low_cnt == ms_10) begin key_r <= key; low_cnt <= low_cnt; end else low_cnt <= low_cnt + 1'd1; end wire key_state = key_r; //--------------------led_ctrl-----------------------------// reg [1:0]led_cnt; reg ledr,ledg,ledb; always@(negedge key_state or negedge rst_n) //按键下降沿控制led状态切换 if (!rst_n) begin led_cnt <= 2'd0; end else if (led_cnt == 2'd2) begin led_cnt <= 2'd0; end else led_cnt <= led_cnt + 1'd1; always@(posedge clk_25m or negedge rst_n) //led状态切换的状态机 if (!rst_n) begin ledr <= 1'd1; ledg <= 1'd1; ledb <= 1'd1; end else case(led_cnt) 2'd0: //红灯亮 begin ledr <= 1'd0; ledg <= 1'd1; ledb <= 1'd1; end 2'd1: //绿灯亮 begin ledr <= 1'd1; ledg <= 1'd0; ledb <= 1'd1; end 2'd2: //蓝灯亮 begin ledr <= 1'd1; ledg <= 1'd1; ledb <= 1'd0; end default: //都不亮 begin ledr <= 1'd1; ledg <= 1'd1; ledb <= 1'd1; end endcase assign {fpga_ledr,fpga_ledg,fpga_ledb} = {ledr,ledg,ledb}; //--------------------endmodule-----------------------------// endmodule
源代码下载链接:
链接:http://pan.baidu.com/s/1kVkOCgJ 密码:u1gd
iCore4链接:
相关文章推荐
- 【iCore3 双核心板_FPGA】例程三:GPIO输入实验——识别按键输入
- 【iCore1S 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
- 【iCore4 双核心板_FPGA】例程一:GPIO输出实验——点亮LED
- 【iCore4 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
- 【iCore4 双核心板_FPGA】例程十七:基于FIFO的ARM+FPGA数据存取实验
- 【iCore4 双核心板_FPGA】例程四:Signal Tapll 实验——逻辑分析仪
- 【iCore4 双核心板_FPGA】例程六:触发器实验——触发器的使用
- 【iCore1S 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
- 【iCore4 双核心板_FPGA】例程九:锁相环实验——锁相环使用
- 【iCore1S 双核心板_FPGA】例程一:GPIO输出实验——点亮LED
- 【iCore4 双核心板_FPGA】例程十四:基于I2C的ARM与FPGA通信实验
- 【iCore4 双核心板_ARM】例程二十八:FSMC实验——读写FPGA
- 【iCore3 双核心板_FPGA】例程二:GPIO输出实验——点亮三色LED
- 【iCore4 双核心板_FPGA】例程八:乘法器实验——乘法器使用
- 【iCore4 双核心板_FPGA】例程十:FSMC总线通信实验——复用地址模式
- 【iCore4 双核心板_FPGA】例程十三:基于SPI的ARM与FPGA通信实验
- 【iCore4 双核心板_ARM】例程二十九:SD_IAP_FPGA实验——更新升级FPGA
- 【iCore4 双核心板_FPGA】例程十五:基于单口RAM的ARM+FPGA数据存取实验
- 【iCore4 双核心板_ARM】例程三十:U_DISK_IAP_FPGA实验——更新升级FPGA
- 【iCore4 双核心板_ARM】例程三十一:HTTP_IAP_FPGA实验——更新升级FPGA