Secciones
Foros Electrónica
Boletines de correo
Boletines
Alguien dijo ...
Es de importancia para quien desee alcanzar una certeza en su investigación, el saber dudar a tiempo.

Aristóteles(384 AD - 322 AD).
Filósofo macedonio.
Electrónica Fácil en Twitter
siguenos en twitter
Sitios recomendados
Contacto
  [+] [R] [-]  print  Enviar a un amigo

Operaciones compuestas

El conjunto de las operaciones del dominio básico se puede extender mediante un mecanismo de composición de operaciones, por ejemplo, se quiere agregar la operación XOR, que corresponde a un OR Exclusivo mediante el cual: si ambas entradas son iguales el resultado es cero (0 o falso) y si ambas son distintas, entonces el resultado es uno (1 o verdadero). Gráficamente se puede ver la implementación de la compuesta XOR en la figura No. 8.

tabla de verdad
Figura No. 8. Implementación de la Compuesta XOR.

Es claro, en la figura, la forma de composición de la operación XOR a partir de las operaciones básicas and, or y not en el formalismo gráfico de las compuertas lógicas. También es posible usar el formalismo funcional, que se consideró en la definición el Domino Lógico, para componer la operación XOr:

Or( And( Not( A ), B ), And( A, Not( B ))); donde A, B Î Dominio Lógico

De hecho, si se quiere extender el conjunto de las operaciones del Dominio Lógico sería necesario expresar, la operación XOr, en el mismo formato que las operaciones primitivas; sin ser muy rigurosos bastaría con una asignación para que con ello se tenga una forma de definir nuevas operaciones en base a las ya existentes:

XOr( A, B ) ¬ Or( And( Not( A ), B ), And( A, Not( B ))) ; donde A, B, XOr Î Dominio Lógico

El símbolo ¬ permitiría trasladar toda la funcionalidad de la expresión a la nueva operación, incluidos los parámetros de entrada y salida (A, B como parámetros de entrada y el nombre de la operación XOr como parámetro de salida). Con la operación XOr ya definida es posible, entonces, ampliar la definición del Dominio Lógico:

Dominio Lógico ( l Î Dominio Lógico ) = ( { 0, 1 }, { l: And( l, l ), l:Or( l, l ), l:Not( l ) l:XOr( l, l ), } )

Por lo cual XOr podría ser utilizado para componer nuevas operaciones de este mismo dominio o, eventualmente, de otros.

Construcción de nuevos dominios

Pese a que se ha formalizado un dominio básico y, además, se ha creado nuevas operaciones dentro de ese dominio, aún no se cumple el objetivo de poder aproximar el mundo de señales del computador a nivel de complejidad actual observado.

En los puntos anteriores se revisó la forma de representación de los números enteros, la cual se basaba en una memoria organizada en palabras de 8 bits.

Es decir, si se considera que cada una de las señales básicas puede ser utilizada para componer un bit, entonces sería necesario 8 señales para poder componer un número, donde cada una de estas señales podría tomar los dos estados posibles y, dependiendo de la posición en que ella esté -recuerden lo hablado sobre sistemas numéricos posicionales- tendría más o menos incidencia en el valor del número a representar, por ejemplo, el siguiente número binario, representa al 165 decimal -según la transformación estudiada:

xb = 10100101

X10 = V(xb) = 1× 27+0× 26+1× 25+0× 24+0× 23+1× 22+0× 21+1× 20 = 165

Con esta forma de representación es posible entonces sintetizar un conjunto de números enteros a partir de las señales originales, combinándolas. En este caso el conjunto de enteros puede ser uno que vaya desde 0 a 255, pero si se amplia el número de señales paralelas consideradas, este espectro se puede aumentar o, considerando el signo, se pueden incluir números negativos.

Así, para crear el conjunto de los números enteros a partir del conjunto de las señales se debe organizar éstas en cadenas paralelas -la forma usual de los buses dentro del computador- donde la posición de cada una tiene un peso específico en la síntesis del número que se está representando. En la notación que se está propugnando, un conjunto de estas cadenas puede ser visto de la siguiente forma:

