You are on page 1of 41

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERA Y ARQUITECTURA


ESCUELA DE INGENIERA ELCTRICA
SISTEMAS DIGITALES I
CICLO I 2015

Primer tarea ex - aula


Introduccin a los lenguajes HDL

Integrantes
Carn

Nombre

RU12002

Ramos Umaa, Javier


Omar

HP08005

Hernndez Prez, Luis


Ernesto

GT/GD
01/02
02/02

Profesor:
Br. Francisco Cruz Jurez
Coordinador Catedra:
Ing. Salvador German

Ciudad Universitaria, martes 24 de marzo de 2015

ndice
INTRODUCCIN
OBJETIVOS..................................................................................................1
OBJETIVO GENERAL:......................................................................................................... 1
OBJETIVOS ESPECFICOS:................................................................................................... 1
1.

MARCO TERICO...................................................................................2
1.1
1.2
1.3
1.4
1.5
1.6

2.

LGEBRA DE BOOLE Y COMPUERTAS BSICAS..............................................................2


HDL................................................................................................................... 4
VHDL................................................................................................................. 5
GHDL................................................................................................................. 6
SUMA DE PRODUCTOS (SOP)...................................................................................6
PROCEDIMIENTO COMPLETO DE DISEO......................................................................6

OBTENCIN DEL SOFTWARE DE SIMULACIN VHDL.................................7


2.1 INSTALACIN GHDL................................................................................................... 7
2.2 INSTALACIN GTKWAVE.............................................................................................. 7
2.3 INSTALACIN GEANY................................................................................................... 7

3.

DESARROLLO DE LOS CIRCUITOS............................................................8


3.1
3.2
3.3
3.4

4.

DESARROLLO DE CDIGO VHDL PARA LAS COMPUERTAS BSICAS........................................8


EJERCICIO 1.2......................................................................................................... 12
EJERCICIO 1.3......................................................................................................... 15
EJERCICIO 1.4 UN AUTOMVIL A PRUEBA DE CHOQUES.................................................19

PREGUNTAS DE INVESTIGACIN...........................................................22
4.1 USO
4.2 USO
4.3 USO

IF THEN.............................................................22
Y SINTAXIS DE INSTRUCCIONES CASE WHEN......................................................22
DE LAS INSTRUCCIONES ANTERIORES PARA IMPLEMENTAR EL CDIGO VHDL DIRECTAMENTE
DESDE TABLAS DE VERDAD............................................................................................... 23
4.4 TIPOS DE DATOS DE ENTRADA Y SALIDA QUE SOPORTA VHDL............................................24
Y SINTAXIS DE INSTRUCCIONES

4.5 CMO SE CREAN ARREGLOS EN VHDL?......................................................................26


4.6 CMO DECLARAR UN COMPONENTE EN VHDL?............................................................27
4.7 CULES SON LOS OPERADORES EN VHDL?..................................................................28
5.

CONCLUSIONES...................................................................................29

6.

BIBLIOGRAFA.....................................................................................30

Introduccin
El presente trabajo titulado introduccin a los lenguajes HDL, que
puede ser definido como Lenguaje de descripcin de Hardware, contiene
una serie de prcticas para el desarrollo de circuitos en los cuales se
aplican distintos teoremas de algebra booleana, fue realizado con el
objetivo de obtener una pequea demostracin, acerca de las ventajas
que conlleva el uso de lenguaje VHDL, para la implementacin de
circuitos digitales.
El lgebra booleana es la teora matemtica que se aplica en la lgica
combinatoria. Las variables booleanas son smbolos utilizados para
representar magnitudes lgicas y pueden tener slo dos valores
posibles: 1 (valor alto) o 0 (valor bajo).
Este trabajo es de mucho inters dado el hecho que el lenguaje VHDL
est definido por el IEEE y es muy usado debido a sus ventajas, ya que
mediante l se puede describir la forma de comportarse de un circuito
electrnico, tomando en cuenta que la forma de comportarse es
independiente del hardware donde se implementar.
La realizacin de dicho trabajo fue hecha bajo el entorno de GNU/Linux
debido a sus casi nulas complicaciones, especficamente se utiliz el
sistema operativo Fedora 21, adems se utilizaron herramientas como
GHDL, GTKWave y Geany para la correcta implementacin y simulacin
de los circuitos.
El trabajo ahora expuesto consta de un marco terico donde se da una
descripcin corta y detallada sobre aspectos importantes del lenguaje
HDL y VHDL, adems encontramos el desarrollo completo de los
circuitos propuestos, y la sintaxis de ciertas sentencias o instrucciones
bsicas en el lenguaje antes mencionado.

