Error de declaración de señal VHDL

0

Utilizando Vivado 2017.4, estoy tratando de usar una señal de reloj generada por el Asistente de Clocking IP. Copié la instanciación y el bloque de código de componente de la plantilla de Creación de instancias, pero recibo algunos errores relacionados con la declaración de la señal. He asignado la señal de "recuento" en el encabezado de mi arquitectura, pero sigo recibiendo un error que dice "no está declarado".

Además de "contar", también obtengo el mismo error con mi variable "clk_wiz_0" a pesar de haber creado el componente. También tengo algunas advertencias de sintaxis que podrían estar contribuyendo a los errores.

He intentado mover las declaraciones de la biblioteca después del bloque de entidades, pero eso no ayudó. Tampoco creo que me esté perdiendo ninguna biblioteca.

Soy nuevo en VHDL, así que tal vez hay algunos problemas de tipo o sintaxis que me faltan. - > significa un error "error < > no declarado" y * indica advertencias de sintaxis. Gracias de antemano!

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity mmcm is
    Port( clk_fpga : in STD_LOGIC;
          reset     : in STD_LOGIC;
          lock_led  : out STD_LOGIC;
          counter_led : out STD_LOGIC);

end mmcm;


architecture Behavioral of mmcm is
    signal clk_10M : std_logic;
    signal count   : std_logic_vector(3 downto 0);

 component clk_wiz_0
    port
     (-- Clock in ports
      -- Clock out ports
      clk_10M          : out    std_logic;
      -- Status and control signals
      reset             : in     std_logic;
      locked            : out    std_logic;
      clk_in1           : in     std_logic
      );
    end component;

   *mmcm_inst : clk_wiz_0*
       port map ( 
      -- Clock out ports  
       clk_10M => clk_10M,
      -- Status and control signals                
       reset => reset,
       locked => locked,
       -- Clock in ports
       clk_in1 => clk_in1
     );

  ATTRIBUTE SYN_BLACK_BOX : BOOLEAN;
  -->ATTRIBUTE SYN_BLACK_BOX OF clk_wiz_0 : COMPONENT IS TRUE; 

  ATTRIBUTE BLACK_BOX_PAD_PIN : STRING;
-->ATTRIBUTE BLACK_BOX_PAD_PIN OF clk_wiz_0 : COMPONENT IS "clk_in1, clk_10M, 
reset, locked";

    *process (clk_10M, reset)        --count from 0 to 9 at 10MHz*

begin

   if reset = '1' then
      -->count <= "0000";
   *elseif clk_10M'event and clk_10M = '1' then*
     if count = 9 then
         -->count <= "0000";
     *else*
         -->count <= count + 1;
     *end if;*
   end if;
end process;

counter_led <= '1' when count = 9 else '0';

end Behavioral;
    
pregunta jjsanders

1 respuesta

0

Debes cambiar 'elseif' al 'elsif' correcto.

Luego agregue un 'comienzo' sobre su proceso, para separar la región declarativa de su arquitectura de su cuerpo.

    
respondido por el TonyM

Lea otras preguntas en las etiquetas