Sunteți pe pagina 1din 18

2.

Dispozitive de adunare si scadere


2.1 Sumatorul serial (Serial adder)
Este un automat secvential a carui comportare este data de tabelul de stari. Avem 2 stari
posibile din punct de vedere functional:

S 0 - starea la care se aduna la un moment dat 2 biti si din starea anterioara nu a provenit
transport(carry);

S 1 - starea la care se aduna la un moment dat 2 biti si avem transport.


Vom prezenta n continuare tabelul tranzitiilor:
Inputs
xi yi
0 0
0 0
0 1
0 1
1 0
1 0
1 1
1 1

ci-1
0
1
0
1
0
1
0
1

Outputs
zi
ci
0
0
1
0
1
0
0
1
1
0
0
1
0
1
1
1

La construirea sumatorului folosim bistabile de tip JK:

y (t 1) J (t) y (t) K (t) y (t)


Ecuatiile corespunzatoare unei celule sumator complet sunt:

z x1 x 2 c (t 1)

c(t) x1 x 2 x1 c(t 1) x 2 c (t 1)
a
b

La versiunea data avem si o alternativa daca dupa tabel am fi ales un bistabil de tip D (delay
element). La fiecare impuls de clock adun 2 full adder cell bit, rezulta ca daca vreau sa adun

doua numere a n biti avem nevoie de n impulsuri de clock. Din nefericire un sumator serial
executa suma ntr-un numar de impulsuri de clock egal cu n, daca operanzii au n biti si de
accea, uzual, se apeleaza la sumatoare paralele.

2.2 Sumatoare paralele


1.2.1 Ripple-carry-adderRCA (Sumator cu transport propagat serial)

Un sumator cu transport propagat serial se obtine prin legarea n serie(cascada) a n celule


sumator complet, daca avem operanzi pe n biti.
Caracteristica: Operatia propriu-zisa se executa ntr-un singur impuls de clock numai ca
perioada acestui clock trebuie sa acopere intervalul de timp necesar propagarii transportului n
maniera seriala prin ntreaga schema. Daca delay-ul(ntrzierea) printr-un circuit poarta este d,
atunci perioada clock-ului trebuie sa fie T 2nd.
Operatia de scadere se bazeaza pe adunarea complementului, si pentru generarea
complementului vom apela la o adaugare la schema:

s 0 A B

B A s s 1 B A 1 B A

2.2.2 Scazatoare binare (Binary full subtracter)


Cnd operatia dominanta ca frecventa este scaderea se impune favorizata ipoteza unui
scazator binar, adica sa avem o schema de tipul RCA obtinuta prin cascadarea a n celule

scazatoare complete(full subtracter) a caror sinteza se realizeaza pornind de la urmatorul tabel


de adevar:
Inputs
x0 y0
0 0
0 0
0 1
0 1
1 0
1 0
1 1
1 1

c1
0
1
0
1
0
1
0
1

Outputs
z0
V
0
0
1
1
1
0
0
0
1
0
0
0
0
1
1
0

unde b i este borrow in, iar b i 1 este borrow out.

yi xi bi zi

Ecuatiile fundamentale ale unui scazator complet sunt:

zi xi yi bi

b i1 y i x i y i b i x i b i
Se obtine un scazator complet din celule diferenta.

2.2.3. Carry-lookahead-adderCLA(Sumator cu transport anticipat)


La anterioarele solutii faptul ca transportul trebuia propagat n maniera seriala greva asupra
performantei solutiei si s-a plecat de la ideea mbunatatirii timpului de propagare a transportului
prin generarea n mod anticipat al transportului ntr-o maniera care sa tina cont de istorica
valorica a operanzilor.

-variabila de generare a transportului;

-variabila de propagare a transportului;

n maniera recursiva avem:

c 1 a 0 b 0 a 0 c 0 a 0 b 0 ( a 0 b 0 ) c 0

p0

c 2 a 1 b 1 ( a 1 b 1 ) c 1 g 1 p 1 g 0 p 1 p 0 c 0

g1

p1

c3 g2 p2 g1 p2 p1 g0 p2 p1 p0 c0
c g p g p p g p p p g p p p p c
3
3
2
3
2
1
3
2
1
0
3
2
1
0
0
4
Avantajul:
Avem doar 5 nivele logice n fata de 2n nivele logice ca la ripple-carry-adder pentru
obtinerea sumei.Cele 5 nivele logice sunt:
o 1 - generarea lui p si g;
o 2,3 - generarea lui carry;
o

