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.