《Verilog-按键消抖程序.pdf》由会员分享,可在线阅读,更多相关《Verilog-按键消抖程序.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 a 按键消抖 一、程序(50mhz)module xiaodou(clk,clr,key1,key2,key3,key4,key5,key_out1,key_out2,key_out3,key_out4,key_out5);input clk,clr;input key1,key2,key3,key4,key5;output key_out1,key_out2,key_out3,key_out4,key_out5;/-reg 4:0 key_rst;reg 4:0 key_rst_n;reg 19:0 cnt;reg 4:0 key_next;reg 4:0 key_next_n;reg d
2、1,d2,d3,d4,d5;wire4:0 key_flag;wire 4:0 key_out_n;reg 23:0 count1;reg count_flag;always(posedge clk or negedge clr)/get the fist value begin if(!clr)begin key_rst=5b11111;end else begin key_rst=key5,key4,key3,key2,key1;end end/-a always(posedge clk or negedge clr)begin if(!clr)begin key_rst_n=5b1111
3、1;end else begin key_rst_n=key_rst;end end/-assign key_flag=key_rst_n&(key_rst);/-jishu-always(posedge clk or negedge clr)begin if(!clr)begin cnt=20d0;end else if(key_flag)begin cnt=20b0;end else begin cnt=cnt+1b1;end end/-20ms after-always(posedge clk or negedge clr)begin if(!clr)begin key_next=5b1
4、1111;end else if(cnt=20hfffff)a begin key_next=key5,key4,key3,key2,key1;end end/-always(posedge clk or negedge clr)begin if(!clr)begin key_next_n=5b11111;end else begin key_next_n=key_next;end end/-assign key_out_n=key_next_n&(key_next);/-always(posedge clk or negedge clr)begin if(!clr)begin d1=1b1;
5、d2=1b1;d3=1b1;d4=1b1;d5=1b1;count_flag=1;end else /应 led 止显示一个时钟周期,我们观测不到,begin /此处有个计数延时,目的是 led 灯显示能够持续一段时间 if(key_out_n0)begin d1=1b0;count_flag=1b0;end else if(count1=24hffffff)begin d1=1b1;count_flag=1;end a if(key_out_n1)begin d2=1b0;count_flag=1b0;end else if(count1=24hffffff)begin d2=1b1;cou
6、nt_flag=1;end if(key_out_n2)begin d3=1b0;count_flag=1b0;end else if(count1=24hffffff)begin d3=1b1;count_flag=1;end if(key_out_n3)begin d4=1b0;count_flag=1b0;end else if(count1=24hffffff)begin d4=1b1;count_flag=1;end if(key_out_n4)begin d5=1b0;count_flag=1b0;end else if(count1=24hffffff)begin d5=1b1;
7、count_flag=1;end end end assign key_out1=d1?1b1:1b0;assign key_out2=d2?1b1:1b0;assign key_out3=d3?1b1:1b0;assign key_out4=d4?1b1:1b0;assign key_out5=d5?1b1:1b0;always(posedge clk or negedge clr)/计数延时,具体时间没有计算 begin if(!clr)a begin count1=0;end else if(count_flag=1b0)begin count1=count1+1b1;end else begin count1=0;end end endmodule 二、框图 a