Programación en VHDL/Ejemplos/Biestable-Latch
El objetivo es crear un dispositivo capaz de reproducir en cada tic de reloj la entrada en la salida. Para ello será necesario diponer del reloj y reset del sistema.
- Entradas:
- rst: Reset del sistema.
- clk: Reloj del sistema.
- a: Entrada de datos.
- Salidas:
- b: Salida de datos.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.all;
ENTITY biestable IS
PORT (clk : IN std_logic;
rst : IN std_logic;
a : IN std_logic_vector(31 DOWNTO 0);
b: OUT std_logic_vector(31 DOWNTO 0));
END biestable;
ARCHITECTURE synth OF biestable IS
BEGIN
pSeq : PROCESS (clk, rst) IS
BEGIN
IF rst = '1' THEN
b <= (others => '0');
ELSIF clk='1' AND clk'event THEN
b <= a;
END IF;
END PROCESS;
END synth;
También es posible realizar esta operación a través de una señal de activacion (enable), pero a este tipo de diseños se les denomina latch. En este caso no hará falta la señal de reloj, pero sí el reset.
- Entradas:
- rst: Reset del sistema.
- en: Enable de almacenamiento.
- a: Entrada de datos.
- Salidas:
- b: Salida de datos.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.all;
ENTITY latch IS
PORT (en : IN std_logic;
rst : IN std_logic;
a : IN std_logic_vector(31 DOWNTO 0);
b: OUT std_logic_vector(31 DOWNTO 0));
END latch;
ARCHITECTURE synth OF latch IS
BEGIN
pSeq : PROCESS (en, rst) IS
BEGIN
IF rst = '1' THEN
b <= (others => '0');
ELSIF en = '1' THEN
b <= a;
END IF;
END PROCESS;
END synth;