Está en la página 1de 10

Universidad de El Salvador

Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 1

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

Benjamn Robles Juan Albiana


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
existen muchos IDEs (Integrated Development
Environment o Ambiente de Trabajo Integrado) y
compiladores como lo son Max Plus de Altera (este
es el que se utilizar en la gua), Active HDL y
muchos otros, estos software son pagados y por
tanto se recomienda trabajar con software libre
para lo cual 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) (en este fue
basado VHDL) hasta lenguajes tan potentes en los
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.

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 puertas.
Circuitos descritos utilizando VHDL, siguiendo
unas guas para sntesis, pueden ser utilizados
por herramientas de sntesis para crear
implementaciones de diseos a nivel de puertas.
Al estar basado en un estndar (IEEE Std 1076-
1987) los ingenieros de toda la industria de
diseo pueden usar este lenguaje para minimizar
errores de comunicacin y problemas de
compatibilidad.
Universidad de El Salvador
Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 2
Modularidad: VHDL permite dividir o
descomponer un diseo hardware y su
descripcin VHDL en unidades ms pequeas.

Instalacin de las herramientas de
programacin y Simulacin VHDL:
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 dos archivos GHDL y
GTKWave, hay diferentes versiones para cada
sistema operativo, se utilizar 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
Que instalar 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: 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.

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.
Universidad de El Salvador
Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 3
5.0. Escriba el siguiente cdigo en el editor y
gurdelo.


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 4.

Imagen 5.


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.
Universidad de El Salvador
Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 4

Imagen 7

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.


Imagen 8.

10.0. Agregue las seales como se muestra en la
imagen 9, presionando List y la flecha que
indica hacia la derecha.

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
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
windows, con eso ya est configurada la
ventana.


Imagen 10.

Imagen 11.

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.
Universidad de El Salvador
Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 5

Imagen 12.

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.

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.












Explicacin del cdigo.

Lneas 1, 7, 12: El compilador ignora todo
lo que sigue despus de dos guiones -- se
le conoce como comentario, es muy buena
prctica comentar los cdigo, para que
otros lo 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
define. Se le llama entidad 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
Universidad de El Salvador
Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 6
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: 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, sea 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.

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 en el cual funciona como generador de
estmulos, es decir, en el 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);
END COMPONENT comp_and;

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;
Universidad de El Salvador
Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 7
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
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.
Siguiendo la estructura bsica del ejemplo anterior
es posible definir y simular circuitos con muchas
entradas y salidas y con diferentes niveles de
complejidad.

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:


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
Universidad de El Salvador
Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 8
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

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:

./tb_comp_and --vcd=tb_comp_and.vcd -stop-
time=100ns

Como se puede observar al ejecutar el programa se
definen como parmetros el nombre del archivo en
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:

gtkwave tb_comp_and.vcd

Y como resultado el gtkwave se abrir, se debern
seleccionar las entradas y salidas que se desean ver
y, 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:


















Universidad de El Salvador
Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 9
ASIGNACIN

1. Realizar el cdigo VHDL para las
compuertas: AND, NAND, OR, NOR,
EXOR, EXNOR y NOT, simular en TINA y
VHDL.

1.1 Explicar paso a paso como es el proceso de
instalacin de VHDL
1.2 Realizar el cdigo VHDL para el ejemplo 2.35
del libro.
1.2 Realizar el cdigo VHDL para el problema
2.35 del final del captulo.

1.3 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, al encontrar un
obstculo gira, a uno de los costados, esquivando el
obstculo. 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.

X Y Descripcin
0 0 Hacia adelante
0 1 Hacia la derecha
1 0 Hacia la izquierda
1 1 Hacia atrs

Si los tres sensores A, B y C estn en 1, es decir,
detecta obstculo en las tres direcciones, empezara
a retroceder, de lo contrario girara 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.
Universidad de El Salvador
Sistemas Digitales I

Introduccin a Lenguajes HDL Ing. Salvador German Pgina 10
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?

3. Acerca de la tarea:
3.1 Un reporte impreso
3.1.1 Contenido del reporte
Portada
Objetivos
Introduccin
Marco terico
Obtencin del software de simulacin VHDL
Direccin de descarga
Pasos para la instalacin
Desarrollo de los circuitos
Descripcin de los pasos seguidos para la
solucin
Cdigo VHDL
Grficos obtenidos para cada circuito
Observaciones
Conclusiones
Respuesta a las preguntas e investigacin.
Bibliografa

3.2 Un CD
3.2.1 Contenido del CD.
Software utilizado
Reporte en formato PDF y WORD
Cdigos utilizados (*.vhd) y todos los que
genera el proceso de compilacin y ejecucin.
Imgenes de los resultados.

NOTA: El contenido del CD deber ir ordenado,
con carpetas individuales para cada tem
mencionado ejemplo: IMGENES, CIRCUITO1,
etc.

Fecha de entrega:
Martes 25 de Marzo de 2014.
Hora mxima 10:00 am, despus de las 10 se
calificar en base 9, despus del martes 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

También podría gustarte