Dominio Enteros Binarios ( nb Î Dominio Enteros Binarios) = ( { Ln...L7L6L5L4L3L2L1L0 / Li Î Dominio Lógico} )

Ahora, si bien existe una representación factible de números enteros a partir de las señales primitivas, un dominio de los enteros (que en este caso se ha denominado enteros binarios por no estar expresados en base decimal) no está completo si es que no existen operaciones que permitan manejarlos, por lo cual es necesario componer tales operaciones a partir de del dominio lógico o de las mismas operaciones ya desarrolladas para este dominio.

Suma en los enteros binarios

La suma de dos números binarios se realiza de la misma manera que la suma en los números decimales. Por ejemplo, la siguiente es una suma decimal:

3 7 6 (los números en negrillas corresponden a los dígitos menos significativos)

+ 4 61

8 3 1

Los dígitos en las posiciones menos significativos son operados primero, produciendo la suma 7. Luego, los dígitos en la segunda posición son sumados para dar el resultado 13, que produce unacarreo de 1 hacia la tercera posición, lo que produce la suma 8.

Los mismos pasos generales son seguidos en la suma binaria. Sin embargo, aquí sólo hay que considerar cuatro casos al sumar dos dígitos binarios:

0 + 0 = 0

1 + 0 = 1

1 + 1 = 0 + acarreo de 1 (uno) a la siguiente posición

1 + 1 + 1 = 1 + acarreo de 1 (uno) a la siguiente posición

El último caso ocurre cuando dos bit de una cierta posición tienen 1 (uno) y además hay un acarreo desde la posición previa. Los siguientes son varios ejemplos de sumas de dos números binarios:

011 (3) 1001 (9) 11,011 (3,375)

+110 (6) +1111 (15) +10,110 (2,750)

1001 (9) 11000 (24) 110,001 (6.125)

No es necesario considerar la suma de más de dos números binarios al mismo tiempo, ya que todos los sistemas de circuitos digitales que actualmente ejecutan la suma sólo pueden manejar dos números a la vez. La suma es una de las operaciones aritméticas más importantes en los sistemas digitales, de hecho, las operaciones de resta, multiplicación y división pueden ser definidas en base a la suma.

Si se quiere entonces sumar dos números enteros binarios en un computador, es necesario para ello que exista la operaciónsumade enteros binarios. De manera análoga a como se definió la operación XOr, es posible definir ahora una operación de suma.

La unidad aritmética

Todas las operaciones aritméticas se realizan en la unidad aritmética, también conocida como unidad aritmético-lógica -ver punto 1.2 de este apunte-, de un computador. La Figura No. 9 es un diagrama de bloques que describe los principales elementos incluidos en una unidad aritmética típica. El principal propósito de una unidad aritmética es aceptar datos binarios que están almacenados en memoria y ejecutar las operaciones aritméticas sobre aquellos datos de acuerdo a las instrucciones dadas desde la unidad de control.

La unidad aritmética tiene al menos dos registros de flip-flops: elregistro By elregistro acumulador. Además contiene los circuitos lógicos que permiten ejecutar las operaciones sobre los números binarios almacenados en ambos registros. La típica secuencia de ejecución para una suma (ADD) puede ser la siguiente:

unidad aritmética
Figura No. 9. Unidad Aritmética
  • La unidad de control recibe una instrucción (desde la unidad de memoria) indicando que un número almacenado en una ubicación particular de memoria (dirección) deberá ser sumado a el número actualmente almacenado en el acumulador.
  • El número a ser sumado es transferido desde la memoria al registro B.
  • El número en el registro B y el número en el acumulador son sumados en los circuitos lógicos (comandados desde la unidad de control). La suma resultante en enviada al acumulador para ser almacenada.
  • Al nuevo número en el acumulador se le puede sumar otro, o si el proceso aritmético en particular ha terminado, el número puede ser transferido a memoria para almacenarlo.

