Hola a todos, estoy intentando diseñar un circuito antirrebotes, que siga las premisas y el diseño dado ( adjunto imágenes) , el circuito antirrebotes a diseñar, le tengo que llamar debounce_module, y es el que irá instanciado en el kypd_controller que tengo que diseñar despues. Éste circuito antirrebotes, lo he diseñado como os muestro a continuación ( debounce_module), siguiendo la estructura que me han solicitado y que adjunto a éste mensaje , por ejemplo, para decir que la tecla pulsada es la 4, tendríamos para ROW 1101 Y para COL 1110. La funcionalidad del circuito mostrado sería que los biestables realizan función de muestreo y las puertas lógicas la detección si los 4 valores de las salidas son iguales a 1 o iguales a 0.
Si son iguales a 1 proporcionan a la salida del sistema secuencial final un nivel alto y si son los 4 iguales a 0, un nivel bajo. Habría que instanciarlo 4 veces, uno para cada una de las filas. En este caso, que muestro he comenzado para una única fila, pero no consigo que me funcione. Se os ocurre algo?
Gracias
Código:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity debounce_module is
port (
RST : in std_logic;
CLK : in std_logic;
ROW_I : in std_logic;
CE : in std_logic;
Q_I : out std_logic);
end entity;
architecture rtl of debounce_module is
signal Q0 ,Q1 ,Q2 ,Q3 : std_logic := '0' ;
begin -- rtl
process ( CLK ) is
begin
if ( CLK 'event and CLK = '1' )
then Q0 <= ROW_I ;
Q1 <= Q0 ;
Q2 <= Q1 ;
Q3 <= Q2 ;
end if ;
end process ;
Q_I <= Q0 and Q1 and ( not Q2 );
Q_I <= Q1 and Q2 and ( not Q3 );
end Behavioral ;
end rtl;
El lenguaje es VHDL y utilizo el programa Vivado. Se me ha ocurrido que se podría plantear un sistema desplazador, para simular el antirrebotes, pero no se como plantearlo. Adjunto esta vez, con respecto a lo que me decías, el esquema general de conexión y la configuración de las 4 entidades.
En éste caso, lo que suqiero hacer es la configuración de la entidad debounce_module, que es la que tengo que diseñar para el circuito antirrebotes.