4,5 - SAU-EXCLUSIV pentru suma( se realizeaza pe 2 nivele logice).

Dezavantaje:

creste numarul intrarilor din SI-urile pentru carry si SAU-rile(pentru bitul i avem i+1
intrari);
creste fan-out-ul p-urilor, adica numarul de circuite pe care le poate alimenta. De
exemplu fan-out-ul lui p n 1 este egal cu n;
structura este neregulata si creste n complexitate si de aceea apar probleme la
implementare.

Toate aceste dezavantaje au deschis o problema a constructiei CLA


constructii se bazeaza pe urmatorul rationament:

c1 g 0 p0 c0
c 0 G 0 ,1 P 0 ,1 c 0 g 1 p 1 g 0 p 1 p 0 c 0
G 0 ,1 g 1 p 1 g

P 0 ,1 p 1 p 0

Generaliznd relatiile de mai sus avem:


K 1

i,K

i,K

j1,K

P i , K P i , j P

j1,K

G
Aceste relatii sunt valabile daca i j K si

P i,K c i

i ,i

j1,K

P i p i ,i

si

i,j

si problema acestei

De exemplu pentru i=0, k=3 iar j=0,1,2 :

P 0 , 3 P 0 ,1 P 2 , 3 P 0 , 0 P 1 ,1 P 2 , 2 P 3 , 3

0 ,3

2 ,3

0 ,2

P 2 ,3 G

3 ,3

P 3 ,3 G

2 ,2

g3 p3 g2 p3 p2 g1 p3 p2 p1 g

P 2 ,2 P 3 ,3 ( G

1 ,1

0 ,0

P 1 ,1 )

Schema CLA este prezentata n cele ce urmeaza:

n termeni de VLSI (very large scale integration) schema se implementeaza foarte usor
castigndu-se spatiu de siliciu. Complexitatea circuitului n termeni de spatiu este n l o g

n , iar

n termeni de timp este l o g 2 n . Dependent de tehnologie este posibil ca solutia CLA sa o


combinam cu solutia RCA pentru ca aceasta combinatie s-ar putea sa duca la o combinatie
favorabila n termeni de timp/cost.
O solutie hibrida cu RCA este prezentata n urmatoarea figura:

Mai exista nca o solutie hibrida sugerata de figura urmatoare:

2.2.4 Carry-skip adder (CSkA)


Aceasta solutie este situata ca si cost si performanta de siliciu ntre RCA si CLA, si ea porneste
de la ecuatia corespunzatoare lui CLA:

P 0 ,3 p 3 p 2 p 1 p 0

G 0 ,3 g 3 p 3 g 2 p 3 p 2 g 1 p 3 p 2 p 1 g
S-a ajuns la urmatoarea solutie tehnica:

Aceasta solutie tehnica se bazeaza pe faptul ca n ceea ce priveste tehnologia CMOS prin
precharging este posibil sa se realizeze initial carry-urile cu 0(intersegment), prezentate mai
sus. Carry-ul se poate genera simultan pentru toate segmentele, ignornd carry-ul care intra n
portile SI.n situatia n care din intrari pentru un anumit segment nu s-a generat carry datorita
carry-ului de intare n segment, este posibil totusi sa fie generat carry dar acesta nu va fi
generat n maniera seriala conform solutiei RCA ci va omite(skip) propagarea seriala prin
traversarea portii SI conditionata pe intrari de factorul logic
produsul p 3 p 2 p 1 p

P i, j

, care n maniera CLA reprezinta

. Se spune ca corespunzator fiecarui segment care este RCA se genereaza

,...

,...

termeni de tipul G. Termenii 0 , 0 , 0 , 1


se obtin mult mai simplu dect termenii 0 , 0 , 0 , 1
.Termenii de tip P sunt generati la segmentele externe. Sa admitem ca n primul segment RCA
avem n general k ranguri si sa admitem ca pe 2 niveluri logice avem o ntrziere d. n aceste
conditii n situatia cea mai defavorabila cnd avem o propagare de transport este valabila relatia
de mai jos:
n
Tad (k ( 2) k )d
k
numarul de segmente interne
numarul de segmente externe
unde:
Tad
k
n
d

