Ir al contenido

Programación en VHDL/Ejemplos/Biestable-Latch

De Wikilibros, la colección de libros de texto de contenido libre.
← Ejemplos/Contador Biestable-Latch Ejemplos/Máquinas de estados →



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;

← Ejemplos/Contador Biestable-Latch Ejemplos/Máquinas de estados →