实验现象:
按下按键,绿色led亮灭交互;
//--------------------module_rst_n---------------------------// module trigger_ctrl( input clk_25m, input rst_n, input key, output fpga_ledg ); //--------------------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 ledg; always@(negedge key_state or negedge rst_n) //按键下降沿控制led状态切换 if (!rst_n) begin ledg <= 1'd0; end else ledg <= ~ledg; assign fpga_ledg = ledg; //--------------------endmodule-----------------------------// endmodule
源代码下载链接:
链接:http://pan.baidu.com/s/1sl3AhvZ 密码:xz70
iCore4链接: