Sunteți pe pagina 1din 36

10.

OPERAIILEARITMETICE
10.1 PROCESORUL ARITMETIC
Unprocesoraritmeticreprezintundispozitivcapabilsefectuezeoperaiisimplesaucomplexeasupra
unoroperanzifurnizainformatecorespunztoare.Caexemplesepotda:

UnitateaAritmeticsimpl;

Incrementatorul;

DispozitivulpentruTransformataFourierRapidetc.

Procesorul Aritmetic poate fi examinat att din punctul de vedere al utilizatorului, ct i al


proiectantului.
10.1.1 Din punctul de vedere al utilizatorului, procesorul aritmetic reprezint o cutie neagr, cu un
numr de intrri i ieiri, capabil s efectueze o serie de operaii asupra unor operanzi cu formate
specificate.Rezultateleseobinntruntimp,caredepindedetipuloperaieiideformatuloperanzilor
isuntnsoitedeindicatoriidecondiii.

Rezultat: Z

Operanzii: X, Y
Operaia: *

Procesor Aritmetic

Formate:

Timp: T(*, )

Condiii: Ci
Singulariti: Si

Figura10.1.Procesorularitmetic

Intrri:

unasaumaimultemriminumerice:X,Y;

unsimbolaloperaiei,operatorul:*;

unsimboldeformat:.

Operanziidelaintraresuntcaracterizaiprintreiproprieti:

aparinuneimulimifiniteMdemriminumerice,caracterizateprintrogam:

suntcunoscutecuopreciziedat:

227

suntreprezentatecuajutorulunorsimboluri/cifre,ncadrulunuisistemdenumeraie,subformaunor
ntupluri:

,,

care sunt interpretate ca mrimi/valori numerice, pe baza unor reguli

date.
Operatorii sunt codificai cu ajutorul unor simboluri *, care corespund unui set redus sau extins de
operaiiaritmetice:

, , ,

Formatul. Atunci cnd sunt posibile mai multe formate, pentru reprezentarea operanzilor, acest lucru
poatefispecificatlaintrareaformat,printrunsimboldat.
Ieiri:

unasaumaimultemriminumericeZ,carereprezintrezultatul;

unulsaumaimultesimboluriCi,reprezentndcondiiilencareaparerezultatul;

unulsaumaimultesimboluriSi,reprezentndsingulariti.

Ieirilenumericeposedaceleaiproprieticaioperanziidelaintrare:gam,precizieireprezentare.
Condiiilespecificcaracteristicialerezultatului:<0,=0,>0etc.
Singularitilesuntasociatecusituaiilencarerezultatulobinutesteinvalid:

depire: rezultatul depete posibilitile hardware de reprezentare a numerelor, n sistemul


numericdat;

pierdereaexcesivdeprecizie,laoperaiilenvirgulmobil;

eroridatoratehardwarelui.

nacestesituaiiapareunpseudorezultatZ(Si),mpreuncusingularitateaSi,caresunttratateattprin
hardware,cticuajutorulunorrutinespecificealesistemuluideoperare.
Timpul de operare T(*) este dat pentru fiecare operaie (*), efectuat de ctre procesor. Timpul de
operare,nunelecazuri,poatefivariabil:

228

Observaii:

definiiadatprocesoruluiaritmeticcuprindeunspectrulargdecutiinegre,delauncontorsimplu
(ADDONE),pnlaungeneratordefunciitrigonometricesauunprocesorFFT.

structurainternestespecificatantermeniitimpuluiasociatcuexecuiadiferiteloroperaii,cti
cuformatuldereprezentareadatelor.

10.1.2Dinpunctuldevederealproiectantuluiintereseazspecificareadetaliatastructuriiinterne.
Aceastspecificaretrebuiesconsidere:

algoritmiiaritmetici(proiectareaaritmetic),

structuralogicaprocesorului(proiectarealogic).

Proiectareaaritmeticpleacdelaspecificaiiledatedectreutilizatoriletransformanspecificatiide
operaii aritmetice detaliate, la nivel de ranguri individuale/bit, n cadrul reprezentrii concrete a
datelor.Acestespecificatii,lanivelderangindividual,reprezint,ncontinuare,dateleiniiale(tabelede
adevr,diagrameetc)pentruproiectarealogic.
Proiectarealogicpleacdelaspecificaiilefurnizatedectreproiectareaaritmetici,ncadrulunei
tehnologiidate,selecteazatipuriledecircuitelogice,pecareleinterconecteaza,nmodcorespunzator,
n vederea implementarii operaiilor aritmetice impuse de ctre algoritmii aritmetici. n cazul n care
algoritmii aritmetici nu se pot executa ntrun singur pas, se proiecteaza secvene, constand n pasi
aritmetici elementari, efectuati sub controlul unor semnale de comanda. Astfel, proiectantul la nivel
logictrebuieselaboreze,attproiectulunitiideexecutie,ctiproiectulunitiidecomanda.
Specificaiiledetipblackbox,pentruproiectareaunuiprocesoraritmetic,seobinprintransformarea
specificatiilordatedectreutilizator,astfelnct,elescorespundposibilitilordeimplementare.
nacestcontexttrebuiesseaibenvederec:

