按键计数将结果通过8段数码管显示FPGA设计Verilog逻辑源码Quartus11.0工程文件,FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module key_counter(clk,key,reset,seg_duan,seg_wei); input clk,key,reset; output [7:0] seg_duan; output [2:0] seg_wei; wire clk,key,reset; reg [7:0] seg_duan;//数码管段选 reg [2:0] seg_wei;//数码管位选 reg key_out; parameter s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11; reg [1:0] state; reg [3:0] key_counter_ge;//按键计数个位 reg [3:0] key_counter_shi;//按键计数十位 reg [3:0] key_counter_bai;//按键计数百位 reg [9:0] div_count;//数码管扫描时钟分频计数 reg clk_scan;//位选时钟 reg [1:0] wei_select;//位选信号 /****************************按键消抖**********************************/ always @(posedge clk) begin case (state) s0: begin key_out<=1'b1; if(key==1'b0) state<=s1; else state<=s0; end s1: begin if(key==1'b0) state<=s2; else state<=s0; end s2: begin if(key==1'b0) state<=s3; else state<=s0; end s3: begin if(key==1'b0) begin key_out<=1'b0; state<=s3; end else begin key_out<=1'b1; state<=s0; end end default: state<=s0; endcase end /****************************按键计数**********************************/ always @(negedge key_out or negedge reset) begin if(!reset) begin key_counter_ge <=4'd0; key_counter_shi<=4'd0; key_counter_bai<=4'd0; end else begin if(!key_out)//判断按键是否按下 begin key_counter_ge<=key_counter_ge+1'b1;//按键计数个位加一 if(key_counter_ge==4'd9) begin key_counter_ge<=4'd0;//个位清零 key_counter_shi<=key_counter_shi+1'b1;//按键计数十位加一 if(key_counter_shi==4'd9) begin key_counter_shi<=4'd0;//十位清零