En esta publicación se utilizara la herramienta en linea CircuitVerse para ilustrar el funcionamiento de las compuertas lógicas complementarias
La explicación de la compuertas lógicas principales y sus complementarias esta en el siguiente video .
Compuerta Lógica NAND
Esta es la descripción de la compuerta lógica NAND en CircuitVerse, el circuito esta como publico y puede copiarse.
Compuerta Lógica NOR
Esta es la descripción de la compuerta lógica NOR en CircuitVerse, el circuito esta como publico y puede copiarse.
Compuerta Lógica XOR
Esta es la descripción de la compuerta lógica XOR en CircuitVerse, el circuito esta como publico y puede copiarse.
Compuerta Lógica XNOR
Esta es la descripción de la compuerta lógica XNOR en CircuitVerse, el circuito esta como publico y puede copiarse.
Esquema con las compuertas logicas basicas y complementarias
Este diagrama muestra de forma agrupada y comparativa de las compuertas lógicas basicas y complementarias. Ademas esta los elementos buffer y las negativas OR y AND.
Esta publicación muestra la conexión básica de un decodificador para display de 7 segmentos, tanto para Arduino como Pinguino. En la siguiente figura se muestra la distribución de terminales de un display de 7 segmentos de cátodo común, el de ánodo común tendrá el terminal central conectado a VCC (5V)
Display de 7 segmentos
CONEXIÓN A UN DISPLAY DE CÁTODO COMÚN
Un display de cátodo común tiene su terminal común a tierra (GND).
La conexión aquí mostrada emplea un decodificador BCD para display de 7 segmentos de cátodo común con el circuito integrado cd4511 siendo equivalente también el 74HC48.
El montaje y simulación de este circuito se realizo con la herramienta 123D Circuits al final de este articulo esta el enlace respectivo.
Conexión con el cd4511
CONEXIÓN A UN DISPLAY DE ÁNODO COMÚN
Un display de ánodo común tiene su terminal común a VCC (5V).
La
conexión aquí mostrada emplea un decodificador BCD para display de 7
segmentos de cátodo común con el circuito integrado 7447.
Conexión Arduino con el 7447
Conexión Pinguino 7447
CÓDIGO DE EJEMPLO 1
El siguiente programa emplea escritura directa al puerto D de la tarjeta Arduino con la instrucción PORTD.
Este programa consiste en un contador cíclico de 0 a 9 incrementando la variable contadora i y asignando su valor al puerto D del microcontroaldor.
El decodificador 74138 es un dispositivo estándar de amplio uso ya sea como elemento electrónico que se consigue en una tienda electrónica o como dispositivo que se puede sintetizar en una FPGA.
La librería empleada en Logisim para la realización del circuito que se observa en el vídeo se puede descargar del siguiente enlace
En la tabla se observa que las salidas son activas bajas y que para que opere las entras de activación deben conectarse adecuadamente sino las salidas siempre serán uno.
Tabla de la verdad del 74138
Explicación del funcionamiento
Generación de funciones lógicas con decodificadores
Los decodificadores son también generadores de minterminos por lo tanto con ellos es posible realizar circuitos lógicos combinatorios a partir de tablas de la verdad o ecuaciones boolenas.
El siguiente vídeo explica el principio de operación del decodificador como generador de minterminos para la realización de un circuito que indique si un numero de 3 bits es impar.
Generación de funciones lógicas
En el vídeo se empleo una compuerta OR con entradas negadas (negativa OR), empleando el teorema de DeMorgan se puede realizar el equivalente lógico correspondiente empleando una compuerta NAND.
En la tabla se observa que /(B.A) = /B + /A que es la equivalencia que se aplica para emplear una compuerta NAND en lugar de una negativa OR
Logisim es un herramienta que permite la realización y simulación de circuitos lógicos digitales, permite la realización de circuitos básicos hasta circuitos complejos como procesadores.
Es un entorno para el analisis y diseño de sistemas digitales combinatorios y secuenciales.
Es desarrollado por Javier García Zubía, Jesús Sanz Martinez, Borja Sotomayor Basilio.
No es necesario registrarse en ninguna web, pero sí es recomendable
enviar un correo electrónico a zubia@eside.deusto.es para poder recibir gratuitamente las nuevas
versiones del BOOLE-DEUSTO. Basta con enviar el nombre, la universidad o centro
de enseñanza, facultad, asignatura y curso en que se usa y número de alumnos
que lo usan.
El emplear memorias EEPROM para la realización de circuitos digitales combinatorios y secuencial puede ahorrar el uso de compuertas y facilitar modificaciones y correcciones al los circuitos.
Una memoria EEPROM básicamente es un dispositivo lógico programable y puede ser empleado como tal para la realización de circuitos digitales tanto combinatorios como secuenciales.
Terminales EEPROM AT28C16
LECTURA DE DATOS EN LA MEMORIA EEPROM
Una forma fácil de leer los datos de una memoria EEPROM, es empleando Led en la salida para visualizar el dato y emplear un Dip Swicht para generar la dirección que se desea consultar
Lectura EEPROM AT28C16
En el gráfico se observa que la configuración permita la lectura desde 00H hasta FFH y que los bits mas significativos del registro de direccionamiento que no son empleados son llevados a GND.
Hay que tener presente que la configuración del Dip Swicht es con resistencias de Pull Up
Otra forma de verificar los datos es empleando un microcontrolador como Pinguino.
Lectura EEPROM AT28C16 con Pinguino
El emplear un microcontrolador trae la facilidad de leer los datos secuencialmente o solo los que sean de nuestro interés por medio de un programa. En el ejemplo se emplea escritura directa al puerto B empleando la instrucción PORTB que en Pinguino corresponde al conjunto de terminales que van de 0 a 7.
ESCRITURA DE DATOS EN LA MEMORIA EEPROM
Este tipo de memoria pude ser programada de forma manual sin la necesidad de algún voltaje especial de programación como ocurre en muchos dispositivos programables.
Programación manual EEPROM AT28C16
Para la programación manual se siguen los siguientes pasos
En el Dip Swicht de la izquierda se fija la dirección.
En el Dip Swicht de la derecha se coloca el dato que se desea guardar.
Se presiona el pulsador para escribir el dato.
Para un nuevo dato en otra dirección se repite nuevamente el procedimiento descrito.
Aunque la escritura de datos se puede hacer de forma manual, es más fácil empleando un microcontrolador.
Programación EEPROM AT28C16 con Pinguino
El emplear un microcontrolador, permite editar y cambiar los datos, así como direccionar en diferentes segmentos los datos que queremos escribir. En el ejemplo los datos son guardados en formato hexadecimal empleando un arreglo.
Este modulo consta de un transmisor con 4 botones y un receptor con 4 terminales de salida y uno de indicación de que hay recepción de un dato.
Se puede emplear con Pinguino o cualquier aplicación electrónica digital con flip flop o latch para retener los datos.
Características
Chip: SC2262
Frecuencia de operación: 315MHz/433MHz (250MHz-450MHz)
Recepción de sensibilidad: > -85dBm
Tasa de transferencia: <5Kbps
Formato de decodificación: PT2272, HS2272, AX5327
Número de canales: 4
Cobertura: 40 metros~60 metros
Voltaje de operación RX: 5V
Corriente de operación: 10mA
Modulación: ASK
Longitud de antena: 24cm( 315MHz)/18cm( 433.92MHz)
Tamaño RX: 4.0cm x 2.3cm x 0.5cm
Diagrama De Terminales
GND corresponde al terminal de tierra.
5V terminal de alimentación.
D0 Bit 0 es activado cuando se presiona el botón A
D1 Bit 1 es activado cuando se presiona el botón B
D2 Bit 2 es activado cuando se presiona el botón C
D3 Bit 3 es activado cuando se presiona el botón D
VT terminal de salida que indica que hay un nuevo dato
Pruebas Realizadas
Circuito de pruebas
El circuito se alimento con 3.7 voltios y opero de manera correcta. La antena que trae hay que desenrollarse , es de aproximadamente 30 cm y hay que hacerlo para su buen funcionamiento.
El terminal de salida VT se puede emplear como flanco de subida para un flip flop o señal de habilitación en un lacht. Esto mismo es valido para la tarjeta pinguino o un microcontrolador en general.
El montaje mostrado se empleara para la realización de una practica de electrónica digital con la tarjeta de adquisición de datos de National DAQ 6009.
Materiales
1 DAQ 6009
4 pulsadores
4 Resistencias de 10 Kohm
Display de 7 segmentos de cátodo común
15 resistencias de 330 ohm
74LS138
8 LED rojos comunes
Consideraciones en el montaje
La alimentación la suministra la tarjeta el cable negro indica tierra y el rojo 5V
Los pulsadores están en configuración de Pull Up
Los valores de las resistencias no son críticos y pueden sustituirse por valores próximos
Tener en cuenta la conexión de los LED dado que el 74LS138 tiene salidas activas bajas, por eso en el esquema el ánodo del LED esta a 5 V. Esto se hace para hacer una configuración en modo de dreno de corriente y encienda el LED cuando la salida en el 74LS138 es baja.
Guías e Información
Prueba básica de entradas y salidas digitales con la daq 6009
En la GAL22v10 tendremos que 22 terminales pueden ser utilizados como entradas, en el esquema están marcados como In, que 10 terminales se pueden utilizar como salidas, en el esquema están marcados como Out ademas que estas salidas pueden ser Q lo que representa la salida de un flip flop. Se puede observar que los 10 terminales comparten la opción de entrada o salida y que esta salida puede ser el Q de un flipflop. También el terminal 1 que es una entrada comparte la opción de ser la entrada de la señal de reloj Clk para los flip flop internos de la GAL siendo esto útil al diseñar circuitos digitales secuenciales.
WINCUPL
En las siguientes tablas se resumen las instrucciones mas frecuentes para la realización de aplicaciones digitales combinatorias.
Formatos Numéricos
Se utilizan los prefijos entre comillas simples para indicar el formato numerico que se esta utilizando.
Asignación De Terminales, Variables Y Constantes
Son las instrucciones que se utilizan para definir y asignar terminales a variables, o asignar a variables operaciones con variables o constantes. Ejemplos de asignaciones de terminales: PIN 2 = a; /*asigna al terminal 2 la variable a*/ PIN 2 = !a; /*asigna al terminal 2 la variable a negada*/ PIN [2,3,4,5,6,7,8,9]= [A0,A1,A2,A3,A4,A5,A6,A7]; PIN [2..9] = [A0,A1,A2,A3,A4,A5,A6,A7]; PIN [2..9] = [A0..A7]; Ejemplos de asignaciones con variables intermedias: Las variables intermedias no tiene terminales asignados y son útiles para simplificar las ecuaciones que generan las salidas. X0 = A0&A1 # A1&A2;
FIELD entradas = [D,C,B,A];
Ejemplos de ecuaciones booleanas de salida: Son las ecuaciones asociadas a las varibles declaradas para los terminales de salida. El simbolo => utilizado en las tablas significa asignación de un ecuación booleana. S = X0#Y0; Table input=>output {
‘d’00 => ‘d’000;‘d’01 => ‘d’001;‘d’02 => ‘d’004;
}
Operadores Lógicos
La jerarquía hacer referencia a que operador se tendrá en cuenta primero al hacer una operación, por ejemplo si tenemos S=!A&B, se tendrá en cuenta primero la operación de negar A y luego se hará la operación AND.
Operadores Aritméticos
Los operadores aritméticos se utilizan para realizaroperaciones entre valores que sean de tipo numérico y no con variables de tipo booleano como las asignadas a lo terminales por medio de la instrucción PIN. Normalmente lo que se hace es que el resultado de una operación aritmética se asigna a una variable o registro.
Instrucciones Adicionales
Instrucción De Repetición REPEAT: Esta instuccion no es formalmente igual a la que se utiliza en otros lenguajes de programacion como BASIC por ejemplo. Esta instrucción se utiliza en WinCupl para ahorrar escritura de lineas de código y no para implimentar una estructura ciclica en el dispositvo GAL. Ejemplo: $repeat i = [0..3]
$define D(i) 'b'(i)
$repend
esto equivale a escribir el siguiente código:
$define D0 'b'000
$define D1 'b'001
$define D2 'b'010
$define D3 'b'011
EJEMPLOS
Ejemplo 1
Implementar una compuerta AND de dos entradas en una GAL22V10.
/*Terminales de entrada de la compuerta AND*/PIN 2 = A0 ;PIN 3 = A1; /*Terminales de entrada de la compuerta OR*/PIN 4 = B0;PIN 5 = B1;/*Terminales de salida para las compuertas*/ PIN23 = S0;/*Salida compuerta AND*/
Implementar un decodificador de binario a decimal con laGAL22V10
Tabla de la verdad correspondiente al decodificador, que se empleara en el programa.
En este ejemplo no se esta empleando el punto decimal dp a pesar de que esta conectado en el esquema mostrado.
CARACTERES EN UN DISPLAY 7 SEGMENTOS
Para otras aplicaciones puede ser útil generar caracteres alfanuméricos con un display de 7 segmentos, aqui se deja una tabla con su respectivo valor decimal teniendo en cuenta que el segmento a es el menos significativo y el segmento g el mas significativo
Mapa de caracteres
Name Ejem03 ;
PartNo 00;
Date 17/05/2013;
Revision 01;
Designer Julio ;
Company UNIAJC ;
Assembly None ;
Location ;
Device G22V10 ;/*Terminales de entrada */
PIN [2..5]= A, B, C, D;/*Terminales de salida */
PIN [13..20]= sa,sb,sc,sd,se,sf,sg,sdp;/*Declaraciones */
FIELD entradas =[D,C,B,A];
FIELD salidas =[sdp,sg,sf,se,sd,sc,sb,sa];/*Ecuaciones booleanas */
TABLE entradas => salidas {'b'0000=>'b'00111111;'b'0001=>'b'00000110;'b'0010=>'b'01011011;'b'0011=>'b'01001111;'b'0100=>'b'01100110;'b'0101=>'b'01101101;'b'0110=>'b'01111101;'b'0111=>'b'00000111;'b'1000=>'b'01111111;'b'1001=>'b'01100111;'b'1010=>'b'00000000;'b'1011=>'b'00000000;'b'1100=>'b'00000000;'b'1101=>'b'00000000;'b'1110=>'b'00000000;'b'1111=>'b'00000000;}