datelesereprezintsubformaunorvectoribinari;

la baza circuitelor, care efectueaz operaiile aritmetice, se afla circuite logice, ce opereaza cu
semnalebinare.

Avndnvedereceledemaisus:

intrrileXiYvordeveni:

,
229

operatorul (*) va fi codificat printrun cod de operaie:

care va indica att

operaia,ctiformatul.

ieirilereprezinturmtoriivectorinumerici:

,rezultatul;

,indicatoriidecondiii

,indicatoriidepseudorezultat.

ncontinuaresevorexaminaalgoritmiioperaiiloraritmeticenvirgulfixinvirgulmobil.

10.2 OPERAII ARITMETICE N VIRGUL FIX


10.2.1ADUNAREAISCDEREA
Operaiile de adunare i scdere ale numerelor n virgul fix se implementeaz, n majoritatea
covritoare a cazurilor, cu numere reprezentate n complementul fa de doi. Astfel, operaiile de
adunareiscderesereduclaoperaiadeadunareacodurilorcomplementarealecelordoioperanzi.
Adunareaseefectueazrangcurang,ncepndcurangurilemaipuinsemnificative,inclusivrangurile
desemn.Transportul,careaparelastngaranguluidesemn,seneglijeaz.
Fieoperanzii:

ncondiiile:
2

Laadunarea/scdereacelordoioperanzi,demaisus,aparurmtoarelesituaii:
0,

a)

230

0,

| |

| |

Exemplul1:
|0010|

|0011|

0010

0011

|0101|

0101

b)x<0,y>0,dar0<x+y2n11

=2 | |+| |=

transport
seneglijeaz>0
Exemplul2:
0110
1010

0111
0111

|0110|

2
10001

|0111|

10000

|0110|

|0111|

10000

|0111|

|0110|

0001

transport,seneglijeaz
0,

c)

0,

| |

0
| |

<0

Exemplul3:
0111

0110

|0111|

|0110|

1001

0110

1111
d)

0,

0,

| |

| |

| |

| |

transport

<0

seneglijeaz

231

Exemplul4:
0011
|0010|

0010

1101

1110

|0011|

|0010|

11011

|0011|

10000

10000

1011

transport,seneglijeaz
Schemaunuisumator/scztor
Schemasebazeazpeutilizareaadoucircuite:XORiADDaacumesteprezentatnfigura10.2.
A[4]

B[4]

Operaia

XOR
7486

C4

Descrierea
,
,

ADD
SUB

Sumator
7483

Comanda
D
0
1

,
,

C0

Z[4]

Figura10.2.Unsumator/scztor

Coduldeoperaiespecificoperatorul:

careiavalorile0pentru+i1pentru

Poziionareaindicatorilordecondiii
Indicatoriidecondiiispecificoseriedeproprietialerezultatului,careaparenregistrulacumulator
alrezultatuluiAC.Deregul,eisuntstocainbistabilenotatecumnemonice,careformeazunregistru,
ncorporatncuvntuldestarealprogramului/procesului.Indicatoriidecondiiispecificdiversesituaii:

