SimulacionVHDLCircuitosMSI

39
Universidad de El Salvador Facultad de Ingeniería y Arquitectura Escuela de Ingeniería Eléctrica Ciclo I/2012 Simulación VHDL de circuitos MSI” Guía No 2 CATEDRA: SISTEMAS DIGITALES I DOCENTE: ING. SALVADOR GERMAN AUTORES: MAGAÑA VÁSQUEZ, ÁNGEL AROLDO MV02001 CRESPO LEIVA, ERICK ARMANDO CL03022 Ciudad Universitaria, 31 de Mayo de 2012

Transcript of SimulacionVHDLCircuitosMSI

Page 1: SimulacionVHDLCircuitosMSI

Universidad de El Salvador

Facultad de Ingeniería y Arquitectura

Escuela de Ingeniería Eléctrica

Ciclo I/2012

“Simulación VHDL de circuitos MSI”

Guía No 2

CATEDRA: SISTEMAS DIGITALES I

DOCENTE: ING. SALVADOR GERMAN

AUTORES: MAGAÑA VÁSQUEZ, ÁNGEL AROLDO MV02001

CRESPO LEIVA, ERICK ARMANDO CL03022

Ciudad Universitaria, 31 de Mayo de 2012

Page 2: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 2

INDICE

Portada……………………………………………………………………………………………………………………………………………i

Índice……………………………………………………………………………………..………………………………………………………ii

Introducción…………………………………………………………………………………………………………………………………..3

Objetivos……………………………………………………………………………………………………………………………………….4

Marco Teórico……………………………………………………………………………………………………………………………….5

Obtención del Software…………………………………………………………………………………………………………..…..12

Pasos para la Instalación del Software………………………………………………………………………………………….12

Desarrollo de los Circuitos…………………………………………………………………………………………………………….16

Descripción de los pasos para la obtención de la solución……………………………………………….16

Código VHDL…………………………………………………………………………………………………………………….19

Graficos de cada Circuito en TINA……………………………………………………………………………………22

Capturas del funcionamiento del circuito en TINA………………………………………………………….25

Resultados de la

Investigación……………………………………………………….……………………………………………………………………….35

Observaciones………………………………………………………………………………………………………………………………37

Conclusiones…………………………………………………………………………………………………………………………………38

Bibliografía……………………………………………………………………………………………………………………………………39

Page 3: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 3

INTRODUCCION

En abril de 1949, el ingeniero alemán Werner Jacobi (Siemens AG) completa la primera solicitud de

patente para circuitos integrados con dispositivos amplificadores de semiconductores. Jacobi

realizó una típica aplicación industrial para su patente, la cual no fue registrada. Más tarde, la

integración de circuitos fue conceptualizada por el científico de radares Geoffrey W.A. Dummer,

que estaba trabajando para la Royal Radar Establishment del Ministerio de Defensa Britanico. El

primer circuito integrado fue desarrollado en 1959 por el ingeniero Jack Kilby pocos meses

después de haber sido contratado por la firma Texas Instrument. Se trataba de un dispositivo

de Germanio que integraba seis transistores en una misma base semiconductora para formar

un oscilador electrónico de rotación de fase. Los circuitos integrados se encuentran en todos los

aparatos electrónicos modernos, como automóviles, televisores, reproductores de CD,

reproductores de MP3, teléfonos móviles, computadoras, etc. El desarrollo de los circuitos

integrados fue posible gracias a descubrimientos experimentales que demostraron que los

semiconductores pueden realizar algunas de las funciones de las valvula termoiónica. La

integración de grandes cantidades de diminutos transistores en pequeños chips fue un enorme

avance sobre el ensamblaje manual de los tubos de vacío (válvulas) y en la fabricación de circuitos

electrónicos utilizando componentes electronicos. 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. El bajo costo es

debido a que los CI son fabricados siendo impresos como una sola pieza por fotolitografia a partir

de una oblea electronica, generalmente de Silicio, permitiendo la producción en cadena de

grandes cantidades, con una muy baja tasa de defectos. La elevada eficiencia se debe a que, dada

la miniaturización de todos sus componentes, el consumo de energía es considerablemente

menor, a iguales condiciones de funcionamiento que un homólogo fabricado con componentes

discretos. Finalmente, el más notable atributo, es su reducido tamaño en relación a los circuitos

discretos; para ilustrar esto: un circuito integrado puede contener desde miles hasta varios

millones de transistores en unos pocos centímetros cuadrados. En ese momento (finales de los

años setenta) se constata el enorme desfase que existe entre tecnología y diseño. La considerable

complejidad de los chips que se pueden fabricar, implica unos riesgos y costes de diseño

desmesurados e imposibles de asumir por las empresas. Es entonces, cuando diversos grupos de

investigadores empiezan a crear y desarrollar los llamados "lenguajes de descripción de hardware"

cada uno con sus peculiaridades. Empresas tales como IBM con su IDL, el TI - HDL de Texas

