1.INTRODUCERE. 1.1. Scurt istoric privind dezvoltarea echipamentelor de prelucrare a datelor. Un calculator modern reprezinta un sistem complex care inglobeaza in constructia sa tehnologii diverse: electronice, magnetice, electromecanice, electrono-optice etc. Astfel, in prezent, pentru realizarea unitatii centrale a unui calculator, care asigura stocarea programului si a datelor pe termen scurt, secventierea instructiunilor si efectuarea operatiilor de calcul, se utilizeaza, cu precadere, tehnologii microelectronice. Pentru stocarea datelor si a programelor pe termen lung se folosesc suporturi magnetice sub forma de benzi sau discuri, bazate pe diverse tehnologii magnetice/optice. Pentru implementarea operatiilor de intrare/iesire sunt folosite in principal tehnologiile electronice si electromecanice. Evolutia calculatoarelor este strans legata de progresele inregistrate de tehnologiile amintite mai sus. Cercetarile efectuate pentru realizarea de calculatoare cat mai performante au impulsionat aprofundarea unor noi aspecte in cadrul acestor tehnologii. Calculatoarele moderne reprezinta rezultatul unui indelungat proces de cautari ale unor mijloace tehnice adecvate pentru mecanizarea si automatizarea operatiilor de calcul. In evolutia mijloacelor de tehnica de calcul se pot evidentia mai multe etape. 1. Etapa instrumentelor de calcul. • Secolul 12 en., China - abacul. • Sfarsitul sec. 17 si inceputul sec.18, J. Napier si R. Bissaker -rigla de calcul. 2. Etapa masinilor mecanice de calcul ( bazate pe roti dintate angrenate: roata dintata joaca rolul elementului cu mai multe stari stabile, fiecare stare codifica o cifra zecimala. ) • 1642. B. Pascal realizeaza o masina de adunat. • 1694. von Leibniz construieste o masina de adunat si inmultit. • 1823. Ch.Babbage proiecteaza primul calculator cu executie automata a programului. Proiectul prevedea principalele elemente ale calculatoarelor moderne (unitatile de: memorie, calcul, intrare, iesire si comanda ). • 1872 E. Barbour realizeaza prima masina de calcul cu imprimanta. • 1892. W. Burroughs construieste o masina de calcul de birou perfectionata. • 1912. F. Baldwin si J. Monroe incep productia de masa a masinilor mecanice de calculat, cu patru operatii aritmetice. 3. Masini electromecanice de calculat (bazate pe roti dintate angrenate, actionate
265
Embed
1.INTRODUCERE. 1.1. Scurt istoric privind dezvoltarea ...3x2cb.ines.ro/fisiere/cn1/cn-complet.pdf · Scurt istoric privind dezvoltarea echipamentelor de prelucrare a datelor. Un calculator
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1.INTRODUCERE.
1.1. Scurt istoric privind dezvoltarea echipamentelor de prelucrare a datelor.
Un calculator modern reprezinta un sistem complex care inglobeaza in constructia sa
tehnologii diverse: electronice, magnetice, electromecanice, electrono-optice etc. Astfel, in
prezent, pentru realizarea unitatii centrale a unui calculator, care asigura stocarea
programului si a datelor pe termen scurt, secventierea instructiunilor si efectuarea
operatiilor de calcul, se utilizeaza, cu precadere, tehnologii microelectronice. Pentru
stocarea datelor si a programelor pe termen lung se folosesc suporturi magnetice sub forma
de benzi sau discuri, bazate pe diverse tehnologii magnetice/optice. Pentru implementarea
operatiilor de intrare/iesire sunt folosite in principal tehnologiile electronice si
electromecanice.
Evolutia calculatoarelor este strans legata de progresele inregistrate de tehnologiile amintite
mai sus. Cercetarile efectuate pentru realizarea de calculatoare cat mai performante au
impulsionat aprofundarea unor noi aspecte in cadrul acestor tehnologii.
Calculatoarele moderne reprezinta rezultatul unui indelungat proces de cautari ale unor
mijloace tehnice adecvate pentru mecanizarea si automatizarea operatiilor de calcul.
In evolutia mijloacelor de tehnica de calcul se pot evidentia mai multe etape.
1. Etapa instrumentelor de calcul.
• Secolul 12 en., China - abacul.
• Sfarsitul sec. 17 si inceputul sec.18, J. Napier si R. Bissaker -rigla de calcul.
2. Etapa masinilor mecanice de calcul ( bazate pe roti dintate angrenate: roata dintata
joaca rolul elementului cu mai multe stari stabile, fiecare stare codifica o cifra zecimala. )
• 1642. B. Pascal realizeaza o masina de adunat.
• 1694. von Leibniz construieste o masina de adunat si inmultit.
• 1823. Ch.Babbage proiecteaza primul calculator cu executie automata a programului.
Proiectul prevedea principalele elemente ale calculatoarelor moderne (unitatile de:
memorie, calcul, intrare, iesire si comanda ).
• 1872 E. Barbour realizeaza prima masina de calcul cu imprimanta.
• 1892. W. Burroughs construieste o masina de calcul de birou perfectionata.
• 1912. F. Baldwin si J. Monroe incep productia de masa a masinilor mecanice de
calculat, cu patru operatii aritmetice.
3. Masini electromecanice de calculat (bazate pe roti dintate angrenate, actionate
electric ).
• 1930. Productia de masa a masinilor electromecanice de calculat prevazute cu operatiile:
adunare, scadere, inmultire, impartire, radacina patrata, subtotal etc.
• 1937 - 1945. Masini electromecanice de calculat, bazate pe relee electromagnetice
(Mark I ), cu program cablat. Releele electromagnetice si contactele lor joaca rolul
elementelor bistabile. Cu ajutorul lor se pot codifica cifrele sistemului de numeratie binar.
In 1937 Howard Aiken, de la Universitatea Harward, a propus proiectul Calculatorului cu
Secventa Automata de Comanda. Acesta folosea principiile enuntate de Ch. Babbage si
tehnologia de implementare pentru calculatoarele electromecanice produse de IBM.
Constructia calculatorului Mark I a inceput in 1939 si s-a terminat la 7 august 1944, data ce
marcheaza inceputul erei calculatoarelor.
4. Masinile electronice de calcul cu program memorat, bazate la inceput pe tuburi
electronice, apoi pe tranzistori si circuite integrate pe scara simpla (SSI: sub 20 de
tranzistori pe pastila de Si), medie (MSI: 20 - 1000 de tranzistori pe pastila de Si), larga
(LSI: 1000 – 50.000 de tranzistori pe pastila de SI), foarte larga (VLSI: 50.000 – 100.0000
de tranzistori pe pastila de Si) si ultra larga (ULSI: peste 1.000.000 de tranzistori pe pastila
de Si).
Primele calculatoare realizate cu tuburi electronice:
• 1943: la Universitatea din Pennsylvania a inceput constructia primului calculator bazat
pe tuburi electronice ENIAC ( Electronic Numerical Integrator And Computer ), de catre o
echipa avand in frunte pe J.P. Eckert, J.W. Mauchly si J. von Neumann. Cu aceasta ocazie
s-a folosit ideea de a stoca in aceeasi memorie, atat datele, cat si programul, ceea ce a
permis modificarea relativ usoara a programului;
• 1945: a inceput constructia unui alt calculator electronic EDVAC (Electronic Discrete
Variable Automatic Computer) pe baza lucrarii lui J.von Neumann: "Prima schita de Raport
asupra lui EDVAC". Dupa elaborarea structurii logice de baza a calculatorului cu
program memorat, au fost stabilite entitatile functionale care concurau la realizarea acestuia:
- un mediu de intrare care sa permita introducerea unui numar nelimitat de operanzi si
instructiuni;
- o memorie din care se citesc operanzi sau instructiuni si in care se pot introduce, in
ordinea dorita, rezultatele;
- o sectiune de calcul, capabila sa efectueze operatii aritmetice sau logice asupra
operanzilor cititi din memorie;
- un mediu de iesire, care sa permita livrarea unui numar nelimitat de rezultate catre
utilizator;
- o unitate de comanda, capabila sa interpreteze instructiunile citite din memorie si sa
selecteze diverse variante de desfasurare a operatiilor, in functie de rezultatele obtinute
pe parcurs.
Marea majoritate a calculatoarelor construite pana in prezent se bazeaza pe aceste principii,
purtand numele de calculatoare de tip von Neumann.
Pe baza proiectului EDVAC, Eckert si Mauchly au produs, in 1951, in cadrul unei
companii proprii, primul calculator comercial UNIVAC 1.
La Universitatea Princeton, von Neumann a condus realizarea, in 1951, a calculatorului
IAS, care dispunea de posibilitatea de a-si modifica partea de adresa din instructiune.
Aceasta facilitate asigura reducerea spatiului ocupat in memorie de catre program, ceea ce
permite prelucrarea unor seturi mai mari de date.
Avand in vedere tehnologiile utilizate in constructia calculatoarelor, incepand cu anul 1946,
se pot evidentia cinci generatii de calculatoare. Intrucit functia de prelucrare a datelor este
legata si de cea de transmitere a datelor, printre caracteristicile specifice fiecarei generatii de
calculatoare trebuie incluse si elementele reprezentative privind tehnologiile
telecomunicatiilor.
In tabelul de mai jos se prezinta caracteristicile generatiilor de sisteme de calcul si de
telecomunicatii.
Tabelul 1.
Evolutia generatiilor de calculatoare si a telecomunicatiilor.
- Circuite realizate complet la cerere ( Full Custom ).
Se aminteste ca tranzistorul a fost inventat in anul 1947 si ca primele exemplare ocupau o
suprafata de 3,5 mm2 . La sfirsitul anilor 50 a aparut circuitul integrat care, grupand pe
aceeasi pastila mai multi tranzistori, a avut o evolutie spectaculoasa in sensul dublarii
numarului de componente pe pastila, la fiecare 18 luni. Aceasta s-a datorat in primul rand
numeroaselor perfectionari ale proceselor tehnologice, care permit rezolutii de ordinul a
2,5µm – 0,18 µm.
In continuare se vor da unele date privind tehnologiile circuitelor VLSI, in general, evolutia
memoriilor si a procesoarelor.
Reprezentarea sistemelor de calcul pe niveluri ierarhice. Nivelul PMS Structuri: retele, sisteme de procesoare multiple, (Processor, calculatoare. Memory Componente: procesoare, memorii, comutatoare, Switches ) traductoare, operatori asupra datelor, legaturi, controlere. Nivelul Subnivelul Aplicatii Structuri: pachete statis tice, ecuatii cu derivate Progra- Limbajelor partiale, simulatoare de sisteme melor. evoluate. energetice. Componente: biblioteci matemetice, rutine, rutine de formatare. Rutine Structuri: functii matematice, pachete pentru
aplicative aplicatii grafice. Componente: subrutine, alocatoare de memorie. Pachete de Structuri: alocatoare de memorie, rutine de I/E, asistenta in sisteme de fisiere. in timpul Componente: apeluri ale sistemului de operare. executiei. Sisteme Structuri: planificatoare, alocatoare, comunicatii. Operare Componente: subrutine, corutine, programe. Subnivelul Structuri: set de instructiuni. ISP Componente: stare memorie, stare procesor, calcul (Instruction adresa efectiva, decodificare Set Processor) instructiuni, executie instructiuni. Nivelul Subnivelul Unitate Micropro- Structuri: microprogram, microrutina. proiec- transferu- de co- gramata Componente: microsecventi ator, memorie tarii rilor intre manda de microinstructiuni. registre Conven- Structuri: secventiator. tionala Componente: masini secventiale. Unitate de executie Structuri: unitate aritmetica, registre
generale. Componente: registre, operatori asupra
datelor. Subnivelul Circuite secventiale Structuri: numaratoare, genratoare circuitelor functionale, registre. de comuta- Componente: bistabile, latch-uri,linii de
sun.pub.ro si pe suport magnetic). 2. A.Petrescu. I. Francisc, Z. Racovita. Initiere in Structura Calculatoarelor Electronice.
Editura Teora. 1996. 3. A.S. Tanenbaum. Organizarea Structurata a Calculatoarelor. Editura AGORA, 1999. 4. L.N. Vintan. Arhitecturi de Procesoare cu Paralelism la Nivelul Instructiunilor. Editura
Academiei Romane. 2000. 5. D. Grigoras. Calcul Paralel. De la sisteme la programarea aplicatiilor. AGORA. 2000. 6. J. Hennessy, D. Paterson. Computer Architecture. A Quantitative Approach. 2nded.
1996. Morgan Kaufmann Publishers, Inc. 7. Z.F. Baruch. Sisteme de intrare/iesire ale calculatoarelor. Editura Albastra. 2000 8. S.G. Shiva. Computer Design and Architecture. 3rd Ed. Marcel Dekker Publishing
House. 2000. 9. J. Hennessy, D. Paterson. Computer Organization and Design. The Hardware/Software
Interface. 2nded.. 1998. Morgan Kaufmann Publishers, Inc. 10. R. Baron, L. Higbie. Computer Architecture. 1992. Addison Wesley Publishing
Company. 11. M. Morris Mano, Ch. R. Kime. Logic and Computer Design Fundamentals 2nd ed.
Prentice Hall International. Inc. 12. David Van den Bout. The Practical XILINX Designer Lab Book.Version 1.5, 1999.
Prentice Hall. 13. V..P. Heuring, H. F. Jordan. Computer Systems Design and Architecture. Addison
1.2 Elemente introductive privind informatia. Memorarea, regasirea si prelucrarea informatiei reprezinta operatii de baza intilnite in
studiul oricarui capitol al stiintei calculatoarelor.
Din punct de vedere lexicografic, informatia reprezinta cunostintele transmise sau
receptionate, care se refera la circumstante sau fapte particulare.
Sub aspect filosofic informatia se afla in urmatoarea relatie, in raport cu entitatile:
data, cunostinta, intelepciune: data < informatie < cunostinta < intelepciune.
Domeniul ingineriei considera ca informatia inlatura/elimina incertitudinea. Astfel,
informatia nu are nimic de-a face cu cunostinta sau semnificatia. Informatia este, in mod
natural, “ceea ce nu se poate prezice”.
In cadrul procesului edificarii domeniului teoriei informatiei s-au dat si precizat o serie
de definitii formale privind continutul informational al unui mesaj ( Hartley - 1928,
Kolmogorov - 1942, Wiener - 1948, Shannon - 1949 ).
Se considera un sistem reprezentand o multime formata din n obiecte, avand proprietatea
ca fiecare obiect poseda o probabilitate independenta pi de aparitie.
Incertitudinea H asociata acestui sistem este definita ca:
n H = - ∑ pi log2 (pi), i=1 in timp ce valoarea –H, reprezinta cantitatea de informatie asociata sistemului
Se presupune existenta unei urne cu 8 bile numerotate de la 1 la 8. Probabilitatea de a
extrage o cifra data, in urma unei trageri, este egala cu 1/8. Incertitudinea medie asociata
cu numarul selectat poate fi calculata cu ajutorul formulei de mai sus:
8 H = - ∑ 1/8. log2 (1/8) = - log2 (1/8) = log2 (1/8) = 3 biti. i=1 Pentru a masura incertitudinea asociata sistemului s-a folosit o unitate de masura numita
bit (binary digit). Un bit este o masura a incertitudinii sau a informatiei asociate unei
conditii cu doua stari: fals/adevarat, inchis/deschis etc. Astfel, atunci cand se afirma ca
rezultatul aruncarii unei monede este “pajura”, s-a comunicat o informatie de: log2(2/1) =
1 bit.
Cantitatea de informatie care se castiga este egala cu cantitatea de incertitudine inlaturata
(in cazul de fata prin aflarea numarului extras din urna).
In situatia numarului selectat din urna s-a calculat ca sunt necesari trei biti de informatie
pentru a afla numarul de pe bila extrasa. Din punctul de vedere al definitiei bitului,
aceasta inseamna ca este permisa punerea a trei intrebari cu raspuns de tipul da - nu,
pentru a cunoaste numarul extras:
n<4? Da Nu n<2? n<6? Da Nu Da Nu . . . n<2? n<4? n<6? n<8? Da Nu Da . Nu Da Nu Da . Nu n=1 n=2 n=3 n=4 n=5 n=6 n=7 n=8 Cei trei biti de informatie, asociati cu aflarea numarului inscris pe bila, pot fi asamblati
in mesaje cu lungimea de trei simboluri 0 sau 1, unde 1 reprezinta simbolul asociat
raspunsului "da", in timp ce 0 este simbolul asociat cu raspunsul "nu". In tabelul de mai
jos se prezinta o schema posibila pentru codificarea evenimentului legat de extragerea
din urna a unei bile date:
Numarul bilei Schema mesajului 1 111 2 110 3 101 4 100 5 011 6 010 7 001 8 000 Se poate face observatia ca, in general, pentru a specifica identitatea unui numar inscris
pe bila extrasa, se pot folosi mai multe scheme de mesaje.
Legatura dintre mesaj si informatie reprezinta o aplicatie c:
c M I, care asociaza ( pune in corespondenta ) mesajului M, informatia I. Corespondenta c
poarta numele de schema de codificare (cod, regula, de interpretare, cifru , cheie etc. ).
Adesea se pune problema cantitatii medii de informatie continuta intr-un sir de date,
reprezentand M mesaje. Aceasta poarta numele de entropie si poate fi calculata cu
ajutorul urmatoarei formule:
N
entropia = ∑ (Mi/N).log2(N/Mi), i=1
unde:
- (Mi/N) reprezinta probabilitatea mesajului i, iar
- log2(N/Mi) constituie informatia din mesajul i.
Codificarea informatiei.
Codificarea informatiei se refera la reprezentarea acesteia. Gasirea unei codificari
corespunzatoare si eficiente constituie o problema extrem de importanta intrucat aceasta
are un impact pe o serie de niveluri.
Astfel, la nivelul echipamentelor de calcul si memorare, are influenta asupra numarului
de componente. In ceea ce priveste nivelul eficientei, influenta se refera la numarul de biti
utilizati. Sunt influentate, de asemenea, nivelul fiabilitatii, sub aspectul zgomotului si
nivelul securitatii, in ceea ce priveste criptarea.
Codificarea cu lungime fixa.
In cazul in care evenimentele au aceeasi probabilitate de aparitie, se pot utiliza codurile
de lungime fixa. Un asemenea cod trebuie sa foloseasca un numar suficient de biti pentru
a putea reprezenta continutul informational. De exemplu, in cazul cifrelor zecimale
0,1,2,3,4,5,6,7,8,9 se foloseste un cod de 4 biti (binar-zecimal), denumit , in engleza,
BCD (Binary Coded Decimal). Lungimea codului (numarul de biti) rezulta din
urmatoarea expresie:
10
∑ (1/10).log2(10) = 3,322 < 4 biti i=1
De asemenea, pentru cele 84 de caractere din Engleza: A-Z (26), a-z (26), 0-9 (10),
punctuatie (9), matematice(9), financiare (4) se foloseste un cod binar de 7 biti denumit
ASCII (American Standard Code for Information Interchange). Lungimea codului ASCII
rezulta din expresia de mai jos:
84
∑ (1/84).log2(84)= 6,392 < 7 biti. i=1
In continuare se vor prezenta exemple de codificari de lungime fixa.
Codificarea numerelor.
Numerele pozitve se pot codifica direct, sub forma unei secvente de biti, carora li se
asociaza ponderi diferite. De la dreapta la stanga, aceste ponderi reprezinta, in ordine
crescatoare, puteri ale lui 2. Valoarea v a unui numar de n biti, codificat in acest mod,
este data de expresia:
n-1
v = ∑ 2i.bi i=0
unde bi constituie rangul i (bitul i) al reprezentarii.
Pentru numarul binar:
211 210 29 28 27 26 25 24 23 22 21 20
0 1 1 0 1 1 1 0 1 0 1 0
se va obtine valoarea 1721 in zecimal.
Adesea, reprezentarea numerelor in binar este greoaie, datorita numarului mare de
ranguri. Reprezentari cu lungime mai scurta se obtin in cazul utilizarii unor baze, care
sunt puteri ale lui 2. De exemplu: 8 si 16. In aceste situatii trecerea de la reprezentarea
binara la cea octala/hexazecimala si invers se realizeaza mecanic, impartind numarul
binar, de la dreapta la stanga, in triade/tetrade binare, carora li se pun in corespondenta
cifrele octale/hexazecimale corespunzatoare.
Baza 8 Baza 16 Triada binara Cifra octala Tetrada binara cifra hexa. Tetrada binara cifra hexa. 000 - 0 0000 - 0 1000 - 8 001 - 1 0001 - 1 1001 - 9 010 - 2 0010 - 2 1010 - a 011 - 3 0011 - 3 1011 - b 100 - 4 0100 - 4 1100 - c 101 - 5 0101 - 5 1101 - d 110 - 6 0110 - 6 1110 - e 111 - 7 0111 - 7 1111 - f Astfel, numarul binar: 011010111001(2) va avea urmatoarele reprezentari: octala: 3271(8) si hexazecimala: 6b9(16), care sunt de trei ori si, respectiv, de patru ori mai scurte. Numere cu semn, reprezentarea in complementul fata de 2.
Un numar cu semn, in reprezentarea pe n biti, complementara fata de 2, va avea
urmatoarea structura:
n biti
20 21 22 23 …. …. …. 2n-2 -2n-1 bit de semn Gama de reprezentare:[ -2n-1 , 2n-1-1] virgula zecimala (0 pentru ≥ 0, 1 pentru < 0)
Astfel, numerele zecimale 47(10) si –47(10), vor avea urmatoarele reprezentari binare, pe 8
biti, in complementul fata de 2:
47(10) 00101111(2)
-47(10) 11010001(2)
Reprezentarea numerelor intregi cu semn, in complementul fata de 2, permite utilizarea
aceleiasi proceduri mod 2n, atat pentru adunare, cat si pentru scadere. De asemenea,
procedura se utilizeaza si in cazul numerelor fara semn.
Deplasand virgula zecimala spre stanga, se pot reprezenta si numerele fractionare, ca in
Unitatea de comanda prelucreaza fluxul de instructiuni, care constituie programul. Ea furnizeaza
semnale de comanda pentru celelalte unitati, coordonind functionarea lor in conformitate cu
cerintele programului. UC poate examina, in cadrul executiei unei instructiuni date, informatia
de stare asociata fiecarei unitati, luand in continuare deciziile corespunzatoare pentru executia
corecta a programului.
Celula 0
Celula 1
Celula i
Celula 2(m -1)
Adresa i
Unitatea de comanda se poate implementa sub forma conventionala ( ca automat secvential cu
stari codificate sau cu stari complet decodificate ) sau sub forma microprogramata ( cu stocarea
semnalelor de comanda, in maniera statica, intr-o memorie rapida ).
Inunele cazuri UC este denumita si unitate deprelucrare a instructiunilor - unitatea I, iar unitatile
de executie si de memorie sunt notate cu E si respectiv cu M.
Astfel, un calculator C ( unitatea centrala ) poate fi reprezentat prin expresia:
C = I [ E - M ].
In cadrul notatiei structurale PMS ( in care sunt folosite drept componente primitive: P -
procesorul, M - memoria, S - comutatorul, D - operatorul asupra datelor, K - operatorul de
comanda, L - legatura, T - terminalul/traductorul ) un calculator C se descrie prin formula:
C = M - P - T
Prima notatie este utila in cazul sistemelor constituite din mai multe unitati de executie si
memorii asociate, controlate de o singura unitate de comanda( Sisteme cu un singur Flux de
Instructiuni si mai Multe Fluxuri de Date - SIMD - Single Instruction Stream Multiple Data
Stream ).
Sistemele obisnuite au un singur flux de instructiuni si un singur flux de date SISD - Single
Instruction Stream Single Data Stream ).
In rezumat se poate observa ca:
- ansamblul: UE + UC = P ( Procesor sau Unitate Centrala de Prelucrare - UCP sau CPU ),
- ansamblul: P + M = UC ( Unitate Centrala ),
- ansamblul: UC + SI + SE + Software = Sistem de calcul.
In continuare se vor prezenta cateva exemple de sisteme de calcul, folosind notatia PMS:
- sistem de calcul in care terminalele ( echipamentele de I/E ) transfera datele cu memoria prin
intermediul p[rocesorului:
M P S K1 T1
K2 T2
- sistem de calcul in care unele terminale ( echipamentele de I/E ) transfera date cu memoriadirect ( T1 ) sau prin intermediul procesorului ( T2, T3 ):
Instructiunile calculatorului reprezinta o colectie de informatii privind operatiile operatiile care
se pot efectua intr-un calculator dat.
Sub forma cea mai generala instructiunile se impart in doua categorii:
- instructiuni operationale si de transfer al informatiilor, inclusiv instructiunile de I/E;
- instructiuni cu caracter de decizie, care modifica secventa de executie a programului in mod
conditionat de o serie de indicatori sau in mod neconditionat.
Instructiunile sunt formate din mai multe cimpuri, dintre care se mentioneaza urmatoarele:
- codul de operatie/functia, care specifica operatia/actiunea elementara evocata de instructiune:
aritmetica, logica, transfer de date, transfer al comenzii etc.;
- adresa operandului/instructiunii, care specifica locatia de memorie cu care se face transferul
de date sau de la care se citeste o instructiune.
In cazul instructiunilor cu caracter operational, structura instructiunii poate contine, pe linga
campul codului de operatie, unul sau mai multe campuri pentru adrese.
Instructiunea cu o adresa:
M S1 P S2 K2 T2
K3 T3
T1 K1
COP ADRESA
Instructiunea cu doua adrese:
Instructiunea cu trei adrese:
In primul caz instructiunea specifica adresa unui singur operand, cel de-al doilea operand (in
cazul operatiilor ce implica doi opeanzi) fiind deja adus in UE. De regula, rezultatul ramane in
UE.
In cazul al doilea sunt prezente adresele celor doi operanzi (adresa operandului destinatie si
adresa operandului sursa - rezultatul operatiei se stocheazalaadresaoperandului destinatie).
Campul ADRESA3, in cel de-al treilea caz, poate specifica adresa la care se trimite rezultatul.
Instructiunile cu trei adrese sunt extrem de rar intilnite.
Campul de adresa din instructiune poate avea mai multe semnificatii:
- contine chiar operandul, in cazul operandului imediat;
- reprezinta adresa unui operand din memorie, in situatia adresarii directe;
- reprezinta adresa unei celule de memorie in care se afla adresa unui operand, in cazul adresarii
indirecte.
In unele situatii, la continutul cimpului de adresa din instructiune se aduna continuturile unor
registre speciale:
- registrele baza, la adresarea bazata;
- registrele index, la adresarea indexata.
Cu ajutorulacestor facilitati se pot adresa diverse date stocate in memorie, care sunt structurate
sub forma de masive, multidimensionale, in cazuri particulare: matrici si vectori.
Registrul baza contine adresa de start ( baza ) a structurii, adresa din instructiune reprezinta o
deplasare in structura data, iar registrul index asigura adunarea unei cantitati variabile
Last In Last Out ), organizata in memorie sau ( mai rar ) in asamblaje de registre aflate in
unitatea de executie ( microprocesorul Intel 8008 ). Accesul la informatia plasata in stiva se
realizeaza numai prin intermediul varfului stivei, folosind doua operatii de baza: plasarea unui
nou cuvant in stiva ( PUSH ) si extragerea cuvintului din varful stivei ( POP ). Adresa celulei
ocupate din varful stivei este stocata intr-un registru indicator de stiva ( Stack Pointer - SP ) al
carui continut este automat incrementat dupa o operatie POP si respectiv - decrementat, dupa o
operatie PUSH.
Instructiunile, care afecteaza executia programului, trebuie sa specifice in campul codului de
operatie conditiile testate, iar in campul de adresa deplasarea necesara calculului adresei efec-
tive. Si in acest caz adresa efectiva se poate obtine direct, indirect, bazat, idexat sau ca urmare a
unor operatii combinate.
Formatul instructiunii calculatorului FELIX 5000, contine in cadrul a 32 de biti mai multe
campuri:
0 1 3 4 7 8 9 15 16 31
unde:
- I poate lua valoarea 0 in cazul adresarii directe si 1, in cazul adresarii indirecte;
I B Q X F D
- B poate lua valori intre 0 si 7, specificand pentru valori mai mari decat 0, adresarea bazata cu
unul din registrele generale RG9 - RG15, iar pentru 0 adresarea nebazata;
- Q poate specifica, printre altele, ( registrul general, care contine unul din operanzi, o
constanta sau un vector logic sau adresa de origine si lungimea unui operand, in cazul
manipularii sirurilor ) si registrul general RG0 - RG15 folosit la indexare;
- X ia valoarea 0, in cazul adresarii neindexate si valorea 1, in cazul adresarii indexate;
- D specifica deplasarea, folosita pentru calculul adresei efective, prin adunarea cu registrul
baza. Daca registrul baza nu este specificat, D asigura adresarea pe o zona de 64 Ko. Pentru
explorarea intregului spatiu de memorie se aduna in mod curent continutul lui D cu continutul
registrului baza.
Modurile de adresare intilnite la FELIX 5000:
- Adresare directa: I = 0; X = 0; B <> 0.
Aef = ( B + 8 ) + D; unde ( B + 8 ) specifica registrul general utilizat ca baza.
- Adresarea indirecta: I = 1; X = 0; B <> 0.
Prima adresa efectiva, Aef, calculata va reprezenta adresa unui cuvant din memorie in care se
gaseste o informatie care este tratata, din punctul de vedere al calculului unei noi adrese efective,
ca o instructiune. Astfel, la adresa efectiva:
Aef1 =( B + 8 ) + D se va gasi un cuvant care va avea campurile: I1, B1, Q1, X1, F1, D1.
Daca I1 = 1, atunci se va calcula noua adresa efectiva:
Aef2 = ( B1 + 8 ) + D1, de la care se va citi un nou cuvant, procesul putand continua pe
maximum 5 niveluri de adresare indirecta, pana cand Ii = 0.
Adresarea indexata directa: I = 0; X = 1.
Aef = ( Q ) + ( B + 8 ) + D, unde ( Q ) specifica RG folosit ca registru index.
Adresarea indexata indirecta: I = 1; X = 1.
Aef1 = ( B + 8 ) + D,
Aef(k+1) = ( Bk + 8 ) + Dk
Aef = ( Q ) + Aef(k+1) = ( Q ) + ( Bk + 8 ) + Dk.
5. Conventii de proiectare.
Dupa cum s-a aratat intr-un capitol anterior, un sistem numeric poate fi partitionat in:
- sectiunea de date ( unitatea de executie ),
- sectiunea de comanda ( unitatea de comanda ).
Intrare: Date Iesire: Date/Rezultate
Semnale de Conditii
comanda
Intrare: Conditii Iesire: Comenzi
Unitatea de executie asigura prelucrarea datelor, reprezentate sub forma unor vectori binari,
prin transferul acestora intre registrele sursa si registrele destinatie.Transferul se efectueaza prin
intermediul unor retele/circuite logice combinationale.
Transferurile intre registre.
Intrucat prelucrarea datelor are la baza transferul intre registre, proiectarea unui sistem
numeric, in vederea executiei unui algoritm, consta intr-o planificare, ce va defini fiecare
transfer, prin specificarea ordinii/temporizarii ( timing ) in care aceste transferuri vor avea loc.
In continuare se prezinta mecanismele hardware de implementare a transferurilor intre registre
si notatiile corespunzatoare folosite. Registrele sunt notate cu majuscule avand, de regula, o
semnificatie mnemotehnica. Pe scurt, se vor folosi "mnemonice".
Transferul continutului unui registru sursa intr-un registru destinatie, fara a afecta continutul
sursei, se noteaza astfel:
AC RD
Daca registrul AC are patru biti, anularea/fortarea in unu a tuturor bistsbililor se pot nota dupacum urmeaza:
Registre si Logica aferenta(Sectiunea /Unitatea de Date/Executie)
Circuit secvential de comanda (Sectiunea/Unitatea de Comanda)
AC 0,0,0,0
AC 1,1,1,1
Implementarea registrelor se bazeaza pe bistabile JK si D, cu intrari de sincronizare de ceas, Ck,
si cu intrari de tip PRESET/CLR.
Transferurile sincrone au loc sub controlul semnalului de ceas pe fronturile anterior, pentru
bistabilele de tip D, sau pe frontul posterior, pentru bistabilele master-slave, de tip JK.
Transferurile implementate prin semnale de comanda aplicate pe intrarile PRESET/CLR au, in
general, caracter asincron. Mai jos se vor prezenta, pentru cazul unui bistabil D controlat pe
frontul anterior al semnalului de ceas, reprezentarea simbolica si diagrama temporala de operare.
Se observa ca datele la intrarea D sunt stabile inaintea aparitiei frontului crescator al semnalului
de ceas, cand are loc fortarea datei in bistabil. Iesirea va lua valoarea corespunzatoare intrarii cu
o anumita intarziere in raport cu frontul crescator al semnalului de ceas.
In cazul bistabilelor de tip master-slave fortarea datelor are loc pe frontul anterior al semnalului
de ceas, iar aparitia lor la iesire se constata pe frontul posterior al ceasului. Mai jos se prezinta
simbolul si diagrama temporala pentru operarea bistabilului JK.
In continuare se vor considera elemente bistabile de tip master-slave, atat pentru sectiunea de
date, cat si pentru sectiunea de comanda.
7476
2
4
1
16
15
14
PR
E
J
CLK
K
CLR
Q
Q
Data
Data
Ceas Data (J/K)
Ceas (CLK)Iesire
Iesire (Q)
7474
3
2
4
5
6CLK
CLR
D PR
E
Q
QCeas
Ceas (CLK)
Iesire (Q)
IesireData
Data (D)
Un circuit secvential de comanda furnizeaza, pentru sectiunea de date, diverse semnale de
comanda, sincrone cu ceasul sistemului, cu perioade egale cu durata unei perioade de ceas sau
cu multipli ai acesteia. Acestea sunt semnalele de comanda de tip nivel.
Semnalele de Comanda de tip Nivel (SCN) vor avea un sufix numeric i ce va specifica numarul
iesirii de comanda a automatului (SCNi). Semnalele SCNi pot fi strobate/esantionate cu
semnalul curent de ceas, pentru a forma Semnale de Comanda de tip Impuls(SCIi), cu durata
activa corespunzatoare semnalului curent de ceas.
Presupunem ca in etapa i (pasul i al implementarii/executiei) algoritmului trebuie sa se efectueze
transferul continutului registrului de doi biti RA[2], numerotati de la 0 la 1 ( RA0:1 ),in registrul
destinatie RB[2] ( RB0:1 ):
i. RB0:1 RA0:1
Considerand, in continuare, ca se vor folosi numai bistabile master-slave JK sau D (se face
presupunerea ca si bistabilele de tip D opereaza in maniera master-slave ), schemele hardware
pentru implementarea acestui transfer vor fi urmatoarele:
7408
1
23
Circuit Secvential (Unitate e Comanda)
Conditii
Ceas
SCN(i-1) SCNiSCIi
Ceas
Ceas
SCN(i-1)
SCNi
SCIiSCIi
SCI(i-1)
Diagrama de timp care arata modul in care noua informatie se transfera in RB este data mai jos:
74762
4
1
16
3
15
14
PR
E
J
CLK
K
CLR
Q
Q
7476
2
4
1
16
3
15
14
PR
E
J
CLK
K
CLR
Q
Q
7476
2
4
1
16
3
15
14
PR
E
J
CLK
K
CLR
Q
Q
7476
2
4
1
16
3
15
14
PR
E
J
CLK
K
CLR
Q
Q
7408
1
23
RA0
RA1 RB1
RB0
SCN1
Ceas
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7408
1
23
RA0
RA1 RB1
RB0
SCN1
Ceas
Ceas
SCNi
SCIi
Vechea Valoare din RB \\
Noua Valoare din RB
Adesea, intr-un registru trebuie sa se transfere, in momente diferite, vectori diferiti, de la diverse
surse.
Fie registrele sursa: RA, RB si registrul destinatie RC. Se cere implementarea, la momentele
1, 2 a urmatoarelor transferuri:
1. RC RA
2. RC RB
sub controlul semnalelor SCN1, SCN2.
Se cere implementarea hardware a transferurilor:
1. RA 1,1
2. RA 0,0
3. RA RB
Pentru a stabili expresia functiei logice combinationale, care reprezinta intrarea Di a bistabilului
destinatie RAi, se utilizeaza diagrama Karnaugh, cu variabila RBi introdusa in diagrama:
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7408
1
23
7408
1
23
7408
1
23
7408
1
23
U9A
7432
1
23
U10A
7432
1
23
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7408
1
23
7432
1
23
RA0
RA1
RB0
RB1
SCN1
SCN2
SCN2
SCN1
CLK
SCN1, SCN2 00 01 11 10 SCN3 Functia de excitatie Di este data de expresia:
0 Di = SCN1 ∪ RBi .SCN3
1
Aceasta va duce la urmatoarea implementare:
In cazul in care se urmareste implementarea operatiei elementare:
j. RAi RBi.RCi
se poate folosi schema de mai jos:
RBi
* *
*
* 1
* *
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7408
1
23
U41A
7408
1
23
RAi
RBi
RCi
SCNj
SCIjCeas
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
31
2
4
5
6CLK
CLR
D PR
E
Q
Q
7432
1
23
7432
1
23
7408
1
23
7408
1
23
U7A
7408
1
231
28
9
RA0
RA1
RB0
RB1
SCN1
SCN1
SCN2
SCN3
SCN3
CLK
Reprezentarea componentelor constructive logice combinationale si secventiale (SSI/MSI).
In realizarea practica a unui sistem numeric de complexitate mica/medie (in afara cazurilor cand
se folosesc circuite programabile FPGA/FPLD) sunt utilizate atat componente logice
combinationale, cat si secventiale standard, integrate pe scara simpla si medie. Pentru o tratare
unitara a celor doua tipuri de componente, mai jos, se prezinta o modalitate de tratare unitara a
acestora.
Componentele combinationale.
Sub forma cea mai generala o componenta combinationala (Circuit Logic Combinational – CLC)
se poate reprezenta sub forma unei “cutii negre” avand m intrari de date X[m], p intrari de
comanda C[p] si n iesiri Z[n]. Intrarile si iesirile se pot reprezenta sub forma unor vectori binari
X[m], C[p], Z[n], iar operarea componentei/circuitului poate fi descrisa cu ajutorul unei tabele.
m X[m] Operatia Descrierea Comanda
p Functia C(p-1) ………C0
C[p] F0 Z = F0(X) 0 …………0 0
n Z[n] F1 Z = F1(X) 0 …………0 1 ….. ………… ……………… F(2^p-1) Z = F(2^p-1)(X) 0 …………0 0
Se poate observa ca iesirea Z este prezenta atata timp cat este sunt prezente intrarile X si C, fapt
mentionat prin utilizarea semnului “=” intre termenii din dreapta si stanga, in coloana
“Descriere”. Iesirea Z este definita, ca functie de intrarea X, pentru cele 2p valori pe care le
poate lua vectorul de comanda C. In continuare sevor prezenta cateva cazuri particulare.
Circuitul AND (7408).
Modelul Componenta din Tabelul de descriere
biblioteca
A[4] B[4] Operatia Descrierea Comanda
4 4 AND Z = A ∩ B ------
4 Z[4] ¼ din pastila 7408
CLC
7408
7408
1
23
Circuitul de mai sus poate fi reprezentat in conditiile in care intrarile A[4] sunt controlate decatre acelasi semnal si devin, astfel, intrari de comanda:
A[1] 1 B[4] Operatia Descrierea Comanda
4 A[4] 4 A[1]
ZERO Z = 0000 0
TRUE Z = B 1
4 Z[4]
Circuitul sumator 7483.
Modelul Componenta din Tabelul de descriere
biblioteca
A[4] B[4] C0[1] Operatia Descrierea Comanda
4 4 1 ADD C4,S = ADD(A,B,C0) -----
C4[1] 1 4 S[4]
Circuitul XOR (7486).
Modelul Componenta din Tabelul de descriere
biblioteca
A[4] B[4] Operatia Descrierea Comanda
4 4 XOR Z = A ⊕ B ------
4 Z[4] ¼ din pastila 7486
Ca si in cazul circuitului AND (7408), pentru circuitul XOR (7486) intrarile A[4] pot fi
controlate de catre acelasi semnal de comanda, ceea ce va permite implementarea pe 4 biti a
functiilor TRUE si NEG, conform tabelului de mai jos.
7408
7483
7483A
138
101647
1113
14
15
2
6
9
A4A3A2A1B4B3B2B1C0
C4
SUM4
SUM3
SUM2
SUM1
7486
7486
1
23
A[1] 1 B[4] Operatia Descrierea Comanda
4 A[4] 4 A[1]
TRUE Z = B 0
NEG Z = B 1
4 Z[4]
Multiplexorul 74157
Modelul Componenta din Tabelul de descriere
biblioteca
A[4] B[4] Operatia Descrierea Comanda
S=A/B 4 4 G S=A/B SELA Z = A 0 0
G SELB Z = B 0 1
4 Z[4] STROB Z = 0000 1 *
Intrarile active pe nivel coborat sunt marcate cu un cerc
Circuite secventiale.
In cazul circuitelor secventiale intervine si semnalul de ceas, pe langa semnalul de comanda.
Pentru a marca faptul ca iesirea circuitului isi pastreaza valoarea si dupa disparitia datelor de la
intrare, atribuirea valorii expresiei logice din termenul din dreapta variablei din termenul din
stanga se specifica prin “ “. Intrarile de ceas sunt marcate printr-un varf de sageata.
C[p] m X[m] Operatia Descrierea Comanda
p Functia C(p-1) ………C0
CLK F0 Q F0(X) 0 ………..0 0
n Q[n] F1 Q F1(X) 0 ………..0 1 ….. ………… ……………… F(2^p-1) Q F(2^p-1)(X) 0 ………..0 0
7486
74157
74157
4
7
9
12
2356
11101413
151
1Y
2Y
3Y
4Y
1A1B2A2B3A3B4A4B
STROBEGSELECTAB
CLS
Circuit bistabil JK (7473).
Modelul Componenta din Tabelul de descriere
biblioteca
Operatia Descrierea Comanda
J J K K NOP Q Q 0 0
CLK CLEAR Q 0 0 1
4 Q[4] PRESET Q 1 1 0
COMPL Q Q 1 1
Contor binar 74163
Modelul Componenta din Tabelul de descriere
biblioteca
ENT A[4] Operatia Descrierea Comanda
CLR CLR LOAD ENP ENP NOP Q Q 1 1 0
LOAD INC Q ADD(Q,T) 1 1 1
CLK LOAD Q A 1 0 *
RC0 Q[4] CLEAR Q 0 0 * *
Registru de deplasare 74178
SER A[4] Operatia Descrierea Comanda
SH 1 4 SH LOAD
LOAD NOP Q Q 0 0
CLK LOAD Q A 0 1
4 Q[4] SHIFT Q Q2:0, SER 1 *
Bistab.JK
7473
14
1
3
12
13
J
CLK
KC
LR
Q
Q
74163
3456
21079
1413121115
CLR
ABCD
CLKENTENPLOAD
QAQBQCQD
RCO
74163
74178
In cazul in care intrarea SEReste folosita drept intrare de comanda se realizeaza functiile din
tabelul de mai jos:
Modelul Componenta din Tabelul de descriere
biblioteca
A[4] Operatia Descrierea Comanda
SER SER SH LOAD SH NOP Q Q * 0 0
LOAD LOAD Q A * 0 1
CLK SHIFT0 Q Q2:0, 0 0 1 0
Q[4] SHIFT1 Q Q2:0, 1 1 1 0
Registru cu doua intrari multiplexate 74298
Modelul Componenta din Tabelul de descriere
biblioteca
A[4] B[4] Operatia Descrierea Comanda
WS 4 4 WS
CKL LOADA Q A 0
LOADB Q B 1
4 Q[4]
74178
74178
39
11
21
1312
4
6
8
10
5
SERIALLOADSHIFT
ABCD
QA
QB
QC
QD
CLK
74298
74298
10
32419576
11
15
14
13
12
WS
A1A2B1B2C1C2D1D2CLK
QA
QB
QC
QD
Scheme combinate.
Schema unui sumator/scazator
Schema se bazeaza pe utilizarea a doua circuite: XOR (7486) si ADD (7483)
Operatia Descrierea Comanda
D
ADD Z = C4,ADD(A,B) 0
SUB Z = C4,SUB(A,B) 1
In functie de valoarea 0/1 a semnalului de comanda D, schema efectueaza adunarea/scaderea.
Schema se poate extinde usor pentru operatiile pe 8 biti. In acest mod se pot realiza structuri
complexe, noi blocuri constructive, a caror operare poate fi descrisa concis cu ajutorul tabelelor.
Conexiuni prin magistrale.
In numeroase cazuri implementarea in hardware a unui algoritm de prelucrare a datelor impune,
la diverse etape ale executiei sale, conectarea unor registre-sursa la anumite registre-destinatie.
Conexiunile directe ofera posibilitatea unui inalt grad de paralelism al transferurilor de date. In
schimb sunt neeconomice sub aspectul consumului de circuite logice.
Pentru exemplificare se vor considera, pe de-o parte, doua registre-sursa: RA si RB, iar pe de
alta parte doua registre-destinatie: RC si RD, intre care se realizeaza urmatoarele transferuri:
1. RC RA
2. RD RB
3. RC RB
4. RD RA
5. RC RA; RD RB
6. RC RD; RC RA
4 4
44
4
1
1
DA[4] B[4]
7486
7483C4
Z[4]
C0 1
Aceste transferuri se vor realiza sub controlul semnalelor de comanda de tip nivel: SCN1,
SCN2, SCN3, SCN4, SCN5, SCN6 si al semnalelor de comanda de tip impuls: SCI1, SCI2,
SCI3, SCI4, SCI5, SCI6.
O ilustrare a implementarii transferurilor de mai sus este prezentata in continuare, considerand,
pentru simplificare, registre de cate un bit.
Considerand ca sunt s registre-sursa, avand n biti, si d registre-destinatie, de cate n biti se poate
stabili o functie de cost, pe baza numarului de porti SI, SAU si a numarului de biti al fiecarui
registru. Astfel,
- numarul de porti SI = s.d.n,
- numarul de porti SAU = d.n
Rezulta o functie de cost ≈ n.d.(s + 1)
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7432
1
23
7432
1
23
7408
1
23
7408
1
23
7408
1
23
7432
1
23
7432
1
23
7408
1
23
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7432
1
23
7432
1
23
7408
1
23
7408
1
23
23
45
1
23
45
1
CLK
CLK
SCN1
SCN1
SCN2
SCN2
SCN4
SCN5
SCN5
SCN5
SCN6
SCN6
SCN6
RA
RB
RC
RD
SCN3
SCN3
SCN4
SCN6
SCN5
Pentru a reduce costul conexiunilor intre surse si destinatii se utilizeaza magistralele. Acestea
reprezinta, de regula, trasee metalice/fire pe circuite imprimate sau la nivelul structurilor
integrate pe siliciu. Modelul conexiunilor, prin intermediul magistralei, este ilustrat mai jos.
Se poate observa ca portile SI, care conecteaza iesirile registrelor RA si RB, la magistrala sunt
de tipul “colector deschis” OC. Conexiunile Registrelor RA si RB, la magistrala MAG/BUS se
realizeaza sub controlul unor semnale de comanda de tip nivel, specificate in desen prin
expresiile: MAG/BUS = RA si MAG/BUS = RB. Fortarea continutului magistralei MAG/BUS
in registrele RC si RD are loc sub controlul semnalelor de comanda de tip impuls, specificate in
desen prin expresiile: RC MAG/BUS si RD MAG/BUS.
Magistrala joaca rolul unui circuit SAU, conform figurii de mai jos.
Transferurile nu se mai pot efectua in paralel, de la surse la destinatii. Ele vor avea un caracter
secvential. Astfel, transferul:
1. RC RA, se va efectua prin operatiile:
1. MAG/BUS = RA; RC MAG/BUS,
unde simbolul “=” reprezinta o conexiune, pe durata unui semnal de comanda de tip nivel.
1
23
1
23
1
23
1
23
R
RA
RB
RC
RD
CLK
CLK
D
D
Q
Q
CLK
CLK
MAG/BUS
MAG/BUS = RA
MAG/BUS = RB
RC <- MAG/BUS
RD <- MAG/BUS
+5V
OC
OC
Functia de cost va fi data de numarul portilor SI, al portilor SAU, cat si de numarul de biti ai
vectorilor transferati:
- numarul de porti SI = s.n,
- numarul de porti SAU = n
Rezulta o functie de cost ≈ n.(s + 1)
De cele mai multe ori conexiunile registrelor-sursa la magistrala se realizeaza prin circuite “Tri-
state”, care inlocuiesc circuitele de tip “OC”.
1
23
1
23
1
23
1
23
7474
3
12
45
6CLK
CLR
D PR
EQ
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7474
3
1
2
4
5
6CLK
CLR
D PR
E
Q
Q
7432
1
23
RA
Q
CLK
CLKMAG/BUS
MAG/BUS = RA
MAG/BUS = RB
RC <- MAG/BUS
RD <- MAG/BUS
6. INTRODUCERE IN LIMBAJUL DE PROGRAMARE HARDWARE AHPL.
( AHPL - A Hardware Programming Language ).
In functie de scopul urmarit, un calculator numeric poate fi descris folosind diverse mijloace.
Astfel, la nivelul etapei de proiectare, se folosesc adesea diagrame bloc, organigrame, limbaje
specializate, tabele de cablaj etc.
In cadrul acestei lucrari calculatorul numeric este descris in termenii unor secvente de
transferuri ale datelor intre diferitele primitive functionale ale calculatorului, in vederea imple-
mentarii unui algoritm dat. Se considera ca, dupa terminarea acestei etape de proiectare,
elaborarea schemelor logice si a schemelor de cablaj reprezinta operatii mecanice, de rutina, care
se pot automatiza cu usurinta.
Sistemele numerice de calcul prelucreaza in principal date structurate sub forma de vectori
binari, stocati in registre sau memorii organizate sub forma de matrici, cu acces la linii.
In acest context apare evidenta utilitatea unui limbaj prevazut cu facilitati pentru manipularea
vectorilor si matricilor.
Un asemenea limbaj a fost propus de K.E. Iverson in anul 1960 sub numele APL
(A Programming Language ). Limbajul APL cunoaste o larga raspindire, ca limbaj
conversational in sistemele cu multiacces IBM 360/370 si chiar in cadrul calculatoarelor
personale IBM-PC compatibile. Trebuie mentionata, de asemenea, si implementarea realizata in
tara noastra pe sistemele FELIX C-266/512.
APL este un limbaj foarte puternic. El permite descrierea concisa a algoritmilor si verificarea lor
prin executie, pe calculator. Pentru scopurile urmarite de proiectare, limbajul APL trebuie
completat cu instructiuni si alte constructii, care permit o implementare directa in hardware.
Un asemenea limbaj AHPL ( A Hardware Programming Language ) a fost propus de catre
F. Hill si G. Peterson in 1974, fiind apoi perfectionat pe parcurs ( 1978, 1983 ). AHPL, ca limbaj
de descriere a transferurilor intre registre, asigura o corespondenta directa intre notatia folosita
si implementarea ei in hardware.
AHPL foloseste, pe linga constructiile proprii, si un subset de constructii din APL, care isi
gasesc un corespondent in hardware. Frecvent, in scopul facilitarii comunicarii si documenarii, in
programele AHPL se mai utilizeaza unele notatii APL, care descriu algoritmul de operare al unui
calculator numeric.
In momentul traducerii in hardware a descrierii AHPL a modulului numeric dat, aceste notatii
nu sunt luate in consideratie.
Autorii limbajului AHPL au elaborat si un compliator pentru hardware, care are ca intrare
descrierea AHPL a sistemului numeric, iar ca iesire - schema sistemului, la nivel de diagrame.
Indiferent de implementarea unui algoritm, este o buna practica aceea de a descrie mai intai
algoritmul in APL si de a-l executa pe un calculator, prevazut cu un compliator de APL.
In continuare algoritmul descris in APL poate fi implementat in hardware, firmware
(microprogram) sau poate fi executat direct, fiind implementat in software.
Conventii privind operanzii folositi in AHPL.
Operanzii manipulati in limbajul AHPL reprezinta marimi constante sau variabile.
Constantele sunt date numerice sau alfanumerice. Ele se reprezinta prin numere standard,
respectiv - prin litere standard sau numere cuprinse intre semnele apostrof.
Variabilele pot fi scalari, vectori, matrici.
Este important de facut distinctie intre variabile si valori.In limbajele conventionale de
programare o variabila reprezinta un nume prin care se face o referire la un operand; o valoare
reprezinta marimea pe care o ia efectiv operandul. In AHPL, prin variabila se intelege numele
unui registru al carui continut este manipulat printr-o instructiune a programului, iar prin valoare
- data care se plaseaza in registru.
Tipurile de operanzi in AHPL se vor deosebi prin conventii tipografice: litere mici pentru
scalari, majuscule pentru vectori si majuscule ingrosate pentru matrici.
Transferul unei constante ( binare - in cazul de fata ) intr-un registru AC se noteaza astfel:
AC 0,1,1,1,1,0,1,0
Transferul continutului unui registru RD, intr-un registru AC, fara a se modifica continutul lui
RD se reprezinta prin instructiunea:
AC ← RD
Un vector constituie o colectie de operanzi avand o structura unidimensionala. Numarul
componentelor vectorului reprezinta dimensiunea vectorului. Pentru a specifica dimensiunea
unui vector oarecare (AC) se va folosi notatia ρAC, unde ρ reprezinta operatorul “dimensiune”.
Daca AC are 16 biti (ranguri binare), atunci ρAC = 16. In aceasta lucrare, in cazul in care nu se
vor face mentiuni speciale, pozitiile bitilor individuali vor fi specificate prin indici cu originea 0,
plasata in extrema stanga: AC0 ,AC1 ,......,ACρAC-1
Trebuie observat ca aceasta notatie este destul de greoaie in textele dactilografiate, ceea ce
face ca, in multe cazuri, indicii sa fie plasati pe aceeasi linie cu numele registrului, de exemplu:
ACi - bitul de rang i din registrul AC. Pentru a specifica un grup de biti adiacenti, dintr-un
registru se foloseste notatia: A i:j sau A(i:j), unde sunt inclusi si bitii i si j.
Operanzii de tip matricial se reprezinta sub forma unui tablou bidimensional, constituit din
elemente cu indici inferiori si superiori. Indicii inferiori specifica coloanele, iar cei superiori
liniile. Se considera matricea M avind ρ1M coloane si ρ2M linii, unde ρ1 si ρ2 reprezinta
notatiile pentru operatorii care aplicati lui M furnizeaza numarul de coloane si numarul de linii
ale tabloului M.
M00 M
01 …….....….......M0
ρ1M-1
...................……..…..……....
.......….……. Mij.......……….
Mρ2M-10 M
ρ2M-11........……. Mρ2M-1
ρ1M-1
Linia i a matricii M se specifica prin notatia Mi sau M<i>, iar coloana j - prin notatia Mj sau
M[j]. Liniile succesive i...k, ale matricii M se noteaza prin Mi:k sau M<i:k>, iar coloanele
succesive j...l - prin Mj:l sau M[j:l].
Conventii privind operatorii APL si AHPL.
Operatorii folositi sunt operatorii primitivi si operatorii de tip mixt.
Operatorii primitivi manipuleaza, de regula, operanzi de tip scalar, desi ei pot fi extinsi atat la
vectori, cat si matrici. Acesti opeatori se pot referi la o singura variabila (operatori unari) sau la
doua variabile (operatori binari). In cele ce urmeaza se prezinta operatorii primitivi aritmetici,
logici si relationali. In scopul facilitarii comunicarii, in textele ce reprezinta programe AHPL pot
fi intalniti toti acesti operatori. Implementari directe in hardware au insa numai operatorii logici.
Operatorii aritmetici si relationali sunt specifici limbajului APL.
In versiunile existente de APL, incercarea de a folosi alte tipuri de variabile, cu exceptia celor
logice, conduce la eroare de domeniu.
In raport cu operatorii aritmetici si relationali nu exista limitari privind folosirea variabilelor.
In exemplele urmatoare se considera:
x = 1, y = -3, W = ( 4,-5,0,2 ) si U = ( 1,2,1,-1 ).
Instructiune: Rezultat:
z ← x + y z = -2
z ← x z = 0
Z ← W + U Z = ( 5,-3, 1,1 )
Z ← W * U Z = ( 4,-10,0,-2 )
Z ← W % U Z = ( 4,-2.5,0,-2 )
z ← ( x < y ) z = 0
z ← ( x > y ) z = 1
Operatorii de tip mixt sunt extrem de puternici, deoarece permit manipularea unor combinatii
de scalari, vectori si matrici. In cele ce urmeaza se vor prezenta operatorii de tip mixt, cu
specificarea limbajelor in care se utilizeaza.
Notatie Denumire Semnificatie Observatii
X,Y Inlantuire/ X0 ,...,XρX-1 ,Y0 ,....,YρY-1 APL si AHPL Concatenare M!N Inlantuire O matrice cu ρ2M+ρ2N linii AHPL linii. cu liniile lui M peste liniile lui N.
k↑X Extragere Se extrag primele k elemente APL din vextorul X.
k↓X Eliminare Se elimina primele k elemente APL din vectorul X. ⊥X Decodificare Echivalentul zecimal al vectorului APL binar X nΤp Codificare Un vector cu n elemente binare, APL si AHPL binara. obtinut prin repre zentarea numarului zecimal p in baza doi.
@/X Reducere X0 @X1 @X2 @............@XρX-1 APL si AHPL
X ← @/M Reducere X i ← @/Mi AHPL si APL linie
X ← @//M Reducere Xj ← @/Mj AHPL si APL coloana
X ← U/Y Comprimare Vectorul X este obtinut APL si AHPL din vectorul Y prin su- in descrierea primarea rangurilor Xi unitatilor logice pentu care Ui =0 combinationale U este vector binar.
A ← U/M Comprimare Ai ← U/Mi Idem linii.
A ← U//M Comprimare Aj← U/Mj Idem coloane coloane Nota1: @ este un operator logic sau aritmetic. Nota2: A si M sunt matrici, iar U este un vector binar.
In exemplele care urmeaza se ilustreaza utilizarea operatorilor de tip mixt.
Inlantuirea.
Fie: X = ( 1,2,3,4 ) si Y = ( 5,6,7 ),
daca Z ← X,Y atunci, rezulta: Z = ( 1,2,3,4,5,6,7 )
Inlantuirea permite descrierea operatiilor de deplasare si rotire ale vectorilor si matricilor.
In cele ce urmeaza se vor prezenta notatiile AHPL pentru deplasari si rotiri de vectori.
Fie vectorul A = ( A0 ,A1 ,A2 ,......,AρA-1)
Deplasare logica - dreapta (cu inserta unui zero in bitul 0).
A ← 0, A0 ,A1 ,A2 ,......,AρA-2
Deplasare logica - stanga (cu insertia unui zero in bitul de rang ρA-1).
A ← A1 ,A2 ,......,AρA-1,0
Deplasare aritmetica dreapta (cu extinderea bitului de rang 0 in bitul de rang 1).
A ← A0, A0 ,A1 ,A2 ,......,AρA-2
Deplasarea aritmetica stanga este identica cu deplasarea logica stanga.
Rotire -dreapta.
A ← AρA-1, A0 ,A1 ,A2 ,......,AρA-2
Rotire - stanga.
A ← A1 ,A2 ,......,AρA-1, A0
In operatiile de deplasare si rotire, inaintea bitului de rang 0 si dupa bitul de rang ρA-1, se pot
plasa biti individuali reprezentand indicatori de conditii ( de exemplu, din unitatea de executie,
bitul de transport). Cele mai multe microprocesoare dispun de instructiuni care implementeaza
asemenea operatii de deplasare. Ele sunt folosite pentru instructiunile de transfer conditionat al
comenzii.
In continuare sint ilustrate operatiile de rotire/deplasare circulara a liniilor unei matrici.
Fie: 1 0 0 M = 1 1 0 0 1 1 Deplasare circulara in sus.
1 1 0 Daca N ← M1:2 ! M0, atunci rezulta: N = 0 1 1 1 0 0
Deplasre circulara in jos.
0 1 1 Daca N ← M2 ! M0:1 , atunci rezulta: N = 1 0 0 1 1 0 Extragerea.
Fie: X = (1,2,3,4,5,6)
daca Y ← 4↑X, atunci rezulta: Y = ( 1,2,3,4 ) in APL
Eliminarea.
daca, Y ← 4↓X atunci rezulta: Y = ( 4,5,6 ) in APL.
In AHPL notatiile echivalente vor fi urmatoarele:
Y ← X0:3 ( extragere ) si respectiv Y← X4:6 ( eliminare )
Decodificare binara.
Fie: X = ( 1,1,0,1 ) si Y = ( 1,0,0,0,1 )
daca: x ← ⊥ X si y ← ⊥Y, atunci: x = 13 si y = 17
Codificarea binara.
Fie: x = 13 si y = 17
daca: X ← 4 Τ x si Y ← 5 Τ y, atunci: X = ( 1,1,0,1 ) si Y = ( 1,0,0,0,1 ).
Reducere.
Fie @ un operator binar care se aplica unui vector binar X,rezultatul operatiei va fi de forma:
x ← ( ....(( X0@X1 )@X2 )@.....XρX-1 )
Expresia:
x ← +/X este echivalenta cu :
ρX-1
x ← Σ Xi
i=0
Daca X este un vector logic ( cu componente binare ), atunci urmatoarele operatii vor furniza
informatii privind:
x ← +/X, numarul de unitati din vectorul X;
x ← ∪ /X, prezenta a cel putin unei unitati diferita de zero, daca x <> 0;
x ← ∩ X, prezenta tuturor componentelor egale cu unu, daca x = 1.
In absenta parantezelor, in expresiile din VLCS, operatorii logici si de selectie vor avea
urmatoarele prioritati:
1. Negatia si Sincronizarea,
2. Toti operatorii de selectie, cu exceptia inlantuirii,
3. ∩
4. ∪ sau ⊕ ,
5. Inlantuirea.
MD - matrice de memorie sau asamblaj de registre de memorare.
MLCS - matrice logica combinationala sursa, constituita din asamblaje de vectori logici
combinationali.
F - vector de selectie, ale carui componente sint expresii logice combinationale evaluate, care se
exclud mutual:
F = ( f1 ( x1 ,...,xn ),.....,fm (x1 ,...,xn),
unde: ( fi ∩ f j =0 ) si ( ∪ /F ) = 1; i,j = 1,...,n; i = j; xI ∈ 0,1 .
Expresiile: MLCS*F si MD*F sint echivalente cu expresiile:
F/MLCS si F/MD ( selectie pe linii ).
< conexiune > := < BUS = VLCS >|< BUS = MLCS*F >|< Z = VLCS >|< Z = MLCS*F >
Exemple:
D ← Am:n , Bp:q
D ← A + B,C
Fie matricea logica combinationala sursa: ( A ! B ! C ), unde A, B, C sunt vectori logici
combinationali, si vectorul logic:
F = ( d, e, f ).
In aceste conditii se pot scrie urmatoarele instructiuni de atribuire:
1. D ← ( A ! B ! C ) * ( d, e, f )
echivalenta cu:
D ← d ∩ A U e ∩ B U f ∩ C
2. ( A ! B ! C ) * ( d, e, f ) ← D
echivalenta cu:
d ∩ A ∪ e ∩ B ∪ f ∩ C ← D
3. BUS = ( A ! B ! C ) * ( d, e, f )
reprezenand o conexiune conditionala la magistrala BUS a unuia dintre vectorii A, B, sau C.
In instructiunea de tip ramificatie, F are semnificatia prezentata mai sus, iar E constituie un
vector ale carui componente (Ei) sunt numere/etichete de pasi AHPL, din secventa data, la care
poate avea loc ramificarea ( transferul comenzii ).
De exemplu, ramificarea:
→ ( x, x )/( Ei, Ej)
asigura transferul comenzii la linia Ei , daca x = 1 sau la linia Ej , daca x = 0.
DEAD END marcheaza sfirsitul comenzii, terminarea operarii in sensul ca instructiunea de
comanda nu mai genereaza trecerea la pasul urmator din secventa, acesta lipsind.
Dupa END SEQ ( sfirsitul secventei de pasi AHPL ), in descrierea modulului sint plasate
instructiunile individuale de atribuire nesincronizate, conexiunile permanente, operatiile de
comanda asincrone, cum ar fi operatia RESET(1), care forteaza reluarea secventei numerotate
de pasi AHPL de la linia 1.
Descrierea AHPL a unei functii.
UNIT: < nume de functie >( <parametri> )
< declaratii >
< secventa de instructiuni de conexiune, contorizare,
transfer al comenzii >
END
< parametri > := < lista de intrari >
< lista de intrari >:= < VLC >|< MLC >
< declaratii >: < INPUTS >
< OUTPUTS >
< INPUTS >: < lista de intrari separate prin ; >
< OUTPUTS >:< vector logic combinational >
< secventa de instructiuni > := < conexiune >| < atribuire de valoare unui indice >|< transfer
conditionat al comenzii >
< atribuire de valoare unui indice > := < nume indice ⇐ valoare binara | zecimala >
< transfer conditionat al comenzii >:= < ⇒ (F)/(S) >
Efectul executiei unui program AHPL, ce descrie o unitate, reprezinta compilarea - generarea
schemei hardware pentru acea unitate combinationala. Numai instructiunile de conexiune
genereaza efectiv hardware. Instructiunile care manipuleaza indici si cele de transfer asigura
efectuarea unor operatii de ciclare pentru generarea unor copii multiple ale aceleiasi scheme.
Folosirea functiilor, in cadrul unor module, presupune descrierea lor ca unitati, o singura data,
in vederea compilarii/generarii schemei logice combinationale specifice. Unitatea poate fi apelata
ca functie, in cadrul instructiunilor de atribuire ( transfer | conexiune ), din secventa de pasi
AHPL, a unui modul.
In rezumat structura bloc a unui sistem numeric consta din module si functii:
Modul Nume modul Declaratii Pas secv. Procedura Modul Secventa de comanda Pas secv. Sfarsit secventa Pas secv. Transferuri si conexiuni Modul Sfarsit
Sistem Numeric
Unitate Nume unitate Declaratii Pas secv.* )
Functie Unitate Secventa de conexiuni Pas secv. Sfarsit Pas secv
Unitate
*) Specifica o conexiune
Sintaxa unui pas de comanda din secventa:
NUL Instructiune de conectare Actiune Transfer sincron Transferuri si conexiuni Pas din secventa de comanda → (F)/(E) → (Ej) Ramificatie NUL Fara continuare (DEAD END)
Transferul sincron poate avea unul din urmataoarele formate:
VD ← VLCS Transfer sincron VD ← MLCS * F MD * F ← VLCS
Instructiunea de conectare poate avea unul din urmatoarele formate:
BUS = VLCS Instructiune de conectare BUS = MLCS*F z = VLCS z = MLCS * F
Exemple de descrieri AHPL ale unor UNITATI (Circuite Logice Combinationale) si aleunor module.
1. Sumatorul Complet (FULLADD).
Sumatorul Complet reprezinta un circuit logic combinational cu trei intrari: x, y, cin si doua
iesiri: sum, cout. Intrarile x si y sunt intrari de date de cate un bit (corespunzatoare unui rang
oarecare i, in cazul adunarii a doi vectori binari X si Y), iar cin este intrarea de transport (din
rangul inferior). Iesire sum corespunde sumei, pentru rangul curent, iar cout constituie
transportul in rangul urmator. x y
cout cin
sum
FULLADD
Ecuatiile logice pentru sum si cout sunt urmatoarele:
sum = ( x ∩ y ∩ cin ) ∪ ( x ∩ y ∩ cin ) ∪ ( x ∩ y ∩ cin ) ∪ ( x ∩ y ∩ cin )
cout = ( x ∩ y ) ∪ ( x ∩ cin ) ∪ ( y ∩ cin )
Aceste ecuatii se pot implementa cu ajutorul portilor SI, SAU, NU.
Folosind si porti SAU-EXCLUSIV, expresiile de mai sus devin mai simple:
sum = x ⊕ y ⊕ cin
cout = ((x ⊕ y) ∩ cin ) ∪ ( x ∩ y )
Cu ajutorul ecuatiilor de mai sus se poate prezenta o secventa AHPL, de descriere a Sumatorului
Complet, sub forma unei Unitati:
UNIT: FULLADD(x ; y ; cin)
INPUTS: x ; y ; cin
OUTPUTS: FULLADD[2]
1. a = x ⊕ y
2. b = x ∩ y
3. sum = a ⊕ cin
4. c = a ∩ cin
5. cout = b ∪ c
6. FULLADD0 = cout
7. FULLADD1 = sum
END
Primele cinci instructiuni reprezinta pasi de conectare, iar ultimele doua instructiuni constituie
iesirile.
Se poate observa ca secventa care descrie un Sumator Complet are un caracter “spatial”, in
sensul ca pasii reprezentati corespund iesirilor/intrarilor portilor logice, care intra in componenta
unei retele spatiale. Pasii 1-7 nu sunt legati de vreun mecanism de temporizare. Elementul timp
intervine, in acest context, numai in legatura cu intarzierea in propagarea semnalelor prin porti..
Intrarile x, y si cin trebuie sa fie stabile pana la obtinerea rezultatelor sum si cout.
Pe baza Unitatii FULLADD se poate genera un sumator cu transport succesiv pentru numere
binare de cate 16 biti.
Sumator, ADD, cu transport succesiv, pentru numere binare de cate 16 biti.
Pentru realizarea unui asemenea sumator, se vor utiliza, in caltate de blocuri constructive,
componentele Sumatorului Complet: FULLADD0 si FULLADD1. Acestea vor fi chemate
succesiv, in cadrul unor cicluri, pentru fiecare bit al sumatorului ADD. In cadrul programului
AHPL, pentru controlul ciclurilor se va introduce un indice i, care va fi initializat, decrementat si
testat. Operatiile corespunzatoare manipularii indicelui i vor fi marcate cu sageti cu corp dublu,
care vor fi tratate intr-o maniera specifica de catre compilatorul, care va genera schema lui ADD.
UNIT: ADD( X; Y )
INPUTS X[16]; Y[16]
OUTPUTS: ADD[17]
1. C16 = 0
2. i ⇐ 15
3. Ci = FULLADD0 ( Xi; Yi; Ci+1)
4. Si = FULLADD1 ( Xi; Yi; Ci+1)
5. i ⇐ i – 1
6. ⇒ ( i ≥ 0)/(3)
7. ADD = C0, S0:17
END
Compilarea manuala a acestui program AHPL, va genera elementele schemei sumatorului ADD,
in maniera prezentata mai jos la nivelul primelor doua si al ultimei parcurgeri a programului.
X15 Y15
1. C15 C16
S15
2. X14 Y14 X15 Y15
C14 C15 C16
S14 S15
3. X0 Y0 X14 Y14 X15 Y15
C0 C14 C15 C16
C0 S0 S14 S15
ADD0 ADD1 ADD14 ADD15
2. Decodificatorul DCD.
Decodificatorul DCD(A), unde A este un vector binar de n biti, este un circuit combinational cu
n intrari si 2n iesiri. Pentru oricare vector binar, aplicat la intrare, numai o singura iesirea
decodificatorului va fi activa.
A0 DCD0
A1 DCD1
An DCD2n -1
Descrierea DCD(A) in AHPL este urmatoarea:
UNIT: DCD(A) INPUTS: A[n] OUTPUTS: DCD( 2n )
1. i ⇐ 02. DCDi = ∩ /(( n Τ i ) / A), ( n Τ i ) / A)3. i ⇐ i + 14. i ⇒ ( i < 2n )/(2)
END
FADD
FADDFADD
FADDFADDFADD
DCD
Primul pas initializeaza indexul i, pentru a stabili iesirea decodificatorului, care urmeaza sa fie
evaluata. Operatiile inceteaza dupa evaluarea tuturor iesirilor decodificatorului DCD.
Pentru a intelege cum se evalueaza iesirile decodificatorului, sa considera cazul particular n = 4
si i = 5.
DCD5 = ∩ /(( 4 Τ 5 ) / A), ( 4 Τ 5 ) / A )
= ∩ /((0,1,0,1) / A), (0,1,0,1) / A)
= ∩ /(( A1, A3 ), (A0, A2)) = A0 ,A1, A2, A3
In cazul in care A = A0 ,A1, A2, A3 = (0, 1, 0, 1) se obtine DCD5 =1. Celelalte iesiri DCDj, pentru
care j ∈ 0, 1, 2,….., 2 n-1 ∩ j ≠ 5, vor lua valoarea 0.
3. Circuitul, BUSFN, de citire a unui cuvant dintr-o memorie M.
Se considera o memorie M, alcatuita din mai multe registre M0, M1, ……, M2↑m –1. Memoria
primeste informatiile de adresa de la un registru RA si efectueaza operatiile de citire/scriere prin
intermediul unui registru RD.
Scrie Citeste
Adresa
Data
Memoria M dispune de o unitate de comanda, care asigura controlul operatiilor de scriere si
citire, pe baza semnalelor primite din exterior.
Operatiile de citire si scriere se pot descrie, la nivelul transferurilor intre registre, dupa cum
urmeaza:
• Citire
i. RA ← Adresa(i +1). RD ← BUSFN( M; DCD(RA)); Citeste = 1
• Scriere
j. RA ← Adresa; RD ← Data (j +1). M* DCD(RA) ← RD; Scrie = 1
M0
M1
…..
M2↑↑m -1
Comnada( DCD),(BUSFN)
RD
RA
BUSFN(M; DCD(RA)) reprezinta o functie logica combinationala, care are ca argumente o
matrice M, cu ρ2M linii si ρ1M coloane, pe de-o parte si un vector DCD(RA), cu 2m
componente, pe de alta parte, unde ρ2M = 2m.
Daca in locul vectorului DCD(RA) se utilizeaza un vector R[r], iar ρ1M este egal cu p, se poate
obtine urmatoarea descriere AHPL:
UNIT: BUSFN( M ; R )
INPUTS: M[ r : p ]
OUTPUTS: BUSFN[ p ]
1. N0 = M0 ∩ R0
2. i ⇐ 1
3. Ni = ( Mi ∩ Ri ) ∪ Ni-1
4. i ⇐ i + 1
5. i ⇒ ( i < r )/(3)
6. BUSFN = Nr-1
END
O schita a implementarii unitatii BUSFN, in contextul operatiei de citirere, este data mai jos.
M0 M1 Mp2M-1
DCDp2M-1DCD0 DCD1
SCNi
BUSFN(M;DCD(RA))
citeste
MAG/BUS
N N0 1
4. Implementarea secventei start/reset (PRESET).
Implementarea primilor pasi dintr-o secventa AHPL, din cadrul descrierii unui modul a carui
operare este lansata de semnalul start, este prezentata mai jos. Primul bistabil (1), cat si celelalte
bistabile (2), (3), (4) ale schemei de comanda au fost fortate, printr-un semnal reset/PRE/CLR
asincron, in starile Q1 = 1 si, respectiv, Q2 =0, Q3 =0, Q4 =0. Comanda reset, in cazul de fata
PRESET, are un caracter asincron si apare, in secventa AHPL, intre specificatiileENDSEQ si
END, sub forma: PRESET(1), unde (1) constituie linia AHPL, la care se efectueaza saltul (un
GO TO 1 asincron).
D Q
CLRC
D Q
CLRC
D Q
CLRC
PRED Q
C
Ceas
PRESET
SYN(start)
1 2 3 4
SCN2 SCN3 SCN4
SCN3
SCN2
SCN1
Ceas
start
SYN(start)
In continuare, operarea automatului cu stari complet decodificate, la nivelul primului bistabil,
este prezentata sub forma diagramei de tranzitii:
SYN(start) PRESET(1)
SYN(start)
Dupa cum se constata, automatul va parasi starea (1) numai in conditiile in care semnalul
SYN(start) va trece pe nivel ridicat. In caz contrar, starea (1) se va extinde pe un numar indefinit
de perioade de ceas.
5. Sincronizarea semnalului start.
In cele prezentate mai sus, s-a vazut necesitatea existentei unui semnal de start, pentru activarea
automatului de comanda al unui modul. De cele mai multe ori semnalul start este dat manual,
ceea ce face ca el sa fie asincron cu ceasul sistemului si sa aibe o durata relativ mare.
Sincronizarea semnalului start, specificata prin operatorul SYN(start), se poate realiza cu
ajutorul diferitelor scheme. Mai jos se prezinta una dintre acestea, impreuna cu diagramele de
semnale.
1
2
PRED Q
C
PRED Q
C
start
SYN(start)
ceas
SNP(SYN(start))
ceas
start
SYN(start)
SNP(SYN(start))
SYNI(start)
SYNI(start)
Se poate usor observa ca, cel de-al doilea bistabilul reproduce sub forma negata, la iesirea Q,
semnalul SYN(start), intarziat cu o perioada de ceas. Prin efectuarea produsului logic intre
SYN(start) si semnalul SYNI(start) se obtine un semnal de start sincronizat, de tip nivel, cu
durata unei perioade de ceas: SNP(SYN(start)).
6. Comanda citirii instructiunii dintr-o memorie principala asincrona.
Memoriile principale ale calculatoarelor numerice reprezinta module, care opereaza asincron, de
cele mai multe ori.
Secventa AHPL, pentru citirea unei instructiuni dintr-o memorie M, prevazuta cu registrele de
adresa RA si registrul de date RD, in registrul de instructiuni RI, are urmatorul aspect:
2. RA ← CP /* CP este contorul programului
3. RD ← BUSFN(M;DCD(RA))
4. RI ← RD
In cazul unei memorii asincrone, al carei model logic este dat mai jos, adresele si datele
presupun, pe de-o parte, folosirea unor magistrale: ADR, DATIN, DATIES, iar comanda, pe de
alta parte, utilizarea unor semnale de control citeste, scrie si de stare ocupat.
DATIN
ADR
DATIES MAG
citeste
scrie ocupat
Modelul logic al modulului memoriei principale.
MRA
RD
Comanda
In aceste conditii secventa AHPL, de citire a unei instructiuni, din memorie, capata urmatorul
aspect:
2. ADR ← CP; citeste = 1
→ SYN(ocupat)/(2)
3. nul
→ SYN(ocupat)/(3)
4. FARA INTARZIERE
MAG = DATIES; RI ← MAG
Se poate constata faptul ca, pasul (4), FARA INTARZIERE, este amorsat in ultima parte a
pasului anterior (3), ceea ce conduce la castigarea unei perioade de tact.
D Q
CLRC
D Q
CLRC2 3
(1)
citeste
ceas
ADR <- CP SYN(ocupat)MAG = DATEIESRI <- MAG
ceas
SCN2citeste
ocupat
SYN(ocupat)
SCN3
SCN4
7. Exemple de module descrise in AHPL.
Umatoarele doua exemple de module sunt preluate din lucrarea Calculatoare numerice.
Hardware-structura si proiectare, autori F.J. Hill si G.R.Peterson, Editura Tehnica 1981.
7.1.Unitate de comanda pentru o masina unealta.
Se cere proiectarea unei unitati de comanda, pentru o masina unealta, care foloseste o memorie
ROM[1024:18] pentru a stoca patru secvente, de cate 256 cuvinte x 18 biti, structurati sub
forma a trei campuri, pentru a specifica pozitia uneltei in trei dimensiuni. Pozitia curenta a
uneltei este memorata intr-un registru PR[18], care furnizeaza, conform structurarii sale pe cele
trei campuri, vectori binari, de cate sase biti, pentru trei convertoare numeric/analogice CN/,
care comanda echipamentul de actionare al masinii unelte. Comunicarea cu operatorul se
realizeaza cu ajutorul unui bistabil start/stop ss (controlat din exterior de catre semnalele de
comanda start si stop) si al unui registru RSECV[2] (comandat di exterior prin semnalul
SECV[2], in care se memoreaza numarul secventei, care se executa: 00, 01, 10, 11.
Prin fortarea in unu a bistabilului ss, se va lansa in executie secventa al carei numar este stocat in
RSECV.
Daca, pe parcursul functionarii sistemului, operatorul forteaza in unu intrarea stop, bistabilul ss
va lua valoarea zero, secventa curenta se va termina si in registrul RP se va stoca un vector binar
cu 18 componente egale cu zero, iar unitatea de comanda va trece in starea initiala (1).
In cazul terminarii normale a secventei curente vor avea loc operatiile:
ss ← 0 ; PR ← 18 Τ 0 ; → (1)
Modificarile continuturilor lui ss si RSECV vor fi sincronizate cu ceasul.
Solutie: Pentru implementare, pe langa resursele mentionate mai sus, se va mai introduce un
registru de adrese RA[10] de 10 biti. Cele patru secvente sunt notate cu A, B, C, D si vor avea,
in zecimal, urmatoarele adrese de start: 0, 256, 512, 768. Frecventa ceasului este compatibila cu
rata impusa de citirile efectuate de masina unealta. Un cuvant se citeste din memeorie intr-o
initial begin: incarca_prog//incarcarea programului$readmemb("prog2.v",m);//afisarea rezultatelor simularii sub forma tabelara$display(" timp cp ra rd ri ac z s reset");$monitor("%d %d %h %h %h %h %h %h %h", $time, cp,ra,rd,ri,ac,z,s,reset);//afisarea formelor de unda$vw_dumpvars();$vw_group("all",$time,cp,ra,rd,ri,ac,z,s,reset);//aplicarea semnalului reset (vezi task-ul apply_reset)apply_reset;end
4'b0000:begin // LAC ra = ri[3:0]; rd = m[ra]; ac = rd; end 4'b0001:begin // SAC ra = ri[3:0]; rd = ac; m[ra] = rd; end 4'b0010:begin // ADN ra = ri[3:0]; rd = m[ra]; ac = ac+rd; s = ~ac[7]; z = ~(|ac); end 4'b0011:begin //SCD ra = ri[3:0]; rd = m[ra]; ac = ac-rd; s = ~ac[7]; z = ~(|ac); end 4'b0100: begin//AND ra = ri[3:0]; rd = m[ra];
ac = ac & rd; end 4'b0101:begin // OR ra = ri[3:0]; rd = m[ra]; ac = ac | rd; end 4'b0110:begin // XOR ra = ri[3:0]; rd = m[ra]; ac = ac ^ rd; end 4'b0111:begin // NAC ac = ~ac; end 4'b1000:begin // JMP cp = ri[3:0]; end 4'b1001:begin // JPZ if(z)begin cp = ri[3:0]; end else cp = cp; end 4'b1010:begin // JN if(~z) begin cp = ri[3:0]; end else cp = cp; end 4'b1100:// HLT begin $display("halt"); $stop; end default: $display("cod de operatie inexistent"); endcase end endtask endmodule
Veriwell -k C:\Program Files\VeriWell\exe\VeriWell.key -l C:\ProgramFiles\VeriWell\exe\VeriWell.log calculator2.VVeriWell for Win32 HDL <Version 2.1.1> Tue Nov 21 08:19:37 2000
This is a free version of the VeriWell for Win32 Simulator Distribute this freely; call 1-800-VERIWELL for ordering information See the file "!readme.1st" for more information
Copyright (c) 1993-96 Wellspring Solutions, Inc. All rights reserved
Memory Available: 0Entering Phase I...Compiling source file : calculator2.VThe size of this model is [7%, 7%] of the capacity of the free version
Entering Phase II...Entering Phase III...No errors in compilationTop-level modules: calculator
timp cp ra rd ri ac z s reset 0 x x xx xx xx x x 1 10 0 x xx xx 00 x x 0 20 1 x 0c xx 00 x x 0 30 1 c a5 0c a5 x x 0
40 2 c 4d 0c a5 x x 0 50 2 d 5a 4d 00 x x 0 60 3 d 0c 4d 00 x x 0 70 3 c a5 0c a5 x x 0 80 4 c 5d 0c a5 x x 0 90 4 d 5a 5d ff x x 0 100 5 d 0c 5d ff x x 0 110 5 c a5 0c a5 x x 0 120 6 c 6e 0c a5 x x 0 130 6 e aa 6e 0f x x 0 140 7 e c0 6e 0f x x 0haltStop at simulation time 150C1>
CSCI 320 Computer Architecture Handbook on Verilog HDL By Dr. Daniel C. Hyde Computer Science Department Bucknell University Lewisburg, PA 17837 Copyright 1995 By Daniel C. Hyde August 25, 1995 Updated August 23, 1997
1. Tabla de materii1. Introducere …….............................................................……………................. 1.1 Ce este Verilog?...................................................................…..………..... 1.2 Ce este VeriWell?...............................................................…........……… 1.3 De ce se utilizeaza Verilog HDL? ....................................…..........……...2. Limbajul Verilog…….. ……...........................................................…………… 2.1 Primul Program Verilog....................................................…..........……… 2.2 Conventii Lexicale.....................................................…....…..........……… 2.3 Structura unui Program .....................................................…..........……… 2.4 Tipuri de Date……...............................................................….......………. 2.4.1 Tipuri de Date Fizice.........................................................….…...... 2.4.2 Tipuri de Date Abstracte................................................….……...... 2.5 Operatori…................................................................................…..……….. 2.5.1 Operatori Arithmetici. Binari...................................................…….. 2.5.2 Operatori Arithmetici. Unari......................................................…… 2.5.3 Operatori Relationali.....................................................................…. 2.5.4 Operatori Logici ............................................................................... 2.5.5 Operatori la Nivel de Bit................................................................... 2.5.6 Operatori Unari de Reducere............................................................ 2.5.7 Alti Operatori.................................................................................... 2.5.8 Operator de Precedenta..................................................................... 2.6 Constructii de Control................................................................………........ 2.6.1 Selectia: Instructiunile - if si case.......................…........................... 2.6.2 Repetarea: Instructiunile - for, while si repeat................................... 2.7 Alte Instructiuni......................................................................……………... 2.7.1 Instructiunea - parameter ................................................................. 2.7.2 Atribuirea Continua ......................................................................... 2.7.3 Atribuiri Procedurale Blocante si Non – blocante............................ 2.8 Task-uri si Functii ...........................................................….....………....... 2.9 Controlul Sincronizarii (Timing)................................................………...... 2.9.1 Controlul Intarzierii (#) ................................................................... 2.9.2 Evenimente........................................................................................ 2.9.3 Instructiunea wait....................................................................…...... 2.9.4 Instructiunile fork and join............................................................... 2.10 Examplu: Semafor de Trafic......................................................……........3.Utilizarea simulatorului Veriwell.....................................…………….……….... 3.1Crearea Fisierului Model ...........................................................………...... 3.2 Pornirea simulatorului..........................................................……..……...... 3.3 Cum se iese din Simulator? . ........................................................………... 3.4 Optiunile Simulatorului..................................................................……...... 3.5 Depanarea ...............................................................................…………....4. Functiile si Task-urile de Sistem........................................…………………….. 4.1 $cleartrace................................................................……………................. 4.2 $display ..............................................................................……………...... 4.3 $finish........................................................................……………............... 4.4 $monitor .......................................................................……………............
Veriwell -k C:\Program Files\VeriWell\exe\VeriWell.key -l C:\ProgramFiles\VeriWell\exe\VeriWell.log inmultitorb.VVeriWell for Win32 HDL <Version 2.1.1> Tue Dec 19 16:26:21 2000
This is a free version of the VeriWell for Win32 Simulator Distribute this freely; call 1-800-VERIWELL for ordering information See the file "!readme.1st" for more information.
Copyright (c) 1993-96 Wellspring Solutions, Inc. All rights reserved
Memory Available: 0Entering Phase I...Compiling source file : inmultitorb.VThe size of this model is [3%, 2%] of the capacity of the free version
Entering Phase II...Entering Phase III...No errors in compilationTop-level modules: inmultitorb
• CMOS: Semiconductor Metal Oxid Complementar. - Tranzistor NMOS (Semiconductor Metal Oxid de tip N) - Tranzistor PMOS (Semiconductor Metal Oxid de tip P)
• Tranzistorul NMOS
- Tranzistorul conduce daca la poarta lui se aplica un potential electric ridicat (Vdd)
- Tranzistorul este blocat daca la poarta lui se aplica un potential electric coborat (GND)
• Tranzistorul PMOS
- Tranzistorul este blocat daca la poarta lui se aplica un potential electric ridicat (Vdd)
- Tranzistorul conduce daca la poarta lui se aplica
un potential electric coborat (GND)
• Componentele de baza: Inversorul CMOS
• Componentele de baza: Portile logice
• Porti logice: comparatie.
a) Daca tranzistoarele PMOS sunt rapide: - Se recomanda conectarea lor in serie - Se prefera poarta NOR - Se prefera, de asemenea, NOR daca tranzitia H→L este mai critica
decat tranzitia L→H.
b) Daca tranzistoarele NMOS sunt rapide: - Se recomanda conectarea lor in serie - Se prefera poarta NAND - Se prefera, de asemenea, NAND daca tranzitia L→H este mai critica
decat tranzitia H→L. • Comportarile ideala si reala.
a) Cand intrarea 0 → 1, iesirea 1 → 0, dar NU instantaneu. - Iesirea efectueaza tranzitia 1 → 0 : tensiunea de iesire tranziteaza de
la Vdd (5V) la 0V. b) Cand intrarea 1 → 0, iesirea 0 → 1 dar NU instantaneu.
- Iesirea efectueaza tranzitia 0 → 1 : tensiunea de iesire tranziteaza de la 0V la Vdd (5V).
c) Tensiunea nu se modifica instantaneu.
• Analogia temporala cu fluidul.
- Apa ↔ Sarcina Electrica; Capacitatea Rezervorului ↔ Capacitatea (C). - Nivelul Apei ↔Tensiunea; Debitul Apei ↔ Curentul (Sarcina/Timp). - Dimensiunea Conductelor; Conductanta Tranzistoarelor (G). - Timpul de umplere a rezervorului este proportional cu C/G.
• Conectarea in serie a portilor.
- Intarzierea Totala de propagare = Suma Intarzierilor Individuale = d1 + d2 - Capacitatea C1 are doua componente:
Capacitatea firelor care leaga cele doua porti Capacitatea de intrare a celui de-al doilea inversor.
• Calculul intarzierilor.
- Suma intarzierior pe caile seriale - Intarzierea (Vin → V2) ≠ Intarzierea (Vin → V3)
- Drumul Critic = Calea cea mai lunga dintre cele N cai paralele - C1 = Capacitatea C a firelor + Cin a portii G2 + Cin a portii G3
• Modelul general al intarzierii in circuitele combinationale.
- O Celula Logica Combinationala (simbol) este complet specificata prin: Comportarea functionala (intrare →iesire):
Tabele de adevar, ecuatii logice, VHDL, Verilog etc. Factorul de incarcare pentru fiecare intrare. Intarziere critica in propagarea de la fiecare intrare la fiecare iesire, pentru
fiecare tranzitie: THL (A,O) = Intarzierea interna fixa + Intarzierea dependenta de sarcina × sarcina - Modelul liniar
• Caracterizarea unei porti.
- Capacitatea de intrare pentru fiecare intrare. - Pentru fiecare cale intrare-iesire se considera,
pentru fiecare tip de tranzitie: H → L, L → H, H → Z, L → Z …etc: o Intarzierea interna (ns) o Intarzierea dependenta de sarcina (ns/fF)
A la Y: I.I.G1 + (C.Fir1 + S.I.G3)*I.D.S.G1 + I.I.G3 B la Y: I.I.G2 + (C.Fir2 + S.I.G3)*I.D.S.G2 + I.I.G3 S la Y (cazul cel mai defavorabil): I.I.Inv + (C.Fir0 +
S.I.G1)*I.D.S.Inv + I.I.A la Y - Efectul “C.Fir1” se poate aproxima prin:
presupunerea ca Fir1 are o capacitate egala cu capacitatile C ale portilor conectate la el
- NAND2, NAND3, NAND4 - NOR2, NOR3, NOR4 - INV1 (inversor normal) - INV4 (inversor cu capacitate mare de comanda) - XOR2 - XNOR2 - MUX (Multiplexoare rapide) - Sursa de alimentare (Sursa pentru unitati) - GND (Sursa de zerouri)
- Bistabile de tip D comandate pe front negativ de ceas
• Modelul de Sincronizare (Timing) pentru elementele cu memorie.
- Setup Time (Timp de Stabilire): Intrarea trebuie sa fie stabila inaintea frontului negativ al semnalului de ceas ceas.
- Hold Time (Timp de Mentinere): Intrarea trebuie sa ramana stabila dupa frontul negativ al semnalului de ceas.
- Clock-to-Q Time (Timpul Ceas-la-Q): Iesirea nu se poate modifica instantaneu la frontul semnalului de ceas Ca si la portile logice exista doua componente ale intarzierii:
o Intarzierea Interna Clk-to-Q o Intarzierea dependenta de sarcina Clk-to-Q.
Pentru exemplificare se considera Setup = 1ns, Hold = 0,5ns.
• Metodologia de Sincronizare (Clocking).
- Toate elementele de memorare sunt sincronizate cu acelasi semnal de ceas. - In ceea ce priveste blocurile logice combinationale:
Toate intrarile sunt actualizate la fiecare semnal de ceas Toate iesirile trebuie sa fie stabile inaintea sosirii urmatorului semnal
de ceas. • Drumul Critic si Perioada/Ciclul Ceasului.
- Drumul Critic: Calea cea mai lenta intre doua elemente de memorare. - Perioada/Ciclul Ceasului este o functie de drumul critic si trebuie sa fie
mai mare decat: Clk-to-Q + Intarzierea corespunzatoare Drumului Critic prin
Circuitul Combinational + Setup
• Efectul Alunecarii (Skew) Ceasului asupra Ciclului.
- Scenariul cel mai defavorabil pentru Ciclu:
Registrul de intrare foloseste CLK1 Registrul de iesire foloseste CLK2
- Ciclul – Alunecarea Ceasului ≥ Clk-to-Q + Intarzierea cea mai mare + + Setup
⇒ Ciclul ≥ Clk-to-Q + Intarzierea cea mai mare + Setup + + Alunecarea Ceasului
• Metode pentru reducerea Ciclului.
- Reducerea numarului de niveluri logice:
- Folosirea metodelor dinamice de sincronizare. - Examinarea Incarcarii:
O poarta nu trebuie sa comande mai multe porti. Trebuie evitata comanda unui fir lung de catre o poarta de mici
dimensiuni - Folosirea mai multor etaje pentru comanda sarcinilor capacitive mari.
• Evitarea violarii timpului Hold.
- Cerinta pentru Timpul Hold:
Intrarea registrului nu trebuie sa se schimbeimediat dupa modificarea ceasului.
- Aceasta se poate realiza usor in schemele de sincronizare pe fronturi de ceas.
- Timpul Hold, pentru cele mai multe bistabile, este ≤ 0 ns. - CLK-to-Q + Intarzierea pe Calea cea mai scurta > Timpul Hold.
• Efectul Alunecarii Ceasului asupra Timpului Hold.
- Scenariul cel mai defavorabil pentru Timpul Hold: Registrul de Intrare (FF1) este sincronizat cu CLK2 Registrul de Iesire(FF2) este sincronizat cu CLK1 Iesirea lui FF2 rapid nu trebuie sa modifice intrarea lui FF1, pe
aceeasi tranzitie a ceasului. - (CLK-to-Q + Intarzierea pe calea cea mai scurta – Alunecarea
Ceasului) > Timpul Hold
OPERATIILE ARITMETICE
1. Procesorul Aritmetic.
Un procesor aritmetic reprezinta un dispozitiv capabil sa efectueze operatii simple sau complexe
asupra unor operanzi furnizati in formate corespunzatoare. Ca exemple se pot da:
- Unitatea Aritmetica simpla;
- Incrementatorul;
- Dispozitivul pentru Transformata Fourier Rapida etc.
Procesorul Aritmetic poate fi examinat atat din punctul de vedere al utilizatorului, cat si al
proiectantului.
1. Din punctul de vedere al utilizatorului, procesorul aritmetic reprezinta o cutie neagra, cu un
numar de intrari si iesiri, capabila sa efectueze o serie de operatii asupra unor operanzi cu
formate specificate. Rezultatele se obtin intr-un timp care depinde de tipul operatiei si de
formatul operanzilor si sunt insotite de indicatorii de conditii.
Operanzi: X, Y Rezultat: Z
Operatia: * Conditii: Ci
Formate: φ Singularitai: Si
Intrari:
- una sau mai multe marimi numerice: X, Y;
- un simbol al operatiei, operatorul: *;
- un simbol de format: φ.
Operanzii de la intrare sunt caracterizati prin trei proprieteti:
- apartin unei multimi finite M de marimi numerice, caracterizate printr-o gama:
Xmin ≤ X ≤ Xmax
- sunt cunoscute cu o precizie data:
X - ∆ Xl ≤ X ≤ X + ∆ Xh
Procesor Aritmetic
Timp: T(*,φ)
- sunt reprezentate cu ajutorul unor simboluri/cifre, in cadrul unui sistem de numeratie, sub
forma unor n-tupluri:
xn-1 xn-2…………………. x1 x0,
care sunt interpretate ca marimi/valori numerice, pe baza unor reguli date.
Operatorii sunt codificati cu ajutorul unor simboluri *, care corespund unui set redus sau extins
de operatii aritmetice:
∗ ∈ +, -, ×, : Formatul. Atunci cand sunt posibile mai multe formate, pentru reprezentarea operanzilor, acest
lucru poate fi specificat la intrarea format, printr-un simbol dat φ.
Iesiri:
- una sau mai multe marimi numerice Z, care reprezinta rezultatul;
- unul sau mai multe simboluri Ci, reprezentand conditiile in care apare rezultatul;
- unul sau mai multe simboluri Si, reprezentand singularitati.
Iesirile numerice poseda aceleasi proprietati ca si operanzii de la intrare: gama, precizie si
reprezentare.
Conditiile specifica caracteristici ale rezultatului: < 0, = 0, > 0 etc.
Singularitatile sunt asociate cu situatiile in care rezultatul obtinut este invalid:
- depasire: rezultatul depaseste posibilitatile hardware de reprezentare a numerelor, in
sistemul numeric dat;
- pierderea excesiva de precizie, la operatiile in virgula mobila;
- erori datorate hardware-lui.
In aceste situatii apare un pseudo-rezultat Z(Si), impreuna cu singularitatea Si, care sunt tratate
atat prin hardware, cat si cu ajutorul unor rutine specifice ale sistemului de operare.
Timpul de operare T(*) este dat pentru fiecare operatie (*), efectuata de catre procesor. Timpul
de operare, in unele cazuri, poate fi variabil:
T(*)min ≤ T(*) ≤ T(*)max
Observatii:
- definitia data procesorului aritmetic cuprinde un spectru larg de “cutii negre”, de la un
contor simplu (ADD-ONE), pana la un generator de functii trigonometrice sau un procesor
FFT.
- structura interna este specificata in termenii timpului asociat cu executia diferitelor operatii,
cat si cu formatul de reprezentare a datelor.
2. Din punctul de vedere al proiectantului intereseaza specificarea detaliata a structurii interne.
Aceasta specificare trebuie sa considere:
- algoritmii aritmetici (proiectarea aritmetica),
- structura logica a procesorului (proiectarea logica).
Proiectarea aritmetica pleaca de la specificatiile date de catre utilizator si le transforma in
specificatii de operatii aritmetice detaliate la nivel de ranguri individuale/bit, in cadrul
reprezentarii concrete a datelor. Aceste specificatii, la nivel de rang individual, reprezinta, in
continuare, datele initiale (tabele de adevar, diagrame etc) pentru proiectarea logica.
Proiectarea logica pleaca de la specificatiile furnizate de catre proiectarea aritmetica si, in
cadrul unei tehnologii date, selecteaza tipurile de circuite logice, pe care le interconecteaza, in
mod corespunzator, in vederea implementarii operatiilor aritmetice impuse de catre algoritmii
aritmetici. In cazul in care algoritmii aritmetici nu se pot executa intr-un singur pas, se
proiecteaza secvente, constand in pasi aritmetici elementari, efectuati sub controlul unor
semnale de comanda. Astfel, proiectantul logic trebuie sa elaboreze atat proiectul unitatii de
executie, cat si proiectul unitatii de comanda.
Specificatiile de tip “black box”, pentru proiectarea unui procesor aritmetic, se obtin prin
transformarea specificatiilor date de catre utilizator, astfel incat, ele sa corespunda posibilitatilor
de implementare. In acest context trebuie sa se aibe in vedere ca:
- datele se reprezinta sub forma unor vectori binari;
- la baza circuitelor, care efectueaza operatiile aritmetice, se afla circuite logice, ce opereaza
cu semnale binare.
Avand in vedere cele de mai sus:
- intrarile X si Y vor deveni:
X ≡ xn-1 xn-2…………………. x1 x0,
Y ≡ yn-1 yn-2…………………. y1 y0,
- operatorul (*) va fi codificat printr-un cod de operatie:
Ω ≡ ωn-1 ωn-2………………..ω1 ω0,
care va indica atat operatia, cat si formatul.
- iesirile reprezinta vectori numerici:
Z ≡ zn-1 zn-2…………………. z1 z0, rezultatul;
C ≡ cp-1 cp-2…………………. c1 c0, indicatorii de conditii
S ≡ sq-1 sq-2…………………. s1 s0, indicatorii de pseudorezultat.
In continuare se vor examina operatiile aritmetice in virgula fixa si in virgula mobila.
2. Operatiile aritmetice in virgula fixa.
2.1. Adunarea si scaderea.
Operatiile de adunare si scadere ale numerelor in virgula fixa se implementeaza, in majoritatea
covarsitoare a cazurilor, cu numere reprezentate in complementul fata de doi. Astfel, operatiile
de adunare si scadere se reduc la operatia de adunare a codurilor complementare ale celor doi
operanzi. Adunarea se efectueaza rang cu rang, incepand cu rangurile mai putin semnificative,
inclusiv rangurile de semn. Transportul, care apare la stanga rangului de semn, se neglijeaza.
Fie operanzii:
x = +/- xn-2…………………. x1 x0,
y = +/- yn-1 yn-2…………… y1 y0,
in conditiile :
-2n-1 ≤ x ≤ 2n-1 -1
-2n-1 ≤ y ≤ 2n-1 -1
La adunarea/scaderea celor doi operanzi, de mai sus, apar urmatoarele situatii:
Conectarea in cascada a circuitelor microsecventiatorului pemite explorarea unui spatiu mai
mare in memoria de microprogram. Mai jos se prezinta interconectarea in cascada a trei
microsecventioatoare AMD 2909.
R D
4 12 12 4
4
4
S0:1
OR0:3
altele
Y0:11
R DS0:1
AMD2909OR0:3
Cn Cn+4
altele Y0:3
R DS0:1
AMD2909OR0:3
Cn Cn+4
altele Y0:3
R DS0:1
AMD2909OR0:3
Cn Cn+4
altele Y0:3
Dupa cum s-a mai aratat, pentru realizarea unei unitati de comanda, microsecventiatorul trebuie
prevazut cu o serie de circuite auxiliare, care sunt prezentate in figura de mai jos:
AMD29751
A4:1
CS P3:0 AMD2909 Y[4]
Cn+4
Cn
MUX0,MUX1
ADRESA “A”
ADRESA “B”
DATA “D”
SELECTIE SURSA (I2:0)
OPERATIE UAL (I5:3)
SELECTIE DESTINATIE (I8:6)
SELECTIE COD CONDITIE (P3:0)
CODUL CONDITIEI SELECTATE
RR[4] IS
STV4 cuv.× 4 biti
CMP[4]
D RR STV CMP MUX X[4]
INC
CA
MM
RMI AMD2918
A0
PROM
Intre acestea un rol deosebit il joaca memoria PROM 29751, care furnizeaza semnalele de
comanda pentru microsecventiator. Continutul acestei memorii PROM este citit pe baza unei
adrese obtinute dintr-un camp P0:3, al registrului microinstructiunii RMI. Bitii P0:3 ai
microinstructiunii se transforma in bitii de adresa A1:4, ai memoriei PROM, in timp ce bitul A0
este furnizat de iesirea unui multiplexor la intrarile caruia se aplica indicatorii de conditii, cat si
alte semnale. Intrarile de date ale multiplexorului au fost stabilite pe durata executiei
microinstructiunii precedente. Intrarile de selectie ale multiplexorului sunt asigurate tot de bitii
P0:3, furnizati de microinstructiunea curenta. In figura de mai jos se prezinta o schema bloc a
unitatii de comanda, cu indicarea elementelor discutate anterior.
Magistrala pentru date si instructiuni
Adresa
4 4 R3:0
Semnale de
P3:0 comanda
Registrul Instructiunii RI
Cod operatie adresa, etc.
PROM mapare adresa
O5 PROM 29751 O4 O3A0 O2 O1 O0A4A3A2A1
D[4] R[4]OR[4]
ZEROPUP AMD 2909FES1 Cn+4
S0 Cn
Yout
Memoria de microprogram
RMI
MUX
Operarea unitatii de comnada microprogramata este stabilita prin continutul memoriei PROM,
care furnizeaza la iesire semnalele O5:0, care reprezinta vectorul de comanda al
microsecventiatorului: OR[4], ZERO, PUP, FE, S1, S0. In locatiile memoriei PROM, adresate cu
ajutorul campului P3:0, sunt stocati vectori de comanda, care impun unitatii de comanda
microprogramate efectuarea operatiilor prezentate in tabelul de mai jos:
P3:0 Operatie Mnemonica
cod hexa
0 Ramificare la adresa R daca F ≠ 0 JRNZF
1 Ramificare neconditionata la adresa R JR
2 CONTINUA CONT
3 Ramificare la adresa D JD
4 Ramificare la subrutina cu adresa R daca F ≠ 0 JSRNZF
5 Ramificare la subrutina cu adresa R JSR
6 Revenire din subrutina RS
7 Ramificare la adresa continuta in varful stivei (fara POP) JSTV
8 Terminare de ciclu si POP daca F = 0 TCPOZF
9 PUSH si CONTINUA PUCONT
A POP si CONTINUA POCONT
B Terminare de ciclu si POP daca Cn+4 = 1 TCPOC
C Ramificare la adresa R daca F = 0 JRZF
D Ramificare la adresa R daca F3 = 1 JRF3
E Ramificare la adresa R daca OVR = 1 JROVR
F Ramificare la adresa R daca Cn+4 = 1 JRC
Se poate observa, in ultima schema bloc, faptul ca intrarea R a microsecventiatorului este
preluata direct de la iesirea memoriei de comanda, fara a mai fi stocat in prealabil in registrul
microinstructiunii RMI. In acest mod adresa de ramificare se incarca direct in registrul R al
microsecventiatorului.
Din cele prezentate rezulta ca operarea microsecventiatorului este controlata de doua campuri
ale microinstructiunii stocate in Memoria de comanda. Este vorba de campul P3:0, care
stabileste operatia, conform tabelului de mai sus, si de campul R3:0, al adresei de ramificare.
Prin concatenarea mai multor microsecventiatoare campul P ramane constant ca lungime, in
timp ce campul R se modifica, in incrementi de cate 4 biti, pentru a furniza spatii de adresare
mai mari in memoria de microprogram.
Structura unui cuvant – microinstructiune, destinat controlului unui microsecventiator AMD
2909, este formata din doua campuri de cate patru biti:
- campul P, care specifica modul de obtinere a microinstructiunii urmatoare, si
- campul R, care defineste adresa de salt, daca este cazul.
Microprogramarea unui procesor “bit-slice”, constituit cu ajutorul circuitelor AMD 2901
si AMD 2909, in vederea prelucrarii datelor pe 4 biti.
(Urmeaza mai multe exemple de microprograme)
31 30 29 28 27 26 25 24
R3 R2 R1 R0 P3 P2 P1 P0
Adresa de Obtinerea µI salt urmatoare
Sinteza circuitelor combinationale Minimizarea folosind diagrama Karnaugh. (D-K)
1. Copiaza tabela de adevar in (D-K) 2. Identifica subcuburile: selecteaza la fiecare pas pe cel mai mare subcub, chiar
daca se suprapune cu alte cuburi selectate anterior, pana la acoperirea tuturor unitatilor (Incearca: 4×4, 2×4 si 4×2, 1×4 si 4×1, 2×1 si 1×2, in final 1×1) .
3. Genereaza realizarea minimala ca Suma de Produse (SP).
Termenii incercuiti poarta numele de implicanti. Un implicant care nu estcontinut complet intr-un alt implicant poarta numele de implicant prim. Cazul SP nonminimale
Structuri utile de porti.
Logica pentru Sumatorul Complet (SC)
Ecuatia transportului C0 poate fi simplificata destul de usor: C0 = BC + AB+ AC In schimb, suma, S, nu are o realizare simpla de SP, chiar daca ea poate fi implementata cu doua porti XOR, cu cate doua intrari. Sinteza logica folosind multiplexoare (MUX-uri)
Implementarea sistematica a logicii combinationale.
Optimizari in cazul logicii cu MUX-uri
Sinteza bazata pe Tabele de Cautare (Lookup Tables)
Teoretic, se poate construi oricare bloc logic combinational, cu o iesire, folosind multiplexoare. Pentru o functie de N variabile este necesar un multiplexor cu 2N intrari.
Structura unui Multiplexor Multiplexoarele pot fi partitionate in doua sectiuni cu functiile de decodificare si selectare. Decodificatorul identifica intrarea dorita, iar Selectorul transfera la iesire acea intrare. Prin partajarea sectiunii de decodificare, multiplexoarele pot fi utilizate la implementarea tabelelor de cautare cu un numar oarecare de iesiri.
Decodificatorul Decodificatorul dispune de k intrari, denumite intrari de selectie si N=2k iesiri de date.
Se poate construi un tablou bidimensional format din decodificatoare si selectoare, dupa cum se arata in continuare. Partajarea logicii de decodificare.
Astfel, se poate realiza un dispozitiv universal de tip tabela de cautare, denumit Memorie cu Continut Permanent (ROM – Read Only Memory), cu ajutorul careia se poate implementa oricare tabela de adevar si, astfel, oricare dispozitiv logic combinational.
ROM - detalii de implementare Logica SI cablata, logica SAU programabila Avantaje: - proiect cu o structura regulata - proiectarea poate fi complet automatizata
Dezavantaje: - Tranzistoarele “trage sus” sunt active, ceea ce implica cosum static de putere - Trasee lungi de metal, cu capacitati mari - Viteza de lucru relativ mica. Terminologie: - Intrarille circuitului ROM: adrese - Iesirile decodificatorului: linii de cuvint - Iesirile selectorului: linii de bit Cresterea vitezei in cazul ROM Cresterea vitezei in cazul ROM se poate realiza prin reducerea capacitatiilor traseelor lungi de metal, care strabat structura.
Cea mai buna metoda consta in realizarea unei structuri patrate. Intrebari: - De ce sau folosit circuite NOR? - Nu se puteau elimina unele inversoare in cazul folosirii circuitelor NAND? Observatii privind utilizarea circuitelor ROM pentru implementarea logicii combinationale - ROM nu tine seama de structura functiilor combinationale - Dimensiunea, planul (layout) si proiectul sunt independente de functie - Oricare tabela de adevar poate fi implementata/”programata” prin reconfigurari
minore: - stratul de metal (ROM cu masca) - fuzibile (PROM –Field programmable ROM) - sarcini pe portile flotante (EPROM – Erasable PROM) etc Model: valorile functiei in tabela de cautare se iau din tabela de adevar. Intrari: “ADRESE” corespunzatoare celor N intrari Dimensiunea ROM ≈ 2N × Nr.iesiri. Intrebari: - De ce dimensiunile ROM cresc cu un factor egal cu 4? - La iesirea unui circuit ROM se pot observa “glitch-uri”? Explicatie. Exemplu: Zar cu 7 fatete. Intrucat mecanic nu se poate realiza un zar cu 7 fatete, se va incerca o implementare electronica, pornind de la fatetele de zar de mai jos:
Cu ajutorul unui tablou de LED-uri, marcate ca mai jos, se pot afisa fatetele zarului:
Proiectare bazata pe ROM Proiectul consta in scrierea tabelei de adevar
Optimizari: eliminarea iesirilor redundante si examinarea adresarii.
O implementare ROM simpla
PLA (Programmable Logic Array -Tablou Logic Programabil) In cazul in care termenii AND ai decodificatorului din ROM ar putea fi programabili, ca si termenii SAU, s-ar putea folosi o serie de metode de minimizare in scopul reducerii dimensiunilor tabloului ROM. Se obtine un dispozitiv universal.
Implementarea PLA a Zarului cu 7 fatete
Ca si in cazul ROM, PLA asigura sinteza functiilor logice arbtrare utilizand implementari bazate pe SP.
Avantaje: - implementari minimizate si rapide - structuri regulate: - generare automata - proiectare facila - mai lenta decat implementarea optimala cu porti. Impachetarea PLA Adesea aceeasi linie de bit poate fi partajata de doua iesiri. I mod similar, este posibil, sa se aduca intrarile pe ambele laturi ale tabloului, ceea ce face ca desenul sa arate ca o pereche de PLAuri in oglinda.
PAL (Programmable Array Logic – Tablouri ProgramabileLogice) O alta abordare a proiectarii logice structurate o constituie PAL-urile. Aceste dispozitive au fost in voga in anii 80 intrucat au inlocuit cu succes portile TTL si au contribuit la lansarea microprocesoarelor. Actualmente sunt depasite.. PAL-urile au un decodificator programabil (planul AND) si o logica de slectie fixa.
Aceste dispozitive au fost utile pentru implementarea expresiilor logice sub forma de SP, asigurand in acelasi timp, si posibilitati de comanda a sarcinilor mari. Ele se
procurau sub forma neprogramata. Programarea se putea face de catre utilizator cu echipamente ieftine. Concluzii: Multiplexoarele: - Un multiplexor cu N intrari poate implementa tabele de adevar cu N intrari si o
iesire ROM-urile - Logica de decodificare partajata - Genereaza toate produsele - Pot implementa tabele de adevar cu un numar oarecare de iesiri - Usor de specificat - Plan (layout) regulat - Utilizare ineficienta a spatiului/timpului PLA-urile - Asigura realizari minimizate pentru SP - Genereaza numai produsele necesare - Pentru proiecte compacte este necesara minimizarea - Plan (layout) regulat PAL-urile - Usor de prefabricat si de impachetat Metode moderne: Celule Standard Se creaza, mai intai, o biblioteca de celule logice: porti, registre, multiplexoare, sumatoare, ploturi de I/E etc. O foaie de catalog, pentru fiecare celula, descrie functia, aria ocupata, puterea consumata, timpul de propagare, timpii de crestere si de cadere ca functii de sarcina etc
Exemplu de celula standard Ca si in cazul proiectarii plachetelor la nivel de componente, cu doua decade in urma, uneltele CAD plaseaza si interconecteaza celulele, urmarindu-se: - minimizarea ariei ocupate - satisfacerea restrictiilor de timp.
Arii/Tablouri de Porti: Scurtarea timpului de realizare a proiectului Tablourile de porti utilizeaza tablouri fixe de tranzistoare, care sunt “personalizate” in etapa finala de procesare in care se adauga fire/trasee metalice si contacte. Cea mai populara arhitectura este “Marea de Porti” (Sea of Gates), in care nucleul circuitului integrat este un tablou continuu de tranzistoare MOS. Trasarea straturilor de metal se efectueaza peste partea superioara a tranzistoarelor nefolosite.
Avantaje: - pot fi prefabricate - sunt personalizate numai ultimele masti.