Está en la página 1de 11

Universidad de El Salvador

Sistemas Digitales I

Universidad de El Salvador
Facultad de Ingeniera y Arquitectura
Gua 1: Introduccin a los Lenguajes HDL
Francisco Cruz Jurez

RESUMEN: Esta gua pretende ser una


introduccin a los lenguajes HDL (Hardware
Description Language), especficamente para
trabajar con AHDL (Altera Hardware Description
Language) de Altera y VHDL (Very high speed
integrated circuit Hardware Description Language)
del estndar IEEE (Institute of Electrical and
Electronics Engineers) std 1076-1987. Se explicar
con mayor detalle VHDL para minimizar el
contenido de la gua, pero el estudiante puede
trabajar en el lenguaje que prefiera, adems usar el
sistema operativo de su preferencia. Para Windows
(se necesita licencia) existen muchos IDEs
(Integrated Development Environment o Ambiente
de Trabajo Integrado) y compiladores como lo son
Max Plus de Altera, Active HDL y muchos otros.
Con software libre se tiene GHDL para LINUX, y
para visualizar resultados GTKWave.
INTRODUCCIN: Los lenguajes HDL son muy
variados, estn desde los Netlist como Ada
(lenguaje de programacin nombrado en honor a
Ada Lovelace, conocida popularmente como la
primera programadora computacional y en este fue
basado VHDL) hasta lenguajes tan potentes en los

Introduccin a Lenguajes HDL

Sasi Ramrez

que muchas veces el circuito ya no se ve


claramente y ms bien es un lenguaje de
programacin, esto tiene sus grandes ventajas
aunque tambin existen desventajas, la ms notable
desventaja es que a la hora de implementar el
circuito no es fcil pasar del programa de
descripcin al Hardware que lo implementa, este
proceso es conocido como sntesis (Diseo).
VENTAJAS DEL USO DE VHDL:
VHDL permite disear, modelar, y comprobar
un sistema desde un alto nivel de abstraccin
bajando hasta el nivel de definicin estructural
de compuertas.
Al estar basado en un estndar (IEEE Std 10761987) los ingenieros de toda la industria de
diseo pueden usar este lenguaje para minimizar
errores de comunicacin y problemas de
compatibilidad.
Modularidad: VHDL permite dividir o
descomponer un diseo hardware y su
descripcin en unidades ms pequeas.

Universidad de El Salvador
Sistemas Digitales I
Instalacin
de
las
herramientas
programacin y Simulacin VHDL:

de

Para Windows: Descargar un IDE. Uno muy


bueno se encuentra en www.altera.com, instalarlo
al igual que se instalan todos los programas en
Windows.
Para Linux: Descargar los archivos GHDL y
GTKWave, hay diferentes versiones para cada
sistema operativo, en la gua se usa Ubuntu. Una
forma muy sencilla de instalarlos es desde el
synaptic pero en esta ocasin se har con los
comandos apt-get o dpkg, abra una consola y
escriba:
apt-get install ghdl
Si en cambio, los instaladores se encuentran en una
carpeta, se debe utilizar el comando
dpkg i *.deb
Se instalarn todos los archivos que estn en la
carpeta actual.
Para escribir el cdigo se puede utilizar cualquier
editor de texto plano como Vi, Vim, Geany, Gedit,
etc.
Creacin del primer programa:
En Windows: Si se utilizar el software de Altera.
1.0. Cree nuevo proyecto file -> Name como se
muestra en la imagen 1 (flecha 1), se le dar el
nombre de comp_and como se muestra en la
imagen 2.
2.0. Luego seleccione la opcin nuevo archivo
como lo indica la flecha 2 en la imagen 1.

Introduccin a Lenguajes HDL

Imagen 1

Imagen 2
3.0. Aparecer una nueva ventana, seleccione Text
Editor File como se muestra en la imagen

Imagen 3.
4.0. Luego aparecer una ventana donde podr
editar texto, gurdela con el mismo nombre del
proyecto, en este caso comp_and. Es
importante que la extensin del archivo sea
.vhd.

Universidad de El Salvador
Sistemas Digitales I
5.0. Escriba el siguiente cdigo en el editor y
gurdelo.

Imagen 5.

6.0.Luego compile el cdigo, la opcin Max + Plus


