Para ver como liga todo esto que estamos contando de las funciones
booleanas con los circuitos digitales, vamos a hacernos dos preguntas.
La primera pregunta es, ¿dada una función booleana,
yo puedo representar esta función booleana por una tabla de verdad?
Y la respuesta es obviamente es que s[i, yo lo que puedo hacer es poner las
variables de entrada, la función y decir pues por ejemplo,
cuando los tres valores son cero, aquí voy a tener un
cero por el inverso de cero más el inverso de cero por cero.
Cero por, bueno en este caso bueno vamos a hacer explícitamente cero
por uno más uno por cero y esto es igual a cero.
Por ejemplo dice cuando la combinación de entradas sea cero,
uno, cero, ¿qué voy a tener?
Voy a tener la b que es uno, multiplicado por el inverso de c,
más el inverso del a, multiplicado por el b.
Esto es uno por uno, más uno por uno y esto es uno.
Los resultados es uno, etcétera.
Así podría ir rellenando ¿eh?,
toda la tabla.
Tabla que tenemos aquí, o sea, realmente la respuesta a esta pregunta es que sí,
que toda función booleana la podemos representar por una tabla de verdad.
Ahora vamos a hacernos la pregunta inversa, ¿eh?
. A partir de una tabla de verdad,
¿yo puedo encontrar una función booleana equivalente a esa tabla de verdad?
Y la respuesta es sí,
pero para ver cómo, necesitamos primero unas pocas definiciones.
En primer lugar definimos, un literal como cualquier variable o su inversa.
Si estamos trabajando con una función de tres variables, c es un literal,
b es un literal, pero también a barra es un literal o b barra es un literal.
La segunda definición es el concepto de minterm de n variables.
Cualquier minterm de n variables es cualquier producto de n literales tal que,
cada variable aparece una sola vez.
Por ejemplo, para n igual a tres cualquier producto de a,
b y c, cada una de ellas negadas o sin negar es un minterm.
Aquí tenemos ejemplos de minterms.
Los minterms de n variables cumplen que cada uno de ellos toma
el valor uno para una única combinación de valores de las variables a, b y c.
Por ejemplo, el minterm a barra por b barra por c
barra sólo toma el valor uno cuando a, b y c valen cero, cero, cero.
Cualquier otra combinación de las variables a, b,
c hacen que el producto de a barra, por b barra, por c barra sea cero ¿eh?
Por ejemplo el minterm a barra,
b c sólo toma el valor uno cuando la a es cero, la b es uno y la c es uno.
¿Por qué?
Pues porque el minterm es el producto de la a negada, por la b,
por la c que es igual a uno, por uno, por uno que es uno.
Fijaros que por ejemplo, si yo quiero encontrar el minterm que toma el valor uno
cuando las variables son uno, cero, uno no tengo más que poner las tres variables y
negar aquella que toma el valor cero.
Pues este sería por ejemplo el a, b, c barra.
Porque es aquí donde está el cero.
Bueno aquí tenéis todos los minterms y tenéis la asociación de qué valores de
las variables hacen que tomen el valor uno.
Precisamente por esto, se utiliza esta propiedad para nombrar a los minterms
y decir este minterm lo voy a llamar el minterm cero, a barra, b barra, c barra.
Porque cuando las variables toman el valor cero es
cuando este minterm se me hace uno.
Este minterm lo voy a llamar el minterm tres.
¿Por qué?
Porque sólo cuando las variables a, b y c toman el valor tres en decimal el cero,
uno, uno es cuando esta combinación del producto a barra,
por b barra, por c se me hace uno.
Aquí tenéis otra vez pues ahora todas, todas las equivalencias.
Dice el como se denominaría cada uno de los minterms.
Fijaros que en general,
si yo hablo del minterm siete, del minterm seis por ejemplo.
La manera de saber a qué producto corresponde sería yo cojo el seis me lo
escribo en binario y entonces digo bueno pues este es el producto de a, b,
c dónde la c es la que estará negada.
Es este minterm seis.
Aquí os dejo con un ejercicio.
Una última definición.
¿Qué es un minterm de una función booleana?
Una función booleana n variables,
aquí tenemos una función booleana de tres variables.
Y definimos un minterm de esta función como aquéllos minterms que
coinciden con los unos de la función.
Es decir, esta función tiene tres minterms.
El minterm dos.
Porque es la combinación de variables que haría que el minterm tomará
valor uno que es el a por b, c y niego el a y el c,
porque son las variables corresponde que toman un valor cero.
El minterm tres y el minterm seis.
Toda función booleana,
se puede representar de una manera única como la suma de sus minterms.
Esto es lo que me permite pasar de una tabla de verdad a una función booleana.
Exactamente, a esta representación se le
llamaba representación canónica en suma de productos de la función.
Con esto, yo you tengo una manera de
construir un circuito digital a partir de una ecuación booleana.
O mejor aún, a partir de su descripción funcional.
Fijaros dice desde la descripción funcional yo puedo obtener la tabla de
verdad, cosa que hemos hecho.
De la tabla de verdad puedo obtener su representación canónica en suma de
productos, en suma de minterms en concreto, sería esta.
Aquí utilizando las propiedades de la álgebra de Boole,
yo puedo simplificar la función booleana y por ejemplo, he hecho aquí una
simplificación que me ha dado esta función que es totalmente equivalente a esta.
Y cuando you tengo la función simplificada yo puedo construir un
circuito que la implementa, porque he visto las equivalencias de
las operaciones booleanas con las puertas lógicas.
¿Vale?
De forma que, fijaros que ahora you
sé a partir de una descripción funcional de un problema,
yo sé construir you un circuito digital que lo implementa.
Hay que decir que, dada una representación funcional e
incluso dada una tabla de verdad existen más,
en general puede existir más de un circuito que lo implementa.
Lo que se trata siempre es de conseguir el circuito más
simplificado posible, que utilice menos puertas lógicas y para eso utilizamos las
propiedades del álgebra de Boole para saber simplificar la función booleana.
Vamos a ver un ejemplo completo de diseño de un módulo.
Recordad, queríamos construir un sumador capaz de sumar números de cuatro bits.
Lo primero que hicimos fue definir un módulo más sencillo,
el sumador de un bit capaz de sumar números de un bit y esta
definición nos permitió describir estructuralmente el sumador
de cuatro bits como la concatenación de cuatro sumadores de un bit.
Posteriormente, cada uno de estos sumadores de un
bit los describimos funcionalmente.
Cogemos el sumador de un bit, obtuvimos su descripción funcional, esta descripción
funcional nos permite construir la tabla de verdad de este circuito.
Y de la tabla de verdad somos capaces de
sacar las ecuaciones booleanas que implementan esta tabla.
Minimizando si es necesario estas ecuaciones booleanas a base de utilizar
las propiedades del álgebra de Boole, podemos llegar a construir el
circuito que nos representa este pequeño módulo sumador de un bit.
Y por supuesto, el sumador de cuatro bits se construiría
concatenando cuatro conjuntos de módulos como éste.
Así pues, you para acabar en esta,
en este tema de esta segunda semana hemos visto, hemos definido el álgebra de Boole.
Hemos visto sus postulados y algunas propiedades que nos van a ser
útiles para simplificar funciones.
Hemos visto que cualquier función booleana se
puede representar en una tabla de verdad.
Y hemos visto cómo obtener a partir de una tabla,
cómo obtener la función booleana equivalente, utilizando el concepto de
minterm y definiendo lo que hemos llamado la forma canónica de suma de productos.
Finalmente y seguramente lo más importante, hemos visto cómo a partir de
una descripción funcional particular, nosotros podemos crear la tabla de verdad.
La tabla de verdad nos permite definir las funciones booleanas que lo implementan
y a partir de aquí podemos llegar a diseñar el circuito que deseamos.