Universidad de El Salvador Facultad de Ingeniería y Arquitectura Escuela de Ingeniería Eléctrica
GUIA #3:
“SIMULACIÓN VHDL DE CIRCUITOS MSI”
SISTEMAS DIGITALES I
San Salvador, ciudad universitaria 27 de mayo de 2014
2
SDI-115
Índice. Pag.
Introducción……………………………………………………………………………………………………. . 3.
Objetivos…………………………………………………………………………………………………………. 4.
Obtencion de Software………………………………………………………………………………….5 -13.
Desarrollo de los circuitos……………………………………………………………………………… 14 -25.
Investigacion…………………………………………………………………………………………..…… 26 -36.
Observaciones………………………………………………………………………………………………. 37.
Conclusiones ……………………………………………………………………………………………….. 38
Bibliografía…………………………………………………………………………………………………… 39.
3
SDI-115
INTRODUCCION Como parte del avance del curso de la asignatura de Sistemas Digitales I una vez más se presenta este nuevo reporte de las asignaciones que se nos encomienda con el objetivo de hacer valer los temas vistos en clase de una forma práctica y así asegurarnos que en verdad se adquirió dicho conocimiento. En la primera asignación fue una guía introductoria a los lenguajes VHDL como una herramienta para el diseño de circuito e integrados, en la cual se crearon los códigos de algunas de las compuertas básica que conocemos, ya en la segunda asignación se trabajó trabajó en la simulación en tiempo real de los códigos de dichas compuertas en TINA la cual es una herramienta que nos permite interactuar con dichos códigos. Para esta tercera asignación será una combinación de lo visto en las asignaciones 1 y 2 pero con la diferencia no simular compuertas lógicas sino que se generara un convertidor de códigos BCD por medio de circuitos MSI. Iniciaremos definiendo que son los circuitos MSI y una pequeña reseña histórica de ello para comprender mejor en lo que trabajaremos para luego enfocarnos en la elaboración de lo que en esta asignación as ignación se nos pide.
4
SDI-115
OBJETIVOS. General: -
Conocer la estructura y funcionamiento básico de los circuitos MSI para poder así ser capaces de diseñar pequeños y sencillos integrados.
Específicos: -
-
Programar y simular en VHDL algunos circuitos MSI. Simular los circuitos MSI en TINA haciendo uso de las distintas herramientas que TINA nos ofrece. Conocer las librerías existentes en VHDL para la codificación de circuitos MSI.
5
SDI-115
Obtención del software de simulación de TINA.
Para el desarrollo de la tarea se utilizó el software TINA 8 Versión Industrial. Dirección de descarga de TINA industrial.
http://www.designsoft.biz/home/demos/demo_tina Pasos para la instalación de TINA.
a) Antes de comenzar la instalación de TINA, tenemos que conocer si contamos con los requisitos de software y hardware mínimos para una ejecución sin problemas. Estos son los requerimientos:
IBM PC AT/486DX o una compatible (también se recomienda un procesador Pentium o uno de mayor gama)
256 MB de RAM
Un espacio libre en el disco duro de al menos 200 MB
CD-ROM (Será necesario si el Setup de instalación se ejecutara desde el CD de TINA)
Mouse
Sistema operativo Microsoft Windows 9x/ ME / NT/ 2000 / XP / Vista
Redes soportadas (para la versión de Red): Microsoft Windows NT / 2000 / XP Server o posterior, Novell Netware versión 3.12 o posterior, Linux Samba, Citrix Presentation Server
6
Nota: Ahora
SDI-115
en día la mayoría de computadores pueden soportar
el software TINA, aunque nunca esta demás conocer sus requisitos para cuando se trabaje con computadores con recursos limitados b) Para continuar con nuestra instalación es necesario poseer el CD de instalación de TINA o en defecto tener el Setup en el computador de la siguiente manera:
c) Dando doble clic izquierdo ejecutamos el Setup (Para los sistemas operativos Microsoft Windows 7 / 8 se recomienda dar clic derecho y seleccionar Ejecutar como administrador)
d) Nos aparecerá la siguiente ventana en la cual presionamos el botón
7
SDI-115
e) En la siguiente ventana aceptamos el contrato de la licencia presionando el botón
f) En el siguiente paso introducimos el nombre de usuario y el nombre de la compañía u organización en donde se está instalando el software, después presionamos el botón
8
SDI-115
g) En la siguiente ventana podemos seleccionar la carpeta donde se instalará el software TINA, que por defecto es el siguiente “C: \Program Files (x86)\DesignSoft\Tina 8 - Industrial” (carpeta defecto para un sistema operativo de 64 bits), después presionamos el botón
9
SDI-115
h) En el siguiente paso seleccionamos el tipo de licencia posteriormente presionamos el botón
i) Posteriormente seleccionamos el tipo de instalación, se recomienda realizar una instalación típica (Typical), clickeamos el botón
10
SDI-115
j) Siguiendo con la instalación nos pide seleccionar las capertas donde se k) instalará el software TINA o crear uno nuevo, recomendamos dejar la carpeta por defecto, presionamos el botón
l) En la siguiente ventana podremos seleccionar la carpeta de instalación de algunas variables de entorno, recomendamos dejar las carpetas por defecto, presionamos
11
SDI-115
m) seleccionamos el set de símbolos, seleccionaremos el ANSI que es el más utilizado en América, presionamos
12
SDI-115
n) Finalmente nos muestra una recopilación de todas las opciones seleccionadas en la instalación para tener en cuenta como se procedió, presionamos
o) El Setup procesa y hace la instalación para finalizar tenemos que elegir si creamos un acceso directo a la aplicación en el escritorio
p) Para finalizar presionamos el botón
en la ventana final
13
SDI-115
14
SDI-115
Desarrollo de los circuitos: 1.Decoder 3 a 8 Para obtener un el Decoder tenemos “n” entradas en este caso tenemos 3 y salidas por lo tanto 8 en base a ello se construye la siguiente tabla de verdad tomando como referencia salidas activas altas:
0 1 2 3 4 5 6 7
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
Y0 1 0 0 0 0 0 0 0
Y1 0 1 0 0 0 0 0 0
Y2 0 0 1 0 0 0 0 0
Y3 0 0 0 1 0 0 0 0
Y4 0 0 0 0 1 0 0 0
Y5 0 0 0 0 0 1 0 0
Y6 0 0 0 0 0 0 1 0
Y7 0 0 0 0 0 0 0 1
En base a esto y conociendo que los Decoder son generadores de minterminos, el código para este Decoder queda de la siguiente manera:
15
SDI-115
Haciendo una prueba para 101=5 y como resultado muestra y5 como se espera
Otra prueba para 100=4 y se genera el mintermino y4
16
SDI-115
Coder de 8 a 3 Para la creación del coder se busco la manera de invertir la solución del problema anterior lo que llevo como resultado al siguiente código
En el cual lo que se dejo como comentario quedo de tal mañanera ya que al final no fue necesario para el código y lo hacia mas robusto y difícil de entender. Luego haciendo el circuito en Tina y probando el mintermino y1 se nos genera a la salida 001 que seria lo que da origen al ese minternino.
17
SDI-115
Una prueba mas para y6 lo que da origen a la salida un 110=6
Multiplexor con dos entradas de datos de un bit y una variable de selección Sabiendo que los multiplexores trabajan como selecctores de datos es posible construir el código VHDL sin necesidad de una tabla, un código sencillo y queda de la manera siguiente:
Probando el funcionamiento de la Macro en Tina:
18
SDI-115
Seleccionando lo que hay en 1 =f1 y por consiguiente muetra 0 en la salida
Ahora el selector indica 0 por lo que se muestra lo que hay en f0 que es 1.
Demultiplexor con cuatro salidas de datos de 1 bit y dos variables de selección Para el mutiplexor se usa el mismo pricipio que para el coder-decoder y como se conoce que el demux trabaja como distribuidor de datos el código que mejor se pudo representar fue el siguiente:
19
SDI-115
La pruebas correspondiente de la Macro en Tina, para una distribución a f2 de lo que hay en F
Y para una distribución a f1 de F
20
SDI-115
Full Adder Es full Adder se construye apartir de la siguiente tabla de verdad y de la cual se deducen las ecuaciones para Cout y ∑ A B Cin Co ∑ 0 0 0 0 0 0 1 0 0 1 0 1 2 0 1 0 0 1 3 0 1 1 1 0 4 1 0 0 0 1 5 1 0 1 1 0 6 1 1 0 1 0 7 1 1 1 1 1
La ecuación para cout y ∑ son:
Y el código que se genera en VHDL en base a estas ecuaciones es :
21
SDI-115
Multiplexor con dos entradas de datos de 4 bits y una variable de selección Para generar los 4 bits en las 2 entradas agrupamos a0, a1, a2 y a3; también b0, b1, b2 y b3 que generaran las 2 entradas de 4 bits y por lo tanto 1 salidad de 4 bits. Se creo el siguiente código vhdl
Y la prueba respectiva en tina primero se muestra el selector fijado en 1 lo que hace que los bits que están alojados en b se muestren en la salida.
22
SDI-115
Ahora solo se cambia el selector a 0 y se toma el grupo de bits alojados en a En la salida queda demostrado que salen los 4bits que estab en 0.
2. Para simular el convertidor de 8421 a 7 segmentos se utilizo el circuito integrado 7447 que ya es parte del tina y que trae la siguiente configuración
Para las salidas se toman los pines del 9 al 15 pero tomando en cuenta que coincidan con los segmentso del display , esto es a con a , b con b y asi sucesivamente.
23
SDI-115
De tal manera que al activar los pines 7 y 1 respectivamente A y B en el integrado y C y D en los switch que es 0011=3 es lo que se muestra en el display .
Ahora para 0101=5 A y C en el integrado y B y D en los switchs
24
SDI-115
3.Sumador restardor La opción que se toma para este el desarrollo de este problema fue el siguiente: Tercer método: Se genera en VHDL un código para un FULL ADDER y se colocan 4 elementos FULL ADDER en paralelo para crear el sumador7483 y un código para un MUX de 2 fuentes de datos de 1 bit cada una con una variable de selección y se colocan 4 elementos de MUX en paralelo para generar un MUX de dos entradas de datos de 4 bits cada una con una entrada de selección.
Para el primer resuatdo sumaremos A=1111=(15 decimal) con B=0011=(3 decimal) y como resultado se muestra 10010=18.
25
SDI-115
Para este caso ahora vamos a restar a A=0011=(3 decimal) , B=0001=(1 decimal) y como resulado 0010=(2 decimal).
Una resta mas A=0111 y B=0111 el resultado 0000
26
SDI-115
Resultados de la investigación. ¿QUE SON LOS CIRCUITOS MSI? Por circuitos MSI entenderemos que no son más que circuitos integrados construidos para realizar funciones específicas en forma individual y que al interconectarlos se pueden construir funciones lógicas más complejas. Un circuito integrado (CI), también conocido como chip o microchip, es una pastilla pequeña de material semiconductor, de algunos milímetros cuadrados de área, sobre la que se fabrican circuitos electrónicos El primer circuito integrado fue desarrollado en 1959 por el ingeniero Jack S. Kilby (1923-2005) pocos meses después de haber sido contratado por la firma Texas Instruments. Se trataba de un dispositivo de germanio que integraba seis transistores en una misma base semiconductora para formar un oscilador de rotación de fase. Al mismo tiempo que Jack Kilby, pero de forma independiente, Robert Noyce desarrolló su propio circuito integrado, que patentó unos seis meses después. Además resolvió algunos problemas prácticos que poseía el circuito de Kilby, como el de la interconexión de todos los componentes; al simplificar la estructura del chip mediante la adición del metal en una capa final y la eliminación de algunas de las conexiones, el circuito integrado se hizo más adecuado para la producción en masa. Además de ser uno de los pioneros del circuito integrado, Robert Noyce también fue uno de los co-fundadores de Intel, uno de los mayores fabricantes de circuitos integrados del mundo . 3 Los circuitos integrados se encuentran en todos los aparatos electrónicos modernos, como relojes de pulsera, automóviles, televisores, reproductores de CD, reproductores de MP3, teléfonos móviles, computadoras, equipos médicos, etc. Son tres las ventajas más importantes que tienen los circuitos integrados sobre los circuitos electrónicos construidos con componentes discretos: su menor costo; su mayor eficiencia energética y su reducido tamaño.
27
SDI-115
Atendiendo al nivel de integración -número de componentes- los circuitos integrados se pueden clasificar en:
SSI (Small Scale Integration ) pequeño nivel: de 10 a 100 transistores MSI (Medium Scale Integration ) medio: 101 a 1.000 transistores LSI (Large Scale Integration ) grande: 1.001 a 10.000 transistores VLSI (Very Large Scale Integration ) muy grande: 10.001 a 100.000 transistores ULSI (Ultra Large Scale Integration ) ultra grande: 100.001 a 1.000.000 transistores GLSI (Giga Large Scale Integration ) giga grande: más de un millón de transistores
En cuanto a las funciones integradas, los circuitos se clasifican en dos grandes grupos:
Circuitos integrados analógicos Pueden constar desde simples transistores encapsulados juntos, sin unión entre ellos, hasta circuitos completos y funcionales, como amplificadores, osciladores o incluso receptores de radio completos Circuitos integrados digitales Pueden ser desde básicas puertas lógicas (AND, OR, NOT) hasta los más complicados microprocesadores o microcontroladores Algunos circuitos MSI son: -Decodificadores -Codificadores. -Multiplexores. -Demultiplexores -Circuitos Aritméticos -Comparadores de magnitud
28
SDI-115
Multiplexores: Un Multiplexor es un circuito combinacional al que entran varios canales de datos, y sólo uno de ellos, el que hayamos seleccionado, es el que aparece por la salida. Es decir, que es un circuito que nos permite SELECCIONAR que datos pasan a través de dicho componente. Demultiplexor: Conecta una sola línea de entrada con a una de n líneas de salida, según lo determine un código de selección de s bits
Decodificadores: Los decodificadores tienten n líneas de entrada y señales de salida, para cada posible condición de entrada, una y a solo una señal de salida tendrá el valor lógico 1 mientras que las demás salidas tendrán el valor de 0, a esta condición recibe el nombre de salidas activas altas, si la salida se activa en 0 las otras salidas tendrán el valor de 1 y se considera como salidas activas bajas. Por lo que podemos considerar al decodificador n a como un generador de minterminos.
29
SDI-115
Codificador.
Un decodificador acepta un código de entrada de N bits y produce un 1 o 0 en una y sólo una línea de salida. El opuesto de este proceso de decodificación es llamado codificación y es ejecutado por un circuito lógico llamado codificador .Un codificador tiene un número de líneas de entrada, de las cuales sólo una es activada en un tiempo dado y produce un código de salida de N bits, dependiendo de cuál entrada es activada. La Figura 2, muestra el diagrama general de un codificador con M entradas y N salidas. Todas las entradas y salidas están en 1 cuando están activadas (Note la ausencia de círculos en el diagrama). Librerías: Una librería consiste en una colección de unidades de diseño analizadas previamente con lo cual se facilita la utilización de estas en nuevos diseño. Para incluir una librería se utiliza la siguiente sintaxis. LIBRARY
identificador_librería [,identificador_librería ] ;
La cláusula LIBRARY permite utilizar la librería especificada únicamente para la unidad de diseño en la cual se declara. Una unidad de diseño es una entidad, paquete, arquitectura, o cuerpo de paquete.
EJEMPLO LIBRARY mi_libreria;
30
SDI-115
Paquetes Un paquete en VHDL es una colección de declaraciones que pueden ser utilizadas por otras descripciones en VHDL. Un paquete en VHDL consiste de dos secciones: la declaración del paquete y el cuerpo del paquete. Para incluir un paquete en otra descripción se sigue la siguiente sintaxis: USE libreria.identificador_paquete.ALL; De esta manera el paquete indicado es visible para la unidad de diseño en la cual está siendo utilizado. Mediante "ALL" indicamos que deseamos incluir todas las declaraciones de funciones, componentes, tipos de datos, subtipos de datos, procedimientos, etc. que encuentren en dicho paquete.
DECLARACIÓN DEL PAQUETE PACKAGE identificador IS -- declaración de subprograma -- declaración de tipo de datos -- declaración de subtipos -- declaración de constantes -- declaración de señales -- declaración de componentes -- declaración de atributos
31
SDI-115
-- especificación de atributos -- instrucción USE END identificador ;
CUERPO DEL PAQUETE PACKAGE BODY identificador IS -- declaración de subprograma -- cuerpo del subprograma -- declaración de tipo de datos -- declaración de subtipos -- declaración de constantes -- instrucción USE END identificador ; En la declaración del paquete se hace mención de todo aquello que puede ser utilizado por otras descripciones cuando se incluye el paquete. El cuerpo del paquete proporciona definiciones y declaraciones adicionales, así como la descripción completa de funciones y procedimientos que fueron de clarados previamente en el paquete.
32
SDI-115
EJEMPLO PACKAGE v3_tbl IS SUBTYPE v3 IS std_logic_vector ( 0 to 2 ) ; TYPE v3_array IS ARRAY ( 0 to 7 ) OF v3; CONSTANT v3_table : v3_array := ( "000", "001", "010", "011", "100", "101", "110", "111") ; FUNCTION int2v3 ( ia: integer ) RETURN v3 ; -- declaración de función END v3_tbl ; PACKAGE BODY v3_tbl IS
33
SDI-115
FUNCTION int2v3 ( ia: integer ) RETURN vec3 IS -- convierte un entero entre 0 y 7 en un vector de 3 bits BEGIN RETURN v3_table ( ia ) ; END int2v3 ; END v3_tbl ;
EJEMPLO Para este ejemplo crea un proyecto para compilar la librería "mi_libreria" . Crea un nuevo archivo de texto y copia la siguiente descripción en él. LIBRARY ieee ; USE ieee.std_logic_1164.ALL ; PACKAGE multiplexores IS COMPONENT mux_2_a_1 GENERIC ( msb: integer ) ; PORT ( selec: in std_logic ; x: IN std_logic_vector( msbDOWNTO 0);
34
SDI-115
y: IN std_logic_vector( msbDOWNTO 0); z:
OUT
std_logic_vector(
msbDOWNTO 0 ) ; END COMPONENT ; END multiplexores ; LIBRARY ieee ; USE ieee.std_logic_1164.ALL ; ENTITY mux_2_a_1 IS GENERIC ( msb: integer := 3 ) ; -- debe declararse siempre un valor inicial -- para que en caso de no ser especificado -- en el momento de la instanciación, -- el componente tome un valor por omisión PORT ( selec: IN std_logic ; x: IN std_logic_vector ( msbDOWNTO 0 ) ; y: IN std_logic_vector ( msbDOWNTO 0 ) ; z: OUT std_logic_vector ( msbDOWNTO 0 ) ) ;
35
SDI-115
END mux_2_a_1 ; ARCHITECTURE a_mux_2_a_1 OF mux_2_a_1 IS BEGIN z <= x WHEN selec = '1' ELSE y WHEN selec = '0' ; END a_mux_2_a_1 ; Sintetiza el proyecto y después crea otro para utilizar el paquete anterior. Para agregar la librería a este nuevo proyecto hazlo desde el administrador de librerías. Crea un nuevo archivo de texto y copia la siguiente descripción en él. LIBRARY ieee; USE ieee.std_logic_1164.ALL ; USE mi_libreria.multiplexores.ALL ; -- referencia al paquete multiplexores -- que se encuentra dentro -- de la librería "mi_libreria" ENTITY multiplexor IS PORT ( a,b,c,d: IN std_logic_vector ( 3 DOWNTO 0 ) ; selec: IN std_logic_vector ( 1 DOWNTO 0 ) ; salida: OUT std_logic_vector ( 3 DOWNTO 0 ) ) ; END multiplexor ;
36
SDI-115
ARCHITECTURE estructural OF multiplexor IS SIGNAL salida1, salida2: std_logic_vector ( 3 DOWNTO 0 ) ; BEGIN -- instanciación del componente mux_2_a_1 u1: mux_2_a_1 PORT MAP ( a, b, selec(0), salida1 ) ; u2: mux_2_a_1 PORT MAP ( c, d, selec(0), salida2 ); u3: mux_2_a_1 PORT MAP ( salida1, salida2, selec(1), salida ) ; END estructural ; Como se mencionó al principio una librería es una colección de unidades de diseño que pueden ser incluidas es otras descripciones mediante el llamada a la respectiva librería.
37
SDI-115
Observaciones - Antes de comenzar a hacer los códigos en VHDL se debe tener claro el funcionamiento de que se va a utilizar para no tener problemas en la realización de esta simulación. - AL iniciar cualquier código VHDL, se debe tener en cuenta declaran las librerías que se van a utilizar. - Los Muxe, Decoder, Coder se ha diseñado sin habilidador tomando encuneta que para la prueba siempre debían estar habalitados pero solo son dos líneas de código mas si se quisieran agregar.
38
SDI-115
Conclusiones. Tal y como se planteaba en los textos se pudo comprobar que al auxiliarse de un simulador en tiempo real como lo es TINA se puede verificar si el resultado del circuito elaborado es el esperado.
TINA es una potente y eficaz herramienta para la simulación y elaboración se circuitos debido a su variedad de componentes que ofrece pero sobre todo a su facilidad al momento de trabajar