Finalmente esperamos que este material sea del agrado del coordinador
y los lectores en general.

Objetivos
Objetivo General:

Desarrollar una investigacin introductoria acerca de los lenguajes


HDL, realizando primeramente un anlisis lgico de las situaciones
planteadas, para as poder realizar la programacin de circuitos
digitales junto con sus simulaciones, mediante la implementacin
especifica del lenguaje VHDL y sus herramientas necesarias para
GNU/Linux.

Objetivos Especficos:

Explicar la importancia y ventajas del desarrollo de circuitos


implementando lenguajes HDL especficamente con el lenguaje

VHDL.
Analizar los ejercicios propuestos, para obtener sus tablas de

verdad y ecuaciones lgicas por medio del lgebra de Boole.


Conocer los pasos necesarios para el diseo de circuitos lgicos

digitales y su posterior implementacin en lenguaje VHDL.


Describir por medio de ejemplos el uso de instrucciones bsicas

del lenguaje VHDL.


Detallar las grficas de simulacin obtenidas en la realizacin de

los circuitos con sus respectivas entradas y salidas.


Establecer las herramientas necesarias para la implementacin de
los circuitos lgicos digitales en GNU/Linux.

1. Marco Terico
1.1 lgebra de Boole y Compuertas Bsicas
El lgebra booleana es la teora matemtica que se aplica en la lgica
combinatoria. Las variables booleanas son smbolos utilizados para representar
magnitudes lgicas y pueden tener slo dos valores posibles: 1 (valor alto) o 0
(valor bajo). Una compuerta es un circuito til para realizar las operaciones
relacionadas con el lgebra de Boole.
1.1.1 Teoremas del lgebra de Boole
Para el diseo de circuitos es necesario realizar simplificacin de las ecuaciones
encontradas utilizando los teoremas del algebra de Boole. A continuacin se
presentan los siguientes teoremas tiles
Teorema 1: A + A = A

Teorema 10: A (A + B) = A

Teorema 2: A A = A

Teorema 11: A + AB = A + B

Teorema 3: A + 0 = A

Teorema 12: A (A + B) =
AB

Teorema 4: A 1 = A
Teorema 13: AB + AB = A
Teorema 5: A 0 = 0
Teorema 14: (A + B) (A +
Teorema 6: A + 1 = 1

B) = A

Teorema 7: (A + B) = A B

Teorema 15: A + A = 1

Teorema 8: (A B) = A + B

Teorema 16: A A = 0

Teorema 9: A + A B = A

1.1.2 Teorema de los productos opcionales (o teorema del consenso)

Es de gran utilidad en la simplificacin de una expresin booleana. La clave


para usar este teorema es encontrar dos trminos que contengan una
expresin en uno afirmada y en otro negada, anotar los trminos con los que
estn multiplicando uno y otro y buscar otro elemento que sea la multiplicacin
de estos ltimos dos, ste ltimo elemento es

el que se puede eliminar o

agregar a la ecuacin para buscar reducirla ms. Eje: X=A+AB, se agrega el


termino de consenso u opcional X= A+AB+B y al simplificar queda X=A+B.

1.1.3 Inversin o negacin (complemento)


Esta operacin se indica con una barra sobre la variable o por medio de un
apstrofe en el lado superior derecho de la variable. Este es un operador
algebraico que invierte el valor de una variable, Ejemplo: S X = 0 entonces X
= S = 1.
El smbolo lgico de la negacin
booleana se representa en la figura
1, junto con su tabla de verdad.
Figura
1.1.4 Suma
La representacin matemtica de una suma booleana de dos variables se hace
por medio un signo ms entre las dos variables. La suma booleana es 1 si
alguna de las variables lgicas de la suma es 1 y es 0 cuando todas las
variables son 0. Esta operacin se asimila a la conexin paralela de contactos.
La suma booleana difiere de la suma binaria cuando se suman dos unos. En la
suma booleana no existe acarreo.
En circuitos digitales, el equivalente
de la suma booleana es la operacin
OR