II -> compiler se muestra en la imagen 4,
aparecer una ventana, vaya a la opcin
Processing ->Funtional SNF Stractor, esto se
muestra en la imagen 5 y por ltimo en la
ventana que apareci presione Start y luego ok.

Imagen 6.
7.0. Para ver si funciona correctamente se har una
simulacin, para esto vaya al men Max + Plus
II -> Wave Form Editor, como se muestra en la
imagen 7, aparecer otra imagen solo pulse ok.

Imagen 4.

Imagen 7

Introduccin a Lenguajes HDL

Universidad de El Salvador
Sistemas Digitales I
8.0. Guarde el editor de forma de onda con el
nombre de comp_and.scf.
9.0. Luego vaya al men Node -> Enter Nodes
from SNF, como se muestra en la imagen 8.

men Options -> Grid size, dele un valor de


100 ns como se muestra en la imagen 11, por
ltimo seleccione el men view -> Fit in
4indows, con eso ya est configurada la
ventana.

Imagen 10.

Imagen 11.

Imagen 8.

12.0. Con los Botones del lado izquierdo se


modifican las seales de entrada (solo se
pueden modificar las entradas) de forma que
queden como se muestra en la imagen 12.

10.0. Agregue las seales como se muestra en la


imagen 9, presionando List y la flecha que
indica hacia la derecha.

Imagen 12.

Imagen 9.
11.0. Luego se hacen los ajustes de el archivo de
simulacin File -> End Time.., coloque 2.0 us
como se muestra en la imagen 10, luego en el

Introduccin a Lenguajes HDL

13.0. Luego vaya al men Max Plus II ->


Simulator, en la ventana que aparece presione
start, luego ok, el resultado y todo lo anterior se
muestra en la imagen 12.

Universidad de El Salvador
Sistemas Digitales I
Como se puede observar la salida obedece el
comportamiento de una compuerta and, esto se
muestra con mayor detalle en la imagen 13.

Imagen 13.
En la imagen se muestra el resultado del cdigo
ingresado, que corresponde a una compuerta AND.
Explicacin del cdigo.

Lneas 1, 7, 12: El compilador ignora todo


lo que sigue despus de dos guiones
medios--, pues lo que sigue son
comentarios. Es una muy buena prctica de
programacin comentar siempre los
cdigos, para que otros los puedan
entender.
Lneas 2 y 6: En primer lugar, sea el tipo de
descripcin que sea, hay que definir el
smbolo o entidad del circuito. En efecto, lo
primero es definir las entradas y salidas del
circuito, es decir, la caja negra que lo

Introduccin a Lenguajes HDL

define. Se le llama entidad y se declara con


la
palabra
clave
ENTITY
nombre_asignado. Se finaliza este bloque
con
la
palabra
clave
END
nombre_asignado.
Lnea 3: En esta se define el puerto
PORT() que son las entradas y salidas
que tendr, en este caso dos entradas a y b,
y una salida y.
Lneas 4 y 5: El lenguaje VHDL tiene
varios tipos de variables un tipo es BIT,
estas lneas declaran a las variables a y
b como entradas tipo BIT IN/OUT BIT
y y como salida del mismo tipo.
Lneas 8 y 11: Se declara la arquitectura
designndole un nombre como sigue,
ARCHITECTURE nombre_arch, luego
le sigue la palabra clave OF
nombre_asignado (nombre_asignado es el
nombre que se le dio a la entidad). Esto
quiere decir que la arquitectura pertenece a
la entidad dada. Se finaliza la arquitectura
con la palabra clave END nombre_arch
Lnea 9 y 10: Despus de la lnea 9
BEGIN y antes de la 11 END se
declaran las operaciones a realizar, estas
operaciones se ejecutan de manera
concurrente, esto quiere decir que no
importa el orden en que se coloquen las
instrucciones, en este caso solo hay una
y <= a AND b, la entrada a y b se
operan con la instruccin AND, el
resultado se le asigna a la salida y, con el
operador <=. Tambin se puede ingresar
en esta lnea procesos secuenciales, es decir
operaciones que se ejecutan una despus de
la otra con la palabra clave PROCESS.
Nota: las palabras clave se han escrito con
maysculas para diferenciarlas, pero esto
no es una regla.

Universidad de El Salvador
Sistemas Digitales I
END COMPONENT comp_and;

