Aritmética Binaria

Anuncio
Electrónica Básica
Aritmética Binaria
Electrónica Digital
José Ramón Sendra Sendra
Dpto. de Ingeniería Electrónica y Automática
ULPGC
ARITMÉTICA BINARIA
Operaciones en el sistema Binario Natural
Suma Binaria
Resta Binaria
Unidad Aritmética Lógica (ALU)
Operaciones en BCD Natural
Suma en BCD
Resta en BCD
ARITMÉTICA BINARIA
Operaciones en el sistema Binario Natural
Suma Binaria
Sumador sin acarreo o Half Adder (HA)
Sumador con acarreo o Full Adder (FA)
Sumador paralelo con acarreo serie
Sumador paralelo con acarreo paralelo
Sumador serie
Resta Binaria
Representación de los números negativos
Operaciones en Complemento a 1
Operaciones en Complemento a 2
Desbordamientos (Overflow)
Circuito complementador 74487
Comparadores binarios en magnitud
Unidad Aritmética Lógica (ALU)
SUMA BINARIA
Sumador sin acarreo o Half Adder
Ai Bi Suma Ac.
0 0
0
0
0 1
1
0
1 0
1
0
1 1
0
1
Ai
0
Bi
0 0
1
1
Ai
0
Bi
0
0
1
1
0
0
1
Suma = Ai Bi + Ai Bi
1
0
1
Ac. = Ai Bi
= Ai + Bi
Ai
Suma
Bi
A
B
Acarreo
S
HA
Co
SUMA BINARIA
Sumador con acarreo o Full Adder
A
0
0
0
0
1
1
1
1
B Ci
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
S
0
1
1
0
1
0
0
1
Co
0
0
0
1
0
1
1
1
AB
Ci 00 01 11 10
S
0
0
1
0
1
1
1
0
1
0
AB
Ci 00 01 11 10
Co
0
0
0
1
0
1
0
1
1
1
S = Ci xor A xor B
Co = B Ci + A Ci + A B = CiA + CiB + A B
SUMA BINARIA
Sumador con acarreo o Full Adder
Implantación estándar: 6 puertas
A
B
S
Ci
A
B
A
Ci
B
Ci
A
B
Ci
CO
S
FA
Co
SUMA BINARIA
Sumador con acarreo o Full Adder
Implantación alternativa: 5 puertas
A
S
HA
B
Co
A+B
AB
S
HA
Co
A + B + Ci
S
Ci (A + B)
Ci
+
A B + Ci (A + B) = A B + B Ci+ A Ci
Co
SUMA BINARIA
Sumador paralelo con acarreo serie
A2 B2
A1 B1
+
A0 B0
+
+
Cout
S2
C2
S1
C1
S0
Cin
SUMA BINARIA
Sumador paralelo con acarreo paralelo (es más rápido)
Necesitamos predecir
el acarreo para cada
término de la suma
A2 B2
Cout
+
A1 B1
+
S2
A0 B0
+
S1
S0
Cin
SUMA BINARIA
Sumador paralelo con acarreo paralelo
Se trata de predecir el acarreo para cada término de la suma
C0 = Cin
C1 = A0 B0 + C0 (A0+B0) = G0 + C0 P0
C2 = A1 B1 + C1 (A1+B1) = G1 + [G0 + C0 P0] P1 = G1 + G0 P1 + C0 P0 P1
C3 = ... = G2 + G1 P2 + G0 P1 P2 + C0 P0 P1 P2
Las variables son las entradas al sumador y el acarreo de la primera
etapa
SUMA BINARIA
Sumador paralelo con acarreo paralelo
A2 B2
G2
G2
G1 P2
G0P1 P2
P2
C0P0 P1P2
A0 B0
A1 B1
G1
G0
P1
G1
G0 P1
A2 B2
El circuito es más
complejo pero es
más rápido
P0
C0 P0 P1
G0 C0 P0
A1 B1
A0 B0
Cout
+
+
+
S2
S1
S0
C0=Cin
SUMA BINARIA
Sumador serie
A
+
B
Ci
S
Co
CLK
Célula de memoria
SUMA BINARIA
Sumadores comerciales
7480 → sumador completo de 1 bit
7482 → sumador completo de 2 bit
7483 → sumador completo de 4 bit
74182 → generador de acarreo previo
RESTA BINARIA
En principio se pueden diseñar circuitos restadores de la misma forma a
como lo hicimos con los sumadores
Sin embargo lo que se suele hacer es usar los mismos circuitos
sumadores para hacer las restas
Para ello tenemos que ver primero como se representan los números
binarios negativos
RESTA BINARIA
Representación de números negativos
Representación de números positivos es similar en la mayoría de los sistemas
Mayores diferencias surgen en la representación de los valores negativos
Dos esquemas fundamentales:
Complemento a uno
Complemento a dos
Especificaciones iniciales:
Trabajaremos con palabras de cuatro bits
Podemos representar 16 valores distintos
Aproximadamente la mitad serán positivos y la mitad negativos
RESTA BINARIA
Complemento a uno
DEF: Si N es un número positivo, N es su negativo de tal forma que:
n
Ca1 (N) = N = (2 - 1) - N
Ej: Ca1 (7)
2
4
1
= 10000
= - 00001
1111
7
= - 0111
1000 = -7
TRUCO: Cambiamos cada bit por su complementario
Ej: Ca1 (7)
0111 -> 1000
RESTA BINARIA
Complemento a uno
-0
-1
-2
1111
1110
+0
0000
0001
1101
+1
0010
+2
+
-3
1100
0011
+3
0 100 = + 4
-4
1011
0100
+4
1 011 = - 4
-5
1010
0101
1001
-6
0110
1000
-7
0111
+5
+6
+7
Hay dos representaciones del cero (malo)
-
RESTA BINARIA
Complemento a dos
DEF: Si N es un número positivo:
n
Ca2 (N) = 2 - N = Ca1 (N) + 1
Ej: Ca2 (7)
Ej: Ca2 (7)
2 = 10000
4
2 = 10000
-7 = - 0111
-(-7) = -1001
4
1001 = repr. de -7
0111 = repr. de 7
RESTA BINARIA
Complemento a dos
TRUCO1: Complementamos cada bit y al resultado le sumamos 1,
es decir, le sumamos 1 al Ca1 del número
0111 -> 1000 + 1 -> 1001 (representación de -7)
1001 -> 0110 + 1 -> 0111 (representación de 7)
TRUCO2: Ir de izquierda a derecha, respetar el primer 1 que nos
encontremos y complementar el resto de bits
0111 -> 1001 (representación de -7)
1001 -> 0111 (representación de 7)
RESTA BINARIA
Complemento a dos
-1
-2
-3
1111
1110
+0
0000
0001
1101
+1
0010
+2
+
-4
1100
0011
+3
0 100 = + 4
-5
1011
0100
+4
1 100 = - 4
-6
1010
0101
1001
-7
0110
1000
-8
0111
+5
+6
+7
Hay una única representación para el cero (bueno)
Hay un número negativo más
Es menos intuitivo el obtener el negativo de un número
-
RESTA BINARIA
Suma y resta de números en complemento a uno
4
00100
-4
11011
+3
00011
+ (-3)
11100
7
00111
-7
110111
1
Se suma el bit de acarreo
11000
4
00100
-4
11011
-3
11100
+3
00011
1 100000
-1
11110
1
00001
Ca1 del
resultado
RESTA BINARIA
Suma y resta de números en complemento a dos
4
00100
-4
11100
+3
00011
+ (-3)
11101
7
00111
-7
111001
Se desprecia el bit de
acarreo
4
00100
-4
11100
-3
11101
+3
00011
1
100001
-1
11111
Ca2 del
resultado
La simplicidad de las operaciones aritméticas en la notación de complemento
a dos hace que esta notación sea la más utilizada en sistemas digitales
RESTA BINARIA
Sumador/Restador en complemento a dos
B3 B2 B1 B0
A3 A2 A1 A0
Co
COMPL.
SUMADOR
S3 S2 S1 S0
Ci
M
0 = SUMA
1 = RESTA
RESTA BINARIA
Sumador/Restador en complemento a uno
B3 B2 B1 B0
A3 A2 A1 A0
Co
COMPL.
SUMADOR
S3 S2 S1 S0
M
Ci
0 = SUMA
1 = RESTA
RESTA BINARIA
Circuito complementador
COMPL.
RESTA BINARIA
Ejemplo de circuito complementador: 74487
B0
B1
B2
B3
L
M
B0 B1 B2 B3 → L=0, M=0 → B0 B1 B2 B3
B0 B1 B2 B3 → L=0, M=1 → B0 B1 B2 B3
B0 B1 B2 B3 → L=1, M=0 → 1 1 1 1
B0 B1 B2 B3 → L=1, M=1 → 0 0 0 0
Y0
Y1
Y2
Y3
DESBORDAMIENTO (OVERFLOW)
Si estamos trabajando con n bits (1 bit de signo y n-1 bits de magnitud) los
resultados de las operaciones no deben superar el siguiente rango:
-2n-1 ≤ resultado < 2n-1 -1
Por ejemplo, si trabajamos con n = 4 bits
-24-1 ≤ resultado < 24-1 -1
-8 ≤ resultado < 7
Si nos saliese un número mayor que 7 o menor que -8 es que se ha producido
un desbordamiento y el resultado no será correcto.
DESBORDAMIENTO (OVERFLOW)
Condición de desbordamiento
Sumar dos números positivos y obtener uno negativo o viceversa
-1
-2
1101
-4
-5
1111
1110
-3
-1
+0
0001
0010
1100
0100
1010
0101
1001
-7
1000
-8
0110
0111
+3
+4
+5
+6
+7
5 + 3 = -8 ???
1101
-4
-5
1111
1110
-3
+2
0011
1011
-6
-2
+1
0000
+0
+1
0000
0001
0010
1100
1011
1010
-6
0011
+3
0100
+4
0101
1001
-7
+2
1000
-8
-7 - 2 = +7 ???
0110
0111
+7
+6
+5
COMPARADORES BINARIOS DE
MAGNITUD
COMPARADORES BINARIOS DE
MAGNITUD
COMPARADOR 7485
UNIDAD ARITMÉTICO-LÓGICA (ALU)
ALU 74181
SUMA EN BCD
Representación de números en formato BCD
Los dígitos decimales del 0 al 9 se representan como 0000 a 1001 en binario
Suma:
5 = 0101
5 = 0101
3 = 0011
8 = 1000
1000 = 8
1101 = 13
Los problemas surgen
cuando el resultado
es mayor que nueve
Solución: sumar 6 (0110) si el resultado es mayor que 9
5 = 0101
9 = 1001
8 = 1000
7 = 0111
1101 = 13 en binario
6 = 0110
1 0011 = 1 3 en BCD
1 0000 = 16 en binario
6 = 0110
1 0110 = 1 6 en BCD
SUMA EN BCD
Bloque sumador BCD
A3 A2 A1 A0
Co
B3 B2 B1 B0
SUMADOR
BCD
S3 S2 S1 S0
Ci
RESTA EN BCD
Igual que con la resta binaria, la resta en BCD se hará sumando una
cantidad negativa a otra positiva
Para ello tenemos que ver primero como se representan los números
BCD negativos
RESTA EN BCD
Complemento a diez
DEF: Si N es un número positivo, N es su negativo de tal forma que:
n
Ca10 (N) = N = 10 - N
Ej: Ca10 (3291) = 104-3291 = 10000-3291 = 6709 = 0110 0111 0000 1001
Complemento a nueve
DEF: Si N es un número positivo, N es su negativo de tal forma que:
n
Ca9 (N) = N = 10 - 1-N
Ej: Ca9 (3291) = 104-1-3291 = 6708 = 0110 0111 0000 1000
RESTA EN BCD
Resta de números en complemento a diez
Ej: 5239 - 3291 = 5239 - Ca10 (3291)
Se desprecia el
bit de acarreo
1
0
1
0101 0010 0011
1001
1
0110 0111 0000
1001
10
1011 1001 0100
10010
positivo
110
110
10001
11000
0001 1001 0100
1000 = 1948 OK
RESTA EN BCD
Resta de números en complemento a diez
Ej: 3291 - 5239 = 3291 - Ca10 (5239)
1
0 0011
1
0010
1001
0001
1 0100
0111
0110
0001
1 1000
1010
1111
0010
110
110
10000
10101
1
negativo
1000
0000
0101
Ca10 del resultado
0010 = -1948 OK
RESTA EN BCD
Resta de números en complemento a nueve
Ej: 5239 - 3291 = 5239 - Ca9 (3291)
No se desprecia
el bit de acarreo
positivo
1
0
1
0101 0010 0011
1001
1
0110 0111 0000
1000
10
1011 1001 0100
10001
10
110
110
10001
10111
0001 1001 0100
0111
+1
0
0001 1001 0100
1000 = 1948 OK
RESTA EN BCD
Resta de números en complemento a nueve
Ej: 3291 - 5239 = 3291 - Ca9 (5239)
1
0 0011
1
0010
1001
0001
1 0100
0111
0110
0000
1 1000
1010
1111
0001
110
110
10000
10101
1 1000
negativo
0000
0101
Ca9 del resultado
0001 = -1948 OK
RESTA EN BCD
Resta BCD de 2 dígitos en complemento a nueve
B3 B2 B1 B0
B7 B6 B5 B4
A7 A6 A5 A4
Co
C9
SUMADOR
S7 S6 S5 S4
A3 A2 A1 A0
Ci
Co
C9
SUMADOR
S3 S2 S1 S0
Ci
RESTA BCD
Circuito complementador a nueve
C9
Descargar