Structura Sistemelor DE Calcul

Capitolul 1

DEFINIREA PROCESORULUI ARITMETIC

Capitolul 2

DEFINIREA ALGORITMILOR. EXEMPLE.

Exemple detaliate :

Capitolul 3

SCHEMA BLOC A ALU . DESCRIEREA FUNC|ION{RII.

Capitolul 5

UNITATEA DE CONTROL A OPERA|IEI FETCH

Capitolul 6

UNITATEA DE CONTROL A OPERA|IEI DE ADUNARE DIRECT{

Capitolul 7

UNITATEA DE CONTROL A OPERA|IEI DE SC{DERE DIRECT{

Capitolul 8

UNITATEA DE CONTROL A OPERA|IEI DE ADUNARE INDIRECT{ PRIN METODA SC{DERII

UNITATEA DE CONTROL A OPERA|IEI DE ADUNARE INDIRECT{ PRIN METODA SC{DERII

Capitolul 9

UNITATEA DE COMAND{ A CONVERTORULUI }I AFI}ORULUI

TEMA PROIECTULUI

+ aplicatia

Cuprins :

pag.

Capitolul 1 : Definirea procesorului aritmetic 1

Capitolul 2 : Definirea algoritmilor. Exemple 3

Capitolul 3 : Schema bloc a ALU . Descrierea func\ion[rii 8

Capitolul 4 : Schema bloc a UC . Descriere 10

Capitolul 5 : UC a opera\iei fetch 12

Capitolul 6 : UC a opera\iei de adunare direct[ 14

Capitolul 7 : UC a opera\iei de sc[dere direct[ 17

Capitolul 8 : UC a opera\iei de adunare indirect[ 20

Capitolul 9 : UC a convertorului ]i afi]orului 21

Anex[ : Scheme OrCAD ]i module folosite

=== 1_Def_procesorului ===

Capitolul 1

DEFINIREA PROCESORULUI ARITMETIC

Defini\ie:

Din punct de vedere matematic se nume]te procesor aritmetic urm[torul 13-uplu:

PA=<I, F, O, R, C, S, f, g, h, D, T, p, q>

I1

I2 R1

PROCESOR R2

Ik ARITMETIC

F C

O S

R = f(I, F, O) f : I x O x F R

C = g(I, F, O) g : I x O x F C

S = h(I ,F, O) h : I x O x F S

T = p(O, F) p : O x F T

D = q(O, F) q : O x F D, unde :

I=(I1, …, Ik) – setul operanzilor de la intrare. #n cazul opera\iilor pe un operand : k=1; pe 2 operanzi: k=2; …

Fiecare operand Ij este un vector. Operanzii verific[ dou[ condi\ii fundamentale:

a) Ij M; M – mul\imea numerelor reprezentabile @n calculator

M=m | mmin m mmax

b) Fiecare num[r Ij se reprezint[ cu o anumit[ precizie.

Ij – DL Ij Ij + DH; D – parametru de control al preciziei.

O = mul\imea operatorilor (mul\imea opera\iilor realizabile).

F = mul\imea formatelor de reprezentare a operanzilor.

De regul[ fiecare operator este legat de un anumit format astfel @nc`t cele dou[ mul\imi O ]i F se prezint[ de regul[ @mpreun[, @n pereche form`nd OFC -codul operator – format (O1F1, O2F2,…, OnFn).

De exemplu adunare simpl[ precizie; dubl[ precizie.

R = mul\imea rezultatelor R1 … Rn

Fiecare R (Rj – vector). De obicei n=1.

Rj verific[ cele dou[ condi\ii a) ]i b) enun\ate la I.

C = vectorul condi\iilor.

Defini\ie:

Se nume]te condi\ie o stare particular[ care este definit[ pe o dat[ valid[.

De exemplu: validare, semn, 0, etc.

Condi\iile se mai numesc ]i indicatori de stare (flag).

S = vectorul singularit[\ilor .

Defini\ie:

Se nume]te singularitate o stare particular[ definit[ pe o dat[ invalid[.

De exemplu dep[]ire (OVF), subdep[]ire (UN).

Obs: de multe ori C ]i S sunt trata\i unitar constituind vectorul STATUS.

f, g, h = trei func\ii vectoriale al c[ror domeniu de defini\ie este

I x O x F R, C, S.

D = mul\imea parametrilor de control.

Ace]ti parametri se refer[ la precizia de reprezentare. Datorit[ faptului c[ regi]trii au lungime finit[ atunci c`nd rezultatele sunt mai lungi acestea trebuie trunchiate ]i implicit anumite mecanisme de rotunjire se impun; deci parametrii de control sunt rezultatul metodei de trunchiere utilizate.

q = func\ia care reprezint[ ac\iunea de trunchiere.

T = mul\imea momentelor de timp discrete @n care evolueaz[ procesorul aritmetic . Evident mul\imea T depinde de algoritmii microscopici implementa\i.

=== 2_Def_Alg ===

Capitolul 2

DEFINIREA ALGORITMILOR. EXEMPLE.

Metoda adun[rii directe

X = Xs * 20 +X*; X*=

Y = Ys* 20 + Y*; Y*=

X > 0 Xs = 0 ; X= 0*20 + X* ;

Y > 0 Ys = 0 ; Y= 0*20 + Y* ;

X < 0 Xs = 1; X= 1*20 + X** ; X** – complementul fa\[ de 1 al lui X*

Y < 0 Ys = 1; Y= 1*20 + Y** ; Y** – complementul fa\[ de 1 al lui Y*

Avem patru cazuri :

X > 0 ; Y > 0 ;

X > 0 ; Y < 0 ;

X < 0 ; Y > 0 ;

X < 0 ; Y < 0 ;

a) #n primul caz :

X > 0 , X = 0 * 20 +X*

Y > 0 , Y = 0 * 20 +Y*

rezult[ X + Y = 0 * 20 + ( X* + Y *) .

Se pune condi\ia ca ( X* + Y *) < 1 t0 = 0. Dac[ nu este @ndeplinit[ condi\ia atunci t0 = 1 ]i apare dep[]ire.

b) #n al doilea caz :

X > 0 X = 0 * 20 +X*

Y < 0 Y = 1 * 20 +Y**

rezult[ X + Y = 1 * 20 + ( X* + Y**) .

Avem dou[ subcazuri : X* > Y* ]i X* Y* .

b1) #n cazul @n care X* > Y* X** < Y** X** + X* < Y** + X*

1 – 2-n < Y** + X* .

Dac[ neglij[m 2-n ob\inem 1 Y** + X* t0 = 1 Z =1*21 + 0*20 + ( X* + Y**).

Transportul c[tre rangul 21 este considerat transport ciclic ce trebuie adunat la rangul 2-n , suma devenind astfel : Z = 0*20 + ( X* + Y**) + 2-n.

Rezultatul este pozitiv ]i apare @n cod direct.

b2) #n cazul @n care X* Y* X* + X** Y** + X* 1 > Y** + X* . Deci vom avea t0=0 Z = 1*20 + ( X* + Y**).

Rezultatul este negativ ]i apare @n cod invers.

c) #n al treilea caz :

X < 0 X = 1 * 20 +X**

Y > 0 Y = 0 * 20 +Y*

Z = 1 * 20 +(X** + Y* ).

#n acest caz se disting dou[ subcazuri :

X* Y*

X* < Y*

c1) X* Y* X** + Y* Y** +Y* X** + Y* 1 – 2-n X** + Y** < 1

t0 = 0 Z = 1 * 20 +(X** + Y* ).

Rezultatul este negativ ]i apare @n cod invers.

c2) X* < Y* X** + Y* 1 t0 = 1 Z = 0*20 + ( X** + Y*) + 2-n.

Rezultatul este pozitiv ]i apare @n cod direct.

d) #n cazul al patrulea avem :

X < 0 X = 1 * 20 +X**

Y < 0 Y = 1 * 20 +Y**

Z = 1 * 21 + 0 * 20 + (X** + Y* *). Z = 0 * 20 + (X** + Y* *) + 2-n.

Adunarea a dou[ numere negative nu poate da ca rezultat un numar pozitiv. Acest lucru se @nt`mpl[ deoarece nu s-a \inut seama de condi\ia X* + Y* < 0 X** + Y** >1 t0 = 1. Z = 1 * 20 + (X** + Y* *) + 2-n.

Dac[ t0 = 0 atunci s-ar depista un al doilea caz de dep[sire. Dac[ t0 = 1 atunci rezultatul ob\inut este corect ]i apare @n cod complement fa\[ de 1.

Metoda sc[derii directe

#n cazul metodei sc[derii directe avem patru cazuri :

X > 0 ; Y > 0 ;

X > 0 ; Y < 0 ;

X < 0 ; Y > 0 ;

X < 0 ; Y < 0 ;

Scaderea direct[ se aseaman[ cu adunarea direct[, dar aici @n loc s[ se adune @mprumutul ciclic la rangul lsb , acesta se scade.

#n primul caz :

X > 0 X = 0 * 20 +X*

Y > 0 Y = 0 * 20 +Y*

Z = X – Y = X = 0 * 20 + (X* – Y* )

Depist[m dou[ subcazuri : X* Y* ]i X* < Y* .

a1) X* Y* X* – Y* 0 i0 = 0 Z = 0 * 20 + (X* – Y* ).

Rezultatul este pozitiv ]i apare @n cod direct.

a2) X* < Y* X* – Y* < 0 i0 = 1 Z = 1*21 +1 * 20 + (X* – Y* ) .

1*21 reprezint[ @mprumutul ciclic ]i trebuie sc[zut de la rangul cel mai pu\in semnificativ. Astfel Z devine : Z = 1 * 20 + (X* – Y* ) – 2-n .

Rezultatul este negativ ]i apare in complement fa\[ de 1.

b) #n cel de-al doilea caz :

X > 0 X = 0 * 20 +X*

Y < 0 Y = 1 * 20 +Y**

Z = X – Y = X = 1 * 21 + 1 * 20 + (X* – Y** ).

Dac[ dintr-un num[r pozitiv sc[dem un num[r negativ rezultatul va fi un num[r pozitiv, de aceea pentru a ob\ine un rezultat corect trebuie ca X* – Y** < 0 i0 = 1.

Dac[ i0 = 0 atunci depist[m un caz de dep[]ire.

c) #n cazul al treilea :

X < 0 X = 1 * 20 + X**

Y > 0 Y = 0 * 20 + Y*

Z = X – Y = X = 1 * 20 + (X** – Y* ).

Dac[ X** – Y* > 0 atunci i0 = 0 ]i rezultatul este corect. Dar dac[ i0 = 1 atunci depist[m un caz de dep[]ire.

d) #n al patrulea caz :

X < 0 X = 1 * 20 + X**

Y < 0 Y = 1 * 20 + Y**

Z = X – Y = X = 0 * 20 + (X** – Y** ).

Depist[m dou[ subcazuri : X** Y** ]i X** < Y** .

d1) X** Y** X** – Y** 0 i0 = 0 Z = 0 * 20 + (X** – Y** ).

Rezultatul este pozitiv ]i apare @n cod direct.

d2) X** < Y** X** – Y** < 0 i0 = 1 Z = 1 * 21 + 1 * 20 + (X* – Y* ) .

1*21 reprezint[ @mprumutul ciclic ]i trebuie sc[zut de la rangul cel mai pu\in semnificativ. Astfel Z devine : Z = 1 * 20 + (X* – Y* ) – 2-n .

Rezultatul este negativ ]i apare in complement fa\[ de 1.

Metoda adun[rii indirecte prin sc[dere

#n metoda adun[rii binare prin sc[derea complementului fa\[ de 1 se exprim[ termenul care se adun[ sub forma complementului fa\[ de 1 ]i apoi se efectueaz[ o sc[dere @n loc de adunare. Dac[ se consider[ c[ X ]i Y sunt termenii adun[rii, atunci suma este dat[ de rela\ia:

Z = X + Y = X – Y**, dac[ Y** X.

#n cazul @n care Y** > X, atunci apare @mprumt ciclic ]i acesta trebuie sc[zut de la rangul cel mai pu\in semnificativ al rezultatului.

Z = X + Y = X – Y** – 2-n

Sc[derea se efectueaz[ @n acela]i fel ca ]i @n cazul sc[derii directe.

Dac[ rezultatul este negativ, acesta apare @n cod complement fa\[ de 1.

Metoda sc[deri indirecte prin adunare

#n metoda sc[derii binare prin adunarea complementului fa\[ de 1 se exprim[ mai @nt`i sc[z[torul sub forma complementului fa\[ de 1 ]i apoi se efectueaz[ adunarea @n loc de sc[dere. Diferen\a celor dou[ numere X ]i Y este dat[ de rela\ia urm[toare:

Z = X – Y = X + Y**, dac[ X + Y** < 1

Dac[ X + Y** 1, atunci apare un transport ciclic. #n acest caz, diferen\a trebuie corectat[:

Z = X – Y = X + Y** + 2-n, dac[ X + Y** 1

Adunarea este efectuat[ @n acela]i mod ca @n cazul metodei adun[rii directe. C`nd rezultatul este negativ, acesta apare @n cod complement fa\[ de 1.

=== 3_Alu ===

Capitolul 3

SCHEMA BLOC A ALU . DESCRIEREA FUNC|ION{RII.

Unitatea aritmetic[ ]i logic[ poate efectua opera\iile de adunare ]i sc[dere gra\ie sumatorului ]i sc[z[torului @ncorporate. Opera\iile sunt efectuate pe 16 bi\i.

ALU preia datele de pe magistrala de date prin intermediul registrelor A ]i B. C`nd se dore]te efectuarea unei anumite opera\ii se comand[ activarea ie]irilor registrelor A ]i B ]i a intr[rilor unia din registrele rezultat. Registrul rezultat adunare preia datele de intrare de la sumator, iar registrul rezultat sc[dere preia datele de la sc[z[tor.

Sumatorul este implementat @n structur[ paralel[ cu sumatoare integrate 7483 ]i scheme de anticipare a transportului integrate 74182.

Sc[z[torul este implementat @n structur[ serial[ din 16 celule de sc[dere complete cascadate.

Transporul ]i @mprumutul @ntre opera\ii sunt memorate @n blocurile de transport ]i @mprumut care pentru a fi folosite la urm[toarele opera\ii.

=== 5_Fetch ===

Capitolul 5

UNITATEA DE CONTROL A OPERA|IEI FETCH

Unitatea de control a opera\iei fetch are urm[toarea schem[ logic[ :

#n starea A se cite]te primul octet din instruc\iune, prin activarea ie]irilor PC ]i a semnalelor RD (c[tre memoria operativ[), ]i LD1 (c[tre IR).

#n starea B se incrementeaz[ PC prin comanda INCNR.

#n starea C se cite]te al doilea octet din instruc\iune, prin activarea ie]irilor PC ]i a semnalelor RD (c[tre memoria operativ[), ]i LD2 (c[tre IR).

#n starea D se incrementeaz[ PC prin comanda INCNR.

#n starea E se cite]te al treilea octet din instruc\iune, prin activarea ie]irilor PC ]i a semnalelor RD (c[tre memoria operativ[), ]i LD3 (c[tre IR).

#n starea F se incrementeaz[ PC prin comanda INCNR.

#n starea G se lanseaz[ @n execu\ie instruc\iunea cu opcodul dat, ]i se trece @n starea H unde se a]teapt[ terminarea execu\iei operatiei lansate.Dac[ execu\ia instruc\iunii curente s-a terminat atunci semnalul STOP devine 1 logic ]i se trece @n starea A de unde se reia ciclul.

Din schema logic[ se poate observa c[ lungimea instruc\iunii este fix[ : 3 octe\i @n formatul urm[tor :

Ecua\iile logice ale comenzilor sunt :

Y0 = m0 + m2 + m4 + m6 + m7*(-STOP)

Y1 = m1 + m2 + m5 + m6 + m7*(-STOP)

Y2 = m3 + m4 + m5 + m6 + m7*(-STOP)

LD1 = m0

LD2 = m2

LD3 = m4

INCNR = m1 + m3 + m5

STARTOP = m6

=== 6_Add_dir ===

Capitolul 6

UNITATEA DE CONTROL A OPERA|IEI DE ADUNARE DIRECT{

Schema logic[ este :

#n starea A se vor reseta flagurile, num[r[torul ]i se va a]tepta sosirea semnalului de start opera\ie.

#n starea B se va @nc[rca un cuv`nt din primul operand @n registrul A din ALU.

#nc[rcarea cuvintelor @ncepe cu cel mai pu\in semnificativ. Citirea se face activ`nd semnalele OENR,RD,OE1, 16 c[tre memoria local[ ]i semnalul LDA c[tre registrul A din ALU.

#n starea C se va @nc[rca un cuv`nt din al doilea operand @n registrul B din ALU.

#nc[rcarea cuvintelor @ncepe cu cel mai pu\in semnificativ. Citirea se face activ`nd semnalele OENR,RD,OE2, 16 c[tre memoria local[ ]i semnalul LDB c[tre registrul B din ALU.

#n starea D se va efectua opera\ia de adunare a cuvintelor din registrele A ]i B ale ALU, cu @nscrierea rezultatului @n registrul RA.

#n starea E se va salva un cuv`nt din rezultat ,aflat @n registrul RA din ALU @n memoria local[.

Salvarea cuvintelor @ncepe cu cel mai pu\in semnificativ ]i se face activ`nd semnalele OENR,WR,OE3, 16 c[tre memoria local[ ]i semnalul OERA c[tre registrul RA din ALU.

#n starea F se va incrementa num[ratorul de cuvinte ]i se va testa dac[ s-au parcurs cele trei cuvinte ale operandului. Dac[ nu s-au terminat cele trei cuvinte atunci se trece @n starea B ]i se reia ciclul. Dac[ ciclul s-a terminat atunci se trece @n starea G.

#n starea G se testeaz[ condi\iile de dep[]ire. Dac[ Xs ]i Ys sunt 1 logic adic[ ambii operanzi sunt negativi (suntem @n cazul d) atunci se trece @n starea I unde se testeaz[ dac[ a ap[rut un transport c[tre rangul 0, dac[ transportul nu a ap[rut atunci se seteaz[ OVF (dep[]ire) ]i se trece @n starea A, altfel se trece @n starea J. Dac[ Xs ]i Ys sunt 0 logic atunci ambii operanzi sunt pozitivi (suntem @n cazul a) ]i se trece @n starea H unde este testat transportul c[tre rangul 0, Dac[ acesta apare atunci se semnaleaz[ OVF ]i se trece @n starea A, altfel se trece @n starea J.

#n starea J este resetat num[r[torul ]i registrul B din ALU ]i mai este testat ]i transportul c[tre rangul 1. Dac[ apare transport se trece @n starea K unde transportul (ciclic) este adunat la rangul cel mai pu\in semnificativ, altfel se trece @n starea A.

#n starea K este @nc[rcat registrul A din ALU cu un cuv`nt din rezultatul ob\inut la pa]ii anteriori. #nc[rcarea cuvintelor @ncepe cu cel mai pu\in semnificativ.

#n starea L este efectuat[ adunarea cuv`ntului din registrul A cu 0 din registrul B ]i cu transportul de la pa]ii anteriori.

#n starea M este salvat rezultatul @n registrul destina\ie.

#n starea N este incrementat num[r[torul ]i se mai testeaz[ dac[ s-au teminat toate cuvintele operandului.

Ecua\iile comenzilor

Y0 = m0*START +m2 + m4 + m5*(-ENDNR) + m6*(-Xs)(-Ys) + m7*(-T0) +

+ m8*T0+ m10 + m12

Y1 = m1 + m2 + m5*ENDNR + m6*(-Xs)(-Ys) +m9*Tout +m10 +

m13*(-ENDNR)

Y2 = m3 + m4 + m5*ENDNR + m6*Xs*Ys + m11 + m12

Y3 = m6*Xs + m7*(-T0) + m8*T0 + m9*Tout +m10 + m11 +m12 +

m13*(-ENDNR)

RSTNR = m0 + m9

INCNR = m5 + m13

STOP = RSTOV = RSTTout = m0

RD = m1 + m2 + m10

WR = m4 + m12

OE1 = m1

OE2 = m2

OE3 = m4 + m10 + m12

16 = m1 + m2 +m4 + m10 +m12

LDA = m1 + m10

LDB = m2+ m9

RSTB = m9

LRA = OEA = OEB = m3 + m11

OERA = m4 + m12

OVF = m8*(-T0) + m7*T0

=== 7_Sub_dir ===

Capitolul 7

UNITATEA DE CONTROL A OPERA|IEI DE SC{DERE DIRECT{

Schema logica este :

#n starea A sunt resetate flagurile OVF ]i Tout, num[r[torul ]i este generat deasemenea semnalul STOP. Tot @n aceast[ stare este testat ]i semanlul de START ce permite @nceputul opera\iei. Dac[ semnalul START este 1 logic atunci se poate @ncepe opera\ia, altfel se va a]tepta @n continuare.

#n starea B este @nc[rcat un cuv`nt din primul operand din memoria local[ @n registrul A din ALU. #nc[rcarea @ncepe cu cel mai pu\in semnificativ cuv`nt.

#n starea C este @nc[rcat un cuv`nt din cel de-al doilea operand din memoria local[ @n registrul B din ALU. #nc[rcarea @ncepe cu cel mai pu\in semnificativ cuv`nt.

#n starea D este efectuat[ opera\ia de adunare ]i este @nc[rcat rezultatul @n registrul RS din ALU.

#n starea E este salvat rezultatul din registrul RS @n registrul destina\ie din memoria local[.

#n starea F este incrementat num[r[torul ]i se testeaz[ dac[ s-a prelucrat la ultimul cuv`nt. Dac[ nu s-au prelucrat toate cuvintele atunci se reia ciclul de la starea B, altfel se trece @n starea G.

#n starea G sunt testate condi\iile preliminare detect[rii OVF. Dac[ Xs = 1 ]i Ys = 0 (suntem @n cazul c) atunci se trece @n starea I unde este testat @mprumutul c[tre rangul 0, dac[ I0 = 1 atunci este detectat OVF ]i se trece @n starea A altfel se trece @n starea J.

Dac[ Xs = 0 ]i Ys = 1 (suntem @n cazul b) atunci se trece @n starea H unde este testat @mprumutul c[tre rangul 0 (I0), dac[ I0 = 0 atunci se detecteaz[ OVF ]i se trece @n starea A, altfel se trece @n starea J unde este tratat @mprumutul ciclic.

Altfel suntem @n cazurile a sau d, ]i se trece @n starea J.

#n starea J este resetat num[r[torul ]i registrul B din ALU. Tot @n starea J este testat @mprumutul ciclic, dac[ acesta apare atunci se trece @n starea K unde este sc[zut din rezultatul par\ial, altfel se trece @n starea A.

#n starea K este @nc[rcat un cuv`nt din rezultatul ob\inut la pa]ii anteriori @n registrul A din ALU.

#n starea L este efectuat[ opera\ia de sc[dere a @mprumutului din registarul A, ]i este salvat rezultatul @n registru RS.

#n starea M este salvat cuv`ntul rezultat din registrul RS din ALU @n registrul destina\ie din memoria local[.

#n starea N este incrementat num[r[torul ]i se testeaz[ dac[ s-au prelucrat toate cuvintele din rezultatul par\ial. Dac[ au fost prelucrate toate cuvintele atunci se trece @n starea A, altfel se trece @n starea K de unde se reia ciclul.

Ecua\iile comenzilor

Y0 = m0*START +m2 + m4 + m5*(-ENDNR) + m6*(-Xs) + m7*I0 +

+ m8*(-I0) + m10 + m12

Y1 = m1 + m2 + m5*ENDNR + m6*(-Xs)*Ys +m9*Iout + m10 +

+ m13*(-ENDNR)

Y2 = m3 + m4 + m5*ENDNR + m6*(-Xs)*Ys + m11 + m12

Y3 = m6*Xs + m6*(-Xs)*(-Ys) + m7*(-I0) + m8*(-I0) + m9*Iout + m10 + m11

+ m12 + m13*(-ENDNR)

RSTNR = m0 + m9

INCNR = m5 + m13

STOP = RSTOV = RSTTout = m0

RD = m1 + m2 + m10

WR = m4 + m12

OE1 = m1

OE2 = m2

OE3 = m4 + m10 + m12

16 = m1 + m2 +m4 + m10 +m12

LDA = m1 + m10

LDB = m2+ m9

RSTB = m9

LRS = OEA = OEB = m3 + m11

OERS = m4 + m12

OVF = m7*(-I0) + m8*I0

=== 8_Add_sub ===

Capitolul 8

UNITATEA DE CONTROL A OPERA|IEI DE ADUNARE INDIRECT{ PRIN METODA SC{DERII

Schema logic[ a opera\iei este :

#n starea A este a]teptat semnalul de start al opera\iei.

#n starea B este complementat cel de-al doilea operand, prin re@nscrierea @n registru a valorii complementate.

#n starea C este lansat[ opera\ia de sc[dere direct[.

#n starea D este a]teptat[ terminarea opera\iei de sc[dere.

Ecua\iile comenzilor sunt :

Y0 = m0*START + m2 + m3*(-STOPS)

Y1 = m1 + m2 + m3*(-STOPS)

OE = m1

RD = WR = m1

STARTS = m2

=== 8_sub_add ===

UNITATEA DE CONTROL A OPERA|IEI DE ADUNARE INDIRECT{ PRIN METODA SC{DERII

Schema logic[ a opera\iei este :

#n starea A este a]teptat semnalul de start al opera\iei.

#n starea B este complementat cel de-al doilea operand, prin re@nscrierea @n registru a valorii complementate.

#n starea C este lansat[ opera\ia de adunare direct[.

#n starea D este a]teptat[ terminarea opera\iei de adunare.

Ecua\iile comenzilor sunt :

Y0 = m0*START + m2 + m3*(-STOPA)

Y1 = m1 + m2 + m3*(-STOPA)

OE = m1

RD = WR = m1

STARTA = m2

C = m1

=== 9_Afisaj ===

Capitolul 9

UNITATEA DE COMAND{ A CONVERTORULUI }I AFI}ORULUI

Schema logic[ a unit[\ii de comand[ pentru afisaj este :

#n starea A este resetat con\inutul convertorului din cod complement fa\[ de 1 @n cod BCD ]i este a]teptat ]i semnalul de start.

#n starea B este citit num[rul ce trebuie convertit @n BCD din memoria local[.

#n starea C este facut[ conversia unui digit.

#n starea D este deplasat la dreapta operandul, este incrementat num[r[torul ]i este testat sf`r]itul procesului de conversie.

#n starea E este salvat rezultatul final.

Ecua\iile comenzilor sunt :

Y0 = m0*START + m2

Y1 = m1 +m2 +m3 * (- END)

Y2 = m3 * END

CLRCONV = STOP = m0

OE1 = RD = S1 = m1

ENCONV = m2

INCNR = m3

LDBCD = m4

LD = S0 = m3 + m1

=== exemplu detaliat ===

EXEMPLU DETALIAT

Consider[m 2 operanzi A ]i B pe 48 de bi\i cu care vom efectua opera\ia de adunare direct[. Cei doi operanzi se afl[ @n memoria local[ . Cum ALU poate efectua opera\ii pe 16 bi\i , @nsumarea celor doi operanzi se va face @n trei etape. Pentru aceasta se @mpart cei doi operanzi A ]i B @n trei grupe de 16 bi\i A1, B1 ; A2, B2 ; A3, B3 ce se vor aduna pe r`nd @n cele trei etape. De asemenea rezultatul va fi generat @n trei tran]e de 16 bi\i : C1, C2, C3.

A3 A2 A1

A= 0101000001001010 0101001001001010 0110010011000101

B3 B2 B1

B= 1110101001010111 0010101001010111 1010011100100011

#n prima etap[ se reseteaz[ flagurile ]i numaratorul . Se d[ comanda @ncarc[ A1 ]i B1 @n regi]trii REGA ]i REGB din ALU apoi se execut[ opera\ia de adunare @n sumatorul pe 16 bi\i. Rezultatul C1 este depus @n registrul rezultat REGRA ]i se memoreaz[ transportul Tout c[tre rangul 16. Se salveaz[ con\inutul REGRA @n memoria local[ la adresa rezultat, @n zona corespunz[toare C1.

0110010011000101 +

1010011100100011

––––––––––-

1 0000101111101000

Ob\inem : C1 = 0000101111101000 ]i Tout = 1.

#n a doua etap[ se @ncarc[ A2 ]i B2 @n regi]trii REGA ]i REGB din ALU apoi se execut[ opera\ia de adunare @n sumatorul pe 16 bi\i cu Tin = Tout din prima etap[. Rezultatul C2 este depus @n registrul rezultat REGRA ]i se memoreaz[ transportul Tout c[tre rangul 32. Se salveaz[ con\inutul REGRA @n memoria local[ la adresa rezultat, @n zona corespunz[toare C2.

0101001001001010 +

0010101001010111

1 Tin

––––––––––-

0 0111110010100010

Ob\inem : C2 = 0111110010100010 ]i Tout = 0.

#n a treia etap[ (ultima) se @ncarc[ A3 ]i B3 @n regi]trii REGA ]i REGB din ALU apoi se execut[ opera\ia de adunare @n sumatorul pe 16 bi\i cu Tin = Tout din a doua etap[. Rezultatul C3 este depus @n registrul rezultat REGRA ]i se memoreaz[ transportul Tout . Se salveaz[ con\inutul REGRA @n memoria local[ la adresa rezultat, @n zona corespunz[toare C3. Dac[ Tout=1 , acesta reprezinta de fapt transportul ciclic ce trebuie adunat la rangul lsb al rezultatului (cazul b1de la adunarea direct[) .

0101000001001010 +

1110101001010111

0 Tin

––––––––––-

1 0011101010100001

Ob\inem : C3 = 0011101010100001 ]i Tout = 1.

#n aceste condi\ii, Tout se va aduna la lsb rezultat. Se reseteaz[ REGB, iar @n REGA se incarca C1 din memoria local[. Se face suma @ntre REGA , REGB ]i Tout=1. Rezultatul C1’ apare @n REGRA de unde se salveaz[ @n memorie .

0000101111101000 +

0000000000000000

1 Tc

–––––––––––-

0000101111101001

Ob\inem : C1' = 0000101111101001 ]i T'out =0 .

Se @ncarc[ C2 @n REGA , apoi se face suma @ntre REGA, REGB ]i T'out . Rezultatul C2' se ob\ine @n REGRA de unde se salveaz[ @n memorie.

0111110010100010 +

0000000000000000

0 T'out

–––––––––––

0 0111110010100010

Ob\inem : C2' = 0000101111101001 ]i T'out =0 .

Se @ncarc[ C3 @n REGA , apoi se face suma @ntre REGA, REGB ]i T'out . Rezultatul C3' se ob\ine @n REGRA de unde se salveaz[ @n memorie.

0011101010100001+

0000000000000000

0 T'out

–––––––––––

0011101010100001

Ob\inem : C3' = 0011101010100001 .

La sf`r]it rezultatul adunarii (pe48 de bi\i) este C = C1' C2' C3' ]i se afl[ @n memorie .

Deci rezultatul final al adun[rii A + B pe 48 de bi\i este :

C3' C2' C1'

C = 0011101010100001 0111110010100010 0000101111101001

Similar Posts