En Linux: Una vez instalados los dos programas


mencionados anteriormente, la creacin de
programas VHDL se resume a trabajar en el editor
de texto de su preferencia. Para ejemplificar esto a
continuacin se muestra el mismo programa creado
para Windows con el cual se ejemplificar el
mtodo para comprobar, compilar, ejecutar y
simular los resultados utilizando un editor de texto
y principalmente la consola de Linux, as como
tambin el GTKWave para ver resultados. Se
comenzar escribiendo el cdigo:
ENTITY comp_and IS
PORT(
a,b :IN BIT;
y :OUT BIT);
END comp_and;
ARCHITECTURE arch_and OF comp_and IS
BEGIN
y <= a AND b;
END arch_and;

Luego se guarda con el nombre de comp_and.vhd.


El cdigo es exactamente igual al que se utiliz en
Windows por lo tanto la explicacin es la misma
expuesta en la seccin anterior.
A continuacin se escribir el testbench, el cual es
un archivo que funciona como generador de
estmulos, es decir, en l se definirn las seales de
entrada necesarias para conseguir la tabla de
verdad del circuito y saber si ste funciona
correctamente. El cdigo es el siguiente:
ENTITY tb_comp_and IS
END tb_comp_and;
ARCHITECTURE arch_and OF tb_comp_and IS
COMPONENT comp_and IS
PORT(
a,b :IN BIT;
y :OUT BIT);

Introduccin a Lenguajes HDL

SIGNAL ent1:bit:='0';
SIGNAL ent2:bit:='0';
SIGNAL sal:bit;
BEGIN
ckt1:comp_and
PORT MAP
(
a => ent1,
b => ent2,
y => sal
);
PROCESS
BEGIN
WAIT FOR 20 ns;
ent1 <= '1';
WAIT FOR 20 ns;
ent1 <= '0';
ent2 <= '1';
WAIT FOR 20 ns;
ent1 <= '1';
WAIT FOR 20 ns;
ent1 <= '0';
ent2 <= '0';
END PROCESS;
END ARCHITECTURE arch_and;

Este cdigo ser guardado con el nombre de


tb_comp_and.vhd.
Explicacin del cdigo testbench.

Como se explic en el cdigo anterior la


palabra clave ENTITY define la caja negra que
contiene el circuito.
ARCHITECTURE define las acciones que
realizar el testbench.
COMPONENT relaciona el testbench con las
variables y las acciones del circuito en s, el
cual ha sido guardado con el nombre de
arch_and y como se puede observar dentro de
COMPONENT se definen nuevamente las

Universidad de El Salvador
Sistemas Digitales I

entradas y salidas del circuito utilizando la


funcin PORT.
SIGNAL se utiliza para definir las seales que
se utilizarn para estimular el circuito, tambin
se les da valores iniciales a las seales de
entrada, como se puede observar, en este caso
se le da valor inicial de 0 lgico a las seales de
entrada.
BEGIN es una palabra clave que se utiliza
dentro del bloque ARCHITECTURE para
indicar el inicio de la descripcin de la
arquitectura.
ckt1:comp_and define la iniciacin del
componente que relaciona el testbench con el
circuito creado.
PORT MAP define en bloque que une las
seales que se utilizarn durante la simulacin
a las variables de entrada y salida del circuito.
PROCESS contiene el bloque de sealizacin,
en este bloque como se puede ver se utilizan las
palabras clave WAIT FOR de modo que los
cambios de 0 a 1 lgico en las seales de
entrada nombradas ent1 y ent2 son controlados
definiendo el tiempo que debe esperar cada
variable antes de hacer el siguiente cambio.
Finalmente END PROCESS y END
ARCHITECTURE definen el final de los
bloques de proceso y arquitectura.

Imagen 14.
En la primera lnea por medio del comando ls se
puede ver que en la carpeta solo estn los dos
archivos creados, se procede a utilizar el siguiente
comando para realizar un anlisis en ambos los
cdigos:
ghdl a comp_and.hdl tb_comp_and.hdl

Si hay algn error, este ser mostrado luego de la


ejecucin de los comandos anteriores. Ahora se
utilizar el comando ls y se ver hay 3 archivos
ms.
Luego se crear el ejecutable con el siguiente
comando:
ghdl e tb_comp_and

