Ir al contenido principal

Circuitos combinatorios: Compuertas lógicas...

En esta entrada haremos una breve introducción al tema de los circuitos combinatorios y explicaremos las compuertas lógicas básicas que utilizaremos en ellos.

Estos circuitos computacionales, procesan valores digitales binarios (0 y 1) y su fundamento teórico se basa en el Álgebra de Boole que vimos en el post anterior.

A estos valores binarios (0 y 1) los expresaremos como tensiones que pasan a través de nuestro circuito, que posee interruptores con los que se puede determinar la veracidad de ciertas proposiciones y están unívocamente determinados para todas las combinaciones de entrada .


*NOTA: Debemos recordar que un circuito no tiene memoria en el tiempo, por lo que no importan los datos ni los estados anteriores.
  

Dicho esto, iremos al tema principal de esta entrada: Las compuertas lógicas.

Estas compuertas son, básicamente, dispositivos electrónicos que realizan funciones booleanas. No entraremos en detalles acerca de la estructura ni composición de las mismas ya que estudiaremos sólo su lógica.

Recordamos las operaciones que vimos para lógica proposicional y los elementos de nuestro conjunto visto en Álgebra de Boole (S, +, . , ' , 0, 1) y con ellos, mostraremos las compuertas que realizan tales operaciones.

Compuerta NOT:



Representaremos esta compuerta como se ve en la imagen y apreciamos la ya conocida tabla de verdad de la expresión resultante.




En todas las expresiones que siguen, interpretaremos el 1 como el V de lógica proposicional y el 0 como F.
Y las 4 combinaciones posibles, las escribiremos como los 4 números binarios diferentes que podemos obtener con 2 bits (00, 01, 10, 11).


Compuerta AND:











Compuerta OR: 











Compuerta XOR:
















NEGACIONES:

Estas compuertas son las negaciones de las anteriores, donde:

NAND tiene la tabla de verdad  de un AND al que le aplicamos NOT.

NOR la de un OR al que le aplicamos NOT.

XNOR la de un XOR al que le aplicamos NOT.

Comentarios

Entradas populares de este blog

C: Ejemplos: Congruencia de Zeller (nivel básico) ...

La Congruencia de Zeller es un algoritmo que se atribuye al matemático alemán Julius Christian Johannes Zeller que vivió en el siglo XIX. Este algoritmo nos permite determinar el día de la semana que le corresponde a una fecha determinada del calendario Gregoriano. La fórmula que nosotros usaremos (con algunas modificaciones respecto de la original para poder usarla en  informática) es la siguiente: Donde h es el día de la semana (entre 0 y 6), J es año/100 (la centuria) y K es año mod 100 (el año de la centuria). Y hay que tener en cuenta que los meses de enero y febrero cuentan como el mes 13 y 14 del año anterior. Ahora que tenemos la fórmula, programemos el algoritmo en C mediante el uso de una función: Analicemos el código paso a paso: Tenemos en cuenta el caso de enero y febrero: Dijimos que estos meses corresponden a los meses 13 y 14 del año anterior por lo que los asignamos como corresponde (mes + 12 , que dará 13 para enero y 14 para febrero) y le ...

C: Conversiones de tipo (casting) en C...

El casting o simplemente cast  nos permite hacer una conversión explícita de un tipo de dato a otro, a criterio del programador siempre y cuando estos tipos sean compatibles. Este cast se realiza a través de un operador de conversión de tipos (type casting operator) y es un recurso a tener en cuenta ya que hay situaciones en que nos puede resultar de gran utilidad. Hacer uso de un cast es tan sencillo como poner (tipo de dato)  delante de la expresión o variable a convertir. Veamos un ejemplo: Declaramos una variable de tipo int con un identificador tan creativo como "a" y le realizamos diferentes cast a a para mostrarlo como si fuera un float, un double y un char en un printf. Lo que obtendríamos en pantalla sería lo siguiente: Donde tenemos el valor de nuestro a, a convertido en float y double (mostrándolo con 3 cifras decimales) y a convertido en char. Si vemos este último caso, al hacer la conversión de "a" a char toma a como el código ascii de...

C: Funciones. Pasaje de parámetros por valor y por referencia...

Esta vez avanzaremos en lo relativo a las funciones en C, incorporando dos nuevos conceptos acerca del pasaje de parámetros: el pasaje por valor y por referencia . Paso de parámetros por valor: Éste es el pasaje que ya conocíamos desde el post referente a funciones . Si recordamos un poco al respecto, al realizar la definición de la función colocamos los parámetros que ésta recibe especificando el tipo de dato de los mismos. Luego, cuando hacemos el llamado y especificamos los argumentos, estos se evalúan y se le pasa a la función una copia de los mismos. A esto es lo que llamamos paso por valor ya que la función trabajará con los valores de esas copias. Si pasáramos variables como argumento, éstas no se modificarían por este sistema de copias. Veamos esto con un ejemplo simple en que tenemos la siguiente función void que intercambia los valores de dos enteros x e y: Declaramos dos variables de tipo int en el main, mostramos sus valores, llamamos a la función y volvemos a mostrarlos...