Fundamentos de VHDL: tipos de datos, subtipos y conversiones

Informática y TelecomunicacionesActualizado el 3,24 KB

Resumen

Este apartado repasa los fundamentos básicos de VHDL: cómo se nombran los identificadores y qué son las palabras reservadas. Describe los tipos de datos escalares (enteros, físicos, reales y enumerados) y los compuestos (matrices y registros). Por último explica los subtipos, la conversión de tipos y la diferencia entre constantes, variables y señales.

Puntos clave

  • Un identificador es una cadena de caracteres formada por letras o por letras y números que identifica variables, señales o procesos.
  • Los tipos escalares incluyen enteros, físicos, reales (coma flotante) y enumerados, y se definen con la palabra RANGE en el caso de enteros y reales.
  • Los tipos compuestos agrupan elementos: las matrices contienen elementos del mismo tipo accesibles por índice y los registros equivalen al record de otros lenguajes.
  • Un subtipo es un tipo existente con una restricción de rango o de índice aplicada.
  • La conversión de tipos (casting) se usa cuando hay que pasar de un tipo a otro, por ejemplo de std_logic_vector a entero.
  • Las constantes se declaran con CONSTANT y no cambian su valor, las variables pueden modificarse en cualquier instante y las señales se declaran con SIGNAL.

Ponte a prueba

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.

Descargar

PDF Word HTML

Preguntas frecuentes

¿Qué diferencia hay entre una constante, una variable y una señal en VHDL?

Una constante se inicializa con un valor que no puede modificarse. Una variable es similar pero puede cambiar en cualquier instante. Las señales se declaran con SIGNAL y pueden ser de tipo normal, register o bus.

¿Cómo se define un tipo entero o enumerado en VHDL?

Un entero se define con la palabra RANGE, por ejemplo TYPE byte IS RANGE 0 TO 255. Un enumerado enumera los valores posibles entre paréntesis, como TYPE color IS (ROJO, VERDE, AMARILLO), y es idéntico a los enum de C.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Con qué palabra reservada se declara una constante en VHDL?
2. ¿Qué palabra se usa para definir un tipo entero con un rango?
3. ¿Qué tipo compuesto es equivalente al record de otros lenguajes?
4. ¿Qué es el casting en VHDL?
5. ¿Qué diferencia tiene una variable frente a una constante?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.