Siguiendo la estructura bsica del ejemplo anterior


es posible definir y simular circuitos con muchas
entradas y salidas y con diferentes niveles de
complejidad.

Es importante notar que para crear el ejecutable se


utiliza solo el nombre de tb_comp_and sin su
extensin. Si utiliza una vez ms el comando ls
ver que se ha creado el archivo tb_div (letras
color verde). Para ejecutarlo se utilizar la
siguiente lnea de comando:

Luego de haber guardado ambos archivos en una


carpeta se puede proceder a su compilacin y
ejecucin en la consola, este proceso se muestra
paso a paso en la figura 14:

./tb_comp_and --vcd=tb_comp_and.vcd -stoptime=100ns

Como se puede observar al ejecutar el programa se


definen como parmetros el nombre del archivo en

Introduccin a Lenguajes HDL

Universidad de El Salvador
Sistemas Digitales I
el cual se guardarn los resultados de la ejecucin
del programa:
--vcd=tb_comp_and.vcd

As como tambin el tiempo de ejecucin, en este


caso es de 100ns:
-stop-time=100ns

Ntese la importancia de que el tiempo de


ejecucin sea suficiente para que todas las
combinaciones definidas en las seales de entrada
se ejecuten. Si se duplica el tiempo de ejecucin,
las indicaciones se repetirn una vez ms de modo
que si se ampla el tiempo de ejecucin de forma
considerada o se disminuye el tiempo que debe
durar cada cambio de variable se pueden obtener
seales peridicas.
Si se utiliza el comando ls se ver que un archivo
nuevo ha sido creado como resultado de la
ejecucin del programa. Para ver e interpretar estos
resultados se utilizar el gtkwave por medio del
siguiente comando:

Imagen 15.
Pueden compararse los resultados que se obtienen
con el software de Windows, que son
prcticamente los mismos. Cabe mencionar que
pueden utilizarse otros software a eleccin del
estudiante que trabajen con lenguajes VHDL. En la
gua se explica el uso de un programa para
Windows y uno para Linux (Ubuntu) para
facilidad. Se recomienda trabajar con los software
descritos en la gua.

gtkwave tb_comp_and.vcd

Y como resultado el gtkwave se abrir, se debern


seleccionar las entradas y salidas que se desean
ver. Es importante mencionar que para ver
correctamente los resultados es necesario utilizar
los botones de zoom in o zoom out. Se puede
apreciar el resultado en la figura 15:

Introduccin a Lenguajes HDL

Universidad de El Salvador
Sistemas Digitales I
ASIGNACIN
1. Realizar el cdigo VHDL para las
compuertas: AND, NAND, OR, NOR,
EXOR, EXNOR y NOT, simular en VHDL.
1.1 Explicar paso a paso como es el proceso de
instalacin del software VHDL usado.
1.2 Realizar el cdigo VHDL para el problema que
se le plantea: Un circuito lgico tiene cuatro
entradas A, B, C y D. Determine las ecuaciones
lgicas para el circuito, si la salida ser alta
solo cuando un nmero impar de entradas sean
altas. Trace un diagrama de circuito con las
compuertas que desee

1.3 Una alarma contra robos esa diseada de modo


que percibe cuatro lneas de seal de entrada.
La lnea A es del interruptor secreto de control,
la lnea B es del sensor de presin bajo una caja
fuerte en un gabinete cerrado, la lnea C es de
un reloj alimentado por bateras y la lnea D
est conectada a un interruptor en la puerta
cerrada del gabinete. Las siguientes
condiciones producen un voltaje de 1 lgico en
cada lnea.
A: El interruptor de control est cerrado.
B: La caja est en su posicin normal en el
gabinete.
C: El reloj marca entre las 1000 y las 1400
horas.
D: la puerta del gabinete est cerrada.
Escriba en cdigo VHDL la expresin que
active la alarma cuando la caja se mueve y el
interruptor de control est cerrado, o cuando el
gabinete se abre despus de las horas hbiles, o
el gabinete est abierto con el interruptor de
control abierto. Trace un Diagrama de circuito.

Introduccin a Lenguajes HDL

1.4 Circuito 3: Un automvil a prueba de


choques.
Descripcin: Se trata de un automvil con tres
sensores, uno al frente y dos a los costados. Al
arrancar, se dirige hacia adelante y si encuentra un
obstculo, gira a uno de los costados,
esquivndolo. La posicin de los sensores se
muestra en la siguiente figura.

