Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia VHDL
Guia VHDL
1. OBJETIVOS.
Estos Apuntes pretenden ser una guía para comenzar a describir modelos de
circuitos en lenguaje VHDL. No se trata de exponer en profundidad todas las
posibilidades del lenguaje sino de presentar, de una manera sencilla, sus fundamentos
con el objetivo de que el alumno novato en la materia pueda hacer sus primeros
programas de una manera rápida. Tradicionalmente se ha utilizado esta herramienta en
asignaturas o laboratorios de Arquitectura de Computadores y, en este contexto, el
lenguaje VHDL, que es solamente un medio, no debe convertirse en el fin. Con esto no
queremos decir que éste lenguaje de descripción de hardware no tenga interés por sí
mismo. Es cada vez más utilizado en la industria y el empeño por completar su
conocimiento en profundidad es una tarea a la que animamos a cualquiera de nuestros
alumnos de ingeniería ya que, sin duda, será un estupendo remate a su formación
profesional.
Las siglas VHDL corresponden a VHSIC (Very High Speed Integrated Circuits)
Hardware Description Language. El primer borrador vio la luz en agosto de 1985
diseñado por Intermetrics, IBM y Texas Instruments e impulsado por el Departamento
de Defensa de los Estados Unidos. En diciembre de 1987 fue aprobado como estándar
del IEEE y posteriormente, en 1993, fue revisado y registrado como norma IEEE Std
1076-1993.
© Rafael Rico
2
Apuntes de VHDL
entradas
ƒ(e) salidas
entradas salidas
entradas salidas
Cada uno de los modos de descripción lleva asociada una sintáxis determinada
que lo caracteriza. Podemos modelar un circuito con cualquiera de ellos.
3
© Rafael Rico
El circuito del ejemplo anterior puede ser visto como una caja negra que se
relaciona con el exterior mediante un conjunto se señales, unas de entrada y otras de
salida. En la figura siguiente se ha señalado el bloque mediante una linea punteada que
encierra los componentes.
e1
s1
e2
sal
e3
s2
e4
e1
e2
ENTIDAD sal
e3
e4
Cada fichero fuente (modo texto) debe contener una declaración de entidad y, al
menos, una arquitectura. Si modelamos más arquitecturas todas ellas pueden residir en
el mismo fichero fuente. En el caso de utilizar como compilador-simulador el V-System,
esos ficheros deben tener extensión .VHD.
4
Apuntes de VHDL
ENTITY and2 IS e1
PORT (e1, e2: IN BIT; sal: OUT BIT); sal
END and2; ENTIDAD
e2
ARCHITECTURE comportamiento OF and2 IS
BEGIN
PROCESS (e1, e2) e1
BEGIN
sal <= e1 AND e2; sal
END PROCESS; e2
END comportamiento; ARQUITECTURA
Una puerta AND sin retardo no es más que un ente de razón. Cualquier puerta
física tiene un retardo que hay que tener en cuenta.
5
© Rafael Rico
ENTITY and2 IS
PORT (e1, e2: IN BIT; sal: OUT BIT);
END and2;
ENTITY and2 IS
GENERIC (retardo: TIME := 2 ns);
PORT (e1, e2: IN BIT; sal: OUT BIT);
END and2;
6
Apuntes de VHDL
7
© Rafael Rico
La figura siguiente ilustra el hecho de que el lenguaje VHDL nos permite asociar
a cada entidad una colección de arquirtecturas. Esta colección puede contener una
variedad de codificaciones con la misma función de transferencia, como sucede en dicha
figura. Sin embargo, también podrían ser modificaciones al comportamiento en función
de tipos de implantación, tecnología, encapsulados, respuesta térmica, etc. Incluso
podríamos pensar en asociar a una entidad arquitecturas de comportamientos
absolutamente contradictorios. En este sentido, no es infrecuente el error de asociar a la
misma entidad de 2 entradas y una salida el comportamiento de dos puertas lógicas
diferentes. Solamente el programador detectará el fallo ya que los compiladores-
simuladores no pueden hacerlo.
ARQUITECTURAS
e2
sal
e1
ENTIDAD
ARQUITECTURAS
Figura 10. Esquema ilustrativo de cómo VHDL permite asociar a una entidad una
colección de arquitecturas. En el ejemplo se ha usado la puerta NAND.
8
Apuntes de VHDL
ENTITY identificador IS
--esto es un comentario
[GENERIC (nombre: TIPO := valor);]
[PORT (señal1,señal2,...:IN TIPO; señal3, señal4,...:OUT TIPO);]
END identificador;
Las señales pueden ser de varios tipos, unos definidos en la propia normalización
del lenguaje (BIT, BITVECTOR, etc.) y otros definidos por el programador. Cada tipo lleva
asociado un modo de entre tres posibles: IN, OUT e INOUT. Los listados de señales de una
entidad se agrupan por tipos y modos y se separan por comas (“,”).
Un proceso marca los límites del dominio secuencial. Es decir, dentro del
proceso el funcionamiento es secuencial mientras que lo que sucede dentro de la
arquitectura es concurrente. Cada sentencia secuencial (dentro del proceso) se evalúa
según su orden y hace avanzar el tiempo de simulación de acuerdo a los retardos
asociados. Cada sentencia secuencial parte del origen de tiempos que marca el final de
la sentencia anterior.
9
© Rafael Rico
10
Apuntes de VHDL
a ENTITY and4 IS
GENERIC (retardo: TIME := 2 ns);
b
z PORT (a, b, c, d:IN BIT; z:OUT BIT);
c ENTIDAD END and4;
d
a a
s1
b z b s2
z
c c
d d
11
© Rafael Rico
Si modelamos el circuito basado en tres puertas con tres procesos nos queda el
programa siguiente.
12
Apuntes de VHDL
ns δ a b c d s1 s2 z
0 +0 0 0 0 0 0 0 0
0 +1 1 0 0 0 0 0 0
10 +0 1 1 0 0 0 0 0
12 +0 1 1 0 0 1 0 0
20 +0 1 1 1 0 1 0 0
22 +0 1 1 1 0 1 1 0
30 +0 1 1 1 1 1 1 0
32 +0 1 1 1 1 1 1 1
40 +0 0 1 1 1 1 1 1
42 +0 0 1 1 1 0 1 1
44 +0 0 1 1 1 0 0 1
46 +0 0 1 1 1 0 0 0
50 +0 0 0 1 1 0 0 0
proceso
proceso driver de señal fuente
destino
t0 t1 t2 t3
v0 v1 v2 v3
13
© Rafael Rico
ns δ a b c d z s1 s2
0 +0 0 0 0 0 0 0 0
10 +0 1 0 0 0 0 0 0
20 +0 1 1 1 0 0 0 0
20 +1 1 1 1 0 0 1 0
20 +2 1 1 1 0 0 1 1
30 +0 0 1 1 1 0 1 1
30 +1 0 1 1 1 1 0 1
30 +2 0 1 1 1 1 0 0
30 +3 0 1 1 1 0 0 0
14
Apuntes de VHDL
La lista de conexiones del PORT MAP debe realizarse en el orden en el que las
señales se declararon en la entidad si se hace implícitamente, como en el ejemplo. Si se
hace explícitamente no es necesario.
15
© Rafael Rico
a
s1
b
z
c
s2
d
10. TEST-BENCH.
Un test-bench es una caja sin señales de conexión exterior. Es decir, una entidad
sin puertos. La arquitectura cuenta con una instancia del modelo bajo test y un proceso
que le inyecta señales. Las señales de entrada adoptarán los valores que se requiera en el
instante de tiempo preciso para comprobar el correcto funcionamiento del modelo.
Cuando se simula un test-bench se obtiene un cronograma de respuesta a las señales de
entrada que previamente programamos en el proceso.
Entidad
Proceso bajo test
16
Apuntes de VHDL
17
© Rafael Rico
--comienza el proceso
18
Apuntes de VHDL
BEGIN
FOR i IN 0 TO 15 LOOP
vector := entero_binario(i);
a<= vector(0);
b<= vector(1);
c<= vector(2);
d<= vector(3);
WAIT FOR retardo*2;
END LOOP;
END PROCESS;
END test2;
19
© Rafael Rico
11. REFERENCIAS.
[1] IEEE Standard VHDL Language Reference Manual. Published by the Institute of
Electrical and Electronics Engineers, 1994.
[2] IEEE Standard VHDL Language Reference Manual IEEE Std 1076-1987. Publicado
por IEEE. 1989.
[3] Lluis Terés et al. VHDL: Lenguaje estándar de diseño electrónico. Mc Graw Hill,
1997.
[5] Roger Lipsett, Carl Schaefer and Cary Ussery, VHDL: Hardware Description and
Design. Kluwer Academic Publishers, 1989.
[6] David Coelho. The VHDL Handbook. Kluwer Academic Publishers. 1989.
[7] Zainalabedin Navabi. VHDL: Analysis and Modeling of Digital Systems. Mc Graw
Hill. 1992.
[8] Peter J. Ashenden. The VHDL Cookbook. University of Adelaide, South Australia;
FTP desde ftp.cs.adelaide.edu.au (129.127.8.8) pub/VHDL-Cookbook.
20