Instruments, ZEUS de General Electric, etc., así como los primeros prototipos empleados en las

universidades, empezaron a desarrollarse buscando una solución a los problemas que presentaba

el diseño de los sistemas complejos. Sin embargo, estos lenguajes nunca alcanzaron el nivel de

difusión y consolidación necesarios por motivos distintos. Unos, los industriales, por ser propiedad

de la empresa permanecieron encerrados en ellas y no estuvieron disponibles para su

estandarización y mayor difusión, los otros, los universitarios, perecieron por no disponer de

soporte ni mantenimiento adecuado. Alrededor de 1981 el Departamento de Defensa de los

Estados Unidos desarrolla un proyecto llamado VHSIC (Very High Speed Integrated Circuit ) su

objetivo era rentabilizar las inversiones en hardware haciendo más sencillo su mantenimiento. Se

pretendía con ello resolver el problema de modificar el hardware diseñado en un proyecto para

Page 4: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 4

utilizarlo en otro, lo que no era posible hasta entonces porque no existía una herramienta

adecuada que armonizase y normalizase dicha tarea, era el momento de los HDL's.

OBJETIVOS

OBJETIVO GENERAL

Simular los principales circuitos digitales MSI mediante librerías VHDL

OBJETIVOS ESPECIFICOS

Utilizar la herramienta TINA para simular los circuitos MSI

Realizar el aprendizaje necesario para diseñar nuestros propios circuitos MSI

Comprender el funcionamiento básico de los principales circuitos MSI

Realizar la programación de circuitos MSI con VHDL

Page 5: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 5

MARCO TEORICO

La lógica combinacional es probablemente la más fácil de diseñar, ya que en cada momento las salidas de un circuito combinacional sólo dependen del estado actual de sus entradas (el circuito no tiene memoria). En esta unidad se modelarán los circuitos combinacionales más utilizados en el diseño lógico mediante el lenguaje de descripción de

hardware VHDL. DISEÑO BASADO EN ELEMENTOS MSI Un circuito combinacional práctico puede tener docenas de entradas y salidas y puede requerir cientos, miles, e incluso millones de términos para describir como una suma de productos, y miles y miles de millones de renglones para describir en una tabla de verdad. De este modo, la mayoría de los problemas de diseño lógico combinacional reales son demasiado grandes para resolverse mediante la aplicación de la “fuerza bruta” de técnicas teóricas. La clave del desarrollo de estos sistemas es el pensamiento estructurado. Un circuito o sistema complejo se concibe como una colección de subsistemas más pequeños, cada uno de los cuales tiene una descripción más sencilla. Estos bloques combinacionales de construcción constituyen los ladrillos con los que se edifican los sistemas combinacionales. Uno de los bloques electrónicos más importantes de este tipo lo constituyen los denominados elementos MSI (Medium Scale of Integration) combinacionales estudiados en la asignatura de Electrónica Digital: multiplexores, decodificadores, comparadores, sumadores y demás. Las estructuras más importantes se describen en esta unidad desde una perspectiva de los lenguajes de descripción de hardware, en concreto usando el lenguaje VHDL.

DESCRIPCIÓN VHDL DE LÓGICA COMBINACIONAL Para describir circuitos combinacionales utilizaremos sentencias de asignación concurrentes y procesos. · Sentencias de asignación concurrentes. Las sentencias de asignación concurrentes van fuera de proceso. Esto se debe a que en una declaración concurrente no importa el orden en que se escriban las señales, ya que el resultado para una determinada función sería el mismo. Se utilizarán tres tipos de sentencias de asignación concurrentes: Sentencias de asignación simples, por ejemplo: Y <= A and B; Sentencias de asignación condicionales, por ejemplo: Z <= B when S = ‘1’ else A; Sentencias de selección, por ejemplo: with S select C <= ‘1’ when “00”; ‘0’ when others;

Page 6: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 6

Siempre hay que evitar la realimentación combinacional, ya que esto modela elementos de memoria asíncronos. Es decir, hay que evitar que una misma señal aparezca en el lado izquierdo y en el lado derecho de la sentencia de asignación: -- Evitar sentencias de este tipo: Y <= Y nand X; · Procesos. Se debe respetar las siguientes reglas:

Si una señal es leída en el interior de un proceso (aparece en el lado derecho de una sentencia de asignación o en una condición), debe aparecer en su lista de sensibilidad.

Si a una señal se le asigna un valor de forma condicional (con sentencias if o case) nos debemos asegurar que no existen condiciones para las cuales el valor de la señal no se ha definido en el código. En VHDL las señales mantienen su valor hasta que se les asigna uno nuevo; por lo tanto, si para una señal dada el valor de una señal está indefinido, el compilador sintetiza un latch (biestable) que almacena la señal.

