Error (10327): Error de VHDL en clkdivider.vhd (27): no se puede determinar la definición de operador "" no "" - se encontraron 0 definiciones posibles

-2

Todavía soy un principiante y sigo recibiendo este error, ¿alguien puede ayudar a los pls?

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.NUMERIC_STD.ALL;


entity ClkDivider is

port ( clk_in : in STD_LOGIC;
        reset : in STD_LOGIC;
     clk_out : out STD_LOGIC);


end ClkDivider;


architecture behaviour of ClkDivider is


signal counter: integer := 0;


signal temporal: integer range 0 to 499 := 0;


begin 
    clock_divider: process (reset, clk_in) 


     begin

if (reset = '1') then

            temporal <= 0;
            counter <= 0;

        elsif rising_edge(clk_in) then
            if (counter = 499) then
                temporal <= not (temporal);
                counter <= 0;
            else
                counter <= counter + 1;
            end if;
        end if;
    end process;

    clk_out <= temporal;
end behaviour;
    
pregunta Ahmad Al-Sayed

1 respuesta

2

El operador NOT no está definido para enteros, solo puede usarlo en formatos como std_logic , std_logic_vector , signed , unsigned , bit , bit_vector , ...

¿Por qué? Debido a que VHDL no asume ninguna implementación de hardware para enteros: pueden ser números binarios, pero no es obligatorio. El sintetizador es libre de utilizar cualquier codificación. Por ejemplo, su contador simple podría implementarse con un registro de desplazamiento de retroalimentación lineal y sería más pequeño y más rápido (en un ASIC) que un sumador binario.

Las funciones de conversión están disponibles en la biblioteca IEEE.numeric_std.ALL para integer < - > signed / unsigned conversiones.

De todos modos, hay algunos otros problemas con su código.

  • El entero del contador no tiene rango, lo que es una codificación incorrecta, especialmente para el código sintetizable.
  • cly_out es un std_logic , temporal es un integer , ¿qué intentas hacer con clk_out <= temporal ?
respondido por el TEMLIB

Lea otras preguntas en las etiquetas