Hola a todos, estoy intentando diseñar un cto 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. Este cto antirrebotes, lo he diseñado como os muestro a continuación ( debounce_module), siguiendo la estructura que me han solicitado y que adjunto a este 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
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;