- timpul maxim n care sumatorul aduna doua


numere
- numarul de ranguri corespunzatoare unui segment
- numarul total de ranguri ale sumatorului
- ntrzierea pe 2 niveluri logice

De exemplu, pentru schema noastra timpul de propagare maxim este:

T ad (4 (

20
2 ) 4 )d 1 1d
4

n 20
Se poate obtine o solutie mai performanta daca se mparte sumatorul n segmente inegale( se
apeleaza la un artificiu).
Aceasta solutie are timpul de propagare:
Tad (6 1.5 2) d

Concluzie:
Este posibil ca prin divizarea numarului de ranguri al sumatorului n segmente inegale RCA sa
se obtina o solutie mai performanta dect cea corespunzatoare mpartirii n segmente RCA
egale.

2.2.5 Carry-select adder (CSeA)


Este o alta modalitate de a efectua operatia de adunare paralelizat, evident pe baza unei
investitii suplimentare care este sugerata de figura de mai jos.

n anumite tehnologii faptul ca semnalul de carry trebuie sa comande foarte multe intrari duce la
ntrzieri si de aceea semnalul trebuie amplificat. Carry-ul real selecteaza suma parallel
calculata(anterior calculata). Problema care se pune este cum sa se faca mpartirea intrarilor n
segmente RCA astfel inct adunarea sa se faca n forma cea mai favorabila.
Vom face o comparatie ntre toate solutiile de sumatoare prezentate pna acum:
Type
RCA
CLA
CskA
CSeA

Space
O(n)
O(n log2n)
O(n)
O(n)

2.2.6 Manchester (Kilborn) adder

Time
O(n)
O(log2n)
O( n )
O( n )

Este un sumator asemanator solutiei RCA care prezinta un lant serial, care poarta o denumire
specifica Manchester Chain, si care este implementat nu cu porti logice lente ci cu
comutatoare(switch-uri) rapide situate de-a lungul lantului dupa cum sugereaza figura
urmatoare:

-swich generation(comutatorul de generare a transportului);

-0 carry(adica nu se genereaza carry);

-swich plus(comutatorul de propagare a transportului care vine de la rangul anterior).

Daca avem a i b i atunci se propaga oricum 1 logic, iar daca avem a i b i atunci se propaga
oricum 0 logic.
Solutia a revenit odata cu epoca VLSI prin asa numitele pass transistors, de exemplu la AMD29050(Lynch-Swartzlnder). n termeni de VLSI aceste celule se implementeaza favorabil, de
mare viteza.

2.2.7 Carry-completion adder (CCA)


Pna la aceasta solutie am considerat ca am lucrat sincron. Ea urmareste ca n dependenta de
configuratiile binare particulare ale operanzilor sa determin terminarea operatiei ntr-o maniera
asincrona. n vederea implementari acestei idei se uziteaza suplimentar de doua linii de carry:
carry0, care se genereaza fie cnd ambii biti care se aduna de catre o celula sunt 0, fie cnd
unul dintre ei este 1, dar din rangul anterior nu a venit transport(incoming carry);
carry1,care se genereaza cnd cei doi biti care se aduna de catre o celula sunt 1, dar din rangul
anterior a venit transport.

Pentru a implementa aceasta idee, clasica structura de full adder se modifica prin adaosul
revendicat de propagarea celor doua tipuri de carry: carry0 si carry1.Vom avea:

c i0 1 a i b i ( a i b i a i b i ) c i0

c i1 1 a i b i ( a i b i a i b i ) c i1
Carry-completion adder-ul are urmatoarea figura:

Este posibil sa apara semnalul parazit carry-completion signal(CC), care are urmatoarea forma:

C C ( c 10 c 11 ) . . . ( c i0 c i1 ) . . . ( c n0 1 c n1 1 )
Circuitul SI are un numar mare de intrari(53) si nu poate fi realizat pe un singur nivel, ceea ce
reprezinta o scadere(pentru ca apar ntrzieri).

2.2.8 Parity checked adder.Duplication carry.Carry-dependent sum


adder
Avnd n vedere proliferarea aplicatiilor la care se doreste maximizat atributul de fiabilitate sau
de toleranta la defectare, tot mai frecvent se apeleaza la solutii orientate, croite, spre a permite
atingerea dezideratelor de fiabilitate. Drept consecinta unul din controalele foarte des raspndite
n domeniul calculatoarelor e controlul de paritate uzitat din cele mai vechi timpuri pentru
verificarea informatiei, se doreste extins n ceea ce priveste acoperirea operatiilor aritmetice si
logice.

