VHDL: Lenguaje para síntesis y modelado de circuitos
(Primera edición obsoleta)
Fernando Pardo Carpio y
Jose
Antonio Boluda Grau
y Jose.A.Boluda@uv.es
Dpt. Informática
Universitat de València
46100 Burjassot (Valencia) España.
ATENCIÓN: Ya ha salido la
TERCERA EDICIÓN de este libro, por lo que esta página
ya no se mantiene y queda sólo como referencia para los usuarios de la primera edición.
Editorial RA-MA. Abril 1999. Rústica y CD ROM,
256 Págs. ISBN:8478973516.Ref: 0001436 Ptas. 2950,-
Los lenguajes de descripción hardware son
los pilares sobre los que se asienta la fuerte evolución que el
diseño electrónico digital ha venido sufriendo durante los
últimos años. Entre todos estos lenguajes, el VHDL ha emergido
como estándar en la industria, convirtiéndose en el lenguaje
de descripción hardware más utilizado hoy en día.
El objetivo de este libro no es únicamente
el de presentar el lenguaje y su sintaxis, sino también el de introducir
la metodología de trabajo inherente al lenguaje, ya que se trata
del flujo de diseño actual de circuitos digitales. Además,
se centra en las dos grandes áreas de aplicación del VHDL:
la simulación y la síntesis automática de circuitos.
El libro se compone de 12 capítulos, 3 apéndices
y un CD-ROM, donde se han recogido los siguientes temas:
-
Metodología y posibilidades en la descripción del diseño
electrónico. Lenguajes de descripción hardware.
-
Introducción y sintaxis del lenguaje.
-
Estilos de descripción: estructural, flujo de datos y algorítmica.
-
Bibliotecas, Paquetes y Unidades. Conceptos avanzados.
-
Simulación y modelado.
-
Descripción y síntesis automática de circuitos con
VHDL.
-
VHDL en la práctica. Ejemplos y ejercicios resueltos.
-
Herramientas de CAD.
La estructura y contenido de esta obra están
basados en varios años de experiencia en la enseñanza del
VHDL y diseño digital, por lo que el principal objetivo perseguido
por los autores es el carácter didáctico y pedagógico,
sin olvidar que también va dirigido a los ingenieros que actualmente
empiezan a incorporar estas técnicas de diseño a su entorno
laboral.
Contiene un CD-ROM que incluye los ejemplos del libro,
software completo de simulación VHDL (licencia VeriBest limitada
a 2.000 líneas de código), y sintetizador VHDL de Altera;
se requiere un ordenador con sistema Windows 95/98 o NT.
ISBN 84-7897-351-6, Primera Edición: Abril 1999.
Contenidos
-
Metodología de diseño
-
Concepto de herramientas CAD-EDA
-
Diseño Bottom-Up
-
Ventajas del diseño Bottom-Up
-
Ingeniería Concurrente
-
Descripción del diseño
-
Captura de esquemas
-
Generación de símbolos
-
Diseño modular
-
Diseño jerárquico
-
El netlist
-
El formato EDIF
-
Otros formatos de Netlist
-
Ejemplo de diferentes Netlist
-
Introducción al lenguaje VHDL
-
El lenguaje VHDL
-
VHDL describe estructura y comportamiento
-
Ejemplo básico y estilos de descripción en VHDL
-
Descripción algorítmica
-
Descripción flujo de datos
-
Descripción estructural
-
VHDL'87 y VHDL'93
-
Elementos sintácticos del VHDL
-
Operadores y expresiones
-
Operador de concatenación
-
Operadores aritméticos
-
Operadores de desplazamiento
-
Operadores relacionales
-
Operadores lógicos
-
Precedencia de operadores
-
Tipos de datos
-
Tipos escalares
-
Tipos compuestos
-
Subtipos de datos
-
Atributos
-
Atributos definidos por el usuario
-
Declaración de constantes, variables y señales
-
Constantes
-
Variables
-
Señales
-
Comparación entre constantes, señales y variables
-
Declaración de entidad y arquitectura
-
Declaración de entidad
-
Declaración de arquitectura
-
Descripción flujo de datos
-
Ejecución concurrente y ejecución serie
-
Descripción concurrente flujo de datos
-
Estructuras de la ejecución flujo de datos
-
Asignación condicional WHEN..ELSE
-
Asignación con selección: WITH..SELECT..WHEN
-
Bloque concurrente: BLOCK
-
Ejemplos de descripción flujo de datos
-
Descripción comportamental algorítmica
-
Diferencias entre variable y señal
-
Estructuras de la ejecución serie
-
El bloque de ejecución serie: PROCESS
-
Sentencia de espera: WAIT
-
Sentencia condicional: IF..THEN..ELSE
-
Sentencia de selección: CASE
-
Bucles: FOR y WHILE LOOPs
-
Ejemplos de ejecución serie
-
Descripción de cerrojos o latches
-
Descripción de registros
-
Descripción estructural
-
Componentes, referencia y enlace
-
Referencia de componentes
-
Definición de componentes
-
Enlace entre componentes y entidades. Sentencia FOR
-
Repetición de estructuras: GENERATE
-
La unidad de configuración
-
Ejemplo
-
Poniendo orden: subprogramas, paquetes y bibliotecas
-
Subprogramas
-
Declaración de procedimientos y funciones
-
Llamadas a subprogramas
-
Sobrecarga de operadores
-
Bibliotecas, paquetes y unidades
-
Paquetes: PACKAGE y PACKAGE BODY
-
Conceptos avanzados en VHDL
-
Buses y resolución de señales
-
Punteros en VHDL
-
Ficheros
-
VHDL para simulación
-
Asignación con retrasos
-
Sintaxis completa de la asignación
-
Especificación de retrasos
-
Retrasos inerciales y transportados
-
Simulación guiada por eventos
-
Avance de tiempo por incremento fijo
-
Ejemplo de modelado de un registro
-
Niveles lógicos para simulación
-
Notificación de sucesos
-
Procesos pasivos
-
Descripción de un banco de pruebas
-
Método tabular
-
Utilización de ficheros con vectores de test
-
Metodología algorítmica
-
VHDL para síntesis
-
Restricciones y consejos en la descripción
-
Construcciones básicas
-
Descripción de lógica combinacional
-
Descripción de lógica secuencial
-
Descripción de máquinas de estados
-
Lógica programable
-
Tecnologías de programación
-
PALs, PLDs y FPGAs clásicas
-
Arquitecturas híbridas (CPLDs avanzadas)
-
Utilización del lenguaje VHDL
-
Errores más comunes usando VHDL
-
Ejemplos para simulación y síntesis
-
El botón
-
Los semáforos
-
El ascensor
-
La memoria ROM
-
El microprocesador
-
La lavadora
-
El concurso
-
El pin-ball
-
Ejercicios propuestos
Apéndice A. Notación BNF del VHDL'93
-
Notación BNF
-
VHDL'93
Apéndice B. VHDL y herramientas en Internet
Apéndice C. CD-ROM con herramientas para VHDL
-
Instalación y prueba del sintetizador de VHDL
-
Instalación y prueba del simulador de VHDL
Bibliografía
Índice alfabético
CD-ROM con herramientas de CAD y ejemplos
En este libro se incluye un CD con las dos herramientas
básicas de diseño utilizando VHDL: un sintetizador de circuitos
y un simulador. Además se han incluido todos los ejemplos del libro
así como los problemas propuestos. En el libro se dan las explicaciones
necesarias para utilizar estas herramientas.
-
Simulador VHDL VeriBest. Se trata de un simulador de VHDL muy completo,
rápido y con un buen interface de usuario. Se puede conseguir el
programa de evaluación en esta misma página pulsando
aquí
(13 Mb). Las limitaciones
son 2.000 líneas de código aunque se puede conseguir en el
web anterior una licencia completa con una duración de un mes.
-
Altera Max+Plus II Student Edition. Este software es más que un
sintetizador de VHDL ya que no sólo admite VHDL sino esquemas, además
de otros lenguajes. La limitación de la versión de evaluación
es únicamente la variedad de dispositivos sobre los que se puede
sintetizar. Este programa se puede conseguir del CD incluido en el libro
o directamente haciendo una petición a
Altera.
Una vez se tiene instalado el programa basta rellenar un pequeño
formulario,
y el código se recibe en pocos segundos en la dirección de
correo que se indique.
-
Los ejemplos y soluciones se pueden acceder
directamente
aquí.
Erratas y comentarios (Bugs)
En esta sección se recogen cambios de última hora que no
han podido entrar en la edición del libro. También se recogen
sugerencias o erratas (bugs) encontradas en el libro por los lectores o
autores.
Junto al comentario aparece la persona que ha contribuido a encontrarlo.
En la edición de México las erratas de las páginas 98, 157,
158 y 186 han sido corregidos.
-
Pag. 98: En el ejemplo de descripción del procedimiento
lims,
los argumentos min y max deben ser INOUT o bien hay
que declarar unas variables auxiliares para poder leer estos argumentos.
El problema de declararlos como OUT es que no se pueden leer
y, por tanto, las comparaciones en los IFs que aparecen en el procedimiento
son incorrectas. (Fernando Pardo).
Postscript (pag98.ps)
Jpeg (pag98.jpg)
- Pag. 157: En la continuación del ejemplo que empieza en la página 156,
después del CASE viene un IF con la condición de reloj;
la condición de reloj
en este caso debe incluir también clk'event ya que en la lista sensible
se encuentra también la señal presente. (Fernando Pardo)
Postscript (pag157.ps)
Jpeg (pag157.jpg)
- Pag. 158 En el ejemplo al principio de la página en el bloque
combinacional, entre
el PROCESS y el CASE debe ir un BEGIN. (Fernando Pardo)
Postscript (pag158.ps)
Jpeg (pag158.jpg)
- Pag. 158 También en el ejemplo del final de la misma página existe
el mismo error; debe ir un BEGIN justo después del PROCESS. (Lucia Vergara
Herrero)
- Pag. 183 En el PROCESS de salida del ejemplo del procesador, en
el estado
ejec, en el caso en que la instrucción fuera el salto condicional
(101),
falta poner lo que ocurre cuando no se cumple la condición, es decir, cuando no
hay que saltar. En ese caso hay que incrementar el contador de programa. Por lo
tanto, en esta página, después de la línea que pone
-- Salta si A=0 hay que
incluir después: ELSE carga_pc<=pc+"00000001"; justo antes del
END IF; (Luis Alario)
Postscript (pag183.ps)
Jpeg (pag183.jpg)
- Pag. 186
Algunas de las líneas de la figura de la simulación no se ven bien.
Postscript (pag186.ps)
Jpeg (pag186.jpg)
- Pag. 191 En el ejemplo de la lavadora, en la lista sensible del
PROCESS de salida faltan las señales que intervienen en la
asignación. Si no se ponen se entiende que dichas señales infieren
latches. Hay sintetizadores que directamente incluyen dichas señales
aunque no se les indique para que el proceso sea combinacional, pero es buena
práctica incluirlas siempre. La lista sensible completa sería:
PROCESS(presente,jabon_listo,lleno,subtiempo,diraux) (Fernando Pardo)
Postscript (pag191.ps)
Jpeg (pag191.jpg)
- Pag. 191 y 192 En el mismo ejemplo de la lavadora, si se quiere que el
proceso de salida sea completamente combinacional (lo cual es siempre deseable)
hay que asignar todas las señales en todos los casos posibles. En el
ejemplo, no siempre se asigna la señal dirauxd: En los estados
lavado y aclarado, en las condicionales
IF subtiempo=diezsec THEN
falta en el
ELSE la asignación dirauxd<=diraux; para que se quede igual
y no haga
nada. Si no se pone se inferiría un cerrojo. (Fernando Pardo)
Postscript (pag191.ps)
Jpeg (pag191.jpg)
Postscript (pag192.ps)
Jpeg (pag192.jpg)
Otros enlaces
Editado por
Editorial y librería Informática
http://www.ra-ma.es