Lo primero que se hará es construir una Tabla de Verdad que muestre los valores de entrada y salida para todos los casos (recuerde que sólo se intenta diseñar un Full-Adder). En la siguiente tabla se puede ver aquello, con tres entradas (A, B y Cin) y dos salidas (S y Cout). Existen ocho posibles casos para las tres entradas, y para cada caso se desea la salida listada en los valores de salida. Por ejemplo, considere el caso A = 1, B = 0, y Cin = 1. Un Full-Adder (que abreviaremos FA) puede sumar estos bits para obtener las salidas S = 0 y Cout = 1.
Como existen dos salidas, se puede diseñar el circuito por cada salida individualmente, comenzando con la salida de la suma S. Por la tabla de verdad se ve que hay cuatro casos donde S tiene valor 1. Si se compone una expresión para ello, usando el Dominio Lógico, y luego de refinarla, según un método que no es el caso desarrollar acá, se obtienen la siguiente expresión final:
S = Xor( A, Xor( B, Cin )) (a)
Si se considera ahora la salida Cout, también se puede componer una operación, en el dominio lógico, que permita realizarla:
Cout = Or( And( B, Cin ), Or( And( A, Cin ), And( A, B ))) (b)
Las expresiones a y b pueden ser implementadas como se muestra en la Figura No. 11, cada Full-Adder de la Figura No. 10 puede ser implementado según el circuito lógico que aparece en esta figura.
Para desarrollar este circuito en términos del formato que se ha estado propugnando para los dominios, es necesario ampliar a la capacidad de definición de operaciones. Para ello es necesario que las nuevas operaciones, además de permitir combinaciones directas de las ya definidas, permitan otro tipo de combinaciones con más poder de cómputo. Ese es el objetivo de los lenguajes de Programación, permitir ampliar la capacidad de definición de nuevos dominios y operaciones, de manera que esta ampliación permita ampliar a su vez el espectro de los problemas posibles de abordar mediante el uso de un computador.
No hay comentarios:
Publicar un comentario