Para girar a los lados, se hace que las llantas giren


en distintas direcciones, por ejemplo para girar a la
izquierda, las llantas X rotaran hacia atrs
mientras las llantas Y hacia adelante. Para hacer
que el par de llantas X giren hacia adelante se
deber poner en una variable de control llamada
X el bit 0, para que giren hacia atrs X=1, igual
para el par de llantas Y, con su respectiva
variable de control Y, la lgica de control de las
llantas es la siguiente.

Universidad de El Salvador
Sistemas Digitales I
X

Descripcin

Hacia adelante

Hacia la derecha

Hacia la izquierda

Hacia atrs

Si los tres sensores A, B y C estn en 1, es decir,


detecta obstculo en las tres direcciones, empezar
a retroceder. De lo contrario girar en la direccin
que est libre de obstculos. Si existe la posibilidad
de girar hacia la derecha o hacia la izquierda se
girar a la derecha.
1.3.1 Encontrar la tabla de verdad que representa la
lgica de control.
1.3.2. Implementar el circuito con cdigo VHDL.
1.3.3. Obtener graficas de simulacin, en las que se
muestren las entradas (A, B y C) y las salidas (X y
Y), con todas las posibilidades de entrada.

2.

Preguntas de Investigacin.

2.1 Uso y sintaxis de las instrucciones IF THEN.


2.2 Uso y sintaxis de la instrucciones CASE
WHEN.
2.3 Uso de las instrucciones anteriores para
implementar el cdigo VHDL directamente desde
las tablas de verdad.
2.4 Tipos de datos de entrada y salida que soporta
VHDL.
2.5 Cmo se crean arreglos en VHDL?
2.6 Cmo declarar un componente en VHDL?
Mostrar un ejemplo.
2.7 Cules son los operadores en VHDL?

Introduccin a Lenguajes HDL

3. Acerca de la tarea:
3.1 Un reporte impreso 70%
3.1.1 Contenido del reporte
Portada. 5%
Objetivos (General y especficos). 5%
Introduccin (mx. 1 pgina). 5%
Marco terico (mx. 5 pginas). 5%
Obtencin del software de simulacin VHDL
(direccin de descarga) y pasos de instalacin.
10%
Desarrollo de los circuitos:
o Descripcin de los pasos seguidos para
la solucin. 10%
o Cdigo VHDL. 10%
o Grficos obtenidos para cada circuito (3
a 5 imgenes por circuito). 10%
o Observaciones. 5 %
Respuesta a las preguntas de investigacin.
10%
Conclusiones (mx. 1 pgina). 20%
Bibliografa. 5%
3.2 Un CD 30%
3.2.1 Contenido del CD.
Software utilizado. 20%
Reporte en formato PDF y WORD. 15%
Cdigos utilizados (*.vhd) y todos los que
genera el proceso de compilacin y ejecucin.
40%
Imgenes de los resultados. 25%
NOTA: El reporte se entregara en un sobre manila
rotulado con los nombres y carnet, dentro deber ir
el CD rotulado de la misma forma y el nombre del
CD tendr los carnet. El contenido del CD deber
ir ordenado, con carpetas individuales para cada
tem
mencionado
ejemplo:
IMGENES,
CIRCUITO1, etc.

Universidad de El Salvador
Sistemas Digitales I

Fecha de entrega:
24 Marzo de 2015.
Hora mxima 10:00 am, despus de las 10 se
calificar en base 9, despus de ese da la base de
calificacin bajar 2 puntos por da de atraso.

Bibliografa:
VHDL Lenguaje para descripcin y
modelado de circuitos, Fernando Pardo
Carpio, Universidad de Valencia 1997.
DIGLENSY SAC Primera Empresa del
Per Dedicada al Desarrollo Electrnico,
tutorial VHDL, http://www.diglensy.com/
Simulando VHDL con herramientas GNU:
GHDL+GTKWAVE, Roberto Aragn.
http://www.iearobotics.com/personal/juan/p
ublicaciones/art6/html/ghdl.html

Anlisis y diseo de circuitos lgicos


digitales, Vctor Nelson, 1 Ed.

Introduccin a Lenguajes HDL

También podría gustarte