MULTIPLEXORES Un circuito multiplexor acepta N entradas y presenta una salida en la que aparecerá el valor lógico asociado a una de estas entradas. La selección de cuál de esas entradas es la que aparece en la salida se determina por un conjunto de M señales de control, cumpliéndose que N = 2M. La salida presentará aquella entrada cuyo índice concuerda con el número codificado en binario en las líneas de control (o selección).

· Ej_1: Multiplexor 4 a 1. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Multiplexor4a1 IS PORT ( svEntrada: IN std_logic_vector(3 DOWNTO 0); sSalida: OUT std_logic; svSeleccion: IN std_logic_vector(1 DOWNTO 0)); END Multiplexor4a1; ARCHITECTURE Multiplexor4a1Arch OF Multiplexor4a1 IS BEGIN WITH svSeleccion SELECT sSalida <= svEntrada(0) WHEN "00", svEntrada(1) WHEN "01", svEntrada(2) WHEN "10", svEntrada(3) WHEN OTHERS; -- Importante. No olvidar. END Multiplexor4a1Arch;

DECODIFICADORES Un decodificador es un circuito lógico con N entradas y 2N salidas que funciona de forma tal que en cada instante se encuentra activa la salida correspondiente con la codificación binaria codificada en la entrada. · Ej_2: Decodificador 3 a 8 con salida activa a nivel alto.

LIBRARY IEEE;

Page 7: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 7

USE IEEE.STD_LOGIC_1164.ALL; ENTITY Decodificador3a8 IS PORT ( svEntrada: IN std_logic_vector(2 DOWNTO 0); svSalida: OUT std_logic_vector(7 DOWNTO 0)); END Decodificador3a8; ARCHITECTURE Decodificador3a8Arch OF Decodificador3a8 IS BEGIN WITH svEntrada SELECT -- Orden salidas: "76543210" svSalida <= "00000001" WHEN "000", "00000010" WHEN "001", "00000100" WHEN "010", "00001000" WHEN "011", "00010000" WHEN "100", "00100000" WHEN "101", "01000000" WHEN "110", "10000000" WHEN OTHERS; END Decodificador3a8Arch;

Ej_3: Decodificador 3 a 8 con salida activa a nivel alto y con señal de enable (Versión Concurrente). LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Decodificador3a8En IS PORT ( svEntrada: IN std_logic_vector(2 DOWNTO 0); svSalida: OUT std_logic_vector(7 DOWNTO 0); sEnableH: IN std_logic); END Decodificador3a8En; ARCHITECTURE Decodificador3a8EnArch OF Decodificador3a8En IS --Señal auxiliar para una asignación concurrente intermedia. signal svAux: std_logic_vector(7 DOWNTO 0); BEGIN --Asignación del valor temporal WITH svEntrada SELECT -- "76543210" svAux <= "00000001" WHEN "000", "00000010" WHEN "001", "00000100" WHEN "010", "00001000" WHEN "011", "00010000" WHEN "100", "00100000" WHEN "101", "01000000" WHEN "110", "10000000" WHEN OTHERS; --Asignación a la salida en función de la señal de ENABLE. svSalida <= svAux WHEN sEnableH = '1' ELSE "00000000";

END Decodificador3a8EnArch;

Ej_4: Decodificador 3 a 8 con salida activa a nivel alto y con señal de enable (Versión Secuencial). LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Decodificador3a8En IS PORT ( svEntrada: IN std_logic_vector(2 DOWNTO 0); svSalida: OUT std_logic_vector(7 DOWNTO 0); sEnableH: IN std_logic); END Decodificador3a8En; ARCHITECTURE Decodificador3a8EnArch2 OF Decodificador3a8En IS BEGIN DecEnable: PROCESS (svEntrada, sEnableH) BEGIN -- Definición del proceso de forma secuencial (estructura IF..ELSE).

Page 8: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 8

IF (sEnableH='1') THEN CASE svEntrada IS WHEN "000" => svSalida <= "00000001"; WHEN "001" => svSalida <= "00000010"; WHEN "010" => svSalida <= "00000100"; WHEN "011" => svSalida <= "00001000"; WHEN "100" => svSalida <= "00010000"; WHEN "101" => svSalida <= "00100000"; WHEN "110" => svSalida <= "01000000"; WHEN OTHERS => svSalida <= "10000000"; END CASE; ELSE svSalida <= "00000000"; END IF; END PROCESS DecEnable; END Decodificador3a8EnArch2;

