sumadores basicos

Post on 04-Jul-2015

849 views 1 download

Transcript of sumadores basicos

Fundamentos de Computadores

Tema 5

Circuitos Aritméticos

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

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

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

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]

CONTENIDOS

INTRODUCCIÓN

CIRCUITOS SUMADORES BÁSICOS

SUMADOR PARALELO DE N BITS

SUMADOR RESTADOR

UNIDAD ARITMÉTICO LÓGICA (ALU)

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

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

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).

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

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

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

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

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

&

&

&

CIRCUITOS SUMADORES BÁSICOS

Full Adder: Una implementación mediante semisumadores

HAai

bi

Si

Ci+1HA

Ci

Si

Ci+1

>1Ci+1

Si

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

+

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

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

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 ≠

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)

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

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

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

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)

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

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)

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)

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

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

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

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

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

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

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

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

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