36
Fundamentos de Computadores Tema 5 Circuitos Aritméticos

sumadores basicos

Embed Size (px)

Citation preview

Page 1: sumadores basicos

Fundamentos de Computadores

Tema 5

Circuitos Aritméticos

Page 2: sumadores basicos

OBJETIVOS

• Conceptuales:

Suma y resta binaria

Implementaciones hardware/software

Circuito sumador y semi-sumador básico

Sumadores/restadores de n bits

Acarreo y desbordamiento

Unidad aritmético-lógica

Page 3: sumadores basicos

OBJETIVOS

• Procedimentales:

Diseño de etapas aritméticas básicas

Diseño de sumadores de n bits.

Asociación de sumadores.

Diseño de sumadores/restadores en complemento a 2

Diseño de unidades aritmético-lógicas

Page 4: sumadores basicos

OBJETIVOS

• Actitudinales:

Importancia del diseño modular y reutilización de diseños.

Complemento a 2 como base para la implementación

hardware de circuito aritméticos

Abstracción al nivel RT

Page 5: sumadores basicos

Bibliografía

Básica:[GARC92] Capítulos 3, 7 y 8[NELS96] Capítulos 1 y 4[WAKE94] Capítulos 2 y 5[ALMO94] Capítulos 1, 2 y 3

Complementaria:[FLOYD00] Capítulo 2[HAMA90]

Page 6: sumadores basicos

CONTENIDOS

INTRODUCCIÓN

CIRCUITOS SUMADORES BÁSICOS

SUMADOR PARALELO DE N BITS

SUMADOR RESTADOR

UNIDAD ARITMÉTICO LÓGICA (ALU)

Page 7: sumadores basicos

INTRODUCCIÓN

Los sistemas digitales poseen una gran potencia de cálculo ya quepermiten ejecutar con gran velocidad operaciones aritméticas ylógicas

Una operación aritmética en un computador puede ser realizadade dos formas:

hardware: existe un circuito en el procesador querealiza esa operación(gran velocidad y alto coste)

software: existe un algoritmo que descompone esaoperación en otras más elementales queson realizadas mediante hardware

Page 8: sumadores basicos

INTRODUCCIÓN

Hardware aritmético en los procesadores:

Todos los procesadores poseen al menos un sumador-resta-dor, los procesadores diseñados para el cálculo numérico(coprocesadores matemáticos) poseen multiplicadores eincluso circuitos para la división.

Software aritmético en los procesadores:

Los procesadores más simples poseen instrucciones para lasuma y la resta, a medida que aumenta la complejidad seincluyen instrucciones de multiplicación y división, en los máscomplejos se tienen operaciones más abstractas comoexponenciales, logaritmos, etc

Page 9: sumadores basicos

INTRODUCCIÓN

Las principales diferencias entre la forma de operar manual y la deun computador digital son:

La base del sistema de numeración es B = 2 (binaria).Aunque no siempre, también la aritmética a utilizar es labinaria.

La forma de representar números con signo normalmenteno es con signo-magnitud, sino a través de los complemen-tos (a 2 o a 1).

El número de bits de los datos está acotado, lo que intro-duce errores de desbordamiento, de precisión y de cum-plimiento de propiedades algebraicas (las operaciones sevuelven no-cerradas y pueden incumplirse las propiedadesasociativas y distributiva).

Page 10: sumadores basicos

CIRCUITOS SUMADORES BÁSICOS

Ejemplo de suma de dos números binarios:

En general:

1 0 0 1

0 0 1 1

1 1 0 0

A

B

Suma

0 1 1 Acarreo

a3 a2 a1 a0

b3 b2 b1 b0

S3 S2 S1 S0

A

B

Suma

c3 c2 c1 Acarreo

Page 11: sumadores basicos

CIRCUITOS SUMADORES BÁSICOS

Semisumador o Half Adder:Se trata del circuito que suma dos bits. Obtiene como salidael bit de suma y el acarreo.

HAai

bi

Si

Ci+1

ai bi Ci+1 Si

0 0 0 0 1 0

0 1 1 1

0 10 11 0

Page 12: sumadores basicos

CIRCUITOS SUMADORES BÁSICOS

Semisumador o Half Adder:Una posible implementación mediante puertas lógicas

Ci+1 = ai · bi

Si = ai ⊕ bi

=1Si

aibi

&Ci+1

aibi

Page 13: sumadores basicos

CIRCUITOS SUMADORES BÁSICOS

Sumador completo o Full Adder:Permite realizar la suma de tres bits simultáneamente.Obtiene como salida el bit de suma y el acarreo.

FA

aibi

Si

Ci+1Ci

ai bi Ci Ci+1 Si

0 0 0 0 0 0 0 1

0 1 00 1 11 0 01 0 11 1 01 1 1

0 10 11 00 11 01 01 1

Page 14: sumadores basicos

CIRCUITOS SUMADORES BÁSICOS