· Ej_5: Decodificador BCD a display de 7 segmentos (Ánodo Común). Ánodo común Þ Cada segmento se enciende con ‘0’. Cátodo común Þ Cada segmento se enciende con ‘1’.

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DecodificadorBCD7seg IS PORT ( svEntrada: IN std_logic_vector(3 DOWNTO 0); svSalida: OUT std_logic_vector(6 DOWNTO 0)); END DecodificadorBCD7seg; ARCHITECTURE DecodificadorBCD7segArch OF DecodificadorBCD7seg IS BEGIN Dec7seg: PROCESS (svEntrada) BEGIN CASE svEntrada IS -- Orden de las salidas (segmentos) “abcdefg” WHEN "0000" => svSalida <= "0000001"; WHEN "0001" => svSalida <= "1001111"; WHEN "0010" => svSalida <= "0010010"; WHEN "0011" => svSalida <= "0000110"; WHEN "0100" => svSalida <= "1001100"; WHEN "0101" => svSalida <= "0100100"; WHEN "0110" => svSalida <= "0100000"; WHEN "0111" => svSalida <= "0001110"; WHEN "1000" => svSalida <= "0000000"; WHEN "1001" => svSalida <= "0000100"; WHEN OTHERS => svSalida <= "1111111"; END CASE; END PROCESS Dec7seg; END DecodificadorBCD7segArch;

CODIFICADORES Un codificador es un circuito lógico con 2N entradas y N salidas que funciona de forma tal que en cada instante se encuentra codificado en binario en la salida el número decimal correspondiente a la entrada activa. Es necesario establecer una prioridad para los casos en los que sean varias las entradas activas en un momento determinado. · Ej_6: Codificador 8 a 3.

Page 9: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 9

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Codificador8a3 IS -- El uso de un rango clarifica el código. PORT ( iEntrada: IN INTEGER RANGE 0 TO 7; svSalida: OUT std_logic_vector(2 DOWNTO 0)); END Codificador8a3; ARCHITECTURE Codificador8a3Arch OF Codificador8a3 IS BEGIN Codif: PROCESS (iEntrada) BEGIN -- El uso de una estructura tipo IF_THEN_ELSE -- permite establecer de forma clara la prioridad -- del proceso de codificación. IF iEntrada = 0 THEN svSalida <= "000"; ELSIF iEntrada = 1 THEN svSalida <= "001"; ELSIF iEntrada = 2 THEN svSalida <= "010"; ELSIF iEntrada = 3 THEN svSalida <= "011"; ELSIF iEntrada = 4 THEN svSalida <= "100"; ELSIF iEntrada = 5 THEN svSalida <= "101"; ELSIF iEntrada = 6 THEN svSalida <= "110"; ELSE svSalida <= "111"; END IF; END PROCESS; END Codificador8a3Arch;

· Ej_7: Codificador 8 a 3. Uso de la macro NULL. VHDL’93 soporta la macro NULL, la cual permite

dar aún más claridad a la descripción de funcionamiento de los elementos modelados en VHDL. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Codificador8a3 IS -- El uso de un rango clarifica el código. PORT ( iEntrada: IN INTEGER RANGE 0 TO 7; svSalida: OUT std_logic_vector(2 DOWNTO 0)); END Codificador8a3; ARCHITECTURE Codificador8a3Arch OF Codificador8a3 IS BEGIN Codif: PROCESS (iEntrada) BEGIN -- El uso de una estructura tipo IF_THEN_ELSE -- permite establecer de forma clara la prioridad -- del proceso de decodificación. IF iEntrada = 0 THEN svSalida <= "000"; ELSIF iEntrada = 1 THEN svSalida <= "001"; ELSIF iEntrada = 2 THEN svSalida <= "010"; ELSIF iEntrada = 3 THEN svSalida <= "011"; ELSIF iEntrada = 4 THEN svSalida <= "100"; ELSIF iEntrada = 5 THEN svSalida <= "101"; ELSIF iEntrada = 6 THEN svSalida <= "110"; ELSIF iEntrada = 7 THEN svSalida <= "111"; ELSE NULL; -- La sentencia ELSE NULL; indica de forma clara que ante otras posibles -- valores no controlados asociados a la entrada, el circuito no hará nada. -- Suele ser muy útil con el tipo std_logic, donde valores como ‘Z’, ‘H’, ‘L’, ‘U’… -- contemplados por este tipo podrían originar comportamientos extraños. END IF; END PROCESS; END Codificador8a3Arch;

Page 10: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 10

DISPOSITIVOS TRIESTADO Los dispositivos triestado básicamente consisten en componentes básicos combinacionales que presentan una señal adicional que permite controlar la salida, de forma que ésta presente un funcionamiento en condiciones normales o pase a un estado adicional de alta impedancia ‘Z’, de forma que no interfiera eléctricamente con otros elementos que podrían compartir la ruta de datos conectada a su salida.

TIPOS DE DESCRIPCION

Como se ha dicho antes, VHDL sirve para describir un circuito electrónico, pero el mismo circuito puede ser descrito de varias formas. Las formas de hacerlo son:

Descripción de comportamiento Descripción de flujo de datos (RTL Registred Transfer Level) Descripción estructural

A continuación se presenta una descripción de cada tipo de descripción y un ejemplo en VHDL, obviamente aún no se ha visto la sintaxis de VHDL por lo que habrá partes del código que el lector no pueda entender. El código se pone sólo para poder comparar las distintas formas de descripción. Los tres ejemplos de código son sólo las arquitecturas, los tres podrían tener como entidad:

