Fundamentos de VHDL: Identificadores, Tipos de Datos y Conversiones

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,24 KB

Identificadores: Son cualquier cadena de caracteres que sirven para identificar variables, señales, procesos, etc. Puede ser cualquier nombre compuesto por letras (aux) o números y letras (aux1, aux2, aux3, ..).

Palabras reservadas: Son las instrucciones, órdenes y elementos que permiten definir sentencias.

Tipos de Datos

Tipos Escalares: Son tipos simples que contienen algún tipo de magnitud.

  • Enteros: Son datos con un valor numérico entero. La forma de definirlos es con la palabra RANGE. Ejemplo: TYPE byte IS RANGE 0 TO 255;
  • Físicos: Se trata de datos que corresponden con magnitudes físicas, que tienen un valor y unas unidades.
  • Reales o coma flotante: Se definen igual que los enteros con la diferencia de que los límites son números reales. Ejemplo: TYPE nivel IS RANGE 0.0 TO 5.0
  • Enumerados: Son datos que pueden tomar siempre que se encuentre en una lista o conjunto finito. Es idéntico a las enumeraciones en C (enum). Ejemplo: TYPE color IS (ROJO, VERDE, AMARILLO);

Tipos Compuestos: Son tipos de datos compuestos por los que se han visto anteriormente.

  • Matrices: Se trata de un conjunto de elementos del mismo tipo, accesibles mediante un índice. Los hay de dos tipos: monodimensionales o multidimensionales. Ejemplo: TYPE word IS ARRAY (31 DOWNTO 0) OF bit;
  • Registros: Es equivalente al tipo record de otros lenguajes.
    TYPE trabajador IS
    RECORD
     nombre : string;
     edad : integer;
    END RECORD;

Subtipos de Datos

Subtipos de datos: En VHDL se pueden definir subtipos, los cuales corresponden a tipos ya existentes. Se pueden diferenciar dos tipos dependiendo de las restricciones que se apliquen.

  • Restricciones de un tipo escalar a un rango:
    SUBTYPE indice IS integer RANGE 0 TO 7;
    SUBTYPE digitos IS character RANGE '0' TO '9';
  • Restricciones del rango de una matriz:
    SUBTYPE id IS string(0 TO 15);
    SUBTYPE dir IS bit_vector(31 DOWNTO 0);

Otros Elementos

Conversión de tipos: En ocasiones puede ser necesario convertir unos tipos a otros, esta operación es conocida como casting. Ejemplo: conv_integer(std_logic_vector); -- Conversión de vector a entero

Constantes: Es un elemento que se inicializa con un valor determinado, el cual no puede ser modificado, es decir siempre conserva el mismo valor. Esto se realiza con la palabra reservada CONSTANT.

Variables: Es lo mismo que una constante, pero con la diferencia que puede ser modificada en cualquier instante, aunque también es posible inicializarlas.

Señales: Las señales se declaran con la palabra reservada SIGNAL, a diferencia con las anteriores este tipo de elementos pueden ser de varios tipos: normal, register o bus. Es posible asignarles un valor inicial.

Entradas relacionadas: