En suma:
Si las cadenas a sumar tienen diferente signo, se debe primero identificar qué
cadena tiene la mayor magnitud (sea A la cadena de mayor magnitud y B la de
menor magnitud). El signo del resultado va a ser el signo que tenga A, y la
magnitud resultado se obtiene restando la magnitud de B a la magnitud de A.
Resta:
El algoritmo para calcular la resta entre las cadenas C1 y C2, puede pensarse como
una suma, aplicando la siguiente equivalencia:
C1 - C2 = C1 + (-C2)
a partir de invertir el bit de signo sobre C2 Luego de ese paso, la operación se
traduce en una suma y se deben analizar los casos que se describieron en el
apartado anterior.
Si se considera, por ejemplo, la resta 1101 - 1001, entonces como primer paso se la
traduce en la suma 1101 + 0001 y dicha suma se resuelve considerando los signos
adecuadamente, según el algoritmo de la sección anterior.
Complemento a 1 (Ca1)
El complemento a 1 de un número binario se refiere a la secuencia de bits que se
obtiene al invertir todos los bits de ese número. Por ejemplo, el complemento a 1 de
la secuencia binaria 0101 es 1010.
CA2
A la hora de representar se tiene en cuenta si el n´umero es positivo (o cero), o si
es negativo. Los números positivos se representan en binario sin signo y
los números negativos se representan con el complemento a dos de la cadena que
representa su valor absoluto.
Rango
la cadena que nos da al m´aximo es 011...11 (un 0 seguido de todos unos).
Para el caso negativo, como al momento de interpretarlo vamos a
aplicar la operación de complementar, lo que queremos es buscar al
número cuyo complemento sea lo mas grande posible. De todas las
cadenas negativas, esto lo vamos a obtener con 100...00 (un 1
seguido de todos ceros).
Finalmente, el rango es:
[-2n-1; 2n-1 - 1]
4.5. Recapitulando Ca1 y Ca2
El complemento de 1 de un número binario es otro número binario pero
cambiando los ceros por unos y los unos por ceros, es decir, transformar el bit 0 a 1
y el 1 bit a 0.
Ejemplos:
Supongamos los siguientes números de 4 bits:
Complemento a 1 de 7 (0111) es 8 (1000)
Complemento a 1 de 12 (1100) es 3 (0011)
El complemento a 2 se calcula sumando una unidad al valor decimal que resulta
al calcular el complemento a 1.
Ejemplos:
El complemento a 2 de 7 (0111) es 9 (1001) (8+1)
El complemento a 2 de 12 (1100) es 4 (0100) (3+1)
Fíjate que para calcular el complemento a 2 de un número, lo primero que debes
realizar es calcular el complemento a 1 y luego 1.
La principal diferencia entre el complemento a 1 y el complemento a 2 es que
el complemento a 1 tiene dos representaciones para el cero:
+0 = 00000000 (cero positivo)
-0 = 11111111 (cero negativo)
Mientras que en el complemento a 2, sólo hay una representación para el valor
cero 00000000 (+0) porque si añadimos 1 a 11111111 (-1), obtenemos 00000000
(+0) que es lo mismo que cero positivo. Esta es la principal razón por lo que se
utiliza el complemento a 2 en vez del complemento a 1.
Muchos de los primeros ordenadores, incluyendo el CDC 6600, el LINC, el PDP-1 y el
UNIVAC 1107, usaron la notación de complemento a uno. Los sucesores del CDC
6600 continuaron usando el complemento a uno hasta finales de la década de los
80, y los descendientes de UNIVAC 1107 (la serie UNIVAC 1100/2200) todavía lo
hacen, pero la mayoría de los ordenadores modernos usan el complemento a dos.
El complemento a dos se utiliza principalmente en las operaciones matemáticas
con números binarios. En particular, la resta de números binarios se facilita
enormemente utilizando el complemento a dos: la resta de dos números binarios
puede obtenerse sumando al minuendo el complemento a dos del sustraendo. Se
utiliza porque la unidad aritmético-lógica no resta números binarios, suma binarios
negativos, por eso esta conversión al negativo.
Semisumador
Un semi-sumador admite dos dígitos binarios en sus entradas y genera
dos dígitos binarios en sus salidas: un bit de suma y un bit de
acarreo.
Lógica del semi-sumador. A partir del funcionamiento lógico de un semi-sumador, expuesto en la Tabla 6.1, las
expresiones correspondientes a la suma y al acarreo de salida se pueden obtener como funciones de las
entradas. Observe que la salida de acarreo (Cout) es 1 sólo cuando A y B son 1; por tanto, Cout puede expresarse
como una operación AND de las variables de entrada.
Cout = AB
Observe ahora que la salida correspondiente a la suma (Σ) es 1 sólo si las variables A y B son distintas.
Por tanto, la suma puede expresarse como una operación OR-exclusiva de las variables de entrada.
El segundo tipo de sumador es el sumador completo.
Un sumador acepta dos bits de entrada y un acarreo de entrada, y
genera una salida de suma y un acarreo de salida.
Lógica del sumador completo. El sumador completo tiene que sumar dos bits de entrada y un acarreo de
entrada. Del semi-sumador sabemos que la suma de los bits de entrada A y B es la operación OR-exclusiva
de esas dos variables, A ⊕ B. Para sumar el acarreo de entrada (Cin) a los bits de entrada, hay que aplicar
de nuevo la operación OR-exclusiva, obteniéndose la siguiente ecuación para la salida de suma del
sumador completo:
Σ = (A ⊕ B) ⊕ Cin
Para formar un sumador binario en paralelo se conectan dos o más sumadores completes
Como se ha visto en la Sección 6.1, un único sumador completo es capaz de sumar dos números binarios
de 1 bit y un acarreo de entrada. Para sumar números binarios de más de un bit, se tienen que utilizar sumadores
completos adicionales.
para números de dos bits se necesitan dos sumadores, para números de cuatro bits
hacen falta cuatro sumadores, y así sucesivamente
MUX
DEMUX
Codificador:
Decodificador
Los multiplexores
y demultiplexores permiten seleccionar y
direccionar señales de entrada a través de una
única línea de salida o entrada, respectivamente.
Por otro lado, los codificadores y decodificadores se
utilizan para comprimir y descomprimir la
información.
La CPU utiliza el bus de direcciones para especificar
posiciones de memoria o direcciones y para seleccionar puertos.
El bus de datos se emplea para transferir
instrucciones de programa y datos entre la CPU, las memorias y los puertos.
El bus de control se utiliza
para transferir señales de control hacia y desde la CPU.
Unidad aritmético-lógica. La ALU es el elemento de procesamiento clave del microprocesador. Realiza, dirigida
por la unidad de control, operaciones aritméticas (suma, resta, multiplicación y división) y operaciones
lógicas (NOT, AD, OR y OR-exclusiva), así como muchos otros tipos de operaciones. Los datos con los que
trabaja la ALU se obtienen de la matriz de registros.
El bus de direcciones. El bus de direcciones es una “calle de una sola dirección” a través de la cual el
microprocesador
envía un código de dirección a la memoria o a otro dispositivo externo. El tamaño o anchura del
bus de direcciones está especificado por el número de hilos conductores o pines.
El bus de datos. El bus de datos es una “calle de dos direcciones” a través de la cual se transfieren datos o
códigos de instrucción hacia el microprocesador o se envían hacia el exterior los resultados de las operaciones
o cálculos.
El bus de control. El bus de control es utilizado por el microprocesador para coordinar sus operaciones y para
comunicarse con los dispositivos externos. El bus de control dispone de señales que permiten leer y escribir
datos en memoria o realizar una operación de entrada/salida en el instante adecuado. Líneas del bus de control
también se usan para insertar estados de espera especiales con el fin de adaptarse a dispositivos más lentos
y evitar la contienda de bus, una condición que puede producirse si hay dos o más dispositivos intentando
comunicarse a un mismo tiempo.
ALU
Esquema de una ALU
El siguiente es un esquema básico de una ALU. Donde podemos identificar:
A y B: operandos
F: Entrada de unidad de control
D: Estado de salida
R: Salida del resultado
Un flip-flop es un circuito secuencial básico en
electrónica digital que se utiliza como unidad
básica de almacenamiento de información en
sistemas digitales.
Funcionan como interruptores electrónicos que
pueden cambiar su estado de salida en función de
una señal de entrada, y mantienen su estado de
salida anterior en ausencia de una señal de
entrada.
En otras palabras, un flip-flop es un circuito
secuencial que tiene como objetivo memorizar un
dato binario.
SET indica que la
salida Q está a nivel
ALTO.
RESET indica que
la salida Q está a
nivel BAJO.
El flip-flop SR (set-reset) es un circuito que tiene
dos entradas, una entrada S (set) y una entrada R
(reset) , y dos salidas, una salida Q y una salida Q
complementaria. Cuando la entrada S es 1 y la
entrada R es 0, la salida Q se establece en 1 y la
salida Q complementaria se establece en 0. Por
otro lado, cuando la entrada S es 0 y la entrada R
es 1, la salida Q se establece en 0 y la salida Q
complementaria se establece en 1. Cuando ambas
entradas son 0, el estado anterior del flip-flop se
mantiene.
El flip-flop D (data) es un circuito que tiene una
entrada D (data), una entrada de reloj y dos
salidas, una salida Q y una salida Q
complementaria. Cuando la señal de reloj cambia
de 0 a 1, el valor de la entrada D se carga en la
salida Q. Cuando la señal de reloj cambia de 1 a 0,
la salida Q se mantiene en el último valor que se
cargó.
Flip flop D y T tienen una sola enrrada los otros dos.
Una entrada tambié es de clock 1010101, activos por nivel alto 1, o bajo 0.
SR
Cualquiera de los modelos pueden
Pset y clear en condiciones iniciales.
ser sincrónicos (tener un patrón temporal) o
asincrónicas.
SR
FLIP FLOP D mantiene el valor hasta que el pulso de clock llegue:
Lo habilita el pulso de clock
El D se utiliza para los buses (comunicación) y los
registros.
FLIP FLOP T
El T se utiliza para los contadores.
Si era 0 se tranforma en 1 si era 1 en 0
JK es la unión de todos
Flip RS
.
Clock
Paralelo
Z (cero): vale 1 si el resultado de la operación es
0, vale 0 si el resultado de la operación es distinto
de 0.
C (carry): en la suma vale 1 si hay acarreo del bit
más significativo; en la resta vale 1 si hay borrow
("pido prestado") hacia el bit más significativo.
V (overflow): significa que el resultado no se
puede representar.
N (negative): significa que el primer bit del
resultado vale 1.
Como ya vimos en los distintos sistemas numéricos
que estudiamos en las semanas anteriores (signo
magnitud, Ca1, Ca2), el indicador de que una
cadena representa un valor negativo, es que el
primer bit del resultado, el más significativo, vale
1.
¿Qué significa en SM que una cadena empiece con
1?
Significa que es un número negativo.
¿Qué significa en Ca2 que una cadena empiece con
1?
Significa que es un número negativo.
¿Qué significa en BSS que una cadena empiece con
1?
Nada... simplemente representa a un número
cuyos bits, en su totalidad, representan la
magnitud de este y el valor es NO NEGATIVO.
El flag V, es el flag de desbordamiento, o desborde,
u overflow. Indica en Ca2 que el resultado no se
puede representar.
Ejemplo: sumo dos números positivos y me da uno
negativo
Sumo dos números negativos y me da uno positivo
Resto a un negativo, un positivo y me da positivo
Resto a un positivo, un negativo y me da negativo
DF (direction flag): controla la selección de
incremento o decremento de los registros SI y
DI en las operaciones con cadenas de
caracteres (1=decremento y 0=incremento).
La bandera DF se controla, se controla con las
instrucciones STD y CLD
IF (interruption flag): controla el disparo de
las interrupciones (1= habilita las
interrupciones; 0=deshabilita las
interrupciones). La interrupción no
enmascarable es la única que no puede ser
bloqueada por esta bandera. El estado de la
bandera IF se controla con las instrucciones STI
y CLI.
TF (trap flag): permite la operación del
procesador en modo de depuración
SF (sign flag): contiene el signo resultante de
una operación aritmética (0=positivo,
1=negativo).
AF(auxiliar carry flag): contiene el acarreo
del bit 3. Esta bandera se prueba con las
instrucciones DAA y DAS para ajustar el valor
de AL después de una suma o resta BCD.
PF (parity flag): indica si el número de bits 1,
del byte menos significativos de una operación,
es par (0=número de bits 1 es impar;
1=número de bits 1 es par).
CF (carry flag): contiene el acarreo del bit de
mayor orden después de una operación
aritmética; también almacena el contenido del
último bit en una operación de desplazamiento
o de rotación.
SIPO: Significa "Entrada en Serie, Salida en Paralelo". Este tipo de registro tiene una única
entrada en serie, pero múltiples salidas en paralelo, lo que permite que todos los bits
almacenados en el registro se recuperen simultáneamente.
SISO: Significa "Entrada en Serie, Salida en Serie". Este tipo de registro tiene una única
entrada y una única salida en serie. La información se ingresa bit a bit en la entrada, y cada bit se
desplaza a través del registro hasta llegar a la salida, donde se recupera bit a bit. Los registros
SISO se utilizan comúnmente en líneas de retardo y convertidores de serie a paralelo.
PISO: Significa "Entrada en Paralelo, Salida en Serie". Este tipo de registro tiene múltiples
entradas en paralelo, pero una única salida en serie. Los bits se cargan simultáneamente en las
entradas paralelas, y luego se desplazan bit a bit a través del registro hasta llegar a la salida. Los
registros PISO se utilizan comúnmente en buffers de datos y convertidores de paralelo a serie.
PIPO: Significa "Entrada en Paralelo, Salida en Paralelo". Este tipo de registro tiene
múltiples entradas y múltiples salidas en paralelo. Los bits se cargan simultáneamente en las
entradas paralelas, y luego se recuperan simultáneamente en las salidas paralelas. Los registros
PIPO se utilizan comúnmente en registros de memoria y registros de desplazamiento de bits.