ENTITY mux PORT(control, entrada1, entrada2: IN BIT; salida: OUT BIT); END mux;

DESCRIPCION DE COMPORTAMIENTO

Una descripción de comportamiento de un multiplexor de dos entradas, una salida y una señal de selección sería: la salida será igual a la primera entrada si la señal de control está desactivada y la salida será la segunda entrada si la señal de control está activada.

En VHDL la arquitectura de este multiplexor para la entidad llamada mux sería:

ARCHITECTURE mux_comportamiento OF mux IS BEGIN PROCESS(entrada1, entrada2, control) BEGIN IF(control = '0') THEN salida <= entrada1; ELSE salida <= entrada2; END IF;

Page 11: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 11

END PROCESS; END mux_comportamiento;

DESCRIPCION DE FLUJO DE DATOS

En una descripción de flujo de datos del mismo multiplexor la salida sería la ecuación lógica: s=(entrada1 AND NOT control) OR (entrada2 AND control)

En VHDL la arquitectura sería:

ARCHITECTURE mux_rtl OF mux IS SIGNAL int1, int2, int3 : BIT; BEGIN int1 <= NOT control; int2 <= entrada1 AND int1; int3 <= entrada2 AND control; salida <= int2 OR int3; END mux_rtl;

Esta descripción hay varias instrucciones concurrentes, por lo que son ejecutadas cada vez que una señal interviene en su asignación. Realmente, se trata casi de una descripción estructural, puesto que se están describiendo señales y sus componentes. Aunque también son asignaciones a señales y no una lista de componentes y sus conexiones. En el siguiente ejemplo se muestra una descripción de flujo de datos pura.

ARCHITECTURE mux_rtl OF mux IS BEGIN salida <= entrada1 WHEN control = '0' ELSE entrada2; END mux_rtl;

DESCRIPCION ESTRUCTURAL

Una descripción estructural consistiría en decir que el circuito tiene una puerta inversora U1, dos puertas AND de dos entradas U2 y U3 y una puerta lógica OR de dos entradas U4, además también describe las conexiones entre estas puertas, un ejemplo sería: la entrada de U1 es la señal de control, la salida de U1 se conecta a la segunda entrada de U2, la primera entrada de U1 es entrada1, etc.

El código VHDL sería:

ARCHITECTURE mux_estructural OF mux IS

Page 12: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 12

SIGNALl int1, int2,int3:bit; BEGIN U1: inversor PORT MAP(control, int1); U2: and_2_entradas PORT MAP(entrada1, int1, int2); U3: and_2_entradas PORT MAP(entrada2, control, int3); U4: or_2_entradas PORT MAP(int2, int3, salida); END mux_estructural;

En el código anterior se deberían haber definido previamente las puertas inversor, and_2_entradas y or_2_entradas

OBTENCION DEL SOFTWARE DE SIMULACION TINA

http://www.mediafire.com/?w2e2g9cqrv8pmoa

Descomprimimos el archivo.rar en una carpeta de nombre: DesignSoft Tina Industrial V8”, abrimos

y ejecutamos el archivo .exe

Page 13: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 13

Aparecerá el asistente para la instalación

Page 14: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 14

Luego de finalizar la instalación, volvemos a la carpeta DesignSoft Tina Industrial V8.0 y abrimos la

carpeta crack y le damos COPIAR al archivo PCB_Key.exe

Lo PEGAMOS en la carpeta raíz de Tina que es C:\DesignSoft\Tina-8 Industrial

Page 15: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 15

Lo ejecutamos, vamos a ayuda ->autorización ->autorizar ->otros y rellenamos el cuadro de texto

SITEKEY con 0000-0000-0000-0000-0000-0000-0000-0000-0000-0000-0000-0000-00, le damos

OK y tendremos activada la licencia. Cerramos el PCB_Key.exe

Iniciamos Tina

Page 16: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 16

DESARROLLO DE LOS CIRCUITOS:

Pasos para la solución ejercicio 3:

Ir a la barra de MENU opción TOOLS, luego en el submenú elegir New Macro Wizard; En la

ventana emergente colocamos el nombre del elemento que deseamos crear, solo dejamos la

casilla de verificación AUTOGENERATED, entendiéndose que las demás deberán de quedar sin

marcar; colocamos el mismo nombre en DEFAULT LABEL, para cargar el vhd respectivo damos clic

en el botón a la derecha de CONTENT, buscamos el archivo correspondiente .vhd ACEPTAR

A continuación, aparecerá otra ventana emergente donde guardaremos el archivo con el mismo

nombre pero con la extensión .TSM

Page 17: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 17

Ahora vamos de nuevo a la barra de MENU->INSERT->MACRO

Elegimos el elemento que deseamos aplicar, del conjunto de archivos .TSM y luego ACEPTAR

Page 18: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 18

Cuando tenemos los diferentes tipos de elementos MSI que integraran nuestro circuito, podemos

copiarlo y pegarlo las veces que lo necesitemos, en el ejemplo puede observarse que tanto el FULL

