TODOPIC
Otros Microcontroladores / Dispositivos programables => Lógica Programable => Mensaje iniciado por: Lunalovegood en 09 de Junio de 2021, 09:41:46
-
Hola a todos, estoy realizando un proyecto, en VHDL, para la placa Basys 3. El proyecto consiste en escribir en un display OLED a traves de un teclado hexadecimal.
El sistema a diseñar hace uso de una señal (CLK) de frecuencia igual a 100 MHz (periodo T=10 ns), la cual se genera en un oscilador presente en la placa Basys 3. Esta señal se va a utilizar como señal de sincronismo (reloj) de todos los módulos secuenciales del diseño. Por su parte, la entrada RST funciona como señal ASÍNCRONA de inicialización activa a nivel alto para llevar todos los bloques secuenciales a su estado inicial.
Este es el esquema general
- Tienes que ingresar para ver archivos adjuntos -
Me encuentro diseñando el bloque KYPD_controller, en el cual hay que instanciar un circuito antirrebotes que siga el siguiente diseño.
- Tienes que ingresar para ver archivos adjuntos -
En primer lugar, estoy diseñando el circuito antirrebotes, denominado debounce_module, y he realizado el siguiente diseño en VHDL pero no consigo avanzar y me gustaría que me echárais una mano para ve que le falta y como tendría que hacerlo. 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;