1. «Año de la Inversión para el Desarrollo Rural y Alimentaria»
Nombres: Johnny Anderson
Apellidos: Chavarria Alonzo
Profesor: Ricardo Lara Dávila
IV Ciclo
2. Algebra de Boole
O
Las álgebras booleanas, estudiadas por primera vez en detalle por
George Boole , constituyen un área de las matemáticas que ha pasado
a ocupar un lugar prominente con el advenimiento de la computadora
digital. Son usadas ampliamente en el diseño de circuitos de
distribución y computadoras, y sus aplicaciones van en aumento en
muchas otras áreas. En el nivel de lógica digital de una computadora,
lo que comúnmente se llama hardware, y que está formado por los
componentes electrónicos de la máquina, se trabaja con diferencias de
tensión, las cuales generan funciones que son calculadas por los
circuitos que forman el nivel. Éstas funciones, en la etapa de diseña
del hardware, son interpretadas como funciones de boole.
En el presente trabajo se intenta dar una definición de lo que es un
álgebra de boole; se tratan las funciones booleanas,
haciendo una correlación con las fórmulas proposicionales.
3. O
Asimismo, se plantean dos formas canónicas de las funciones
booleanas, que son útiles para varios propósitos, tales como el de
determinar si dos expresiones representan o no la misma función. Pero
para otros propósitos son a menudo engorrosas, por tener más
operaciones que las necesarias. Particularmente, cuando estamos
construyendo los circuitos electrónicos con que implementar funciones
booleanas, el problema de determinar una expresión mínima para una
función es a menudo crucial. No resultan de la misma eficiencia en
dinero y tiempo, principalmente, dos funciones las cuales calculan lo
mismo pero donde una tiene menos variables y lo hace en menor
tiempo. Como solución a este problema, se plantea un método de
simplificación, que hace uso de unos diagramas especiales llamados
mapas o diagramas de Karnaugh, y el cual tiene la limitación de poder
trabajar
adecuadamente
sólo
con
pocas
variables.
4. Reseña Histórica
A mediados del siglo XIX, George Boole (1815-1864), en sus libros: "The
Mathematical Analysis of Logic" (1847) y "An Investigation of te Laws of
Thought" (1854), desarrolló la idea de que las proposiciones lógicas podían
ser tratadas mediante herramientas matemáticas. Las proposiciones lógicas
(asertos, frases o predicados de la lógica clásica) son aquellas que
únicamente pueden tomar valores Verdadero/Falso, o preguntas cuyas únicas
respuestas posibles sean Sí/No. Según Boole, estas proposiciones pueden ser
representadas mediante símbolos y la teoría que permite trabajar con estos
símbolos, sus entradas (variables) y sus salidas (respuestas) es la Lógica
Simbólica desarrollada por él. Dicha lógica simbólica cuenta con operaciones
lógicas que siguen el comportamiento de reglas algebraicas. Por ello, al
conjunto de reglas de la Lógica Simbólica se le denomina ÁLGEBRA DE
BOOLE.
O A mediados del siglo XX el álgebra Booleana resultó de una gran importancia
práctica, importancia que se ha ido incrementando hasta nuestros días, en el
manejo de información digital (por eso hablamos de Lógica Digital). Gracias a
ella, Shannon (1930) pudo formular su teoría de la codificación y John Von
Neumann pudo enunciar el modelo de arquitectura que define la estructura
interna de los ordenadores desde la primera generación.
O
5. Todas las variables y constantes del Álgebra booleana, admiten sólo
uno de dos valores en sus entradas y salidas: Sí/No, 0/1 o
Verdadero/Falso. Estos valores bivalentes y opuestos pueden ser
representados por números binarios de un dígito (bits), por lo cual el
Álgebra booleana se puede entender cómo el Álgebra del Sistema
Binario. Al igual que en álgebra tradicional, también se trabaja con
letras del alfabeto para denominar variables y formar ecuaciones para
obtener el resultado de ciertas operaciones mediante una ecuación o
expresión booleana. Evidentemente los resultados de las
correspondientes operaciones también serán binarios.
O Todas las operaciones (representadas por símbolos determinados)
pueden ser materializadas mediante elementos físicos de diferentes
tipos (mecánicos, eléctricos, neumáticos o electrónicos) que admiten
entradas binarias o lógicas y que devuelven una respuesta (salida)
también binaria o lógica. Ejemplos de dichos estados son:
Abierto/Cerrado
(interruptor),
Encendida/Apagada
(bombilla),
Cargado/Descargado (condensador) , Nivel Lógico 0/Nivel lógico 1
(salida lógica de un circuito semiconductor), etcétera.
O
6. Los dispositivos con los cuales se implementan las funciones lógicas
son llamados puertas (o compuertas) y, habitualmente, son
dispositivos electrónicos basados en transistores. Estos dispositivos, y
otros que veremos a lo largo de esta unidad, son los que permiten el
diseño, y la ulterior implementación, de los circuitos de cualquier
ordenador moderno, así como de muchos de los elementos físicos que
permiten la existencia de las telecomunicaciones modernas, el control
de máquinas, etcétera. De hecho, pensando en los ordenadores como
una jerarquía de niveles, la base o nivel inferior sería ocupada por la
lógica digital (en el nivel más alto del ordenador encontraríamos los
actuales lenguajes de programación de alto nivel).
O En esta unidad se representan las puertas lógicas elementales,
algunas puertas complejas y algunos ejemplos de circuitos digitales
simples, así como algunas cuestiones de notación. Por otra parte se
plantean actividades de trabajo, muchas de las cuales implican una
respuesta escrita en vuestro cuaderno de trabajo. El deseo del autor es
que os resulte sencillo y ameno adentraros en el mundo de la lógica
digital y despertaros la curiosidad, tanto por ella, como por la
matemática que subyace en ella.
O
7. Algebra Booleana
O
O
O
O
O
O
El álgebra booleana es un sistema matemático deductivo centrado en
los valores cero y uno (falso y verdadero). Un operador binario " º "
definido en éste juego de valores acepta un par de entradas y produce
un solo valor booleano, por ejemplo, el operador booleano AND acepta
dos entradas booleanas y produce una sola salida booleana.
Para cualquier sistema algebraico existen una serie de postulados
iniciales, de aquí se pueden deducir reglas adicionales, teoremas y
otras propiedades del sistema, el álgebra booleana a menudo emplea
los siguientes postulados:
Cerrado. El sistema booleano se considera cerrado con respecto a un
operador binario si para cada par de valores booleanos se produce un
solo resultado booleano.
Conmutativo. Se dice que un operador binario " º " es conmutativo si A º
B = B º A para todos los posibles valores de A y B.
Asociativo. Se dice que un operador binario " º " es asociativo si (A º B) º
C = A º (B º C) para todos los valores booleanos A, B, y C.
Distributivo. Dos operadores binarios " º " y " % " son distributivos si A º
(B % C) = (A º B) % (A º C) para todos los valores booleanos A, B, y C.
Identidad. Un valor booleano I se dice que es un elemento de identidad
con respecto a un operador binario " º " si A º I = A.
8. Inverso. Un valor booleano I es un elemento inverso con respecto a un
operador booleano " º " si A º I = B, y B es diferente de A, es decir, B es
el valor opuesto de A.
O Para nuestros propósitos basaremos el álgebra booleana en el
siguiente
juego
de
operadores
y
valores:
- Los dos posibles valores en el sistema booleano son cero y uno, a
menudo llamaremos a éstos valores respectivamente como falso y
verdadero.
- El símbolo · representa la operación lógica AND. Cuando se utilicen
nombres de variables de una sola letra se eliminará el símbolo ·, por lo
tanto AB representa la operación lógica AND entre las variables A y B, a
esto también le llamamos el producto entre A y B.
- El símbolo "+" representa la operación lógica OR, decimos que A+B es
la operación lógica OR entre A y B, también llamada la suma de A y B.
O
9. O
O
O
O
O
O
O
- El complemento lógico, negación ó NOT es un operador unitario, en
éste texto utilizaremos el símbolo " ' " para denotar la negación lógica,
por ejemplo, A' denota la operación lógica NOT de A.
- Si varios operadores diferentes aparecen en una sola expresión
booleana, el resultado de la expresión depende de la procedencia de
los operadores, la cual es de mayor a menor, paréntesis, operador
lógico NOT, operador lógico AND y operador lógico OR. Tanto el
operador lógico AND como el OR son asociativos por la izquierda. Si
dos operadores con la misma procedencia están adyacentes, entonces
se evalúan de izquierda a derecha. El operador lógico NOT es
asociativo
por
la
derecha.
Utilizaremos además los siguientes postulados:
P1 El álgebra booleana es cerrada bajo las operaciones AND, OR y NOT
P2 El elemento de identidad con respecto a · es uno y con respecto a
+ es cero. No existe elemento de identidad para el operador NOT
P3 Los operadores · y + son conmutativos.
P4 · y + son distributivos uno con respecto al otro, esto es, A· (B+C) =
(A·B)+(A·C) y A+ (B·C) = (A+B) ·(A+C).
P5 Para cada valor A existe un valor A' tal que A·A' = 0 y A+A' = 1. Éste
valor es el complemento lógico de A.
P6 · y + son ambos asociativos, ésto es, (AB) C = A (BC) y (A+B)+C = A+
(B+C).
10. O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
Es posible probar todos los teoremas del álgebra booleana utilizando
éstos postulados, además es buena idea familiarizarse con algunos de
los teoremas más importantes de los cuales podemos mencionar los
siguientes:
Teorema 1: A + A = A
Teorema 2: A · A = A
Teorema 3: A + 0 = A
Teorema 4: A · 1 = A
Teorema 5: A · 0 = 0
Teorema 6: A + 1 = 1
Teorema 7: (A + B)' = A' · B'
Teorema 8: (A · B)' = A' + B'
Teorema 9: A + A · B = A
Teorema 10: A · (A + B) = A
Teorema 11: A + A'B = A + B
Teorema 12: A' · (A + B') = A'B'
Teorema 13: AB + AB' = A
Teorema 14: (A' + B') · (A' + B) = A'
Teorema 15: A + A' = 1
Teorema 16: A · A' = 0
11. Algebra Booleana y Circuitos
Electrónicos
O
La relación que existe entre la lógica booleana y los sistemas de
cómputo es fuerte, de hecho se da una relación uno a uno entre las
funciones booleanas y los circuitos electrónicos de compuertas
digitales. Para cada función booleana es posible diseñar un circuito
electrónico y viceversa, como las funciones booleanas solo requieren
de los operadores AND, OR y NOT podemos construir nuestros circuitos
utilizando exclusivamente éstos operadores utilizando las compuertas
lógicas
homónimas
Un hecho interesante es que es posible implementar cualquier circuito
electrónico utilizando una sola compuerta, ésta es la compuerta NAND
12. Para probar que podemos construir cualquier función booleana utilizando
sólo compuertas NAND, necesitamos demostrar cómo construir un inversor
(NOT), una compuerta AND y una compuerta OR a partir de una compuerta
NAND, ya que como se dijo, es posible implementar cualquier función
booleana utilizando sólo los operadores booleanos AND, OR y NOT. Para
construir un inversor simplemente conectamos juntas las dos entradas de
una compuerta NAND. Una vez que tenemos un inversor, construir una
compuerta AND es fácil, sólo invertimos la salida de una compuerta NAND,
después de todo, NOT ( NOT (A AND B)) es equivalente a A AND B. Por
supuesto, se requieren dos compuertas NAND para construir una sola
compuerta AND, nadie ha dicho que los circuitos implementados sólo
utilizando compuertas NAND sean lo óptimo, solo se ha dicho que es posible
hacerlo. La otra compuerta que necesitamos sintetizar es la compuerta
lógica OR, ésto es sencillo si utilizamos los teoremas de DeMorgan, que en
síntesis se logra en tres pasos, primero se reemplazan todos los "·" por "+"
después se invierte cada literal y por último se niega la totalidad de la
expresión:
O A
OR
B
A AND B.......................Primer paso para aplicar el teorema de DeMorgan
A' AND B'.....................Segundo paso para aplicar el teorema de DeMorgan
(A' AND B')'..................Tercer paso para aplicar el teorema de DeMorgan
(A' AND B')' = A' NAND B'.....Definición de OR utilizando NAND
O
13. Circuitos Combinacionales
Un circuito combinacional es un sistema que contiene operaciones
booleanas básicas (AND, OR, NOT), algunas entradas y un juego de
salidas, como cada salida corresponde a una función lógica individual,
un circuito combinacional a menudo implementa varias funciones
booleanas diferentes, es muy importante recordar éste echo, cada
salida representa una función booleana diferente.
O Un ejemplo común de un circuito combinacional es el decodificador de
siete segmentos, se trata de un circuito que acepta cuatro entradas y
determina cuál de los siete segmentos se deben iluminar para
representar la respectiva entrada, de acuerdo con lo dicho en el
párrafo anterior, se deben implementar siete funciones de salida
diferentes, una para cada segmento. Las cuatro entradas para cada
una de éstas funciones booleanas son los cuatro bits de un número
binario en el rango de 0 a 9. Sea D el bit de alto orden de éste número
y A el bit de bajo orden, cada función lógica debe producir un uno (para
el segmento encendido) para una entrada dada si tal segmento en
particular debe ser iluminado, por ejemplo, el segmento e debe
iluminarse para los valores 0000, 0010, 0110 y 1000.
O
14. O
En la siguiente tabla se puede ver qué segmentos deben iluminarse de
acuerdo al valor de entrada, tenga en cuenta que sólo se están
representando valores en el rango de 0 a 9, los decodificadores para las
pantallas de siete segmentos comerciales tienen capacidad para
desplegar valores adicionales que corresponden a las letras A a la F
para representaciones hexadecimales, sin embargo la mecánica para
iluminar los respectivos segmentos es similar a la aquí representada
para los valores numéricos.
15. Relación entre la lógica combinacional y
secuencial con la programación
O
En ésta lección hemos dado una repasada muy básica a los elementos
que forman la base de los modernos sistemas de cómputo, en la sección
dedicada al diseño electrónico estudiaremos a profundidad los
conceptos aquí presentados, pero para aquellos que están más
interesados en el aspecto programático podemos decir que con los
elementos vistos en ésta lección es posible implementar máquinas de
estado, sin embargo la moraleja de ésta lección es muy importante:
cualquier algoritmo que podamos implementar en software, lo podemos
a su vez implementar directamente en hardware. Ésto sugiere que la
lógica booleana es la base computacional en los modernos sistemas de
cómputo actuales. Cualquier programa que Usted escriba,
independientemente del lenguaje que utilice, sea éste de alto ó bajo
nivel, se puede especificar como una secuencia de ecuaciones
booleanas.
16. O
Un hecho igualmente interesante es el punto de vista opuesto, es
posible implementar cualquier función de hardware directamente en
software, en la actualidad ésta es la función principal del lenguaje
ensamblador y otros con capacidad de trabajar directamente en
hardware, como el C y el C++. Las consecuencias de éste fenómeno
apenas se están explotando, se infiere la existencia de un futuro muy
prometedor para el profesional de la programación, especialmente
aquellos dedicados a los sistemas incrustados (embedded systems),
los microcontroladores y los profesionales dedicados a la
Programación Orientada a Objetos. Para tener éxito en éstos campos
de la investigación es fundamental comprender las funciones
booleanas y la manera de implementarlas en software. Aún y cuando
Usted no desee trabajar en hardware, es importante conocer las
funciones booleanas ya que muchos lenguajes de alto nivel procesan
expresiones booleanas, como es el caso de los enunciados if-then ó los
bucles while.