Full Adder: Una implementación mediante puertas lógicas:

Ci+1 = ai · bi + ai · Ci + bi · Ci

Si = ai ⊕ bi ⊕ Ci

=1aibi Ci

=1Si

&aibi

aiCi

Ci+1

Cibi

&

&

&

Page 15: sumadores basicos

CIRCUITOS SUMADORES BÁSICOS

Full Adder: Una implementación mediante semisumadores

HAai

bi

Si

Ci+1HA

Ci

Si

Ci+1

>1Ci+1

Si

Page 16: sumadores basicos

SUMADOR PARALELO DE n BITS

Un sumador paralelo de n bits, es un dispositivo lógico combi-nacional de 2n+1 entradas y n+1 salidas que realiza la suma dedos números binarios de n bits.

A B

S

an-1an-2 a0 bn-1bn-2 b0

Sn-1Sn-2 S0

CinCout

Cout cn-1 . . . c2 c1 c0 = Cin an-1 . . . a2 a1 a0bn-1 . . . b2 b1 b0

Sn-1 . . . S2 S1 S0

+

Page 17: sumadores basicos

SUMADOR PARALELO DE n BITSSumador paralelo con acarreo serie

Es el más intuitivo y tiene un coste razonablemente bajo.

También es conocido como sumador de rizado o ripple adder. Se trata de un circuito modular.

FA

a1b1

S1C2

C1

S0C1

FA

an-1bn-1

Sn-1Cout = Cn

Cn-1

. . . . FA

a2b2

S2C3

C2

FA

a0b0C0 = Cin

Page 18: sumadores basicos

SUMADOR PARALELO DE n BITSSumador paralelo con acarreo serie

Es lento debido a la propagación serie del acarreo

El tiempo que tarda en realizarse una suma crece linealmentecon el número de bits.

FA

a1b1

S1C2

C1

S0C1

FA

an-1bn-1

Sn-1Cout = Cn

Cn-1

. . . . FA

a2b2

S2C3

C2

FA

a0b0C0 = Cin

Page 19: sumadores basicos

El problema del desbordamiento en la suma de magnitudes

Con n bits el rango representable es [0,2n-1]

Si A+B>2n-1, el resultado no es representable hay desbordamiento (overflow)

Cout señala la existencia de desbordamiento

En caso de desbordamiento, el resultado correcto está en elnúmero de n+1 bits CoutSn-1 - S0 = A + B

0 0 1 1 (0)1 0 0 10 0 1 1

1 1 0 0

+

CiAB

OK!

1 0 1 1 (0)1 0 0 11 0 1 1

0 1 0 0

+AB A + B = 1 0 1 0 0

A + B ≠

Page 20: sumadores basicos

La suma-resta de números con signo

Calcular la diferencia A-B es equivalente a calcular A + (-B) la resta aritmética se reduce a una suma implica trabajar con números con signo

A, B

s/r

B ( −B)

S = A + B

0 (s) 1 (r)

Page 21: sumadores basicos

La suma-resta de números en compl. a 2

Utilizaremos la notación complemento a 2 para representar losnúmeros positivos y negativos

1001 = -70101 = +51110 = -2

1100 = -40100 = +40000 = 01

0011 = +30100 = +40111 = +7

1100 = -41111 = -11011 = -51

0101 = +50100 = +41001 = -7

1001 = -71010 = -60011 = +31

desbordamiento

Page 22: sumadores basicos

SUMADOR RESTADOR

A, B

s/r

B -B

S = A + B

0 (s) 1 (r)

Sumador paralelo

A

Y

B

Complementador de n bits

Cin s/r

C

S

Cout

En general,A - B = A + (-B)

de n bits

Page 23: sumadores basicos

SUMADOR RESTADOR

El complementador es simplemente una colección de XOR:

Y

B

Complementador de n bits

CC Y0 B1 B

= 1

Bn-1

Yn-1

= 1

Bn-2

Yn-2

= 1

B0

Y0

. . .

C

Page 24: sumadores basicos

El problema del desbordamiento en la suma-resta de números con signo

Se pone de manifiesto porque la magnitud ocupa un bit más yel bit de signo no es correcto

En caso de desbordamiento, el resultado correcto está en elnúmero de n+1 bits CoutSn-1 - S0 = A + B

La detección del desbordamiento se lleva a cabo mediante unaseñal adicional: el bit de overflow (V)

Page 25: sumadores basicos

El problema del desbordamiento

En la suma, el desbordamiento se produce cuando: al sumar dos números positivos se obtiene un negativo al sumar dos números negativos se obtiene un positivo

V = Cout ⊕ Cn-1

0 an-2 a0. . .

0 bn-2 b0. . .

1 0

1 Sn-2 S0. . .

Cn-1Cn

1 an-2 a0. . .

1 bn-2 b0. . .

0 1

0 Sn-2 S0. . .

Cn-1Cn

Page 26: sumadores basicos

SUMADOR RESTADOR

El sumador restador quedaría:

A B

+/-

s/rCout

S

V

V = Cout ⊕ Cn-1

FA

an-2 bn-2

Sn-2

Cn-2Cn-1FA

an-1 bn-1

Sn-1

Cn = Cout.

=1

V

Bit de Signo (en su caso)

Page 27: sumadores basicos

ALU: La Unidad Aritmético-Lógica

(Arithmetic-Logic Unit)

Es el circuito donde se realiza el procesado de datos

Procesado: operaciones aritméticas y lógicas. Normalmente se opera sobre dos datos

Usualmente pueden realizar diversas operaciones. Para escogerlas se incluyen unas señales de selección

Además de las salidas que muestran el resultado de laoperación, se incluyen otras salidas (flags) de estado ode condición. Típicamente son Cout, V, Z (Z=1 si el resultado es 0) y S(signo)

Page 28: sumadores basicos

ALU: La Unidad Aritmético-Lógica

A = an-1 ...a0 B = bn-1 ...b0

F = fn-1 ...f0

señales de

n n

n

kALU

m salidas

Cin

Sk-1 ...S0de estado

selección

Page 29: sumadores basicos

ALU: La Unidad Aritmético-Lógica

Un ejemplo es:

S2S1S0 Función ALUCin = 0 Cin = 1

0 0 0 F = A Transfiere F = A + 1 Incrementa0 0 1 F = A+ B Suma F = A + B + 1 Suma con acarreo0 1 0 F = A - B - 1 Resta y decrementa F = A - B Resta0 1 1 F = A - 1 Decrementa F = A; Transfiere1 0 0 F = A ∪ B ≡ A v B: OR

F = A ⊕ B: XORF = A & B ≡ A ∩ B ≡ A ^ B: AND

F = A: NOT

1 0 11 1 01 1 1

Page 30: sumadores basicos

ALU: La Unidad Aritmético-Lógica

Realización de la ALU: Se separan las partes Aritmética y Lógica. Cada una de ellas n-plica la etapa de un bit.

LUi AUi

ai bi Ci

S1S0

Ci+1

1 0

fi

S2

fAUifLUi

Page 31: sumadores basicos

ALU: La Unidad Aritmético-Lógica

-> ALU de n bits como cascada de n módulos de 1 bit:

ALU0

a0 b0

CinC1

f0

ALUi

ai bi

Ci+1

fi

ALUn-1

an-1 bn-1

Cout

fn-1

CiCn-1. . . . . .

S2S1S0

Page 32: sumadores basicos

Diseño de la Unidad Lógica

Diseño con multiplexor

También se puede realizar un diseño en dos niveles

0123

&

fLUi

aibi

>1aibi

=1aibi

1ai

S1S0

1 0

Función S1S0 fLUi

F = A ∩ B: AND 00 ai . bi

F = A ∪ B: OR 01 ai + bi

F = A: NOT 10 ai

F = A ⊕ B: XOR 11 ai ⊕ bi

Page 33: sumadores basicos

Diseño de la Unidad AritméticaEl bloque aritmético consta básicamente de un sum. paraleloPara obtener las diferentes operaciones se ha de modificar losdatos de entrada al sumador

S2S1S0 Función ALUCin = 0 Cin = 1

0 0 0 F = A Transfiere F = A + 1 Incrementa0 0 1 F = A+ B Suma F = A + B + 1 Suma con acarreo0 1 0 F = A - B - 1 Resta y decrementa F = A - B Resta0 1 1 F = A - 1 Decrementa F = A; Transfiere

Sumador

Ai

Bi

Fi = Ai + Yi

CiCi+1

S1S0Generador YYi

Page 34: sumadores basicos

Diseño de la Unidad Aritmética

Sumador paralelo

A B

F = A + B

Cin = 0Cout Sumador paralelo

A B

F = A + B + 1

Cin = 1Cout

Suma Suma con acarreo

Sumador paralelo

A 0

F = A

Cin = 0Cout Sumador paralelo

A 0

F = A + 1

Cin = 1Cout

Transfiere A Incrementa A

Page 35: sumadores basicos

Diseño de la Unidad Aritmética

Sumador paralelo

A B

F = A + B + 1

Cin = 1Cout

Sumador paralelo

A 11 ... 1

F = A - 1

Cin = 0Cout Sumador paralelo

A 11 ... 1

F = A

Cin = 1Cout

(f) Resta

(g) Decrementa A (h) Transfiere A

Sumador paralelo

A B

F = A + B

Cin = 0Cout

(e) Resta y decrementa

Page 36: sumadores basicos

Diseño de la Unidad Aritmética

S1S0 Yi0 0 00 1 Bi1 0 Bi1 1 1

bi

Yi

S1S00 00 11 11 0

>1&bi

S0

&Yi

biS1

Sumador

Ai

Bi

Fi = Ai + Yi

CiCi+1

S1S0Generador YYi

0 1

0 0

0 11 11 0