rezultat=0mnemonicaZ,(

semnulrezultatului>0sau<0mnemonicaS,

apariiatransportului,lastngaranguluidesemn,mnemonicaC,

rezultatulverificriiparitiimnemonicaP,

232

1 ;

Poziionareaindicatorilordepseudorezultat
Printre situaiile care conduc la un pseudorezultat, n cazul operrii n virgul fix, este i aceea cnd
apareodepire.
Depirea se manifest n condiiile n care cei doi operanzi care se adun au acelai semn. Dac
rezultatulobinutareunsemndiferitdesemnulcomun,alcelordoioperanzi,sanregistratodepire.
Depirea poate constitui o cauz de ntrerupere/suspendare a programului n cadrul creia a aprut.
Aceastsituaieestesemnalizatsistemuluideoperare,nvederealuriiuneideciziicorespunztoare.
Situaia de depire se semnaleaz prin generarea unui semnal D egal cu suma modulo doi ntre
transportulnranguldesemnitransportulnafararanguluidesemn,ncadrulregistruluiacumulator,
alrezultataului:

Implementri
Operaia de adunare pe un singur rang se realizeaz prin generarea sumei i a transportului, folosind
circuitelelogicenecesarerealizriifiziceaexpresiilorlogicedemaijos:
.
. .

.
.

. .

Aceastaseconcretizeazntruncircuitdetipschemabloc,denumitSUM,prezentatncontinuare:

Ciin
Xi
Yi

SUM
C1
A0
B0

Z0
C0

Rezi
Ciout

Figura10.3.Modulsumator

DescriereanVerilogaunuisumatorcu3intrriidouieiriesteurmtoarea:

233

module fulladd(sum,carry,a,b,c);
input a,b,c;
output sum,carry;
wire sum1;
xor xor1(sum1,a,b);
xor xor2(sum,sum1,c);
and and1(c1,a,b);
and and2(c2,b,c);
and and3(c3,a,c);
or or1(carry,c1,c2,c3);
endmodule

Compilareaacesteidescrerilaniveldemticonducelarezultatulprezentatnfigura10.4:

Figura10.4.Descrierealaniveldemti

Cuajutorulsumatoruluilaniveldebitsepoaterealizaunsumatorpenbiiaacumesteprezentatn
figura10.5.
C1in
X0
Y0

SUM
C1
A0
B0

Z0
C0

SUM

SUM
C1

Rez0
Ciout

X1
Y1

A0
B0

Z0

Rez1
Ciout

C0

C1
X n-1
Y n-1

A0
B0

Z0
C0

Rezn-1
Ciout

Figura10.5.Sumatorpenbii

SumatorullaniveldebitpoatefiextinsicuoperaiilelogiceSI/AND,SAU/OR,canfigura10.6,ncadrul
creia ieirile sumatorului, circuitului AND i circuitului OR sunt aplicate la intrrile unui multiplexor
MUX.Coduldeoperaie,pentruselectareaoperatorului,seforeazlaintrareaSel,amultiplexorului.

234


Figura10.6.Sumatorulextins,laniveldebit.

n condiiile n care se dorete i implementarea operaiei de scdere, este necesar s se creeze


posibilitateainversriiintrriiyi,dupcumseprezintancontinuare,nfigura10.7.

Figura10.7.Implementarecomplet,cuadugareaoperaieidescdere.

InversarealuiyserealizeazsubcontrolulsemnaluluideselecieInvY,aplicatlaintrareadeseleciea
celuidealdoileamultiplexor
235

Operaiile ADD, SUB, ANDi OR se regsesc n Unitile Aritmetice Logice ale oricrui procesor. Exist
uneleprocesoarecareauimplementatinstruciuneasetonlessthan,cesetraduceprinforeazn
(1),bitulcelmaipuinsemnificativalrezultatului,dacoperandulxestemaimicdectoperanduly,n
condiiilencaretoiceilalibiiairezultatuluivorfi0.Astfel,nfigurademaisusaaprutonouintrare
lamultiplexorless.
Structura poate fi completat cu detalierea schemei UAL pentru bitul cel mai semnificativ, n care se
punenevidendepireaaritmetic.

Figura10.8.DetaliereauneischemeUALcuevideniereadepiriiaritmetice

Implementareaoperaieisetonlessthanpresupuneefectuareascderiiluiydinx.
Dacx<y,sevapoziionan1semnulrezultatului,adic
nforarean1abituluicelmaipuinsemnificativalrezultatului
Aceastsoluieesteilustratnschemablocdinfigura10.9.

236

.Acestlucrutrebuiessereflectens
inzeroabiilor


Figura10.9.Implementareaoperaieisetonlessthan.

nfigura10.9fostimplementatipoziionarean1,aindicatoruluidecondiii,carespecificapariia
unuirezultategalcu0,laieireaunitiiarimeticelogice.BistabilulZsepoziioneazn1.
10.2.2SUMATOAREPERFORMANTE
Sumatorulcutransportsuccesiv
Tipul cel mai simplu de sumator paralel este sumatorul cu transport succesiv, obinut prin
interconectareaunorsumatoarecomplete.Ecuaiilepentrutransportisum,lanivelulunuietaj,sunt
datemaijos:
.
. .

.
.

. .

Se poate observa c cele dou funcii combinaionale se implementeaz pe dou niveluri logice. n
condiiilen carentarziereapeunnivellogicestet,rezult cntarziereaminim perangvafi 2 .
ntruct,ncazulcelmaidefavorabil,transportulsepropagdelarangulcelmaipuinsemnificativpn
laieireaceluimaisemnificativrang,rezultontrziereegalcu2 ,undenestenumrulderanguri.
Esteevidentcoasemeneasoluienuesteacceptabil.

237

Sumatorulcuntrziereminim
,delaieireaceluimaipuinsemnificativrang,sencearcstabilirea

Considerndecuaiasumei,

unei expresii a acesteia ca funcie de intrrile pentru rangul curent

1 , ct i de intrrile pentru

2 , , 1, 0. n acest mod se va obine o expresie logic

rangurile mai puin semnificative


implementabilndoutrepte.

Pentru ieirea, care reprezint transportul, din rangul 0 sa nlocuit

cu

, pentru a simplifica

relaiile,careurmeazaseobine.

Pentrurangulurmtor1,seobineurmtoareaexpresieasumei:

nexpresialui
Calculullui

Astfel,pentru

sevanlocui

cucomponentelecarelalctuiesc,conformformuleiprecedente.

conducelaurmtoareaexpresie:

sevaobineoexpresieformatprinadunarealogica12produselogicedecte4

variabile fiecare. Aceasta presupune utilizarea unei pori OR cu 12 intrri i a 12 pori AND, cu cte 4
intrri. Extinznd procedeul la urmtoarele ranguri se vor obine expresii cu numeroi termeni de tip
produs,care,larndullor,voraveamultecomponente.Uncalculsimpluaratc,ncazulunuisumator
pe64debii,vorfinecesarecirca10 pori,practicdenerealizatnprezent.
Principiulanticipriitransportului
ntructsumatorulcutransportsuccesivestelent,iarsumatorulcuntrziereminimesteimposibilde
realizat,secautosoluieintermediar.Aceastagrupeazrelaiileobinutelasumatorulcuntrziere
minim,astfelnctsseobindimensiunirezonabile.
Ideeadebazesteaceeadeacaracterizacomportareaunuirangalsumatoruluidinpunctuldevedereal
generrii/propagriiunuitransport.Astfel,ranguljalunuisumatorgenereaz, ,transportdacareloc

238

relaia:

.Deasemenea,ranguljalunuisumatorpropag, ,transportnsituaiaurmtoare:

n aceste condiii se pot elabora noi expresii pentru transportul

i pentru suma

, la nivelul

fiecruirangalsumatorului:

Astfel,unsumatorcompletvaconstndoupri:parteaP/GiparteaSum

Figura10.10.Sumatorulcuanticipareatranspportului

Relaiiledemaisussepotstructuralanivelula4seciunialeunuisumator,bazatpeideeamenionat
anterior.ncepndcurangulcelmaipuinsemnificativseobin:

pentrusume:

i:

pentrutransporturi:

239

AcesterelaiisuntimplementatenunitateadeanticipareatransportuluiUAT.
Pentruoseciunede4bii,sumatorulcutransportanticipatesteprezentatnfigura10.11.
x3 y3

Sum3
Sum3
C3

P/G 3

P3

GP

G3

x2 y2

Sum2
Sum2
C2

P/G 2

P2

G2 C
1

x1 y1

Sum1
Sum1

P/G 1

P1

x0 y0

Sum0
Sum0

G1 C
0

LOGICA DE ANTICIPARE A TRANSPORTULUI

GC

P/G 0

P0

G0
C0

Figura10.11.Seciunepe4biiaunuisumatorcuanticipareatransportului

Efectunduncalculalntrzierii,seobine pe4 bii desumator ontrziere de 6 ,n comparaie cu


ntarzierea de 8 , pentru sumatorul cu transport succesiv. Din schema bloc, de mai sus, rezult c
LogicadeAnticipareaTransportuluimaigenereazdousemnalelaniveldegrup.Grupulconstntrun
ansambludepatruranguridesumator.Astfel,grupulpoategeneratransport(GG=1)saupoatepropaga
transport(GP=1).
Ideea anticiprii transportului se poate fi extins att la nivel de grup, ct i la nivel de seciune
(ansambludepatrugrupuri),realizndostructurpiramidaldeUATuri.Unitiledeanticipare lanivel
degrupilaniveldeseciunesuntidenticeculogicadeanticipareatransportuluilanivelulsumatorului
cupatrubii.
Analizaperformaneloraratcncazulunuisumatorpe16bii,cutransportdegrup,senregistreazo
ntrziere de 8 , fa de ntrzierea de 32 , pentru sumatorul cu transport succesiv. n cazul unui
sumatorpe64debii,nsituaiaanticipriitransportuluipeseciuni,seobineontrzieremaximde
14 ,comparativcuntarziereade128 ,pentrusumatorulcutransportsuccesiv.
Sepoateapreciacnumruldeterminaledeintrareiiesirealeporilorpoatereprezentauncriteriude
cost, ntro implementare dat. Comparaia cost/performan pentru cele dou implementri, de mai
sus,aratcncazulunuisumatorpe64debii,laocretereanumruluideterminalecu50%,pentru
soluiacutransportanticipat,seobineovitezde9orimaimare,dectncazultransportuluisuccesiv.

240

Sumatorulcusalvareatransportului
ncazuladunriimaimultorvectoribinarisimultansepoaterecurgelaoschemmairapida,constndn
utilizareamaimultorsumatoarencascad.
Fiecazuladunriiapatrunumeredecte4bii,notatecua,b,e,f.Rangurilenumerelorb, e,fsevor
adunantrunsumatorcusalvareatransportului,carevaaveaieiripentrusumitransport.Acestea,
la rndul lor, se vor aduna cu rangurile numrului a, ntrun alt sumator cu salvare a transportului.
Ieirilereprezentndrangurilesumeiiranguriletransportuluisevoradunantrunsumatorobinuit.
a

Sumator cu salvare a
transportului

Sumator cu salvare a
transportului
C'

S'

Sumator obinuit
Sum

Figura10.12.Utilizareamaimultorsumatoarencascad.

Detaliiledeimplementaresuntlsatepeseamacititorului.
Comparaientrectevatipuridesumatoare,penbii,nprivinantrzieriiiaarieiocupate:

Tipsumator

ntrziere

Ariaocupata

Transportsuccesiv

ntrziereminim

/ 2

Transportanticipat

2 log

22 log

1 .

241

10.2.3NMULIREA
nmulirea numerelor const n generarea i adunarea produselor partiale obinute prin nmulirea
ranguluicurentalnmultitoruluicudenmulitul.ncazulnumerelorbinare,produsulparialcurenteste
egalcudenmulitul,deplasatsprestngaconformpoziieiranguluinmulitorului,dacbitulcurental
nmulitorului este unu, sau egal cu zero, dac bitul curent al nmulitorului este zero. Dac produsul
parialcurentestediferitdezero,elseadunlasumaproduselorparialeanterioare.
Existiposibilitateaca,dupfiecareadunare,sumaproduselorparialesfiedeplasatspredreaptacu
unrang.
nmulireancoddirect
nmulireancoddirect/semnimodulpresupunetratareaseparatasemnelorinmulireamodulelor.
FienumereleXiY,

careurmeazsfienmulite,pentruafurnizaprodusulZ:

Semnulprodusuluiz2n1vafiobinutastfel:

Produselepariale: , ,
| |.

. 2

| |.

. 2

seobindupcumurmeaz:

.
| |.

. 2

iarsumalorvaconducelaprodusulmodulelor:

242

Fiecazuladounumerereprezentatencoddirectpe5bii:

denmulitul

11000i

nmulitorul

01000

Pentrusemnrezult:

1,

ntimpcemodululprodusuluisevaobinedupcumsearatmaijos:
1000
1001
1000
0000
0000
1000
01001000

01001000

Astfel,produsulcelordounumerevaavea9bii:

101001000.

n exemplul de mai sus produsele pariale sau obinut prin deplasarea spre stnga a denmulitului,
nmulitcurangulcorespunzatoralnmulitorului.
Soluieparalel.
O implementare combinaional presupune utilizarea sumatoarelor complete i a unor pori AND.
Astfel,seobineunsumatormodificat,pentruunrang,conformschemeidinfigura10.13.

243


Figura10.13.Unsumatormodificatpentruunrang.

x3

x2

sumator
modificat
x3

x2

sumator
modificat

SP0,3

sumator
modificat

SP1,4
z4

x1

sumator
modificat
x1

SP0,2

sumator
modificat

SP1,3
z3

x0

sumator
modificat
x0

sumator
modificat

SP0,1

sumator
modificat

SP1,2
z2

0
y0

y1

SP0,0
0

SP1,1
z1

SP1,0
z0

Figura10.14.Primeledouetajealedispozitivuluiparaleldenmulire.

Sanotatcu

bitulialsumeiproduselorparialej.Schemadinfigura10.14prezintnumaiprimele

douetajealedispozitivuluiparaleldenmulire.
Sumatorulmodificatpoatefiutilizatncadruluneistructuridenmulireparalel,canfigurademaisus.
Din punctul de vedere al implementrii algoritmului, se poate afirma c, n acest caz, este vorba de o
programare spaial, care conduce la viteza ridicat de operare. Soluia necesit, pentru

244

1 sumatoaremodificate.ncelmaidefavorabilcaz,rezultatulnmuliriiseobine

implementare,

1 pori.

duppropagareasemnalelorprin4

Selaspeseamacititoruluielaborareauneisoluiibazatepesumatoarecusalvareatransportuluii
sumatoarecutransportanticipat.
Soluieserialparalel
n scopul reducerii cantitii de hardware, dispozitivele de nmulire se realizeaz sub forma unei
structuriparalelehardware,pentruunpasdenmulire,cuoperaresecvenial.
Dacsenoteazprodusulparialjcuppj,atunciunpasdenmulirevaaveaurmtoareaform:

. 2

Oschembloc,pentrusoluiamenionatmaisus,esteprezentatncontinuarenfigura10.15:
x3

x2

x1

x0
yj

Generator de produse pariale


...
Sumator pe n bii

Registru de deplasare cu 2(n-1) ranguri


n care se acumuleaz sumele produselor
pariale.

...
0

...

...

Figura10.15.Soluieserialparalelpentruundispozitivdenmulire.

Operareaseefectueazconformurmatoareisecvene:
1. anuleazconinutulregistruluincareseacumuleazsumeleproduselorpariale;
2. iniializeaznumrulranguluibituluinmulitoruluij=0;
3. formeazprodusulparial .

4. adunprodusulpariallajumtateasuperioararegistruluisumeiproduselorpariale;
5. efectueazj=j+1idacj=ntrecila8.
6. deplaseazladreaptacuunrangconinutulregistruluisumeiproduselorpariale;
245

7. trecilapasul3;
1 rangurisaobinutnregistruldedeplasare.

8. produsulcu2

Rezultatulsepoatestocafiesubformaunuisingurcuvnt,pstrndjumtateasuperioar,fiesubforma
unuicuvntdublu.nprimulcazvafiafectatprecizia.
nmulireanumerelorncodcomplementar
ntruct, n marea majoritate a cazurilor, numerele negative se reprezint n calculatoare n codul
complementar,ncontinuarevorfiexaminatectevametodedenmulirenacestcod.
Maintisevorexaminadeplasrilearitmeticelastngailadreaptancodcomplementar.
Seconsiderurmtoarelecazuri:
x>0.
0

Deplasarealastnga:
2

0,

Deplasarealadreapta:
2 .

00

x<0.
1

Deplasarealastnga:
2

0,

Deplasarealadreapta:
2

246

11

Ctevametodepentrunmulireanumerelorreprezentatencodcomplementar.
Metoda1.

Semodific,dacestecazul,nmulitorulidenmulitulastfelnctnmulitorulsfiepozitiv.

Produseleparialesecalculeaznmodobinuit.

Deplasarea spre stnga/ dreapta a denmulitului/sumei produselor pariale se realizeaz conform


regulilordedeplasarencodcomplementar.

Metoda2.
Aceastmetodpresupunenmulireanumerelorcusemnnmanieraobinuit,caicndarfivorbade
numerentregifrsemn.Rezultatulvaficorectnumaincazulncareceidoioperanzisuntpozitivi.n
cazcontrarsuntnecesarecorecii,caresencadreazntreicazuri.
1.x>0,y>0.
| |. | |

2.x<0,y>0.
2

| |;

| |;

2 . | |

| |. | |;rezultatincorect

| |. | |;rezultatcorect

Rezultnecesitateauneicoreciiegalcu:2

2 . | |,caresevaadunalarezultatulincorect.

3.x>0,y<0;
| |;

2 . | |

| |;
| |. | |;rezultatincorect

| |. | |;rezultatcorect

Rezultnecesitateauneicoreciiegalcu:2

2 . | |,caresevaadunalarezultatulincorect.

4.x<0,y<0;
2

| |;

| |;
247

2 . | |

2 . | |

| |. | |;rezultatincorect

| |. | |;rezultatcorect

2 . | |

Rezult necesitatea unei corecii egal cu: 2

2 . | |,care se va aduna la rezultatul

incorect.
Metodaestegreoaieiareuncaracterpurteoretic.
10.2.4ALGORITMULLUIBOOTH
nacestcazsepleacdelaobservaiac,valoareaunuinumrY,reprezentatncodcomplementar,se
poatecalculaastfel:

. 2

. 2

. 2

. 2

. 2

.2

unde:

reprezintranguldesemn,codificatcu0/1ncazulnumerelorpozitive/negative;
constituierangulaflatladreaptarangului0,avndiniialvaloarea0.

nacestecondiiivaloareaprodusului

sevaexprimadupcumurmeaz:

.2

Pebazaformuleidemaisussepoatecalculaprodusulparialderangi:
Tabelul10.1.Produsulparial

produsparial

0
.2
.2
0

Pentruimplementareahardwareseconsiderresurselecorespunztoareuneistructuriorientatepeun
singuracumulator:

248

Denmulit (X)

nmulitor (Y)

n-1 ... RD ... 0


RD
0

n-1 ... AC ... 0

MQq

n-1 ... MQ ... 0

RD
1

MUX

0/1
0/1

SL

activare
selectare

Sumator

0/1
CNT

Figura10.16.ImplementareahardwareaalgoritmuluiluiBooth

Resurselehardware:

ACregistruacumulator;

RDregistrudedatealmemoriei;

MQregistrudeextensiealacumulatorului;

registrudeunbit,extensialuiMQ;

CNTcontordecicluri(

log

SLstructuralogicpentruactivareaiselectareaintrrilormultiplexorului,ctipentrucontrolul

);

transportuluilasumator;

Sumatorsumatorcombinaionalcunranguribinare.

Descriereaoperriidispozitivuluisepoatefacecuajutorulurmtoareiorganigramedinfigura10.17:

249


Figura10.17.Organigramaoperriidispozitivului.

ncontinuaresevaprezentaunprogramVerilogpentrusimulareaunuidispozitivdenmulire.

250

//Simularea

unui

dispozitiv

de

nmulire

numerelor

reprezentate

complementul fa de doi, //folosind Algoritmul lui Booth


module inmultitorb;
parameter n
reg n

8;

1 0 RD, AC, MQ;

reg 2 n

1 0 ;

reg 2 0 CNT;
reg MQ ;
initial begin: init
AC=-7; RD=-5; MQ=0; MQq=0; CNT = n-1;
$display("timp

RD

AC

MQ

MQq

CNT");

$monitor("%0d %b %b %b %b %b",$time, RD, AC, MQ, MQq, CNT);


wait (CNT==0) begin
$monitor("Produs= %b",{AC[n-1], AC, MQ[n-1 : 1]});
#1 $stop;
end
end
always begin
#1; MQ = AC;
#1; AC = 0;
while (CNT > 0)
begin
case({MQ[0], MQq})
2'b00: begin
#1;{AC, MQ, MQq} = {AC[n-1], AC, MQ};
end
2'b01: begin
#1; AC = AC + RD;
#1;{AC, MQ, MQq} = {AC[n-1], AC, MQ};
end
2'b10: begin
#1; AC = AC - RD;
#1; {AC, MQ, MQq} = {AC[n-1], AC, MQ};
end
2'b11: begin
#1; {AC, MQ, MQq} = {AC[n-1], AC, MQ};
end
endcase

251

#1; CNT = CNT - 1;


end
end
endmodule

//Cazul: RD = 5; AC = 7;
Timp

RD

AC

MQ

MQq

CNT

000101

00000111

00000000

111

00000101

00000111

00000111

111

00000101

00000000

00000111

111

00000101

11111011

00000111

111

00000101

11111101

10000011

111

00000101

11111101

10000011

110

00000101

11111110

11000001

110

00000101

11111110

11000001

101

00000101

11111111

01100000

101

00000101

11111111

01100000

100

10

00000101

00000100

01100000

100

11

00000101

00000010

00110000

100

12

00000101

00000010

00110000

011

13

00000101

00000001

00011000

011

14

00000101

00000001

00011000

010

15

00000101

00000000

10001100

010

16

00000101

00000000

10001100

001

17

00000101

00000000

01000110

001

Produs = 0000000000100011
Stop at simulation time 19
C1>$finish;

252

Top-level modules:
inmultitorb
// Cazul: RD = 5; AC = -7;
Timp

RD

AC

MQ

MQq

CNT

00000101

11111001

00000000

111

00000101

11111001

11111001

111

00000101

00000000

11111001

111

00000101

11111011

11111001

111

00000101

11111101

11111100

111

00000101

11111101

11111100

110

00000101

00000010

11111100

110

00000101

00000001

01111110

110

00000101

00000001

01111110

101

00000101

00000000

10111111

101

10

00000101

00000000

10111111

100

11

00000101

11111011

10111111

100

12

00000101

11111101

11011111

100

13

00000101

11111101

11011111

011

14

00000101

11111110

11101111

011

15

00000101

11111110

11101111

010

16

00000101

11111111

01110111

010

17

00000101

11111111

01110111

001

18

00000101

11111111

10111011

001

Produs= 1111111111011101
Stop at simulation time 20
C1>$finish;

253

// Cazul: RD = -5; AC = -7;


Timp

RD

AC

MQ

MQq

CNT

11111011

11111001

00000000

111

11111011

11111001

11111001

111

11111011

00000000

11111001

111

11111011

00000101

11111001

111

11111011

00000010

11111100

111

11111011

00000010

11111100

110

11111011

11111101

11111100

110

11111011

11111110

11111110

110

11111011

11111110

11111110

101

11111011

11111111

01111111

101

10

11111011

11111111

01111111

100

11

11111011

00000100

01111111

100

12

11111011

00000010

00111111

100

13

11111011

00000010

00111111

011

14

11111011

00000001

00011111

011

15

11111011

00000001

00011111

010

16

11111011

00000000

10001111

010

17

11111011

00000000

10001111

001

18

11111011

00000000

01000111

001

Produs= 0000000000100011
Stop at simulation time 20
C1>

254

10.2.5MPRIREA
Caregulgeneral,mprireanumerelorserealizeazprinscderearepetatampritorului,deplasat
spredreaptacuunrang,dinrestuldelascdereaprecedent,pnlaobinereaunuirestegalcuzero
saumaimicdectmpritorul;caprimrestseconsiderdempritul.
ngeneralsepracticdoumetode:

metodabazatperefacereaultimuluirestpozitiv(metodacurestaurare)i

metodancarenuserefaceultimulrestpozitiv(metodafrrestaurare).

Pentruprimametodseprezintexemplulurmtor,ncaredemprituleste22,iarmpritoruleste9:
22:9=q0,q1q2
224040
999
133131
999
42222
999
51313
q0=299
44
99
55
q1=4q2=4
22:9=2,44

255

Ceadeadoumetodapleacdelaideeac,nlocdeascdeampritoruldeplasatladreaptacuun
rang,dinultimulrestpozitiv,sevaadunampritoruldeplasatladreapt,laultimulrestnegativ.Metoda
sevailustraprinexempluldemaijos:
22:9=q0,q1q2
225040
9+99
134131
9+99
43222
9+99
52313
q0=3+99
144
+99
55
+9
4
q1=6q2=
Catulvaaveaforma:3, 65656,ncaretermeniicubarsuntnegativi 3,

6 5

6 5

6 ,ceea

cevaimpuneefectuareauneicoreciicarevaaducerezultatullaforma:22:9=2,44444
Ultima metod necesit un numr mai mare de pai, astfel nct, n continuare, se va examina
implementareametodeibazataperestaurareaultimuluirestpozitiv.

256

Algoritmulmpririinumerelorreprezentatencomplementulfadedoi,cu
restaurareaultimuluirestpozitiv
Pentruilustrareaalgoritmuluisevorconsideraurmtoareleresursehardware:

ACacumulator;

RDregistruldedatealmemoriei;

MQregistruldeextensieaacumulatorului;

CNTregistruincrementator,contordecicluri.

mpritorulYvafincrcatnRD,iardempritulXnAC.nMQsevaacumulactul.
n-1 RD 0

n-1 AC 0

n-1 MQ 0

CNT

Figura10.18.Ilustrarearesurselorhardware.

Descriereaalgoritmului:
1. SedeplaseazconinutulluiRDcuprangurisprestnga,ncondiiilencare2 esteprimancercare
demultiplubinaralmpritorului.
SeverificdacRD=0,ncazafirmativoperaiasetermincusemnalizareauneierori.
DacRD0,sencarcCNTcuvectorulbinaravndvaloareap.
2. Dac dempritul i mpritorul au semne identice/diferite se scade/se adun mpritorul din/la
demprit,pentruaobinerestul.
3. a) Dac restul i dempritul au semne identice sau restul este egal cu zero, se introduce o
unitatenbitulcelmaipuinsemnificativalluiMQ,iarrestulvalualoculdempritului.
b)Dacrestulidempritulausemnediferiteirestulcurentnuestezero,seintroduceunzeron
bitulcelmaipuinsemnificativalluiMQ,framaimodificadempritul.
4. Sedeplaseazconinutulregistruluimpritoruluicuunrangspredreapta,extinzndrangul
desemn.
SedecrementeazCNT.
SedeplaseazMQsprestngacuunbit.
5. Serepetpaii24pncndconinutulluiCNTdevineegalcuzero.
6. DacdempritulimpritorulauavutsemneidenticerezultatulseaflnregistrulMQ.ncazuln
care semnele celor doi operanzi au fost diferite, rezultatul se obine prin complementarea
coninutuluiregistruluiMQ.
257

