La puerta XOR (a veces EOR , o EXOR y se pronuncia OR exclusiva ) es una puerta lógica digital que proporciona una salida verdadera (1 o ALTA) cuando el número de entradas verdaderas es impar. Una puerta XOR implementa un exclusivo o ( ) de lógica matemática ; es decir, se obtiene una salida verdadera si una, y sólo una, de las entradas a la puerta es verdadera. Si ambas entradas son falsas (0/BAJO) o ambas son verdaderas, se produce una salida falsa. XOR representa la función de desigualdad, es decir, la salida es verdadera si las entradas no son iguales; de lo contrario, la salida es falsa. Una forma de recordar XOR es "debe tener uno o el otro pero no ambos".
Una puerta XOR puede servir como un "inversor programable" en el que una entrada determina si se invierte la otra entrada o simplemente se pasa sin cambios. Por lo tanto, funciona como un inversor (una puerta NO) que puede activarse o desactivarse mediante un interruptor. [1] [2]
XOR también puede verse como una suma módulo 2. Como resultado, las puertas XOR se utilizan para implementar la suma binaria en las computadoras. Un medio sumador consta de una puerta XOR y una puerta AND . La puerta también se utiliza en restadores y comparadores . [3]
Las expresiones algebraicas o o o all representan la puerta XOR con entradas A y B. El comportamiento de XOR se resume en la tabla de verdad que se muestra a la derecha.
Hay tres símbolos esquemáticos para las puertas XOR: los símbolos tradicionales ANSI y DIN y el símbolo IEC . En algunos casos, el símbolo DIN se utiliza con ⊕ en lugar de ≢. Para obtener más información, consulte Símbolos de puerta lógica .
El "=1" en el símbolo IEC indica que la salida se activa mediante una sola entrada activa.
Los símbolos lógicos ⊕, J pq y ⊻ se pueden utilizar para indicar una operación XOR en expresiones algebraicas.
Los lenguajes tipo C usan el símbolo de intercalación^
para indicar XOR bit a bit. (Tenga en cuenta que el signo de intercalación no denota conjunción lógica (Y) en estos idiomas, a pesar de la similitud del símbolo).
La puerta XOR se implementa más comúnmente mediante circuitos MOSFET . Algunas de esas implementaciones incluyen:
Las puertas XOR se pueden implementar utilizando la lógica AOI . [4]
A continuación se muestran las implementaciones de semiconductores de óxido metálico ( CMOS ) de la puerta XOR correspondientes a la lógica AOI anterior.
A la izquierda, los transistores nMOS y pMOS están dispuestos de manera que las entradas se emparejan y activan los 2 transistores pMOS de la parte superior izquierda o los 2 transistores pMOS de la parte superior derecha respectivamente, conectando Vdd a la salida para una lógica alta. Los pares de entrada restantes activan cada una de las dos rutas nMOS en la parte inferior a Vss para un nivel lógico bajo. [5]
Si hay disponibles entradas invertidas (por ejemplo, de un flip-flop ), esta puerta se puede utilizar directamente. De lo contrario, se necesitan dos inversores adicionales con dos transistores cada uno para generar y , con lo que el número total de transistores asciende a doce.
La implementación AOI sin entrada invertida se ha utilizado, por ejemplo, en la CPU Intel 386 . [6]
La puerta XOR también se puede implementar mediante el uso de puertas de transmisión con lógica de transistor de paso .
Esta implementación utiliza dos puertas de transmisión y dos inversores que no se muestran en el diagrama para generar y para un total de ocho transistores, cuatro menos que en el diseño anterior. La función XOR se implementa pasando a la salida el valor invertido de A cuando B es alto y pasando el valor de A cuando B está en un nivel lógico bajo. entonces, cuando ambas entradas están bajas, la puerta de transmisión en la parte inferior está apagada y la de arriba está encendida y deja pasar A, que está baja, por lo que la salida es baja. Cuando ambos están altos, solo el de abajo está activo y deja pasar el valor invertido de A y, dado que A es alto, la salida volverá a ser baja. De manera similar, si B permanece alto pero A es bajo, la salida sería alta como se esperaba y si B es bajo pero A es alto, el valor de A pasa y la salida es alta, completando la tabla de verdad para la puerta XOR. [7]
La desventaja de la implementación anterior es que, dado que las puertas de transmisión no son interruptores ideales, tienen una resistencia asociada, por lo que, dependiendo de la intensidad de la señal de entrada, conectarlas en cascada puede degradar los niveles de salida. [8]
La implementación anterior de la puerta de transmisión se puede optimizar aún más de ocho a seis transistores implementando la funcionalidad del inversor que genera y la puerta de paso inferior con solo dos transistores dispuestos como un inversor pero con la fuente del pMOS conectada en lugar de Vdd y la fuente del nMOS conectado en lugar de GND. [8]
Los dos transistores más a la izquierda mencionados anteriormente realizan una inversión condicional optimizada de A cuando B está en un nivel lógico alto utilizando la lógica de transistor de paso para reducir el recuento de transistores y cuando B está en un nivel lógico bajo, su salida está en un estado de alta impedancia. Los dos en el medio son una puerta de transmisión que impulsa la salida al valor de A cuando B está en un nivel lógico bajo y los dos transistores más a la derecha forman un inversor necesario para generar utilizado por la puerta de transmisión y el circuito lógico del transistor de paso. [9]
Al igual que en la implementación anterior, se debe tener en cuenta la conexión directa de las entradas a las salidas a través de los transistores de puerta de paso o a través de los dos transistores más a la izquierda, especialmente al conectarlos en cascada. [8]
Si un tipo específico de puerta no está disponible, se puede construir un circuito que implemente la misma función a partir de otras puertas disponibles. Un circuito que implementa una función XOR se puede construir trivialmente a partir de una puerta XNOR seguida de una puerta NOT . Si consideramos la expresión , podemos construir un circuito de puerta XOR directamente usando las puertas AND, OR y NOT . Sin embargo, este enfoque requiere cinco puertas de tres tipos diferentes.
Como alternativa, si hay diferentes puertas disponibles, podemos aplicar el álgebra de Boole para transformar como se indicó anteriormente y aplicar la Ley de Morgan al último término para obtener, que se puede implementar usando solo cuatro puertas como se muestra a la derecha. intuitivamente, XOR es equivalente a OR excepto cuando A y B son altos. Entonces, el AND del OR con luego NAND que da un nivel bajo solo cuando A y B son altos es equivalente al XOR.
Se puede crear un circuito de puerta XOR a partir de cuatro puertas NAND . De hecho, tanto las puertas NAND como NOR son las llamadas "puertas universales" y cualquier función lógica se puede construir a partir de la lógica NAND o la lógica NOR únicamente. Si las cuatro puertas NAND se reemplazan por puertas NOR , se obtiene una puerta XNOR , que se puede convertir en una puerta XOR invirtiendo la salida o una de las entradas (por ejemplo, con una quinta puerta NOR ).
Una disposición alternativa es la de cinco puertas NOR en una topología que enfatiza la construcción de la función de , teniendo en cuenta la Ley de Morgan que una puerta NOR es una puerta AND de entrada invertida . Otra disposición alternativa es la de cinco puertas NAND en una topología que enfatiza la construcción de la función de , teniendo en cuenta la Ley de Morgan que una puerta NAND es una puerta OR de entrada invertida .
Para las construcciones NAND, la disposición superior requiere menos puertas. Para las construcciones NOR, la disposición inferior ofrece la ventaja de un retraso de propagación más corto (el retraso de tiempo entre un cambio de entrada y un cambio de salida).
Los chips XOR están disponibles. Los códigos de chip estándar más comunes son:
La interpretación literal del nombre "exclusivo o", o la observación del símbolo rectangular IEC, plantea la cuestión del comportamiento correcto con entradas adicionales. [12] Si una puerta lógica aceptara tres o más entradas y produjera una salida verdadera si exactamente una de esas entradas fuera verdadera, entonces sería en efecto un detector de un solo estado (y de hecho, este es el caso para sólo dos entradas). ). Sin embargo, en la práctica rara vez se implementa de esta manera.
Lo más común es considerar que las entradas posteriores se aplican a través de una cascada de operaciones binarias exclusivas o: las dos primeras señales se introducen en una puerta XOR, luego la salida de esa puerta se introduce en una segunda puerta XOR junto con la tercera señal. , y así sucesivamente para las señales restantes. El resultado es un circuito que genera un 1 cuando el número de unos en sus entradas es impar y un 0 cuando el número de unos entrantes es par. Esto lo hace prácticamente útil como generador de paridad o sumador de módulo 2 .
Por ejemplo, el microchip 74LVC1G386 se anuncia como una puerta lógica de tres entradas e implementa un generador de paridad. [13]
Las puertas XOR y las puertas AND son las dos estructuras más utilizadas en aplicaciones VLSI . [14]
La puerta lógica XOR se puede utilizar como un sumador de un bit que suma dos bits cualesquiera para generar un bit. Por ejemplo, si sumamos 1
más 1
en binario , esperamos una respuesta de dos bits 10
(es decir, 2
en decimal). Dado que el bit de suma final en esta salida se logra con XOR, el bit de acarreo anterior se calcula con una puerta AND . Este es el principio fundamental de Half Adders . Se puede encadenar un circuito sumador completo un poco más grande para sumar números binarios más largos.
En determinadas situaciones, las entradas a una puerta OR (por ejemplo, en un sumador completo) o a una puerta XOR nunca pueden ser ambas unos. Como esta es la única combinación para la cual las salidas de las puertas OR y XOR difieren, una puerta OR puede ser reemplazada por una puerta XOR (o viceversa) sin alterar la lógica resultante. Esto es conveniente si el circuito se implementa utilizando chips de circuito integrado simples que contienen sólo un tipo de puerta por chip.
Los generadores de números pseudoaleatorios (PRN) , específicamente los registros de desplazamiento de retroalimentación lineal (LFSR), se definen en términos de operación exclusiva o. Por lo tanto, una configuración adecuada de puertas XOR puede modelar un registro de desplazamiento de retroalimentación lineal para generar números aleatorios.
Las puertas XOR se pueden utilizar en los detectores de fase más simples . [15] : 425
Se puede utilizar una puerta XOR para cambiar fácilmente entre almacenar en búfer o invertir una señal. Por ejemplo, se pueden agregar puertas XOR a la salida de un circuito decodificador de pantalla de siete segmentos para permitir al usuario elegir entre salida activa baja o activa alta.
Las puertas XOR producen un 0
cuando ambas entradas coinciden. Al buscar un patrón de bits específico o una secuencia PRN en una secuencia de datos muy larga, se puede utilizar una serie de puertas XOR para comparar una cadena de bits de la secuencia de datos con la secuencia objetivo en paralelo. 0
Luego se puede contar el número de salidas para determinar qué tan bien coincide la secuencia de datos con la secuencia objetivo. Los correlacionadores se utilizan en muchos dispositivos de comunicaciones, como receptores y decodificadores CDMA, para corrección de errores y códigos de canales. En un receptor CDMA, se utilizan correlacionadores para extraer la polaridad de una secuencia PRN específica de una colección combinada de secuencias PRN.
Un correlador que busque 11010
en la secuencia de datos 1110100101
compararía los bits de datos entrantes con la secuencia objetivo en cada desplazamiento posible mientras cuenta el número de coincidencias (ceros):
1110100101 (datos)11010 (objetivo)00111 (XOR) 2 bits cero1110100101 11010 00000 5 bits cero1110100101 11010 01110 2 bits cero1110100101 11010 10011 2 bits cero1110100101 11010 01000 4 bits cero1110100101 11010 11111 0 cero bitsCoincidencias por desplazamiento: . : :: : : : : -----------0 1 2 3 4 5
En este ejemplo, la mejor coincidencia se produce cuando la secuencia de destino tiene un desplazamiento de 1 bit y los cinco bits coinciden. Cuando se compensa en 5 bits, la secuencia coincide exactamente con su inversa. Al observar la diferencia entre el número de unos y ceros que salen del banco de puertas XOR, es fácil ver dónde ocurre la secuencia y si está invertida o no. Las secuencias más largas son más fáciles de detectar que las secuencias cortas.
es una representación analítica de la puerta XOR:
es una representación analítica alternativa.
Las puertas XOR y AND son los componentes básicos más importantes de cualquier aplicación VLSI.