Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Implementar el uso de herramientas informticas para el anlisis de Circuitos Digitales, adems de implementar e incrementar el diseo y la destreza en la carrera de Ingeniera Elctrica. Comprender el buen uso de los paquetes informticos de simulacin como el GTKwave; implementado en el diseo, desarrollo y anlisis de Circuitos Digitales.
Introduccin En el presente informe se comienza a dar un breve conocimiento sobre como solocionar circuitos con compuertas utilizando un leguaje de programacion VHDL en el cual se implemetara un entorno grafico de simulacion llamado GTKWAVE, en el reporte se trabajara con UBUNTU ,para entrar un poco sobre la utilizacion de estos programas se resolveran varios circuitos en donde se mostrara como compilar ,las simulaciones tal como la instalacion se haran atravez de la terminal de ubuntu
Marco Terico. Un complejo diseo electrnico puede necesitar cientos de miles de componentes lgicos Para describir correctamente su funcionamiento. Estos diseos necesitan que sean organizados de una forma que sea fcil su comprensin. Una forma de organizar el diseo es la creacin de un diseo modular jerrquico tal y como se ha venido viendo cuando se explicaba el flujo de diseo top-down. Una jerarqua consiste en construir un nivel de descripcin funcional de diseo debajo de otro de forma que cada nuevo nivel posee una descripcin ms detallada del sistema. La construccin de diseos jerrquicos es la consecuencia inmediata de aplicar el flujo de diseo top-down. Los circuitos de escala de integracin media y alta (MSI y LSI respectivamente) se disearon mediante la realizacin de un prototipo formado por mdulos ms sencillos y la comprobacin de su funcionamiento antes de proceder a la integracin. Esta forma de diseo recibe el nombre de abajo a arriba (bottom-up) porque se enlazan diversos mdulos para constituir un bloque funcional ms complejo. Pero en el caso de los circuitos integrados de complejidad VLSI y superiores no resulta prctica la realizacin fsica de un prototipo y por ello es necesario simular y verificar su correcto comportamiento antes de integrarlos. Ello trajo consigo la necesidad del desarrollo de mtodos de diseo asistido por computador divididos en varias fases que, a partir de la especificacin del funcionamiento, llevan hasta la descripcin fsica del circuito, por lo que reciben el nombre de arriba a abajo (top-down). As, mediante simulacin es posible una rpida deteccin de errores en fases tempranas del diseo, resulta factible la reutilizacin del mismo para diferentes tecnologas y se pueden utilizar las herramientas de sntesis actuales para obtener rpidamente un esquema lgico o estructural y, en definitiva, una netlist de entrada para el trazado fsico (layout) del ASIC, MCM, etc. o la asignacin de recursos (mapping) en el caso de la lgica programable (PLDs y FPGAs).Todo ello, obviamente, incrementa la productividad y la eficacia del diseo. No existe unanimidad en lo que se refiere al establecimiento de las distintas fases del diseo de un sistema digital complejo, aunque la necesidad de sistematizar esta metodologa ha llevado al establecimiento y progresiva aceptacin de algunas propuestas. En la figura 1.1 se representa una bastante aceptada que divide el diseo en siete niveles o formas de caracterizacin, tambin denominados niveles de abstraccin por cuanto establecen la cantidad de informacin que se especifica de un circuito o el nivel de detalle en que se encuentra una descripcin respecto de su implementacin fsica. VHDL es el acrnimo que representa la combinacin de VHSIC y HDL, donde VHSIC es el acrnimo de Very High Speed Integrated Circuit y HDL es a su vez el acrnimo de Hardware Description Language. Es un lenguaje definido por el IEEE (Institute of Electrical and Electronics Engineers) (ANSI/IEEE 1076-1993) usado por ingenieros para describir circuitos digitales. Otros mtodos para disear circuitos son la captura de esquemas (con herramientas CAD) y los diagramas de bloques, pero stos no son prcticos en diseos complejos. Otros lenguajes para el mismo propsito son Verilog y ABEL. Un lenguaje de programacin ofrece la posibilidad de un alto nivel de abstraccin y es la solucin adecuada para dicha tarea. Entre los lenguajes para la descripcin de circuitos
digitales, el VHDL es el que est alcanzando mayor popularidad, por ser un estndar y por su amplio campo de aplicacin, desde el modelado para la simulacin de circuitos, hasta la sntesis automtica de circuitos. El significado de las siglas VHDL es Very high speed integrated circuit (VHSIC) Hardware Description Language. VHDL es una forma en que los humanos y las mquinas puedan leer y entender la funcionalidad y la organizacin de sistemas hardware digitales. Las ventajas del VHDL son: -Permite disear y modelar un sistema en varios niveles de abstraccin: flujo de datos, estructural, algortmico. -Una descripcin en VHDL es independiente de la implementacin hardware final del proyecto. Puede ser sintetizado sobre una PLD o un ASIC. Incluso puede servir para simulacin exclusivamente. -Permite el diseo Top-Down y modular, es decir, dividir un sistema complicado en subsistemas ms sencillos, tantas veces como sea necesario hasta poder resolver cada mdulo (subsistema) por separado. Ello facilita la prueba de cada mdulo independientemente y da ms seguridad al correcto funcionamiento del sistema final. VHDL ofrece sus propias maneras de definir "subprogramas". -Es un estndar (IEEE Std 1076-1987, IEEE Std 1076-1993). No obstante, hay que decir que cada fabricante ofrece sus propias libreras con funciones tiles no definidas en el estndar. Por ello, el paso de un entorno de programacin a otro no es trivial. Nosotros suponemos que trabajamos con el estndar del ao 93. Inicialmente, VHDL fue diseado para el modelado de circuitos digitales. Su utilizacin en sntesis (implementacin hardware) no es inmediata, aunque la sofisticacin de las actuales herramientas es tal que permite implementar diseos en un alto nivel de abstraccin.
Desarrollo de los circuitos. Circuito N1. Para el desarrollo de esta prctica, solo simulamos el circuito con la ecuacin lgica que sala de l. C = (A OR B)AND(NOT (A AND B)) D= (NOT A) AND B El cdigo queda de la siguiente manera: PARTE A.
--con un periodo de 8ms ENTITY com IS PORT( a,b :IN BIT;--variables de entrada c,d :OUT BIT);--variables de salida END com; ARCHITECTURE ar_com OF com IS BEGIN c <= ((a OR b)AND NOT (a AND b));--aqui hacemos la operacion logica d <= (b AND NOT a);--la operacion logica para la salida d END ar_com; ENTITY tb_com IS END tb_com;
para la salida c
a,b :IN BIT; c,d :OUT BIT); END COMPONENT com; SIGNAL ent1:bit:='0'; SIGNAL ent2:bit:='0'; SIGNAL sal1:bit; SIGNAL sal2:bit; BEGIN ckt1:com PORT MAP ( a => b => c => d => ); PROCESS BEGIN
WAIT ent2 WAIT ent2 ent1 WAIT ent2 WAIT ent1 ent2
FOR 8 ms; <= '1'; FOR 8 ms; <= '0'; <= '1'; FOR 8 ms; <= '1'; FOR 8 ms; <= '0'; <= '0';
PARTE B. Archivo.
--con un periodo de 4ms ENTITY com IS PORT( a,b :IN BIT;--variables de entrada c,d :OUT BIT);--variables de salida END com; ARCHITECTURE ar_com OF com IS BEGIN c <= ((a OR b)AND NOT (a AND b));--aqui hacemos la operacion logica d <= (b AND NOT a);--la operacion logica para la salida d END ar_com;
para la salida c
Testbench
ENTITY tb_com IS END tb_com; ARCHITECTURE ar_com OF tb_com IS COMPONENT com IS PORT ( a,b :IN BIT; c,d :OUT BIT); END COMPONENT com; SIGNAL ent1:bit:='0'; SIGNAL ent2:bit:='0'; SIGNAL sal1:bit; SIGNAL sal2:bit; BEGIN ckt1:com PORT MAP ( a => b => c => d => );
PROCESS BEGIN
WAIT ent2 WAIT ent2 ent1 WAIT ent2 WAIT ent1 ent2
FOR 4 ms; <= '1'; FOR 4 ms; <= '0'; <= '1'; FOR 4 ms; <= '1'; FOR 4 ms; <= '0'; <= '0';
Circuito N2 Para el desarrollo de este circuito se sigui el ejercicio anterior como ejemplo, del cual salieron las siguientes ecuaciones para las salidas.
salida1 <= (((NOT(a))AND(NOT(b))AND(C)AND(D)) OR ((NOT(a))AND(b)AND(NOT(d))) OR ((a)AND(NOT(b))AND(NOT(d)))) salida2 <=(((NOT(a))AND(b)AND(NOT(c))AND(d)) OR ((NOT(a))AND(b)AND(c)AND(NOT(d))) OR ((a)AND(NOT(b))AND(c)AND(d)) OR ((a)AND(NOT(c))AND(NOT(d)))) salida3 <= (((NOT(a))AND(b)AND(c)AND(d)) OR ((a)AND(NOT(b))AND(NOT(c))AND(d)) OR ((a)AND(NOT(b))AND(c)AND(NOT(d))) OR ((b)AND(NOT(c))AND(NOT(d))));
El cdigo queda de la siguiente manera. --con un periodo tOtal de 16 ms ENTITY circuito2 IS PORT( a,b,c,d salida1 salida2 salida3 : : : : IN BIT; --variables de entrada. OUT BIT; -- variable de salida 1 OUT BIT; --variable de salida 2 OUT BIT); --variable de salida 3
END circuito2; ARCHITECTURE ar_circuito2 OF circuito2 IS BEGIN -- definicion de la salida 1 salida1 <= (((NOT (a))AND(NOT(b))AND(C)AND(D))OR((NOT(a))AND(b)AND(NOT(d)))OR((a)AND(NOT(b))AND(NOT(d)))); --definicion de la salida 2 salida2 <= (((NOT(a))AND(b)AND(NOT(c))AND(d))OR((NOT(a))AND(b)AND(c)AND(NOT(d)))OR((a)AND(NOT(b))AND(c) AND(d))OR((a)AND(NOT(c))AND(NOT(d)))); --definicion de la salida 3 salida3 <= (((NOT(a))AND(b)AND(c)AND(d))OR((a)AND(NOT(b))AND(NOT(c))AND(d))OR((a)AND(NOT(b))AND(c)AND(N OT(d)))OR((b)AND(NOT(c))AND(NOT(d)))); END ar_circuito2;
a,b,c,d : salida1 : salida2 : salida3 : END COMPONENT circuito2; SIGNAL SIGNAL SIGNAL SIGNAL SIGNAL SIGNAL SIGNAL BEGIN
ckt1:circuito2 PORT MAP ( a => ent1, b => ent2, c => ent3, d => ent4, salida1 => dis1, salida2 => dis2, salida3 => dis3 ); PROCESS BEGIN WAIT FOR 1 ms; ent4 <= '1'; WAIT FOR 1 ms; ent4 <= '0'; ent3 <= '1'; WAIT FOR 1 ms; ent4 <= '1'; WAIT FOR 1 ms; ent4 <= '0'; ent3 <= '0'; ent2 <= '1'; --0100 WAIT FOR 1 ms; ent4 <= '1'; --0101 WAIT FOR 1 ms; ent4 <= '0'; ent3 <= '1'; --0110 WAIT FOR 1 ms; ent4 <= '1'; --0111 WAIT FOR 1 ms; ent4 <= '0'; ent3 <= '0'; ent2 <= '0'; ent1 <= '1'; --1000 WAIT FOR 1 ms; ent4 <= '1'; --1001 WAIT FOR 1 ms; ent4 <= '0'; ent3 <= '1'; --1010 WAIT FOR 1 ms; ent4 <= '1'; --1011 WAIT FOR 1 ms; ent4 <= '0'; ent3 <= '0'; ent2 <= '1';
--1100 WAIT FOR 1 ms; ent4 <= '1'; --1101 WAIT FOR 1 ms; ent4 <= '0'; ent3 <= '1'; --1110 WAIT FOR 1 ms; ent4 <= '1'; --1111 END PROCESS; END ARCHITECTURE ar_circuito2;
Circuito N3. El circuito numero tres fue desarrollado de la siguiente manera: 1). TABLA DE VERDAD.
CONT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 w 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 x 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 y 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 z 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1
1 1 1 1 1 1
1 1 1 1 1 1
0 0 1 1 1 1
1 1 0 0 1 1
0 1 0 1 0 1
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
********************************************* 1Z 2Y 3YZ 4X 5W 6WZ 7WY 8WYZ 9WX 17Z 18Y 19YZ 20X 21WYZ 22WX 23WXZ 24WXY 25WXYZ 1Z 2Y4X8WYZ* ---------------3YZ5W6WZ* 9WX17Z18Y20X24WXY---------------------7WY* 19YZ21WYZ* 22WX25WXYZ* ----------------23WXZ* (1,3)Z(2)(2,3)Y(1)* (8,9)W(1)(1,17)Z(16)(2,18)Y(16)(4,20)X(16)* (8,24)WY(16)* --------------------(3,7)Y(4)* (5,7)W(2)(6,7)W(1)(3,17)YZ(16)* (17,19)Z(2)(17,21)Z(4)(6,22)W(16)(20,22)X(2)* (9,25)WX(16)* (17,25)Z(8)* (24,25)WXY(1)* ------------------------(7,23)W(16)(19,23)Z(4)(21,23)WZ(2)* (22,23)WX(1)* (1,3,17,19)Z(2,16)* (8,9,24,25)W(1,16) * (2,18,3,19)Y(16,1)* ---------------------------(5,7,21,23)W(2,16) * (17,21,19,23)Z(4,2) * (17,19,21,23)Z(2,4) * (6,7,22,23)W(1,16) * (6,22,7,23)W(16,1) *
3). TABLAS
W X Y Z
5 67 8 9 21 2 2 23 24 25 4 9 20 22 23 25 2 3 7 8 18 19 2 1 24 25 1 3 6 8 17
6,7,22,23 17,21,19,23 5,7,21,23 X 2,18,3,19 8,9,24,25 1,3,17,19 22,23 21,23 24,25 17,25 9,25 20,22 7,23 3,19 3,7 8,24 4,20 2,3 23 25 21 7 6 8
X X X X X X
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
X X
Observaciones. La implementacin de este tipo de herramientas es de vital importancia a la hora de disear circuitos Digitales pues de ello depende tambin el desarrollo y el progreso intelectual en nuestra formacin; lamentablemente uno de los problemas mas grandes que enfrentamos como estudiantes es que no se aborda un tema especifico sobre la programacin en VHDL; aunque una de las importancias mas grandes es la autoformacin que debemos tener desde ya no solo en la materia sino en toda el rea de Ingeniera Elctrica . Resaltamos obviamente que el cdigo podra ser mas pequeo pero; nuestras destrezas en programacin tienen limites, cosa que con el tiempo podemos superar. Conclusiones. Al terminar este trabajo laborioso concluimos que: La tarea de diseo se hace ms fcil al tener herramientas de simulacin. Es necesario implementar con ms frecuencia este tipo de actividades de diseo para el desarrollo de nuestra capacidad con el lenguaje de programacin y para el buen implemento y diseo de sistemas digitales en las actividades que lo requieran. Es fundamental y lo ms pronto posible ofrecer al estudiante una visin ms amplia de este lenguaje de programacin, ya que hay muchos que no se forman por sus propios medios y eso les resta en la carrera. 2. Preguntas de Investigacin. 2.1 Uso y sintaxis de las instrucciones IF THEN.
La sintaxis de las estructuras condicionales IF If (Expresion_Booleana) Instruccin(es) Cuando la expresin booleana es TRUE, se ejecutan las instrucciones que siguen inmediatamente despus de la prueba. Si la expresin booleana es FALSE, las instrucciones siguientes a la instruccin Else son ejecutadas. La instruccin Else es opcional; si omite Else, continua la ejecucin con la primera instruccin (si la hay). 1 THEN 2 Obligatorio en la forma de una lnea, opcional en la forma de varias lneas. Estado opcional. Se ejecutan una o ms instrucciones que siguen a If...Then que se ejecutan si condicin se evala como True. Else if condiciona Obligatorio si ElseIf est presente. Expresin. Se debe evaluar como True o False, o como un tipo de datos que es implcitamente convertible a Booleano. 3 Con el formato de una sola lnea, es posible ejecutar varias instrucciones como resultado de una decisin If...Then. Todas las instrucciones deben estar en la misma lnea y separarse con dos puntos. En el siguiente ejemplo se muestra cmo. 4 If A > 10 Then A = A + 1 : B = B + A : C = C + B
Sintaxis Case palabra in Patrn1) lista_de_comandos_A ;; Patrn2) lista_de_comandos_B;; Patrn N) lista_de_comandos_N;; WHEN Sentencia de seleccin mltiple. En hardware es necesario incluir todas las opciones posibles. En este caso es obligatorio siempre acabar la expresin con un ELSE. <Seal><= <asignacin1> WHEN <condicin1> ELSE <asignacin2> WHEN <condicin2> ELSE ... <AsignacinN> WHEN <condicinN> ELSE <asignacinM>; Un posible ejemplo de este tipo de sentencias podra ser la siguiente. s <= "00" WHEN a = b ELSE "01" WHEN a > b ELSE "11";
2.3 Uso de las instrucciones anteriores para implementar el cdigo VHDL directamente desde las tablas de verdad.
Uso de instrucciones en cdigo VHDL: Ejemplo de if then: Cmp : process Begin if A /= B then C B; end if; end process cmp; If Then Else Si la condicin es verdadera ser ejecutado lo que estuviese dentro del then, en el caso contrario ser ejecutado lo que este dentro del else Ejemplo de if then else: cmp : process begin if A = B then C 0; else C 1; end if; end process cmp; Case Cuando la condicin de una variable puede asumir varias opciones es recomendado el uso de case Ejemplo de case: Convierte: process begin caseBinis when "0000" Dec 0; when "0001" Dec 1; when "0010" Dec 2; when "0011" Dec 3; whenothersDec -1; end case; end process convierte;
Tipos pre-definidos:
Integer, folating-point, physical, enumeration, array, record, y aquellos definidos por es usuario.
Operadores Definidos en VHDL para los tipos: Lgicos AND, OR, XOR, NOT, NAND, NOR, XNOR Bit y Booleanos De relacin =, /=, <, >, >=, <= Integer, Bit y Bit_Vector Concatenacin & Bit, Bit_Vector y para las cadenas Aritmticos +, -, *, /, Mod, Rem, Abs, ** Integer* Mod: Modulo de la divisin. Rem: Resto de la divisin Abs: valor absoluto.
2.8 Explique con sus palabras la funcin del circuito 1 y 2, en qu aplicacin se imagina usted que podra utilizarlos? Circuito 1 La funcin del circuito 1 El circuito presenta una tabla de verdad cuya funcin es dar a conocer el comportamiento de las variables de entrada; ya que cuando estas son iguales sus salidas son cero pero ocurre algo cuando estas son diferentes, la primera es que cuando la variable de entrada a esta en 0 y la otra en uno las variables de salida se activan y luego cuando ocurre lo contrario se activa c y se desactiva d. Y podramos utilizarla para el control de luminosidad de una casa y un patio con la siguiente tabla de verdad: A(presencia ) no no si si B(noche ) no si no si C(sala) apagado Encendido s encendido apagado D(patio) Apagado Encendidos Apagado apagado
Circuito 2. La funcionalidad del circuito dos podra estar enfocada al control de una maquina industrial tres motores, y tiene cuatro rdenes de entrada las cuales cada una general una respuesta en los motores esta mquina podra ser una empacadora, selladora o muchas otras funciones que podra tener.