JK flip flop código VHDL

0

Intenté escribir código VHDL para sincronizar JK FF. Tengo el siguiente error:

  

error de sintaxis de la línea 18 cerca de la declaración.

¿Podría alguien explicarme qué hay de malo con la declaración if?

También, ¿este código está bien? Intenté buscar en Internet, pero no he encontrado el código para sincronizar JK FF en ninguna parte. Por sincronización, entiendo que el reinicio debe ser sincrónico con el clk?

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity JK_FF is
Port ( J : in  STD_LOGIC;
       K : in  STD_LOGIC;
       R : in  STD_LOGIC;
       clk: in  STD_LOGIC;
       Q : out  STD_LOGIC;
       QB : out  STD_LOGIC );
end JK_FF;

architecture Behavioral of JK_FF is
   signal M: STD_LOGIC;
begin

process (M, J, K, R, clk) 
begin
   if (clk'event and  clk = '1') then   
      if (R = '1') then 
         M <= '0';
      end if;
   else
      if (J = '0') then
         if (K = '0') then
            null;
         else
            M <= '0';
         end if;
      else
         if (K = '0') then
            M <= '1';
         else
            M <= not(M);
         end if;
      end if;           
   end if;
   Q <= M;
end process;

end architecture;
end Behavioral;
    
pregunta Lola

1 respuesta

3
  1. La lista de sensibilidad del proceso debe contener solo "reloj", ya que su FF síncrono.

  2. end behavoral es suficiente. No es necesario end architecture

  3. su primer final si debería estar al final.

  4. Tu Q se retrasa un ciclo, así que usa variable . También te perdiste QB .

  5. Intente usar elsif para mejorar la legibilidad, en lugar de else y usar if dentro de else .

  6. Intenta tu código siempre.

enlace útil

    
respondido por el MITU RAJ

Lea otras preguntas en las etiquetas