ADDER como el MUX_2a1, se necesitan 4 veces cada uno para obtener el circuito deseado

Page 19: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 19

Luego insertamos los SWITCHES necesarios, realizamos las conexiones pertinentes con la

herramienta WIRE, si fuere necesario, incluir compuertas básicas como en este caso se utiliza de la

barra de herramientas GATES->INVERTER o cualesquiera que se consideren para cada caso

CODIGOS .VHD

EJERCICIO 1

DECODER 3 A 8

library IEEE; use IEEE.STD_LOGIC_1164.all; entity DECODER is port( A : in STD_LOGIC; B : in STD_LOGIC; C : in STD_LOGIC; Y : out STD_LOGIC_VECTOR (7 downto 0) ); end DECODER; architecture DECODER1 of DECODER is signal ABC : STD_LOGIC_VECTOR (2 downto 0) ; begin ABC <= A & B & C ; with ABC select Y <= "00000001" when "000", "00000010" when "001", "00000100" when "010", "00001000" when "011", "00010000" when "100", "00100000" when "101", "01000000" when "110", "10000000" when others ; end DECODER1;

CODER 8 A 3

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity CODER_8A3 is

port(

A : in STD_LOGIC;

B : in STD_LOGIC;

C : in STD_LOGIC;

D : in STD_LOGIC;

E : in STD_LOGIC;

F : in STD_LOGIC;

G : in STD_LOGIC;

H : in STD_LOGIC;

Y : out STD_LOGIC_VECTOR (2 downto 0)

);

Page 20: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 20

end CODER8A3;

architecture CODER_8A3 of CODER8A3 is

signal ABCDEFGH : STD_LOGIC_VECTOR (7 downto 0) ;

begin

ABCDEFGH <= A & B & C & D & E & F & G & H ;

with ABCDEFGH select Y <=

"111" when "10000000",

"110" when "01000000",

"101" when "00100000",

"100" when "00010000",

"011" when "00001000",

"010" when "00000100",

"001" when "00000010",

"000" when others ;

end CODER_8A3;

CODIGO MUX 2 A 1 DE UN BIT

ENTITY mux_2a1 IS

PORT(

A, B, S: IN BIT;

X: OUT BIT);

END mux_2a1;

ARCHITECTURE arch_mux OF mux_2a1 IS

BEGIN

X <= (((NOT S) AND A) OR (S AND B));

END arch_mux;

CODIGO FULL ADDER

ENTITY full_adder IS

PORT(

A, B, Cin: IN BIT;

SUM,Cout: OUT BIT);

END full_adder;

ARCHITECTURE arch_adder OF full_adder IS

BEGIN

SUM <= (NOT A AND NOT B AND Cin) OR (NOT A AND B AND NOT Cin) OR (A AND NOT B AND NOT Cin) OR (A AND B

AND Cin);

Cout <= (NOT A AND B AND Cin) OR (A AND NOT B AND Cin) OR (A AND B AND NOT Cin) OR (A AND B AND Cin);

END arch_adder;

DEMULTIPLEXOR 2 A 4 CON 2 VARIABLES DE SELECCIÓN

library IEEE; use IEEE.STD_LOGIC_1164.all; entity DEMUX is port( S1 : in STD_LOGIC; S2 : in STD_LOGIC; X : in STD_LOGIC; Y : out STD_LOGIC_vector(3 downto 0) );

Page 21: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 21

end DEMUX; architecture DEMUXF of DEMUX is signal S1S2 : STD_LOGIC_VECTOR (1 downto 0) ; begin S1S2 <= S1 & S2 ; process (S1,S2, X) begin case S1S2 is when "00" => Y(0) <= X; Y(1) <= '0'; Y(2) <= '0'; Y(3) <= '0'; when "01" => Y(0) <= '0'; Y(1) <= X; Y(2) <= '0'; Y(3) <= '0'; when "10" => Y(0) <= '0'; Y(1) <= '0'; Y(2) <= X; Y(3) <= '0'; when "11" => Y(0) <= '0'; Y(1) <= '0'; Y(2) <= '0'; Y(3) <= X; when others => Y(0) <= '0'; Y(1) <= '0'; Y(2) <= '0'; Y(3) <= '0'; end case; end process; end DEMUXF;

MUX DE 2 A 1 DE 4 BITS use IEEE.STD_LOGIC_1164.all; entity MUX2A1 is port( X1 : in STD_LOGIC; X2 : in STD_LOGIC; S : in STD_LOGIC; Y : out STD_LOGIC ); end MUX2A1; architecture MUX2A1A of MUX2A1 is begin Y <= X1 when S = '1' else X2; end MUX2A1A;

Se utilizo el código del MUX de 2 a 1 de un bit y se utilizo conexiones en cascada para su implementacion

EJERCICIO 2

NO SE UTILIZO CODIGO VHDL

EJERCICIO 3

