Está en la página 1de 15

Objetivos:

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.

Obtencin del software de simulacin VHDL


La instalacion se hara a traves de la terminal de ubuntu con el comando sudo apt-get install ghdl donde nos pedira la contrasea de super-usuario, se introduce la contrasea y se da enter,recordando que se necesita instalar el paquete ghdl y gtkwave,con el comando anterior se instalara al mismo tiempo el gtkwave .

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

Y el test bench queda asi:

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

ent1, ent2, sal1, sal2

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';

END PROCESS; END ARCHITECTURE ar_com;

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 => );

ent1, ent2, sal1, sal2

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';

END PROCESS; END ARCHITECTURE ar_com;

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;

ENTITY tb_circuito2 IS END tb_circuito2;

El test bench ser

ARCHITECTURE ar_circuito2 OF tb_circuito2 IS COMPONENT circuito2 IS PORT(

a,b,c,d : salida1 : salida2 : salida3 : END COMPONENT circuito2; SIGNAL SIGNAL SIGNAL SIGNAL SIGNAL SIGNAL SIGNAL BEGIN

IN BIT; OUT BIT; OUT BIT; OUT BIT);

ent1:bit:='0'; ent2:bit:='0'; ent3:bit:='0'; ent4:bit:='0'; dis1:bit; dis2:bit; dis3:bit;

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

2). SIMPLIFICACION POR Q-M Ecuaciones Respectivas.

********************************************* 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

El cdigo queda de la siguiente manera. Archivo.

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

2.2 Uso y sintaxis de la instrucciones CASE WHEN.


CASE La preposicin case compara la palabra con los patrones de arriba hacia abajo y ejecuta los comandos asociados con el primer patrn que reconozca, y solamente se. Los patrones se escriben utilizando las reglas para reconocimiento de patrones un tanto generalizadas a partir delas disponibles para identificacin de los nombres de archivo.Cada accin termina con un doble punto y coma ;;.

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;

2.4 Tipos de datos de entrada y salida que soporta VHDL.

Tipos pre-definidos:
Integer, folating-point, physical, enumeration, array, record, y aquellos definidos por es usuario.

2.5 Cmo se crean arreglos en VHDL?


Los arreglos son colecciones de objetos del mismo tipo: Pueden ser de 1 dimensin (1D), De 2 dimensiones (2D), tambin pueden ser de 1x1, incluso de dimensiones mayores pero no son sintetizables. Los arreglos se tienen que especificar con TYPE: TYPE type_name es un arreglo (especificacin) de tipo _ dat; Despus debemos declara seales, constantes o variables de ese nuevo tipo de dato : SIGNAL signal_name : type_name [:= valor_inicial] ; Ejemplo arreglo 1D TYPE arreglo IS ARRAY (3 DOWNTO 0) OF STD_LOGIC ; SIGNAL A1:ARREGLO:= 1101; SIGNAL A2: STD_ LOGIC _ VECTOR (3 DOWNTO 0 ) := 1101 ; A1 <= (1,0, 0, 0); A1 (0) <= 0; ========= 1101 A2 <= (0,1,1,0); A2 (2) <= 1;

2.6 Cmo declarar un componente en VHDL?


Definicin de componentes En VHDL es posible declarar componentes dentro de un diseo mediante la palabra COMPONENT. Un componente se corresponde con una entidad que ha sido declarada en otro mdulo del diseo, o incluso en alguna biblioteca, la declaracin de este elemento se realizar en la parte declarativa de la arquitectura del mdulo que se est desarrollando. La sintaxis para declarar un componente es muy parecida a la de una entidad. COMPONENT nombre [IS] [GENERIC(lista_parametros);] [PORT(lista_de_puertos);] END COMPONENT nombre; Si se dispone de un compilador de VHDL'93 no ser necesario incluir en los diseo la parte declarativa de los componentes, es decir se pasara a referenciarlos de forma directa. Un ejemplo de un componente podra ser 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;

2.7 Cules son los operadores en VHDL?


En VHDL existen diferentes operadores entre los que tenemos:

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.

También podría gustarte