Realizareapracticaalgoritmuluiimpuneintroducereaunorresursehardwaresuplimentare,fadeAC,
RD,MQ,CNTianume:

R[n]registrulncareseobinerestulcurent;

z[1]bistabilncaresestocheazainformaia(1/0)referitoarelasemneleidentice/diferitealecelor
doioperanzi;

e[1]bistabilcaresemnalizeazcondiiadeeroare/noneroare(1/0);

Sunitatelogiccombinaional,caregenereazsemnaluldesfritaloperaiilordedeplasarespre

stnganregistrulRD;

Vunitatelogiccombinaional,careverificsemneleoperanzilordinacumulator(demprit)i

dinregistrulrestuluicurentR;

F unitate logic combinaional, care calculeaz identitatea/neidentitatea semnelor operanzilor;

Uunitatelogiccombinaional,careverificexistenaunuirestcurentegalcuzero;

Structurageneral,laniveldeschembloc,adispozitivuluidemprireestedatnfigura10.19.
S

n-1 AC 0

n-1 n-2 n-3 RD 0

F
Z

RD

RD

MUX

n-1 ADD 0
e
n-1

CNT

n-1 MQ 0

Deplasare stnga

Figura10.19.Structurageneral,laniveldeschembloc,adispozitivuluidemprire.

