|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
上图是按键的消抖电路
下图是仿真波形
代码
module key(
rst,clk,sw,led
);//¶¨ÒåÁË4¸ö¹Ü½Å
input rst,clk,sw;
output led;
reg led;
//±ßÑؼì²â·¨£¬swÊÇ·ñ¾ßÓеçƽµÄÕý·´×ª
reg v_t;//Õâ¸öÊÇÀ´´æ´¢sw´Î״̬µçƽµÄ¼Ä´æÆ÷
reg v_t_r;//Õâ¸öÊÇÀ´´æ´¢Ê×״̬µçƽµÄ¼Ä´æÆ÷
wire flg;//Õâ¸öÊÇÀ´¼ì²â´æÔÚµçƽµÄÕýÏò·´×ªµÄ
always @(posedge clk)//ÔÚÕâ±ß¾ÍÊÇÀ´¼ì²âµçƽµÄ£¬ËùÒÔÊDz»ÐèÒªµÄ,,,ÔÚverilogÖУ¬Ò»¸ö¼Ä´æÆ÷¾ÍÊÇдһ¸öalways
v_t<=sw;
always @(posedge clk)
v_t_r<=v_t;
assign flg=v_t_r && (~v_t);//Õâ¸ö¾ÍÊÇÓÃÀ´¼ì²âµÄ±êÖ¾
//²¢ÐÐÔËÐеÄ
//ÏÖÔÚ¾ÍÀ´ÉèÖõçÆ¿Õðµ´µÄʱ¼ä
reg [19:0] cnt;//ÉèÖõÄʱ¼äÊÇ20ms£¬£¬£¬ËùÒÔÔÚÕâ±ßÊÇ20λµÄ
always @(posedge clk or negedge rst)
if (!rst)
cnt<=20'h0;
else if(flg)
cnt <=20'h0;
else
cnt<=cnt+1'b1;
//ËùÒÔÔÚÊý×Öµç·Öл¹ÊÇÏÈÒª½«Ê±ÐòÏÈ» ³öÀ´µÄ
//ÔÚÕâ±ßÍê³ÉµÄÊǶԺãÎÈÐźŵIJÉÑù
reg l_t;
reg l_t_r;
always @(posedge clk)
if(cnt ==20'hfffff)
l_t<=sw;
always @(posedge clk)
if(cnt ==20'hfffff)
l_t_r<=l_t;//ÔÚÕâ±ß»á²úÉúreg?
wire flg_2;
assign flg_2=l_t_r && (~l_t);
always @(posedge clk or negedge rst)
if(!rst)
// led_ctrl <=1'b0;
led<=1'b1;
else
if(flg_2)
// led_ctrl<=~led_ctrl;
//assign led=led_ctrl?1'b1:1'b0;
led<=~led;
/*
always @(posedge flg_2 or negedge rst)
if (!rst)
led<=1'b1;
else
led<=~led;
*/
endmodule
怎么解决啊!!! |
|