circuito de debouncer VHDL

4

Estoy trabajando en un laboratorio de ingeniería digital y estoy tratando de averiguar cómo funciona este circuito de desalojo. Se proporciona tal como está por Xilinx, pero no estoy muy seguro de por qué hace lo que hace. ¿Algún puntero, tal vez? A continuación se muestra el código VHDL:

library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
use IEEE.STD_LOGIC_ARITH.ALL; 
use IEEE.STD_LOGIC_UNSIGNED.ALL; 

entity Debouncer is 
    Port ( CLK : in  STD_LOGIC; 

           Sig : in  STD_LOGIC; 
           Deb_Sig : out  STD_LOGIC); 
end Debouncer; 
architecture Behavioral of Debouncer is 
 signal Q0, Q1, Q2 : STD_LOGIC := '0'; 

begin 
process (CLK) is 
begin 
 if (CLK'event and CLK = '1') then  
  Q0 <= Sig; 

  Q1 <= Q0; 

  Q2 <= Q1; 

 end if; 

end process; 

Deb_Sig <= Q0 and Q1 and (not Q2);

end Behavioral; 
    
pregunta xupv5

2 respuestas

4

No estoy familiarizado con VHDL, pero parece estar haciendo esto: la salida Deb_Sig es 1 solo cuando la entrada Sig ha sido 0- > 1- > 1 (el tiempo crece hacia la derecha), muestreado al alza Bordes de CLK. De lo contrario, Deb_Sig es 0. Por lo tanto, el módulo detecta flancos ascendentes en la entrada, y solo aquellos que están seguidos de un nivel alto que, después del muestreo, se convierte en al menos dos muestras 1 lógicas. De esa manera, ignorará los pulsos que son altos durante un solo instante de muestreo, lo que se considerará ruido.

Yo diría que su código sintetiza algo equivalente a esto:

Curiosamente, puede ignorar los pulsos altos que duran 2T-epsilon (donde T es el período de muestreo), y detectar los pulsos altos que duran T + epsilon (que es más corto que 2T-epsilon), si el muestreo es tal que ve solo una lógica 1 en el pulso anterior, pero dos lógicas 1 en el último pulso.

    
respondido por el Telaclavo
0

Creo que este circuito de rebote es para la entrada alta activa. Utiliza los tres flip-flops. El primer flip-flop acepta "sig" y la salida "Q0". El segundo flip-flop acepta "Q0" y la salida "Q1". El tercer flip-flop acepta "Q1" y la salida "Q2". Esta implementación de tres flip flops es para evitar / ignorar cualquier fallo en la entrada. Conduce la señal de salida solo si el estado de la señal de entrada (lógica 0 o lógica 1) es estable durante al menos tres ciclos de reloj "3 x clk - flancos ascendentes".

    
respondido por el Vijayan

Lea otras preguntas en las etiquetas