ENTITY full_adder IS PORT( A, B, Cin: IN BIT; SUM,Cout: OUT BIT); END full_adder;

Page 22: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 22

ARCHITECTURE arch_adder OF full_adder IS BEGIN SUM <= (NOT A AND NOT B AND Cin) OR (NOT A AND B AND NOT Cin) OR (A AND NOT B AND NOT Cin) OR (A AND B AND Cin); Cout <= (NOT A AND B AND Cin) OR (A AND NOT B AND Cin) OR (A AND B AND NOT Cin) OR (A AND B AND Cin); END arch_adder;

Para la implementación se utilizaron Sumadores Totales conectados en paralelo y compuertas basicas

GRAFICOS DE CADA CIRCUITO EN TINA

DECODER 3 A 8

CODER 8 A 3

Page 23: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 23

MULTIPLEXOR DE 2 A 1

DEMULTIPLEXOR DE 1 A 4

Page 24: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 24

FULL ADDER

MULTIPLEXOR 2 A 1 DE 4 BITS

Page 25: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 25

CAPTURAS DEL FUNCIONAMIENTO DE LOS CIRCUITOS

EJERCICIO 1

DECODER 3 A 8

Page 26: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 26

Page 27: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 27

CODER 8 A 3

Page 28: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 28

MUX 2 A 1 DE UN BIT

Page 29: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 29

DEMULTIPLEXOR DE DOS VARIABLES DE SELECCIÓN

Page 30: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 30

FULL ADDER

Page 31: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 31

MUX DE 2 A 1 DE 4 BITS

Page 32: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 32

EJERCICIO 2

Page 33: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 33

EJERCICIO 3

Page 34: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 34

Page 35: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 35

RESULTADOS DE LA INVESTIGACION

Bibliotecas

Una biblioteca en VHDL es un lugar en donde se guarda la información relacionada con un diseño determinado. Al comienzo de cada diseño el compilador crea automáticamente una biblioteca llamada WORK con este objetivo. Además de esta biblioteca particular existen otras bibliotecas de tipo general que contienen un conjunto de definiciones que pueden utilizarse en cualquier diseño. Un ejemplo de biblioteca general es la llamada Library IEEE, que contiene definiciones estándar para VHDL. Para utilizar una biblioteca general es necesario escribir su nombre al inicio del programa, por eso es muy común que en la primera línea de un diseño en VHDL aparezca escrito "Library IEEE", de ésta forma dicha biblioteca se hace visible para el diseño.

Paquetes

En los paquetes se guardan definiciones de tipos y objetos que pueden ser utilizados en los diferentes diseños que invoquen su utilización. Un paquete muy utilizado es el paquete estándar IEEE_STD_LOGIC_1164.ALL; La utilización de un paquete en un diseño se realiza invocando su empleo mediante la cláusula USE y el nombre del paquete. Por ejemplo USE IEEE_STD_LOGIC_1164.ALL;

La terminación ALL, permite utilizar todas las definiciones y objetos que contiene dicho paquete. Además del estándar, existen otros paquetes de utilización general y también los diseñadores que trabajan con VHDL pueden definir sus propios paquetes, lo que les permite reutilizar diseños realizados anteriormente como parte de nuevos diseños.

Sintaxis para la definición de paquetes.

La sintaxis para la definición de un paquete es la siguiente:

PACKAGE nombre_paquete IS

Declaración de tipos

Declaración de señales.

Declaración de constantes

Declaración de componentes

Definición de funciones

Definición de procedimientos

END nombre_paquete

PACKAGE BODY nombre_paquete IS

Declaración de tipos

Declaración de constantes

Definición de funciones

Definición de procedimientos

END nombre_paquete

Esta última parte que aparece entre los dos END, la relacionada con el cuerpo del paquete puede o no existir y en el caso de existir las declaraciones y definiciones contenidos en la misma son

Page 36: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 36

locales, visibles solo dentro del paquete, mientras que las declaraciones y definiciones contenidas en la primera parte del paquete son visibles para todos los diseños que los utilicen.

Sintaxis para la declaración de una componente en VHDL

COMPONENT nombre_componente

PORT ( Nombre de señal: modo tipo de señal;

...

Nombre de señal: modo tipo de señal);

END COMPONENT;

Extensión (Overload) de los operadores en VHDL La validez de los operadores dados anteriormente se ha extendido a otros tipos para los que no estaban originalmente definidos. Por ejemplo el paquete estándar IEEE.Std_Logic_1164 define la extensión de los operadores lógicos para los tipos std_logic y Std_logic_Vector. Sin embargo la extensión de los operadores de relación y aritméticos para los tipos std_logic y std_logic_vector no están definidos en el paquete standard sino en otro paquete llamado Work_Std_arith. DISEÑO JERARQUICO EN VHDL En VHDL un diseño puede utilizar componentes que son a su vez otros circuitos o sistemas más sencillos previamente diseñados. Esto constituye una gran ventaja pues facilita el trabajo en equipo y la distribución de tareas entre distintos grupos de diseñadores. A medida que se sube hacia el nivel de jerarquía máxima la arquitectura se hace más general mientras que en los niveles inferiores el grado de detalles es mayor.

