Sumatoare seriale
Daca avem doi operanzi constand din doi vectori
binari, acestia pot fi aplicati unui dispozitiv de
adunare/scadere fie bit cu bit, in maniera seriala, fie
toti bitii concomitent in maniera paralela. Cu alte
cuvinte, intrarile dispozitivului sunt alimentate, sub controlul unui tren
de impulsuri de CLOCK, fie cu o pereche de biti la fiecare impuls, cate un
bit din cei doi vectori operanzi, fie cu toti bitii ambilor vectori
la fiecare impuls. Intr-o prima instanta, ne vom referi la modul
de operare serial si, pentru concretete, vom viza adunarea
binara, situatie in care vom denumi dispozitivul care realizeaza
aceasta operatie un sumator serial (serial adder) aceasta pentru a-l
distinge de solutia tehnica concurenta bazata pe operare
paralela si denumita sumator paralel (parallel adder). La o
analiza grosiera, sumatorul serial este net dezavantajat prin prisma
performantei, el reclamand, pentru executia adunarii, atunci
cand cei doi vectori au n biti, intervalul de timp constand din n perioade
ale trenului de CLOCK, pe cand alternativa sa paralela necesita
intervalul unei singure perioade de CLOCK. Chiar daca aspectul relevat
poate fi atenuat, intr-o anumita masura, prin executia
suprapusa a operatiilor succesive, el inclina totusi
balanta competitiei in favoarea variantei paralele, dar nu definitiv,
intrucat pe langa factorul cost- net favorabil solutiei seriale-, mai
intervin factori legati de implementare, cum ar fi reducerea
numarului interconexiunilor pentru semnale, simplificand interfetele
dintre dispozitive prin care se castiga arie de siliciu pentru
integrare si, de asemenea, se reduce energia disipata. In consecinta, pentru acele aplicatii
care tolereaza o latenta sporita, operarea aritmetica
seriala in general, si adunarea in particular, devine o solutie
atractiva, cu precadere pentru acele proiecte revendicand implementari
paralele masive. In contextul aceleiasi dispute "serial versus parallel"
mentionam ca noi vom face referiri in acest paragraf, doar la
versiunea seriala, dar subliniem ca exista interes si
pentru solutii hibride in care unele dintre intrari si
iesiri sunt seriale si altele paralele.
In mod tipic, exista doua moduri de
operare seriala, dependent de perechea de cifre cu care se incepe
operarea, si anume
a). Modul
"Least-significant digit first"(LSDF), caracterizat prin faptul ca se
incepe cu perechea de biti mai putin semnificativi, el fiind
subinteles atunci cand se foloseste sintagma aritmetica seriala intrucat a fost primul mod
serial utilizat.
b) Modul "Most-significant digit first"(MSDF), fiind
cunoscuta ca "online arithmetic . Bazat pe o flexibilitate la evaluarea cifrelor de
iesire, necesitand doar informatii partiale despre intrari,
modul MSDF uziteaza de redundanta in sistemul de reprezentare a
numerelor. Aceasta permite ca pentru o anumita valoare sa existe mai multe
forme de reprezentare, cele mai cunoscute astfel de sisteme de reprezentare
fiind cel al cifrelor prevazute cu semn (signed - digit) si cel al
salvarii transportului( carry-save), care vor fi prezentate si
utilizate in capitolul urmator.
Urmarind familiarizarea cu operarea
seriala, ne propunem sa conducem sinteza unui sumator simplu, de
tipul LSDF, care permite adunarea a doua numere binare fara
semn, reprezentate pe n biti, de forma si , admitem stocate in doua registre de deplasare, iar
rezultatul suma este copiat tot
intr-un registru de deplasare. In figura 2.1 se prezinta un astfel de
sumator serial, la care, incepand cu bitul cel mai putin semnificativ
(least significant bit, lsb) se aplica o pereche de biti, cate unul apartinand
operanzilor X si Y, la fiecare impuls de CLOCK, si se calculeaza
suma celor doi biti cu potentialul transport (carry) generat in
cuanta de timp anterioara la aplicarea anteriorului impuls de CLOCK (fig.
2.1a). Cu alte cuvinte, sumatorul serial se contureaza ca un automat
secvential care trebuie sa memoreze transportul generat la adunarea
anterioarei perechi de biti, deci trebuie sa poata intra in
doua stari interne distincte, una, sa o notam in care nu se
genereaza carry si a doua, sa o notam cu , in care se genereaza carry. Graful constand din
diagrama de stari(state diagram) asociata schemei secventiale
reprezentata de sumatorul serial este data, uzitand de o notatie
Mealy a starilor [Wake00][Yarb97], in fig. 2.1.b, iar in fig.2.1.c se
prezinta tabelul de stari (state table) corespunzator. Se poate
observa ca graful are cate un nod asociat fiecarei stari
interne, iar arcelor indicand tranzitiile dintre stari le sunt
asociati o pereche de vectori de tipul xy/z, unde x si y, respectiv
z, reprezinta variabile booleene alocate operanzilor intrare, X si Y,
respectiv rezultatului iesire Z. Astfel, spre exemplu, presupunand ca
sumatorul serial se afla in starea interna curenta S0
si la intrarile sale se aplica vectorul xy =11, primul impuls de
CLOCK determina tranzitia in starea interna urmatoare S1,
iar la iesire se va genera vectorul, de un singur element, z = 0. Pe de
alta parte, tabelul de stari are alocat cate un rand pentru fiecare
stare interna curenta a sumatorului serial si cate o
coloana pentru fiecare vector de intrare xy, iar la intersectia
randului corespunzator unei anume stari interne curente cu coloana
corespunzatoare unui anume vector de intrare se afla doua
elemente, anume starea interna urmatoare, in care tranziteaza
automatul secvential atunci cand i se aplica un impuls de CLOCK,
separat prin / de vectorul furnizat la iesirea observabila a schemei.
In fond, tabelul de stari reprezinta o
alta forma, tabelara, a diagramei de stari. Intr-o succesiva
etapa de proiectare, starile interne, simbolizate in mod abstract, li
se asigneaza variabile de stare, realizand asa numita asignare a
starilor (making the state assignment). In cazul sumatorului serial, avand
doar doua stari interne, S0 si S1, este
suficienta o singura variabila de stare (state variable) w, a
carei codificare asociaza valoarea 0 pentru S0, respectiv
valoarea 1 pentru S1, modalitate in care rezulta asa
numitul tabel de tranzitii (transition table) din fig.2.1.d.
Activitatea
de sinteza continua prin alegerea tipului de element de memorare,
aspect sub care optiunea noastra s-a indreptat, in scopul
comparatiei, prin aceasta prisma, a doua solutii
tehnice distincte, asupra flip-flop-urilor de tip D (D-type flip-flop),
respectiv de tip J-K (J-K type flip-flop) [Wake00][Yarb97]. Dupa cum este cunoscut, fiecareia dintre acestea ii este
asociata o ecuatie caracteristica (characteristic equation),
care exprima starea elementului de memorare la un moment de timp succesiv
aplicarii
D type flip-flop
W(t+1)=D
|
Inputs
State
|
xy
|
|
|
|
|
S0
|
S0
|
S0
|
S1
|
S0
|
S1
|
S0
|
S1
|
S1
|
S1
|
|
Inputs
|
Outputs
|
w
|
x
|
y
|
J
|
K
|
Z
|
|
|
|
|
d
|
|
|
|
|
|
d
|
|
|
|
|
|
d
|
|
|
|
|
|
d
|
|
|
|
|
d
|
|
|
|
|
|
d
|
|
|
|
|
|
d
|
|
|
|
|
|
d
|
|
|
|
T-K type
flip-flop
|
Fig. 2.1
frontului activ al CLOCK-ului - notata, in
cazul nostru, w(t + 1) - in functie de starea la un moment de timp
anterior aplicarii frontului activ al CLOCK-ului - notata, in cazul
nostru w(t) si de valorile logice aplicate intrarilor asa numit
sincrone - respectiv J si K - ale flip-flop-urilor. Astfel, pentru
flip-flop-ul de tip D avem ecuatia caracteristica w(t+1) = D, iar
pentru flip-flop-ul de tip J-K avem, ecuatia caracteristica w(t+1) =
. In aceste conditii, plecand de la tabelul
de tranzitii si luand in consideratie ecuatiile
caracteristice specifice pentru fiecare flip-flop, rezulta tabelele
asa numite de excitatie (excitation table) pentru cele doua
solutii, cu flip-flop de tip D (fig.2.1.e), respectiv cu flip-flop de tip
J-K(fig.2.1.f, in care prin d am notat o valoare logica indiferenta -
don't care).
Urmarind firul proiectarii sumatorului
serial, din tabelul de excitatii de iesire (output equations) pentru
fiecare tip de flip-flop, respectiv ecuatiile pentru functiile de
iesire (output equations). In tabelele de excitatie din fig.2.1.e,
respectiv fig.2.1.f, pot fi identificati mintern-ii (acei termeni produs
care contin, doar o singura data, fiecare variabila de
intrare) care determina valoarea logica 1 pentru o anumita
functie booleana in forma canonica de suma de produse
(canonical sum of product form) [Wake00] [Yarb97]. Pentru a obtine
ecuatiile logice, de excitatie si iesire, in forma
minimizata, avand in vedere numarul redus de variabile, de intrare
si de stare, apelam la diagrama Karnaugh (Karnaugh maps) (la care un
patrat corespunde unui anume mintern). Astfel, acoperirea favorabila
- urmarind maximizarea grupelor de mintern-i adiacenti din punct de
vedere logic a unitatilor binare, conduce la expresiile booleene
minizate pentru intrarile sincrone D(fig.2.1.g) in forma D = wx + wz + xy,
respectiv J (fig.2.1.i) in forma J = xy, si K(fig.2.1.j) in forma K =
(la simplificarea
ecuatiilor pentru J si K, la formarea respectivilor implicanti
primi au fost folositi si anumiti mintern-i don't care). In ceea
ce priveste functia de iesire z, in mod evident, identica
pentru cele doua solutii de sumator serial, se poate remarca faptul
ca toti mintern-ii sai se constituie in implicanti primi
esentiali, astfel ca ecuatia booleana pentru z (fig.2.1.h)
este de forma
, care, uzitand de proprietati ale operatorului
EXCLUSIVE-OR, poate fi modificata in
. In implementari uzitand de porsi NAND si
EXCLUSIVE-OR(fig.2.2.a); respectiv porti inversoare, AND si
EXCLUSIVE-OR (fig. 2.2.b) sunt implementate partile de logica
combinationala corespunzatoare ecuatiilor booleene de
excitatie si iesire, anterior deduse, pentru ce doua sumatoare
seriale cu flip-flop de tip D (fig 2.2a), respectiv cu flip-flop de tip J-K
(fig 2.2b). Ambele versiuni, care nu difera in mod esential in
termeni de circuite elementare utilizate la sinteza sau ca numar de
conexiuni, se constituie ca scheme secventiale simple, functionand
sincronizat prin intermediul unui tren de CLOCK (fiind initializate prin
activarea liniei
). Chiar daca, datorita faptului ca semnalele
trebuie sa traverseze un numar redus de niveluri logice,
frecventa CLOCK-ului poate fi ridicata, timpul de adunare maxim -
parametru arbitru al performantei unui sumator-rezultat prin cumularea
perioadelor celor n impulsuri, la valori n practice, rezulta totusi
prohibitiv. In consecinta, pentru acele aplicatii la care
primeaza performanta rezulta ca mai atractiva solutia
sumatoarelor paralele.