su

smbolo

lgico

se

representa en la figura 2 y tiene la

Figura 2

ecuacin lgica S=A+Y:

El inversor de la funcin OR es la
funcin NOR, su smbolo lgico se
representa en la figura 3, Con la
correspondiente ecuacin

S=

Figura

(A+Y)
1.1.5 Multiplicacin
La representacin matemtica de una multiplicacin booleana de dos variables
se hace por medio un signo punto () entre las dos variables. La multiplicacin
booleana es 1 si todas las variables lgicas son 1, pero si alguna es 0, el
resultado es 0. La multiplicacin booleana se asimila a la conexin serie de
contactos.
En circuitos digitales, el equivalente

El inverso de la funcin AND es la

de la multiplicacin booleana es la

funcin NAND, su smbolo lgico se

operacin AND y su smbolo se

representa en la figura 5 y posee la

representa en la figura 4, con la

ecuacin S=(XY):

correspondiente ecuacin S= XY:

Figura 5
Figura 4
1.1.6 Compuerta XNOR y XOR
La compuerta XOR u OR exclusiva
realiza

una

comparacin

de

las

entradas siendo el resultado 0 si las


entradas son iguales o 1 cuando son

Figura 6

diferentes, su ecuacin lgica es S=

La compuerta XNOR es la inversa de

(X.Y) + (X.Y) y por facilidad su

la compuerta XOR, siendo 0 cuando

representacin es como la figura 6:

una de sus entradas es baja y la


otra alta y 1 cuando sus entradas

ambas son altas o ambas bajas; su


ecuacin lgica es S= (X.Y) +
(X.Y), se representa en la figura 7:

Figura 7

1.2 HDL
El lenguaje HDL (Hardware Description Language) es un lenguaje de
programacin que se utiliza para definir la estructura, diseo y operacin de
circuitos electrnicos, que comnmente son digitales.
Los lenguajes de descripcin de hardware son muy parecidos a otros lenguajes
de programacin de ordenadores (C, Java, etc.) pero quiz una diferencia muy
importante entre estos, es que HDL incluye de forma explcita la nocin del
tiempo, adems una ventaja muy importante de HDL es que es un lenguaje
independiente de la tecnologa.
As, los HDL pueden ser usados para escribir especificaciones "ejecutables" de
hardware. Es decir, un programa escrito en HDL hace posible que el diseador
de hardware pueda modelar y simular un componente electrnico antes de que
este sea construido fsicamente.
Es esta posibilidad de "ejecucin" de componentes lo que hace que a veces los
HDL se vean como lenguajes de programacin convencionales, cuando en
realidad se debera clasificarlos ms precisamente como lenguajes de
modelado.

1.3 VHDL
Es un lenguaje definido por el IEEE (Institute of Electrical and Electronics
Engineers) bajo el estndar 1076-1993 que es utilizado para describir circuitos
digitales. VHDL significa VHSIC (Hardware Description Language) y a su vez
VHSIC (Very High Speed Integrated Circuit).
Las ventajas pueden ser muchas pero las ms principales son:
Disponibilidad pblica y reutilizacin.
Independencia de dispositivos y fabricantes.
Diseo Jerrquico.
5

Los sistemas de prueba (test) pueden escribirse en el mismo lenguaje y


usarse para comprobar los modelos.
El cdigo VHDL generalmente se

extensin .vhd, su estructura


tpica
Llamada
a las libreras
encuentra en los ficheros con
es:
Entidad
Arquitecturas
Una entidad es el bloque bsico del diseo, su declaracin contiene los
parmetros genricos de esa entidad y la descripcin de la interfaz. La
arquitectura define el comportamiento de dicha entidad, cabe mencionar que
una entidad puede tener varias arquitecturas asociadas, que describen el
comportamiento de la entidad de diferentes formas.
Como se ha dicho antes, VHDL sirve para describir un circuito electrnico, pero
el mismo circuito puede ser descrito de varias formas. Las formas de hacerlo
son: Descripcin de comportamiento, Descripcin de flujo de datos (RTL
Registred Transfer Level) y Descripcin estructurada.
En VHDL se pueden diferenciar bsicamente dos tipos de datos: escalares y
compuestos. Los escalares son tipos simples que contienen algn tipo de
magnitud como los enumerados, enteros, fsicos y de coma flotante; los
compuestos son los ya conocidos como vector/matriz y de registro. Adems a
veces se mencionan los tipos de datos de acceso que son los que se basan en
punteros.
Existen diferentes alternativas al VHDL como: AHDL, ABEL, Verilog, etc. As
como existen muchas herramientas para trabajar como: Warp, Altera, Xilinx,
ActiveVHDL, GHDL, Quartus II, etc.