n situatia n care la dispozitivul de nsumare se manifesta un defect se impune controlul


corectei functionari a acestuia. Defectul mai probabil e sa fie singular, si din paleta de defecte
posibile vom considera defectul de tip logic,adica blocarii la 0(stuck-at-0) sau 1(stuck-at1) logic(o intrare sau o iesire ramne agatata pe o valoare si nu se mai misca de pe ea). Pentru
controlul posibilelor defecte dintr-un calculator n general una din strategiile foarte raspndite
consta n asa numitul control de paritate. Asta implica prin definitie ca fiecare cuvnt rezultat n
calculator sa fie alcatuit dintr-un numar, fie par (even parity), fie impar(odd parity) de unitati
binare.
Pentru aceasta codificare este necesar sacrificiul unui bit suplimentar ce trebuie adaugat
cuvntului format din bitii utili. Cuvntul codificat ntr-un cod de paritate (para/impara) e emis pe
magistrala, si la receptia cuvntului se verifica paritatea si daca corespunde atunci se considera
ca emisia s-a efectuat corect, iar daca nu se verifica se spune ca s-a detectat o
eroare(provocata de un defect). Acest control este utilizat la transmiterea informatiei la
memorie. Punem n discutie problema nsumarii controlate prin paritate. Fara a pierde din
generalitate admitem ca lucram n pariate para.
Avem doi operanzi:

A a n 1 . . . a 0
B b n 1 . . .b 0
carora le atasam 2 biti de paritate:

b n 1 . . . b i . . . b 0

n 1

. . . a i . . . a

s
Suma lor este S s n 1 . . . s 0 cu bitul de paritate
s

(a
p

n 1

s n 1 . . . s i . . . s 0

b n 1 c n 1 ) . . . ( a i b i c i ) . . . ( a 1 b 1 c 1 ) ( a 0 b 0 c 0 )

b p c n 1 . . . c 0

c

Pot sa efectuez un control al operatiei de adunare care sa se bazeze pe schema prezentata


anterior.
Checker-ul este o portiune de control care se ataseaza sumatorului propri-zis pentru a se
controla operatiile care se fac cel mai des.
Daca defectul se manifesta pe lantul de carry atunci numarul de biti de carry mpreuna cu
numarul de biti de suma eronati e ntotdeauna par(burst error), si prezenta unui astfel de tip de
defect nu poate fi detectat prin controlul de paritate. Un astfel de exemplu cu situatia de stuckat-1 este prezentat n continuare:

A 01101101 a
B 00101110
b
1 0

S 1 0 0 1 1 0 1 1 s
C 1 1 0 1 1 0 0 0 c
1 1

Un exemplu de burst error cu situatia de stuck-at-0 l prezentam n continuare:

A 10101101 a
B 00010110
b
0 1 1 1

S 1 1 0 0 0 0 1 1 s
C 0 0 1 1 1 0 0 0 c
0 0 0

n cazul cnd eroarea nu poate fi detectata avem doua solutii:

A) Carry-dependent sum adder

Ideea fundamentala a acestei solutii este ca atunci cnd

c i j

este n eroare sa fie provocata n

mod artificial si afectarea prin eroare a bitului imediat inferior al sumei, adica

s i j

Provocnd un pachet de erori cu un numar impar de erori poate fi pus n evidenta controlul de
paritate.

s i a i c i c i1 b i c i c i1 a i c i c i1
b i c i c i1 a i b i c i c i1 a i b i c i c i1
g i a i bi
pi ai bi
s i p i c i c i1 g i c i c i1 p i c i c i1 g i c i c i1

B) Duplicarea lantului de carry

Am conturat clasica structura de carry lookahead. Am prezentat solutia de verificare a


sumatoarelor si am dat versiuni prin care la defecte singulare ca de exemplu blocare la o
valoare apar doua noi tipuri de sumatoare: sumatoare cu duplicarea lantului de carry si
sumatoare care depind de carry.

2.2.9 Conditional-sum adder (CSuA)