Estos pasos demuestran de donde el registro acumulador deriva su nombre. Este registro "acumula" los valores que resultan de ejecutar sucesivas sumas entre nuevos números extraídos desde memoria y el resultado de las sumas anteriores almacenado en el acumulador. Para cualquier problema aritmético que contienen varios pasos, el acumulador siempre contiene el resultado de los pasos intermedios, así como el resultado final cuando la ejecución ha terminado.

Un sumador binario en paralelo

Los computadores y calculadoras implementan la operación de suma sobre dos números binarios al mismo tiempo, donde cada numero binario puede tener varios dígitos binarios. En la tabla se muestra la suma de dos números binarios de cinco bits. Uno de los operandos es almacenado en el acumulador; esto es, el acumulador contienen cinco Flip-Flops, almacenando, en cada uno, los dígitos 10101. De la misma forma el otro de los operandos, el que será sumado al primero, es almacenado en el registro B (en este caso, 00111).

El proceso de suma comienza por la suma de los bit menos significativos de ambos operandos. Así, 1+1 = 10, que significa que la suma para esa posición es 0 y el acarreo es 1.

1º Operando, almacenado en el acumulador

10101

2º Operando, almacenado en el Registro B

00111

Suma

11100

Acarreo (para ser agregado a la siguiente posición)

00111

Este acarreo (o bit decarry) será sumado a la siguiente posición, junto a los bit correspondientes de los operandos. Así, en la segunda posición 1+0+1 = 10, que corresponde nuevamente a la suma 0 y el carry 1. Este carry será sumado a la siguiente posición junto a los correspondientes bits de los operandos y así sucesivamente hasta las últimas posiciones.

A cada paso en el proceso de suma se realiza la adición de tres bits; los dos de los operandos y el de carry que viene de la posición previa. El resultado de la suma de estos 3 bits produce 2 bits: un bit desuma y otro decarry que deberá ser sumado a la siguiente posición. Este mismo proceso es usado para cada posición. Ahora, si se quiere diseñar un circuito lógico que permita implementar este proceso, entonces simplemente se deberá usar el mismo circuito para cada una de las posiciones. Esto se ilustra en la Figura No. 10.

En este diagrama las variables Ai representan los bits del operando almacenados en el acumulador (que también puede ser llamado el registro A). Las variables Bi representan los bits del segundo operando almacenados en el registro B. Las variables Ci representan los bits de carry entre las correspondientes posiciones. Las variables Si son los bits de la suma para cada posición.

Los circuitos Full-Adder usados en cada posición tienen tres entradas: un bit A, un bit B y un bit C; y producen dos salidas: un bit de suma (S) y un bit de carry (C). Por ejemplo, el Full-Adder No. 0 tienen como entradas A0, B0 y C0, y produce las salidas S0 y C1. Lo anterior se repite para todos los bits de los operandos. Actualmente los computadores usan palabras de 32 y 64 bits, al contrario del de la figura que sólo es un sumador de 5 bits.


Figura No. 10. Diagrama de Bloques de un sumador paralelo de 5-bits usando full-adders.

El arreglo de la figura No. 10 se llama sumador paralelo (parallel adder) por que todos los bits de los operandos se usan simultáneamente en todos los circuitos. Esto significa que la suma en cada posición ocurre al mismo tiempo. Que es distinto de las sumas que se hacen en papel. Ya que se toma cada posición una a la vez, comenzando desde las posiciones menos significativas.

El diseño de un Full-Adder

El diseño de un Full-Adder es un típico problema de ingeniería -en este caso de electrónica- y resulta muy interesante y didáctico seguirlo paso a paso, se recomienda para ello consultar el libro "Digital Systems: Principles and Applications" de Ronald J. Tocci en las páginas 146 y 147.

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.

ABCinSCout
00000
00110
01010
01101
10010
10101
11001
11111

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.


Figura No. 11. Circuito Completo para Full-Adders.El PseudoLenguaje que se describe en el siguiente punto tiene la cualidad de permitir a quien lo ocupa ampliar su capacidad de resolver problemas mediante el uso de computador.
Sindicacion RSSSindicacion RSS forosNoticias en tu correo© 2004 F.J.M.Información Legal