1.4 GHDL
GHDL es un acrnimo que sirve para identificar al compilador G Hardware
Design Language, tambin es un simulador de cdigo abierto para Linux,
Windows y Apple OS X con licencia GPL que puede compilar y simular ficheros
en VHDL, adems es un compilador basado en la tecnologa de GCC y que
genera ejecutables. Para visualizar los resultados se puede hacer el uso de
GTKWave, aunque hay diferente programas con el mismo fin. GHDL en
6

GNU/Linux se trabaja a base de consola y deben escribirse los ficheros de


diseo y los bancos de prueba para ser visualizado el circuito.

1.5 Suma de productos (SOP)


Se realiza tomando las salidas en una tabla de verdad que son 1 y se expresa
la ecuacin como suma de trminos producto, en los que las variables que son
1 se expresan literales (sin negar) y las variables que son 0, se expresan
negadas. Ver ejercicios propuestos

1.6 Procedimiento completo de diseo


Cualquier problema lgico puede resolverse mediante el uso del siguiente
procedimiento:
1. Interprete el problema y establezca una tabla de verdad para describir
su operacin.
2. Escriba la expresin como suma de productos (SOP) para la salida.
3. Simplifique la expresin de salida, si es posible.
4. Implemente el circuito para la expresin final simplificada.

2. Obtencin del software de simulacin VHDL


Para el desarrollo del siguiente trabajo se opt por trabajar bajo la plataforma
del sistema operativo Fedora 21, adems se utilizaron las herramientas de
GHDL, Geany y GTKWave, a continuacin se enlistan los pasos para su
instalacin:
Nota: antes de proceder se recomienda realizar una actualizacin total del
sistema con el siguiente comando: yum y update, para no tener problemas
con repositorios o similares.

2.1 Instalacin GHDL


El compilador de GHDL puede descargarse desde la siguiente direccin
http://ghdl.free.fr/ en su versin para los diferentes sistemas operativos. En
Fedora 21 se utilizaron los siguientes pasos:

1. Abrir la terminal de Fedora 21


2. Log como sper usuario, utilizando el comando su, escribir la contrasea
al momento de ser solicitada
3. Descargar el compilador utilizando los comandos: yum install ghdl
4. Confirmar la descarga con la tecla y y listo.

2.2 Instalacin GTKWave


Existen diferentes formas desde su pgina principal
http://gtkwave.sourceforge.net/ pero en nuestro caso se utilizaron los
siguientes pasos:
1. Abrir la terminal de Fedora 21
2. Log como sper usuario, utilizando el comando su, escribir la contrasea
al momento de ser solicitada
3. Descargar el simulador utilizando los comandos: yum install gtkwave
4. Confirmar la descarga con la tecla y y listo.

2.3 Instalacin Geany


Es un editor de texto pequeo y ligero basado en Scintilla es distribuido como
software libre bajo la Licencia Pblica General de GNU. Aunque se opt trabajar
bajo consola se puede descargar de: http://www.geany.org/Main/HomePage
1. Abrir la terminal de Fedora 21
2. Log como sper usuario, utilizando el comando su, escribir la contrasea
al momento de ser solicitada
3. Descargar el simulador utilizando los comandos: yum install geany
4. Confirmar la descarga con la tecla y y listo.

3. Desarrollo de los circuitos


3.1 Desarrollo de cdigo VHDL para las compuertas bsicas
3.1.1 AND
--Entidad

--Arquitectura

entity comp_and is
port (
a, b: in bit;
x: out bit
);
end comp_and;

architecture arch_and of comp_and


is
begin
x<=a and b;
end arch_and;

3.1.2 OR
--Entidad

--Arquitectura