Principiul sumatoarelor cu suma conditionata consta n generarea sumei gradual pe
pasi, n fiecare pas efectundu-se suma pe stagii formate din perechi att n situatia n
care se genereaza carry ct si n cazul n care nu se genereaza carry. Stagiile initiale
formate din perechi de biti se dubleaza ca dimensiune la fiecare pas, la pasul 2 avem
un grup de 4 biti, la pasul 3 avem 8 biti, etc. La fiecare se dubleaza numarul bitilor de
suma corecti. Schema consta dintr-o constructie piramidala formata din ( l o g 2 n ) 1
niveluri, unde n reprezinta numarul de biti ai cuvintelor nsumate. Detaliind principiul
expus avem urmatoarea secventa de pasi:
Pas1: Pentru fiecare pereche de biti se genereaza bitii de suma respectiv carry n
conditiile n care din rangul anterior soseste pe de o parte carry0 si carry1.
Pas2: Se genereza 2 stagii formate din perechi si se selecteaza n dependenta de
valoarea lui carry interstagii, valorile corespunzatoare pentru suma si carry.
Pas3: Se repeta pasul 2 n mod iterativ dublndu-se la fiecare iteratie dimensiunea
stagiilor, proces care se continua pna la epuizarea bitilor.
Stage
i
A
B
S
S=0
S=1
S=2
S=3

Stagii:

C
C=0
C=1
C=0
C=1
C=0
C=1
C=0
C=1

1
0
C
0
1
0
0
0
0
0
////

0
0
C
0
0

0
1
C
0
1
0
1

1
0
C
0
1

0
1
C
0
1
1
1
1

1
1
C
0
0
0

0
0
C
0
0
0

1
1
C
1

S
1
0
1
1
1
1
1
//// ////

S
0
1
0
1
0
1
0
//// ////

S
1
0
1
0
1
0
0
//// ////

S
1
0
1
0
1
0
0
//// ////

S
1
0
0
0
0

S
0
1
1
1
1

S
0
1
1
1
1

S
0
0
0

0
1
1
0
//// //// //// //// //// //// ////

Detaliul circuitului:

s0 a 0 b0

c1 a 0 b0
s 1 ( a 1 b 1 ) c 1 a 1 b 1 c 1 a 1 b 1 c 1

c 2 ( a 1 b 1 ) c 1 a 1 b 1 c 1
Apar niste forme degenerate ale carry-ului si sumei:

s 2 ( a 2 b 2 ) c 2 a 2 b 2 c 2

c 3 ( a 2 b 2 ) c 2 a 2 b 2 c 2
c3 a 2 b2 a 2 b2 a 2 b2 c2 a 2 b2 c2
s3 (a 3 b3) c3 a 3 b3 c3

(a 3 b3) a 2 b2 c2 (a 3 b3) a 2 b2 c2 a 3 b3 (a 2 b2 ) c2 a 3 b3 a 2 b2 c2

c4 (a 3 b3) c3 a 3 b3 c3
(a b ) (a b ) c (a b ) a b c a b a b c a b a b c
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2

2.2.10 Carry-save adder(CSA)


Aceasta solutie se caracterizeaza prin faptul ca este alcatuit din mai multe niveluri de
celule sumatoare complet disjuncte.

O astfel de structura de sumatoare permite nsumareala fiecare nivel nu a doi operanzi


ci a trei operanzi. Ea apare ca foarte utila la accelerarea operatiei de nmultire, care se
bazeaza pe adunari repetate. Mentionam ca pentru a obtine suma corecta bazata pe
CSA la salvarea transportului este obligatoriu ca ultimul nivel de nsumare sa fie
reprezentat de un sumator clasic(de exemplu un RCA).

Daca la fiecare etaj de carry-save mpanam un nivel de registre atunci operatia de


nmultire se poate executa n flux, pe masura ce nivelul de carry-save aduna operanzii
se poate efectua o suprapunere de operatii pe mai multe nivele. Are loc un overlap
total prin care pot accelera operatia de nmultire simultan si care duce la cresterea
capacitatii.
Este evident ca la nivelul unui singur bit produsul aritmetic coincide cu produsul logic.

2.2.11 Decimal ripple carry adder


La adunarea numerelor zecimale reprezentate n BCD pot fi utilizate toate solutiile de
adunare prezentate anterior si pentru simplitate vom expune problema n contextul RCA,
scop n care prezentam urmatoarea schema:

S-ar putea să vă placă și