Sintaxis del Lenguaje
LIBRERIAS
La libreria debe colocarse al inicio del documento antes de la entidad que va a utilizar los elementos de esa libreria. La libreria WORK y STD así como el paquete STD.STANDARD siempre estan accesibles al documento que se esta editando. Primero la clausula LIBRARY declara el nombre de la libreria y porteriormente el uso de l clausula USE selecciona la parte de la libreria que se desea usar. A continuación se muestra un ejemplo.
COMENTARIOS
En todo lenguaje de programación es una buena prácitica realizar comentarios al código con la finalidad de hacerlo más entendible al programador. Una linea de codigo marcada como comentario será ignorada por el compilador, por lo que no afecta de ninguna manera al tiempo de compilación. En VHDL los comentarios se hacen poniendo doble guión antes del texto a comentar. A continuación se muestra un comentario en VHDL.
DATOS "STD_LOGIC"
En el paquete ieee.std_logic_1164 que se encuentra dentro de la libreria IEEE está definido el tipo de datos denominado STD_LOGIC. Las señales de tipo std_logic pueden no solo contemplan los valores lógicos 0 y 1 sino que además tiene definido otros tipos de datos. A continuación se muestra una tabla con cada uno de los valores permitidos.
TIPO | VALORES |
U | Sin Inicializar |
X | Desconocido |
0 | 0 Forzado |
1 | 1 Forzado |
Z | Alta Impedancia |
W | Desconocido Debil |
L | 0 Debil |
U | 1 Debil |
- | No Importa |
Las operaciones lógicas básicas de VHDL estan definidas en base a los tipos de datos de la tabla anterior. Las compuertas and, nand, or, nor, xor, xnor, not definidas en en VHDL se calculan en función de los tipos de datos de entrada a estas compuertas. En la práctica los tipos más utilizados son '0', '1', 'Z', 'X' y '-'. La manera de definir bit o arreglos de bit es mediante las siguientes estructuras.
OPERADORES
TIPO | VALORES |
INTEGER | -2147483647 hasta 2147483647 |
BIT | '0' ó '1' |
BOOLEAN | TRUE ó False |
BIT_VECTOR | Arreglo de bits sin restricción |
PALABRAS RESERVADAS
abs | acces | after | alias | all |
and | architecture | array | assert | atribute |
begin | block | body | buffer | bus |
case | component | configuration | constant | disconect |
downto | else | elsif | end | entity |
exit | file | for | function | generate |
generic | group* | guarded | if | impure* |
in | inertial* | inout | is | label |
library | linkage | literal* | loop | map |
mod | nand | new | next | nor |
not | null | of | on | open |
or | others | out | package | port |
postponed* | procedure | process | pure* | range |
record | register | reject* | rem | report* |
return | rol | ror | select | severity |
signal | shared* | sla* | sll* | sra* |
srl* | subtype | then | to | transport |
type | unaffected* | units | until | use |
variable | wait | when | while | with |
xnor* | xor |
Diseño y configuración de entidades
DECLARACIÓN DE ENTIDADES
El diseño de entidades es la primera abtracción de hardware en VHDL. Representa la parte del diseño de hardware visto como una caja negra en donde solo se definen las entradas y salidas que tendrá el circuito. Este diseño puede representar el sistema completo, un subsistema, una compuerta logica, etc.
DECLARACIÓN DE ARQUITECTURA
El diseño de entidades es la primera abtracción de hardware en VHDL. Representa la parte del diseño de hardware visto como una caja negra en donde solo se definen las entradas y salidas que tendrá el circuito. Este diseño puede representar el sistema completo, un subsistema, una compuerta logica, etc.
Subprogramas y Paquetes
Declaración de Subprogramas
Funciones
Declaración de Paquetes
Cuerpo del paquete
Sentencias Secuenciales
Sentencia WAIT
Sentencia de asignación de señal
Sentencia de asignación de variables
Sentencia IF
Sentencia CASE
Sentencia LOOP
Sentencia NEXT
Sentencia EXIT
Sentencia RETURN
Setencias Concurrentes
Sentencia BLOCK
Sentencia PROCESS
Asignación concurrente de señales
Asignación condicional de señales
Asignacion de señales señales seleccionadas
Instanciación de componentes
INTRODUCCIÓN
CIRCUITOS DIGITALES
PROTOCOLOS
PRÁCTICAS
BÁSICOS
INTERMEDIOS
AVANZADOS