entity comp_or is
port(
a,b:in bit;
x:out bit
);
end comp_or;

architecture arch_or of comp_or is


begin
x<=a or b;
end arch_or;

3.1.3 NOT o Inversor

--Entidad

--Arquitectura

entity comp_not is
port (
a : in bit;
x : out bit
);
end comp_not;

architecture arch_not of comp_not is


begin
x <= not a;
end arch_not;

3.1.4 NAND
--Entidad

--Arquitectura

entity comp_nand is
port(
a,b:in bit;
x:out bit
);
end comp_nand;

architecture arch_nand of
comp_nand is
begin
x<=not(a and b);
end arch_nand;

10

3.1.5 NOR
--Entidad

--Arquitectura

entity comp_nor is
port(
a,b:in bit;
x:out bit
);
end comp_nor;

architecture arch_nor of comp_nor is


begin
x<=not(a or b);
end arch_nor;

11

3.1.6 EXOR
--Entidad

--Arquitectura

entity comp_exor is
port(
a,b:in bit;
x:out bit
);
end comp_exor;

architecture arch_exor of comp_exor


is
begin
x<=(((not a) and b) or (a and
(not b)));
end arch_exor;

3.1.7 EXNOR
--Entidad
entity comp_exnor is
port(
a,b:in bit;
x:out bit
);
end comp_exnor;
--Arquitectura

architecture arch_exnor of
comp_exnor is
begin
x<=(((not a) and (not b)) or
(a and b));
end arch_exnor;

12

3.2 Ejercicio 1.2


Realizar el cdigo VHDL para el problema que se le plantea: Un circuito lgico
tiene cuatro entradas A, B, C y D. la salida ser alta cuando un nmero impar
de entradas sean altas.

Tabla de verdad:
m

T
0
1
2
3
4
5
6
7
m

0
0
0
0
0
0
0
0
A

0
0
0
0
1
1
1
1
B

0
0
1
1
0
0
1
1
C

0
1
0
1
0
1
0
1
D

0
1
1
0
1
0
0
1
X

T
8
9
10
11
12
13
14
15

1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

1
0
0
1
0
1
1
0

Ecuacin lgica:

13

'

'

'

'

'

'

'

'

'

'

'

'

'

'

'

X =A B C D+ A B C D + A B C D + A BCD+ A B C D + A B CD+ AB C D+ ABCD '

Visualizacin del circuito:

Codificacin VHDL

--Entidad
entity impares is
port(
a,b,c,d: in bit;
x: out bit
);
end impares;
--Arquitectura
architecture arch_i of impares is
begin
x<= (((not a) and (not b) and (not c) and d) or ((not a) and (not b) and c
and (not d))
or ((not a) and b and (not c) and (not d)) or ((not a) and b and c and d)
or (a and (not b) and (not c) and (not d)) or (a and (not b) and c and d)
or (a and b and (not c) and d) or (a and b and c and (not d)));
end arch_i;

Visualizaciones:
14

15

Observaciones: La ecuacin lgica obtenida no pudo ser simplificada.


Variable X=1 significa seal alta, mT=min termino; en simulacin e1=a,
e2=b, e3=c e4=d s=x.

3.3 Ejercicio 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.
16

Tabla de verdad
m

T
0
1
2
3
4
5
6
7

0
0
0
0
0
0
0
0

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

1
0
1
0
1
0
1
0

T
8
9
10
11
12
13
14
15

1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

1
1
1
1
1
0
0
0

Ecuacin lgica:

