Professional Documents
Culture Documents
Integrantes
Carn
Nombre
RU12002
HP08005
GT/GD
01/02
02/02
Profesor:
Br. Francisco Cruz Jurez
Coordinador Catedra:
Ing. Salvador German
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.
3.
4.
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
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:
Objetivos Especficos:
VHDL.
Analizar los ejercicios propuestos, para obtener sus tablas de
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
su
smbolo
lgico
se
Figura 2
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
de la multiplicacin booleana es la
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
Figura 6
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
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
--Arquitectura
entity comp_and is
port (
a, b: in bit;
x: out bit
);
end comp_and;
3.1.2 OR
--Entidad
--Arquitectura
entity comp_or is
port(
a,b:in bit;
x:out bit
);
end comp_or;
--Entidad
--Arquitectura
entity comp_not is
port (
a : in bit;
x : out bit
);
end comp_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;
11
3.1.6 EXOR
--Entidad
--Arquitectura
entity comp_exor is
port(
a,b:in bit;
x:out bit
);
end comp_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
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
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
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
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
Codificacin VHDL:
'
'
'
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
20
Y
0
1
Descripcin
Hacia adelante
Hacia la
derecha
Hacia la
izquierda
Hacia atrs
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
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
24
4. Preguntas de investigacin
Esta instruccin es ms
IF <condicin1> THEN
[sentencias 1]
ELSIF <condicin2>
THEN
[sentencias 2]
ELSE
[sentencias N]
END IF;
CASE <expresin> IS
instruccin
es:
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:
26
4.3.2 IF y THEN
27
28
4.4.1Tipos escalares
Son tipos simples que contienen algn tipo de magnitud. Entre los que
se tienen:
Reales o coma flotante: Se definen igual que los enteros con la diferencia
que los lmites son nmeros reales.
Escalares
Enteros
Ejemplo de declaracin
TYPE byte IS RANGE 0 TO 255;
Fsicos
Reales o coma
flotante
Enumerados
Son tipos de datos compuestos por los que se han visto anteriormente.
Entre ellos se encuentran:
Compu
estos
Matrice
s
Ejemplo de declaracin
Registr
os
TYPE trabajador IS
RECORD
nombre : string;
edad : integer;
END RECORD;
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
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:
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;
Tipo de operador
Lgicos
Booleanos De
relacin
Concatenacin
Cadenas
Aritmticos
operadores
AND, OR, XOR, NOT, NAND, NOR, XNOR Bit
=, /=, <, >, >=, <= Integer, Bit y Bit_Vector
Los
operadores
lgicos,
pueden
ser
empleados
con
los
tipos
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).
1.
2.
3.
4.
5.
6.
5. Conclusiones
6. Bibliografa