Librerias

Las principales librerías VHDL son las siguientes:

STD: Contiene los paquetes standard y texto. Work: Es la librería donde se almacenan por defecto las unidades de diseño una

vez compiladas. IEEE: Contiene paquetes para tipos std_logic, unsigned, paquetes aritméticos, etc.

Las proporciona la propia herramienta de desarrollo. Synopsys: Define los operadores y vectores derivados de IEEE.

Vital: Librería para soporte de simulación a nivel de puertas. Las proporciona la propia herramienta de diseño.

LIBRERIA PACKGE DESCRIPCION STD Standard Define los tipos y subtipos básicos de

VHDL: boolean, bit, bit_vector,

character, string, integer, real, time,

etc.

STD textio Define tipo de datos como ‘line’ y

‘text’ y procedimientos de lectura y

escritura en archivos.

WORK Librería por defecto donde se almacenan

las unidades de diseño del usuario.

IEEE Std_logic_1164 Define los tipos std_logic y

std_logic_vector.

Page 37: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 37

IEEE Numeric_std Define los tipos signed y unsigned y

operaciones aritméticas entre Ellos

Define los tipos signed y unsigned y

operaciones aritméticas entre ellos.

IEEE Std_logic_arith Define operaciones aritméticas con

signo, operaciones de conversión y

comparación para std_logic_vector.

IEEE Std_logic_signed Define operaciones aritméticas sin

signo, operaciones de conversión Y

comparación para std_logic_vector.

IEEE Std_logic_textio Define tipos de datos y procedimientos

de lectura y escritura de archivos para

std_logic y std_logic_vector.

IEEE numeric_bit Define funciones extendidas y de

conversión para dichos tipos.

IEEE numeric_std Paquete equivalente al Paquete

std_logic_arith.

SYNOPSYS

std_logic_unsigned Define operadores aritméticos sobre el

tipo std_ulogic_vector y los considera

como operadores no-signados.

SYNOPSYS

std_logic_misc Define tipos, subtipos, constantes y

funciones complementarios para el

paquete std_logic_1164.

OBSERVACIONES

El lenguaje VHDL, se caracteriza por la similitud con otros editores mayormente difundidos o de gran comercialización, como c o c++, además se destaca la característica principal que puede ser exportado en muchos editores como TINA, para el modelo de circuitos de mayor complejidad

La versatilidad que ofrece TINA, en cuanto a la facilidad que ofrece su simulador para la creación de circuitos que contienen el mismo elemento un sin número de veces, bastara con insertar la macro una vez, para disponer de ella simplemente copiando y pegando cuantas veces fuere necesario

La creación o diseño de circuitos, resulta muy fácil en TINA, este brinda las herramientas adecuadas en un estilo y formato muy legible para todo tipo de usuarios, esto significa que tanto diseñadores profesionales como principiantes, encuentran muy favorable el desarrollo en esta plataforma industrial

Page 38: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 38

CONCLUSIONES

En cuanto al desarrollo de la investigación y en base a los objetivos definidos para la realización de esta podemos concluir que:

El uso de las librerías VHDL, permiten la creación de circuitos MSI de gran complejidad, ya que estas ofrecen funciones predefinidas que simplemente han de cargarse para su uso

El Software de diseño Tina, permite gracias a su versatilidad, no solo la creación de códigos vhdl, sino también la simulación respectiva en un ambiente grafico que nos ofrece gran calidad

Diversos manuales inyectan una documentación de gran profundidad, si se quiere ser un desarrollador mas experto en la creación de código VHDL

La simulación de los circuitos nos permitió realizar las pruebas necesarias, ajustando los valores a diversos escenarios, que necesariamente se identificaran con los aspectos de un ambiente real

El desarrollo de diferentes elementos MSI en TINA, permite al estudiante observar de forma más cercana, las operaciones que diferencian a cada elemento MSI, atendiendo con particularidad cada característica que los desenvuelve en su desempeño

La obtención del software para efectos estudiantiles no está considerada por los desarrolladores de TINA,

Page 39: SimulacionVHDLCircuitosMSI

SIMULACION VHDL DE CIRCUITOS MSI

Universidad de El Salvador Página 39

BIBLIOGRAFIA

http://www.cannic.uab.es/docencia/vhdli06/Capitol5/Cap5_a.htm

http://es.wikipedia.org/wiki/Paquetes VHDL

Digital Principles Switching Theory, A.K. Singh, Arun Prakash

Circuitos combinacionales y puertas lógicas; Luis Corcoles, José Torre, Universidad Rey

Juan Carlos

Diseño de Sistemas Combinacionales Con VHDL; Andrés Iborra

Nelson, Víctor P; Análisis y Diseño de Circuitos Lógicos Digitales, Prentice-Hall, México 1996