X =A ' B' C ' D' + A' B' C D' + A ' B C' D' + A' BC D' + A B' C ' D' + A B' C' D+ A B' C D' + A B' CD+ ABC ' D'
X =B' C' D' ( A' + A ) + A ' C D' ( B+ B' ) + A B' C ( D' + D )+ B C ' D' ( A ' + A ) + A B ' C' D
'

'

'

'

'

'

'

'

'

'

X =B C D + A C D + A B C+ B C D + A B C D
X =C' D ' ( B' + B ) + A B' ( C+C ' D+ D ) + A ' C D'
X =C' D ' + A B' ( C+ D ( C ' +1 ) ) + A ' C D'
X =C' D ' + A B' C + A B ' D+ A' C D' + A ' D '
X =C' D ' + A B' C + A B ' D+ A' D' ( C+1 ) + A B' D'

17

X =C' D ' + A' D' + A B' C + A B' ( D+ D ' )


X =C' D ' + A' D ' + A B' (C +1 )

Visualizacin del circuito:

Codificacin VHDL:

'

X =C' D ' + A' D' + A B' C + A B'


'

'

'

X =C D + A D + A B

'

--Entidad
entity alarma is
port(
a,b,c,d: in bit;
x: out bit
);
end alarma;
--Arquitectura
architecture arch_a of alarma is
begin
x<=(a and (not b)) or ((not a) and (not d)) or ((not d) and (not c));
end arch_a;

Visualizaciones:

18

19

Observaciones: Se hizo uso del producto opcional para reducir la


ecuacin (trminos en color azul); mT=min termino; X=1 la alarma se
activa, en simulacin e1=a, e2=b, e3=c e4=d s=x

3.4 Ejercicio 1.4 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.

20

La lgica de control de las llantas es


la sgt:
X
0
0

Y
0
1

Descripcin
Hacia adelante
Hacia la
derecha
Hacia la
izquierda
Hacia atrs

Si existe la posibilidad de girar hacia


la derecha o hacia la izquierda se
girar a la derecha.

Tabla de verdad:

m A

Ecuacin lgica:
'

'

'

X =A B C + A BC + ABC
X =A ' B' C +BC ( A ' + A )
'

'

'

X =BC + A B C + A C
X =BC + A ' C ( B' +1 )
X =BC + A ' C

Y = A ' BC + AB C ' + ABC + A B' C '


Y = A C ' ( B+ B' ) + A ' B C' + ABC
Y = A C ' + ABC + A' B C ' + AB
Y = A C ' + AB ( C+1 ) + A' B C '
Y = A C ' + AB+ A' B C ' + B C'
Y = A C ' + AB+ BC ' ( A ' +1 )
Y = A C ' + AB+ BC '
21

Visualizacin del circuito:

Codificacin VHDL:

--Entidad

Visualizaciones:

entity auto is
port(
a,b,c: in bit;
x,y: out bit
);
end auto;
--Arquitectura
architecture arch_a of auto is
begin
x<= (b and c) or ((not a) and c);
y<= (b and (not c)) or (a and b) or (a and (not c));
end arch_a;

22

23

Observaciones: en simulacin e1=a, e2=b, e3=c, s=x, s1=y

24

4. Preguntas de investigacin

4.1 Uso y sintaxis de instrucciones IF THEN

Permite la ejecucin de un bloque de cdigo dependiendo de una o


varias condiciones. De manera general la sentencia en VHDL es:
IF <condicin1> THEN
[sentencias]
END IF;

Esta instruccin es ms

Un ejemplo del uso de la

completa cuando se le agrega

instruccin mencionada es:

al cdigo las instrucciones de


ELSE por ejemplo:

IF <condicin1> THEN
[sentencias 1]
ELSIF <condicin2>
THEN
[sentencias 2]
ELSE
[sentencias N]
END IF;

IF (reloj='1' AND enable='1')


THEN
salida<=entrada;
ELSIF (enable='1') THEN
salida<=tmp;
ELSE
salida<='0';
END IF;

4.2 Uso y sintaxis de instrucciones CASE WHEN

Permite la ejecucin de un bloque de cdigo condicionalmente, pero en


esta ocasin se evala una expresin en vez de una condicin. Se debe
recordar que se deben tener en cuenta todos los casos, es decir, incluir
como ltima opcin la sentencia WHEN OTHERS. La sintaxis general de
la

CASE <expresin> IS

instruccin

es:

WHEN <valor1> =>


[sentencias1]
25

WHEN <valor2> =>


[sentencias2]
WHEN <rango de valores>
=> [sentenciasN]
WHEN OTHERS =>
[sentenciasM]
END CASE;

CASE a IS
WHEN 0
=> B:=0;
WHEN 1 to 50 =>
B:=1;
WHEN 99 to 51 =>
B:=2;
WHEN OTHERS =>
B:=3;
END CASE;

Un ejemplo es el siguiente:

4.3 Uso de las instrucciones anteriores para


implementar el cdigo VHDL directamente desde
tablas de verdad.

4.3.1 CASE y WHEN

Aplicamos segn la combinacin de las variables de entrada, si la salida


tendr valor de 1 o 0.Aqui vemos un ejemplo, declaramos un vector
llamado bits_ent de 3 posiciones, luego concatenamos las 3 variables de
entrada (a, b, c), y luego usando la estructura CASE creamos nuestra
tabla de verdad de la variable de salida Y.

26

4.3.2 IF y THEN

Se realiza un procedimiento basado en condiciones y sus operadores


lgicos, queda mejor explicado con el ejemplo sencillo de la compuerta
AND, programada desde su tabla de verdad:

El resultado solo ser 1


cuando ambos valores de
entrada sean 1, de lo
contrario siempre ser 0

27

28

4.4 Tipos de datos de entrada y salida que soporta


VHDL

Como en cualquier lenguaje de programacin existen varios tipos de


datos, en VHDL se pueden diferenciar dos: escalares y compuestos.

4.4.1Tipos escalares

Son tipos simples que contienen algn tipo de magnitud. Entre los que
se tienen:

Enteros: Son datos con un valor numrico entero. La forma de definirlos


es con la palabra RANGE. Realmente se dice que un nmero est en un
lmite establecido.

Fsicos: Se trata de datos que corresponden con magnitudes fsicas, que


tienen un valor y unas unidades.

Reales o coma flotante: Se definen igual que los enteros con la diferencia
que los lmites son nmeros reales.

Enumerados: Son datos que puede tomar siempre que se encuentre en


una lista o conjunto finito

Escalares
Enteros

Ejemplo de declaracin
TYPE byte IS RANGE 0 TO 255;

Fsicos

TYPE longitud IS RANGE 0 TO 1.0e9


UNITS
um;
mm=1000 um;
m=1000 mm;
in=25.4 mm;
END UNITS;

Reales o coma
flotante

TYPE nivel IS RANGE 0.0 TO 5.0

Enumerados

TYPE color IS (ROJO, VERDE, AMARILLO);

4.4.2 Tipos Compuestos

Son tipos de datos compuestos por los que se han visto anteriormente.
Entre ellos se encuentran:

Compu
estos
Matrice
s

Ejemplo de declaracin

TYPE word IS ARRAY (31 DOWNTO 0) OF bit;


TYPE tabla IS ARRAY (1 TO 4, 1 TO 4) OF real;

Registr
os

TYPE trabajador IS
RECORD
nombre : string;
edad : integer;
END RECORD;

4.4.3 Subtipos de datos

En VHDL se pueden definir subtipos, los cuales corresponden a tipos ya


existentes. Se pueden diferenciar dos tipos dependiendo de las
restricciones que se apliquen.

Subtipo
Restricciones
de un tipo
escalar a un
rango

Ejemplos de subtipos
SUBTYPE indice IS integer RANGE 0 TO 7;
SUBTYPE digitos IS character RANGE '0' TO '9';

Restricciones
del rango de
una matriz

SUBTYPE id IS string(0 TO 15);


SUBTYPE dir IS bit_vector(31 DOWNTO 0);

4.5 Cmo se crean arreglos en VHDL?

Los arreglos son una coleccin de elementos del mismo tipo y pueden
ser: De una dimensin (1D), de 1x1 dimensin (1Dx1D), de dos
dimensiones (2D) o arreglo de escalares, de dimensiones mayores, pero
generalmente no son sintetizables. La sintaxis para especificar nuevo
tipo de arreglo es:

TYPE nombre_tipo IS ARRAY (especificacion) OF data_type;

4.6 Cmo declarar un componente en VHDL?

En VHDL es posible declarar componentes dentro de un diseo mediante


la palabra COMPONENT. Un componente se corresponde con una entidad
que ha sido declarada en otro mdulo del diseo, o incluso en alguna
biblioteca, la declaracin de este elemento se realizar en la parte
declarativa de la arquitectura del mdulo que se est desarrollando. La
sintaxis general de la instruccin es:

COMPONENT nombre [IS]


[GENERIC(lista_parametros);]
[PORT(lista_de_puertos);]
END COMPONENT nombre;

Un ejemplo es el siguiente:

COMPONENT mux IS
GENERIC(
C_AWIDTH : integer;
C_DWIDTH : integer
);
PORT(
control : IN bit;
entrada1 : IN bit;
entrada2 : IN bit;
salida : OUT bit
);
END COMPONENT mux;

4.7 Cules son los operadores en VHDL?

En VHDL existen diferentes operadores entre los que tenemos:

Tipo de operador
Lgicos
Booleanos De
relacin
Concatenacin
Cadenas
Aritmticos

operadores
AND, OR, XOR, NOT, NAND, NOR, XNOR Bit
=, /=, <, >, >=, <= Integer, Bit y Bit_Vector

& Bit, Bit_Vector


+, -, *, /, Mod, Rem, Abs, ** Integer* Mod:
Modulo de la divisin. Rem: Resto de la
divisin Abs: valor absoluto y exponenciacin.

Los

operadores

lgicos,

pueden

ser

empleados

con

los

tipos

predefinidos, BIT y BOOLEAN, dndonos como resultado un valor


booleano del mismo tipo que los operadores.

Los operadores relacionales tambin nos generaran un resultado de tipo


booleano sin importar el tipo de operando con el que lo empleemos.

Los operadores de tipo aritmticos estn en la obligacin de ser


empleados con elementos del mismo tipo y de devolver un resultado que
a su vez este contenido en el mismo tipo que los operadores. EL signo
"+", "-" dar como resultado sumas de unidades es decir que al
elemento sumado le aade uno.

El operador concatenacin es empleado para concadenar arrays de bits

Hay que decir que no todos los operadores pueden funcionar sobre todos
los tipos de datos. Tambin hay operadores que en determinadas
circunstancias no pueden ser utilizados, por ejemplo al hacer cdigo
sintetizable no es recomendable usar multiplicadores (excepto si uno de
los operadores es potencia de dos, puesto que se tratara de un simple
desplazamiento de bits).

El orden de preferencia, de mayor a menor es:

1.
2.
3.
4.
5.
6.

**, ABS, NOT


*, /, MOD, REM
+, - (signo)
+, -, & (operaciones)
=, /=, <, <=, >, >=
AND, OR, NAND, NOR, XOR

5. Conclusiones

Como resultado de la investigacin y del trabajo desarrollado podemos


concluir que:

El uso eficiente de los teoremas del lgebra de Boole es de gran ayuda al


momento de realizar simplificaciones en las ecuaciones lgicas de los
circuitos, ya que al simplificar se har uso de menos compuertas a la
hora de disear el circuito lgico digital.

El tener una serie de pasos definidos para el diseo de circuitos es de


gran ayuda, ya que nos sirve de apoyo y recordatorio, adems es
necesario tomar el nfasis necesario a la etapa de anlisis del problema,
debido a que un anlisis incorrecto puede llevarnos a una mala
implementacin del circuito, ya que al haber un anlisis incorrecto la
tabla de verdad del circuito quedara incorrecta y debido a que los pasos
de diseo son secuenciales, el final no sera el deseado.

VHDL es una excelente opcin al momento de elegir un lenguaje para la


descripcin de hardware, gracias a que es un lenguaje estandarizado y
que su forma de comportamiento es indiferente del hardware donde se
implementara, es especialmente til en las primeras etapas del diseo, a
la hora de elegir arquitecturas, particiones del circuito, tipos de lgica,
etc. y para la realizacin de simulaciones a nivel funcional. VHDL
tambin permite la documentacin del proyecto a un nivel que es
independiente de la tecnologa e incluso del tipo de lgica, lo cual
permite su reutilizacin en otros diseos.

6. Bibliografa

VHDL Lenguaje para descripcin y modelado de circuitos, Fernando


Pardo Carpio, Universidad de Valencia 1997.
Simulando VHDL con herramientas GNU: GHDL+GTKWAVE, Roberto
Aragn.
Programacin en VHDL: http://es.wikibooks.org/wiki/Programaci
%C3%B3n_en_VHDL
GHDL: http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_VHDL/Ap
%C3%A9ndices/Instalaci%C3%B3n_y_uso_de_GHDL
Leyes y teoremas bsicos del algebra de Boole:
http://www.academia.edu/6818266/LEYES_Y_TEOREMAS_B
%C3%81SICOS_DEL_%C3%81LGEBRA_DE_BOOLE

You might also like