258

10.3 OPERAII ARITMETICE N VIRGUL MOBIL


Operaiile aritmetice n virgul mobil vor fi examinate la nivelurile schemei bloc, pentru unitatea
aritmetic, i al organigramelor pentru adunare/scdere i nmultire. n analiza care urmeaz se
consideroperanziideintrareX,YirezultatulZ,carevoraveaurmtoareleformate:
Xxs,XE,XF;Yys,YE,YF;Zzs,ZE,ZF
SCHEMABLOCAUNITIIARITMETICENVIRGULMOBIL
Schema bloc a unitii aritmetice n virgul mobil, n cazul de fa, se bazeaz pe structura schemei
unitii aritmetice n virgul fix, la care sau mai adaugat o serie de resurse, pentru manipularea
exponenilor(registreiunitatearitmetic).

RE 2

RE 1

ees

Prelucrare
exponeni

UALE
Condiii

RD

es

Deplasare logic

AC

UAL

MQ

Deplasare logic

Condiii
Prelucrri
mantise/fracii

Figura10.20.Schemablocaunitiiaritmeticenvirgulmobil

Parteacareprelucreazexponeniiconineurmtoareleresurse:

RE1iRE2registrepentruexponeni;

eesbistabildeextensiearegistruluiexponentuluilastnga;

UALEUnitateAritmeticLogicpentruExponeni.

nparteacareprelucreazmantisele/fraciile,faderesurselehardwarepentruprelucrareanvirgul
fixaumaiaprutdoucircuitededeplasarelogiciunbistabildeextensieaacumulatoruluilastnga
es.Celedouunitiaritmeticelogicesuntprevazutecucircuitelogicepentrugenerareaindicatorilorde
259

condiii i de eroare. Operanzii de prelucrat se afl iniial n registrele AC i RD. Din acestea se extrag
exponenii (operaia de despachetare), care sunt ncrcai n RE1 i RE2. Fraciile sunt deplasate spre
stnga n AC i RD, pentru a beneficia de o precizie maxim. Dup terminarea operaiilor asupra
exponenilor i fractiilor, are loc o inserie (operaia de mpachetare) a exponentului rezultatului n
registrulAC,prindeplasareafracieidinACspredreapta.
ZE XE YE

ZE : 0

ZE

XE

YE

Figura10.21.Organigramaoperaieiadunare/scderenvirgulmobil

260


Figura10.22.Organigramaoperaieidenmulirenvirgulmobil

261

262

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