【iCore1S 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
2017-07-04 08:41
337 查看
实验现象:
iCore1s 双核心板上与FPGA相连的三色LED(PCB上标示为FPGA·LED),按键按下红灯点亮,松开按键红灯熄灭。
核心源代码:
代码包下载:
链接:http://pan.baidu.com/s/1kUWAJC7 密码:13jp
iCore1s 双核心板上与FPGA相连的三色LED(PCB上标示为FPGA·LED),按键按下红灯点亮,松开按键红灯熄灭。
核心源代码:
module KEY( input CLK_12M, input FPGA_KEY, output FPGA_LEDR, output FPGA_LEDG, output FPGA_LEDB ); //----------------------rst_n-----------------------// //产生复位信号 reg rst_n; reg [3:0]cnt_rst; always@(posedge CLK_12M) if(cnt_rst==4'd10) begin rst_n <= 1'd1; cnt_rst <= 4'd10; end else cnt_rst <= cnt_rst + 1'd1; //-----------------------KEY_CLK--------------------// //将按键的按下与松开转换为KEY_CLK,按下后松开为上升沿 reg KEY_CLK; reg [7:0]cnt_key0; reg [7:0]cnt_key1; always@(posedge CLK_12M or negedge rst_n ) begin if(!rst_n) begin KEY_CLK <= 1'd0; cnt_key0 <= 8'd0; cnt_key1 <= 8'd0; end else if(!FPGA_KEY) begin cnt_key0 <= cnt_key0 + 1'd1; if(cnt_key0==8'd200)//消抖 begin if(!FPGA_KEY) begin KEY_CLK <= 1'd0; cnt_key0 <= 8'd0; end end end else if(FPGA_KEY) begin cnt_key1 <= cnt_key1 + 1'd1; if(cnt_key1==8'd200)//消抖 begin if(FPGA_KEY) begin KEY_CLK <= 1'd1; cnt_key1 <= 8'd0; end end end end //-----------------------led-------------------------// reg [1:0]led_state; reg ledr,ledg,ledb; always@(posedge KEY_CLK or negedge rst_n) begin if(!rst_n) begin led_state <= -2'd1;//初始化使灯熄灭 ledr <= 1'd1; ledg <= 1'd1; ledb <= 1'd1; end else begin led_state <= led_state + 1'd1; if(led_state > 2'd2) begin led_state <= 2'd0; end case(led_state) 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 end end assign FPGA_LEDR = ledr; assign FPGA_LEDG = ledg; assign FPGA_LEDB = ledb; //--------------------endmodule------------------// endmodule
代码包下载:
链接:http://pan.baidu.com/s/1kUWAJC7 密码:13jp
相关文章推荐
- 【iCore3 双核心板_FPGA】例程三:GPIO输入实验——识别按键输入
- 【iCore4 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
- 【iCore1S 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
- 【iCore1S 双核心板_FPGA】例程一:GPIO输出实验——点亮LED
- 【iCore1S 双核心板_FPGA】例程五:Signal Tapll 实验——逻辑分析仪
- 【iCore1S 双核心板_FPGA】例程七:基础逻辑门实验——逻辑门使用
- 【iCore3 双核心板_FPGA】例程二:GPIO输出实验——点亮三色LED
- 【iCore1S 双核心板_FPGA】例程十二:基于单口RAM的ARM+FPGA数据存取实验
- 【iCore1S 双核心板_FPGA】例程十六:基于SPI的ARM与FPGA通信实验
- 【iCore4 双核心板_FPGA】例程一:GPIO输出实验——点亮LED
- 【iCore1S 双核心板_FPGA】例程十三:FSMC总线通信实验——复用地址模式
- 【iCore1S 双核心板_FPGA】例程十:乘法器实验——乘法器的使用
- 【iCore4 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
- 【iCore1S 双核心板_FPGA】例程十七:基于双口RAM的ARM+FPGA数据存取实验
- 【iCore1S 双核心板_ARM】例程十八:SD_IAP_FPGA实验——更新升级FPGA
- 【iCore1S 双核心板_FPGA】例程九:锁相环实验——锁相环的使用
- 【iCore1S 双核心板_FPGA】例程十四:FSMC总线通信实验——独立地址模式
- 【iCore1S 双核心板_FPGA】例程四:TCL脚本实验——配置引脚
- 【iCore1S 双核心板_FPGA】例程六:状态机实验——状态机使用
- 【iCore1S 双核心板_FPGA】例程三:计数器实验——计数器的使用