是基于计数器的 按键消抖进程.
仿效
http://www.eefocus.com/fpga/279313这篇文章中的第一个.
process(sw1,clk)
begin
if clk='1' and clk'event then
if sw1='0' then --当按键时开始执行
if count=1000 then
count=count; --当数到最后一个数(这里设置为1000即1000个时钟周期)
else
count<=count+1;--当没有数到头时继续数
end if;
if count=999 then --数到999时 给出实际在组合逻辑部分要使用的输入信号sw1_pro.设置第999个时钟周期时才给出 实际输入信号("消抖"信号 )旨在筛选出宽脉冲而去除窄脉冲。并且给定了sw1_pro的下降沿,即count=999时是上升沿,count=1000时为下降沿,可知sw1_pro的脉冲宽度同步为一个时钟周期。
sw1_pro<='0';
else
sw1_pro<='1';
end if;
else
count<=0; --按键松开或者抖动干扰中相当于按键松开的无效(高电平)时间里计数置零。
end process ;
在编译中提示错误好像是针对 count.说it does not hold value outside the clock edge.求问 哪里错了
好吧。这里我改过来还是那个问题。 count does not hold the value outside the clock edge。
一周热门 更多>