Sie sind auf Seite 1von 3

1.

Identificadores
Para las denominaciones de los elementos del lenguaje se emplean los identificadores. Se distinguen dos tipos:
bsicos y extendidos. Un identificador bsico es cualquier conjunto de letras, numero, y el carcter _. Las nicas
restricciones son:

- El primer carcter ha de ser necesariamente una letra (a-z, A-Z) del alfabeto ingls.
- El ultimo carcter no puede ser _.
- No pueden utilizarse dos _ seguidos.
Adems, VHDL no hace distincin entre maysculas y minsculas (case insensitive).
En ocasiones interese emplear un conjunto ampliado de caracteres, o bien distinguir entre maysculas y
minsculas. Por ello se introdujeron los identificadores extendidos en la revisin del lenguaje de 1993, los cuales
puede contener cualquier carcter estndar. Un identificador extendido de delimita con el carcter \.
Por ejemplo:
inputA
sig_1
valor_binario_3
\temporal.%123$$-#\
\v.1-2\\beta\
Ntese que es posible emplear el carcter \ en un identificador extendido. Para ello es necesario colocar dos
seguido, lo cual se extendido como uno solamente.

2. Delimitadores
Son caracteres utilizados en determinadas operaciones y sentencias. Los delimitadores simples estn constituidos
por un solo carcter:

& ( ) * + , - . / : ; < = > | \


Los delimitadores compuestos se forman con dos caracteres seguidos:
=> ** := /= >= <= <> --

3. Comentarios
En las descripciones se pueden introducir comentarios:
-- Esto es un comentario

4. Tipos de datos
Los tipos de datos predefinidos se encuentran casi en su totalidad en el paquete standard de la biblioteca std. La
siguiente tabla muestra los principales:

Tipo Rango Descripcin


Integer -MAXINT MAXINT Nmeros enteros
Natural 0 MAXINT Nmeros naturales
Positive 1 MAXINT Nmeros positivos
Real -MAXREAL MAXREAL Nmeros reales
Boolean True, false Valores booleanos
Bit 0, 1 Valores binarios
Bit_vector Conjunto de bits Cadena de bits
Character Apendice Caracteres
String Conjunto de caracteres Cadena de caracteres
Nmeros reales con unidades de
Time -MAXINT MAXINT <undad>
tiempo
La representacin de los valores en los tipos numricos (integer, real, time), se puede realizar de diversas formas.
En general se emplea base 10 y se puede utilizar el carcter _ para mejorar la legibilidad.

Por ejemplo:

2.71
43_234.0
0.000_0012
3.27E4
6.0E-3
2E6
3E-3 -- Si el tipo es entero el exponente no puede ser negativo

En cualquier caso, el lenguaje permite expresas un numero en cualquier base, de acuerdo con el siguiente
formato:
base # entero[.entero] [#E exponente]
La base binaria se toma por defecto, es decir, puede prescindirse de indicar B. X representa la base hexadecimal y
O la octal.

5. Operadores
En el lenguaje se encuentran predefinidos una serie de operadores; que se pueden agrupar en cinco categoras:
aritmticos, relacionales, lgicos, de desplazamiento y otros.

Operacin Operador Tipo de datos


Suma + Cualquier tipo numrico
Resta - Cualquier tipo numrico
Producto * Entero, real
Divisin / Entero, real
Exponenciacin ** Entero, real (exponente entero)
Modulo mod Enteros ambos
Resto rem Enteros ambos
Valor absoluto abs Cualquier tipo numrico

5.1. Operadores relacionales


Los operadores relaciones aceptan como operandos cualquier tipo y devuelven un literal tipo boolean, es
decir, el resultado de la operacin puede ser true o false. En las siguiente table se muestran los operadores
predefinidos:

Operacin Operador
Igual =
Diferente /=
Mayor >
Mayor o igual >=
Menor <
Menor o igual <=
5.2. Operadores lgicos y de desplazamiento
Los operadores lgicos admiten operandos bit, boolean o arrays de dichos tipos. La siguiente table muestra la
relacin de operadores predefinidos:

Operacin Operador
and and
nand nand
or or
nor nor
xor xor
xnor xnor
not not
Desplazamiento lgico a la izquierda sll
Desplazamiento lgico a la derecha srl
Desplazamiento aritmtico a la izquierda sla
Desplazamiento aritmtico a la derecha sra
Desplazamiento circular a la izquierda rol
Desplazamiento circular a la derecha ror

6. Objetos

6.1. Variables
Las variables almacenan valores que pueden cambiar a lo largo de la simulacin. Por ejemplo:

variable contador: natural;


variable resultado: real:= 1.0;
variable estado: bit_vector(7 downto 0);
shared variable: status: bit:= 0;

Las variables solo pueden ser declaradas y utilizadas dentro de procesos o subprogramas y, por tanto, son
locales a los mismo. La nica excepcin la constituyen las variables de tipo compartido o globales (shared),
que puede ser compartida entre procesos

Al declarar una variable puede asignrsele un valor inicial. En caso de no hacerlo, el simular asigna un valor
por defecto.

6.2. Seales
Al igual que las variables, las seales almacenan informacin que puede cambiar a lo largo de una
simulacin, sin embargo, su significado esta intrnsecamente ligado al carcter hardware del lenguaje. Las
seales representan las conexiones o terminales fsicos presentes en un circuito y, por tanto, poseen diversas
propiedades para el correcto modelado de su comportamiento.

Las seales pueden ser utilizadas en todo tipo de sentencias, tanto concurrentes como secuenciales, aunque
solo pueden ser declaradas en aquellas. Las seales clase bus y register constituyen un caso especial

Das könnte Ihnen auch gefallen