Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCIN AL
LENGUAJE VHDL
Sistemas Digitales I
CATEDRTICO: Ing. Salvador German
INSTRUCTOR: Juan Albiana
PRESENTADO POR:
Cruz Prez, Francisco Javier
CP09042
SS12008
Tabla de Contenido
Introduccin ........................................................................................................................................ 2
Objetivos ............................................................................................................................................. 3
Instalacin del programa en Microsoft Windows ............................................................................... 4
Marco Terico ................................................................................................................................... 10
Realizar el cdigo VHDL para las compuertas: AND, NAND, OR, NOR, EXOR y NOT, simular en TINA
y VHDL ............................................................................................................................................... 12
Compuerta AND ............................................................................................................................ 12
Compuerta NAND.......................................................................................................................... 13
Compuerta OR ............................................................................................................................... 13
Compuerta NOR ............................................................................................................................ 14
Compuerta EXOR ........................................................................................................................... 15
Compuerta NOT ............................................................................................................................ 15
Ejercicio 1 : Realizar el cdigo VHDL para el ejemplo 2.35 del libro. ................................................ 17
Ejercicio 2: Realizar el cdigo VHDL para el problema 2.35 del final del captulo. ........................... 18
Ejercicio 3: Circuito 3: Un automvil a prueba de choques ........................................................... 19
Respuestas a las preguntas de investigacin .................................................................................... 22
Uso y sintaxis de las instrucciones IF THEN. ............................................................................... 22
Uso y sintaxis de la instrucciones CASE WHEN........................................................................... 22
Uso de las instrucciones anteriores para implementar el cdigo VHDL directamente desde las
tablas de verdad. ........................................................................................................................... 24
Ejercicio 1 .................................................................................................................................. 24
Ejercicio 2 .................................................................................................................................. 24
Tipos de datos de entrada y salida que soporta VHDL. ................................................................ 25
Cmo se crean arreglos en VHDL? ................................................................................................ 27
Cmo declarar un componente en VHDL? .................................................................................... 27
Cules son los operadores en VHDL? .......................................................................................... 28
Conclusiones ..................................................................................................................................... 30
Bibliografa ........................................................................................................................................ 31
Introduccin
Con el paso de los aos el ser humano ha adquirido y desarrollado conocimientos que le han
llevado a posicionarse en la era digital, pues podemos ver que muchos objetos que antes
utilizaban mucho espacio debido a sus componentes electrnicos hoy en da se han convertido en
objetos de menor tamao, pero A qu se debe esto? La respuesta est a la palma de la mano
como tambin en la palma de la mano podemos tener unos circuitos digitales que han venido a
sustituir grandes circuitos, contribuyendo as a poder estar ms digitalizados, pero Cmo se
realizan estos circuitos?, hay diferentes lenguajes de programacin que son utilizados para
desarrollar cdigos para simular circuitos usados en estos nuevos artefactos, como ejemplo
tendremos el lenguaje VHDL que utilizaremos para la implementacin de cdigos que simulen las
compuertas lgicas y as poder implementarlas a un circuito que lo podemos usar en un juguete,
los cdigos de programacin y los diferentes lenguajes nos ayudan a poder corregir errores antes
de la implementacin de los circuitos encargados muchas veces de procesos que son muy
precisos. En este reporte se usan las compuertas lgicas ms conocidas pues en base a ellas del
cual surgen los dems circuitos e incluso la unin de estas para formar circuitos ms complejos.
Objetivos
7. Para poder obtener la licencia de uso completo del programa, vamos al siguiente link:
http://www.altera.com/support/licensing/lic-university.html
8. Damos a continue y aparecer lo siguiente, donde se nos pedir el serial de nuestro disco
duro.
10. Digitamos lo siguiente dir/p sin comillas y aparecer la siguiente ventana: Copiar ese
cdigo a mano, aqu se presenta el nmero de serie de esta forma XXXX-XXXX, quitar el
guion a la hora de ingresarlo en la pgina de altera.
11. Despus de ingresar los datos, nos pedir llenar el formulario, escribir cualquier cosa en
los espacios, menos en la casilla del correo que tendr que ser uno nuestro porque ah se
llegara nuestra licencia,
12. Ya recibida la licencia, el archivo que nos mandan lo pegamos en la carpeta de instalacin
del Max Plus. Luego abrimos de nuevo el programa y vamos a Options---License Setup,
damos a Browse y buscamos el archivo que nos mandaron a nuestro correo. Listo el
programa est instalado correctamente.
Marco Terico
Los lenguajes de descripcin hardware (HDLs, Hardware Description Languages) vienen
utilizndose desde los aos 70 en los ciclos de diseo de sistemas digitales asistidos por
herramientas de CAD electrnico. Al principio surgieron una serie de lenguajes que no
llegaron a alcanzar un xito que permitiera su consolidacin en el campo industrial o
acadmico. En los aos 80 aparecen los lenguajes Verilog y VHDL que, aprovechando la
disponibilidad de herramientas hardware y software cada vez ms potentes y asequibles y
los adelantos en las tecnologas de fabricacin de circuitos integrados, logran imponerse
como herramientas imprescindibles en el desarrollo de nuevos sistemas. En la actualidad
ambos lenguajes estn normalizados y comparten una posicin hegemnica que est
arrinconando y terminar, probablemente, en poco tiempo eliminando del mercado al
resto de lenguajes que de un modo u
otro todava son soportados por algunas herramientas de CAD.
Estos lenguajes son sintcticamente similares a los de programacin de alto nivel Verilog
tiene una sintaxis similar al C y VHDL a ADA y se diferencian de stos en que su semntica
est orientada al modelado del hardware. Su capacidad para permitir distintos enfoques
en el modelado de los circuitos y su independencia de la tecnologa y metodologa de
diseo permiten extender su uso a los distintos ciclos de diseo que puedan utilizarse. Por
ello, para los profesionales relacionados de alguna manera con el diseo o mantenimiento
de sistemas digitales resulta hoy en da imprescindible su conocimiento.
Los estudios para la creacin del lenguaje VHDL (VHSIC HDL) comenzaron en el ao 1981,
bajo la cobertura de un programa para el desarrollo de Circuitos Integrados de Muy Alta
Velocidad (VHSIC), del Departamento de Defensa de los Estados Unidos. En 1983 las
compaas Intermetrics, IBM y Texas Instruments obtuvieron la concesin de un proyecto
para la realizacin del lenguaje y de un conjunto de herramientas auxiliares para su
aplicacin.
Finalmente, en el ao 1987, el lenguaje VHDL se convierte en la norma IEEE-1076 como
todas las normas IEEE, se somete a revisin peridica, por lo que en 1993 sufri algunas
leves modificaciones.
10
11
Realizar el cdigo VHDL para las compuertas: AND, NAND, OR, NOR, EXOR y
NOT, simular en TINA y VHDL
Compuerta AND
ENTITY com_and IS
PORT(
a,b :IN BIT;
x
:OUT BIT);
END com_and;
ARCHITECTURE arch_and OF com_and IS
BEGIN
x<= a AND b;
END arch_and;
12
Compuerta NAND
ENTITY comp_nand IS
PORT(
a,b
:IN
x
END comp_nand;
:OUT
BIT;
BIT);
Compuerta OR
ENTITY comp_or
IS
PORT(
a,b
:IN
x
:OUT
END comp_or;
ARCHITECTURE arch_or OF comp_or
BEGIN
x<= a OR b;
END arch_or;
BIT;
BIT);
IS
13
Compuerta NOR
ENTITY comp_nor IS
PORT(
a,b
x
END comp_nor;
:IN
:OUT
BIT;
BIT);
14
Compuerta EXOR
ENTITY comp_xor IS
PORT(
a,b
x
END comp_xor;
:IN
:OUT
BIT;
BIT);
Compuerta NOT
ENTITY comp_not IS
PORT(
a
x
END comp_not;
:IN BIT;
:OUT BIT);
15
16
Tabla de Verdad
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
X
0
1
1
0
0
0
1
1
ENTITY circuito_1 IS
PORT(
a,b,c :IN BIT;
y,z :OUT BIT);
END circuito_1;
ARCHITECTURE arch_1 OF circuito_1 IS
BEGIN
y <= ((NOT a) AND (NOT b) AND c) OR (b AND (NOT c)) OR (a AND b) ;
z <= ((NOT a) AND c) OR ((NOT a) AND b AND c) OR (a AND b AND (NOT c)) ;
END arch_1;
17
Ejercicio 2: Realizar el cdigo VHDL para el problema 2.35 del final del captulo.
Entity prob_235 IS
PORT(
a,b,c,d :IN BIT;
x :OUT BIT);
END prob_235;
ARCHITECTURE arch_235 OF prob_235 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_235;
18
19
X
0
0
1
1
Y
0
1
0
1
Descripcin
Hacia Adelante
Hacia la derecha
Hacia la izquierdo
Hacia Atrs.
Si los tres sensores A, B, C estn en 1 es decir, detecta obstculo en las tres direcciones,
empezara a retroceder, de lo contrario girara en la en la direccin que est libre de obstculo, si
existe la posibilidad de girar hacia la derecha o hacia la izquierda se girara a la derecha.
TABLA DE VERDAD
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
Y
0
1
0
1
0
0
0
1
Z
0
0
1
0
1
0
1
1
ENTITY circuito_3 IS
PORT(
a,b,c :IN BIT;
x,y :OUT BIT);
END circuito_3;
ARCHITECTURE arch_3 OF circuito_3 IS
BEGIN
x <= ((NOT a) AND c) OR (b AND c) ;
y <= (a AND (NOT c)) OR ((NOT a) AND b AND (NOT c)) OR (a AND b AND c) ;
END arch_3;
20
21
if (condicin)
then haz una cosa;
else haz otra cosa diferente;
end if;
control :in
bit_vector(1 downto 0);
d :out bit_vector(3 downto 0) );
end multi;
architecture archmul of multi is
begin
process (a, b, c, control, enable)
begin if enable='1' then d<="1111";
elsif enable='0'
then
case control is
when "00" => d <= a;
when "01" => d <= b;
when "10" => d <= c;
when "11" => d <= "1111";
end case;
end if;
end process;
end archmul;
23
6. );
7. end demulti;
8. architecture archdemul of demulti is
9. begin
10. process (entra, control, enable)
11. begin
12. if enable='1' then a<="11111111";
13. b<="11111111";
14. c<=(others=>'1');
15. d<=(others=>'1');
16. elsif enable='0' then
17. case control is
18. when "00" => a <= entra;
19. when "01" => b <= entra;
20. when "10" => c <= entra;
21. when others => d <= entra;
22. end case;
23. end if;
24. end process;
25. end archdemul;
25
Una vez declarado el nuevo tipo podremos usarlo para declarar objetos de este tipo, como por
ejemplo:
Cada tipo es diferente e incompatible con los dems, aunque estn declarados de la misma forma,
por lo cual no podemos asignar a una seal de un tipo otra de otro tipo distinto, a menos que
definamos una funcin de transformacin. Los tipos pueden ser clasificados segn las
caractersticas de lo que van a determinar:
Tipos enumerados: En ste se define el conjunto de posibles valores del tipo especificado,
presentando una lista que contiene a todos los valores. El primer identificador es el
nombre del tipo y sirve para referenciarlo, y entre parntesis y separados por comas se
adjuntan todos los valores legales del tipo. type vocales ('a', 'e', 'i', 'o', 'u'); type direcciones
is (izquierda, derecha, arriba, abajo, centro);
Si no est especificado ningn valor inicial, el objeto se inicializa con el valor ms a la
izquierda de los especificados en la declaracin del tipo. Es decir, un objeto del tipo
"vocales" toma el valor 'a' por defecto.
Tipos enteros / reales: Esta modalidad de tipo sirve apra definir un objeto con valores
reales y enteros. En VHDL vienen definidos el tipo integer, que puede ir desde 2147483647 hasta 2147483647, y el tipo real, quepuede ir desde -1.0e38 hasta 1.0e38.
Para definir un tipo de esta naturaleza hay que especificar el rango de valores que puede
llegar a tener asignado un objeto, como en los ejemplos siguientes
type edad is range 0 to 150;
type dias is range 31 downto 0;
Si no est especificado ningn valor inicial, el objeto se inicializa con el valor ms a la
izquierda de los especificados en la declaracin del tipo. Deberemos tener cuidado si
hemos usado la palabra to o la palabra downto para definir el tipo, ya que se asignar un
valor por defecto u otro. En el ejemplo se da por defecto a un objeto del tipo "edad" el
valor 0, y a otro del tipo "dias", el valor 31.
Tipos fsicos: Sirven para representar magnitudes del mundo real como el tiempo, peso,
capacidad,... por lo que llevan, aparte de un literal numrico, la magnitud fsica a medir.
Podemos asignar unidades auxiliares a la predefinida.
type time is range 0 to 1e20;
units fs; ps = 1000 fs;
ns = 1000 ps;
us = 1000 ns;
ms = 1000 us;
sec = 1000 ms;
min = 60 sec;
hr = 60 min;
end units;
26
COMPONENT comp_and2
PORT(
e1,e2: IN bit; o: OUT bit);
END COMPONENT comp_2and;
27
28
29
Conclusiones
Hemos podido apreciar que el uso de este programa fue nuevo para nosotros, su sintaxis pareca
ser difcil pero con la prctica todo se puede lograr. Este lenguaje de programacin es muy fuerte,
el lmite de este es la imaginacin. Como se vio en los ejemplos anteriores la sintaxis fue muy
corta, pero capaz de resolver problemas que a simple vista suena de una manera imposible, este
no, aplicando conceptos de Algebra de Boole se pudo realizar sin mayor problema dando asi a la
solucin del mismo. De igual forma los dems circuitos propuestos, se logra en si poder dar lectura
y comprensin al cdigo base de este lenguaje de programacin.
Concluimos entonces que la resolucin de los problemas cotidianos se pueden resolver de muchas
maneras, hay unos de una y otros de otra; claro est que para algn circuito que habr una puerta
con impulsos elctricos se debe de tomar en cuenta el lenguaje tratado en este trabajo; es ms
sencillo y gracias a esa algebra el problema se soluciona muy rpidamente.
Entendemos tambin que estos cdigos pueden ser fciles, la misma lgica de cursos pasados se
han aplicado aqu, pero algo tan sencillo como una compuerta not , el no saber sintaxis lleva al
desbordamiento de nuestro trabajo y pone en peligro el mismo, ya que si uno ya en el futuro
trabajando se topa con un problema asi y no logra solucionarlo; perderemos esa experiencia y nos
quedaremos en el vaco existencial no poder aprender algo tan sencillo como esa sintaxis, por lo
tanto este curso de Sistemas Digitales ser un reto, donde aprenderemos a solucionar inquietudes
del da a da para el mejoramiento de nuestra realidad, y a corto plazo poder tener esas bases para
cursos posteriores a esta materia que se ocupe de nuevo este lenguaje. Y quien sabe que algn da
seamos inventores de algo que tambin revolucione nuestro mundo, como los inventores que ha
habido a lo largo de la historia.
30
Bibliografa
Anlisis y diseo de circuitos lgicos digitales. Victor Nelson. 1 edicin. Prentice Hall.
http://personales.unican.es/manzanom/EdigitalI/MuxG7_09.pdf
http://www.fing.edu.uy/inco/cursos/arqsis/recursosLaboratorio/Tutorial.pdf
http://www.dea.icai.upco.es/sadot/ed-itei/tutorial-maxplus.pdf
http://es.wikipedia.org/wiki/Demultiplexor
http://www.cps.unizar.es/~te/Docencia_archivos/ldh_archivos/T4.pdf
http://www.dc.uba.ar/materias/oc1/2007/c2/practica/apuntes/vhdl
http://es.scribd.com/doc/2154178/UPM-Introduccion-al-lenguaje-VHDL
http://www.eweb.unex.es/eweb/fisteor/antonio_astillero/ec/vhdl/Manual%20VHDL.pdf
31