在vhdl中的mecanique开关的去抖代码

时间:2015-02-18 06:43:21

标签: vhdl

我需要使用计数器分别计算毛刺信号的数量和毛刺的宽度,我可以使用向上计数器处理来解决边缘问题,如下所示:

counterC1 : process (clk, reset, clr) 
--variable count : integer RANGE 0 TO 4 ;
begin
      if (reset='1') then
         r_regC1 <= (others=>'0');
      elsif (clk'event and clk ='1') then
         r_regC1 <= r_nextC1;
      end if;

end process;
   -- next-state logic
   r_nextC1 <= (others=>'0') when reset = '1' or clr = '1' else
             r_regC1 + 1 when (sw_tick'event and sw_tick = '1') else
             r_regC1;
            --sw_tick is glitch by rebound
   -- output logic
   qC1 <= std_logic_vector(r_regC1); 

如何识别计数器以计算过渡边缘或计算整个冲击的较大值?有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

这对EE网站来说是个更好的问题。

首先,您应该通过一对触发器同步外部信号。这确保了它与时钟域同步。然后,只要同步信号发生变化,您就会重置向下计数器。如果计数器达到0,那么信号已经足够稳定,可以认为它没有干扰,你可以将去抖信号设置为新状态。