Utilizarea Logaritmilor In Conceptia Unitatilor Aritmetice DE Calcul
CUPRINS
CAP.1. UTILIZAREA LOGARITMILOR ÎN CONCEPȚIA UNITĂȚILOR ARITMETICE DE CALCUL ………………….……. 5 1.1 Considerații privind metodele de generare a logaritmilor și antilogaritmilor binari ….……………………………………..……… 5
1.2. Prezentarea arhitecturii unui coprocesor având încorporată o unitate logaritmică pentru generarea logaritmilor și antilogaritmilor binari 9
Unitatea de control 10
Unitatea de execuție numerică 11
CAP. 2. ALGORITMUL DE CONVERSIE DE FORMAT
FP-LNS și LNS-FP , 12
Conversia FP-LNS 12
Conversia LNS-FP 14
Organizarea pe nivele pipe-line a structurii logice care implementează
operațiile de înmulțire și împărțire 15
CAP.3. SUMATOARE RAPIDE PERFORMANTE 18
Prezentarea sumatorului cu transport anticipat CLA 18
Prezentarea sumatorului cu selectarea transportului CSA 23
Circuite rapide de adunare/scădere .24
CAP. 4. MULTIPLICATOARE RAPIDE CARE UTILIZEAZĂ SUMATOARE CU SALVAREA TRANSPORTULUI .26
CAP. 5. UNITATEA LOGARITMICĂ DE CALCUL PENTRU EFECTUAREA OPERAȚIILOR DE ÎNMULȚIRE ȘI ÎMPĂRȚIRE 30
Unitățile de logaritmare și antilogaritmare 33
Circuitul de adunare/scădere 40
CAP. 6. PARTICULARITĂȚI ALE PROGRAMULUI MSIM5.2 UTILIZATE ÎN SIMULAREA CIRCUITELOR LOGICE .43
Programul Schematics .43
Programul Stimulus Editor .45
Programul PSpice .47
Programul Probe 49
ANEXAI , .51
ANEXA 2 .60
BIBLIOGRAFIE
CUPRINS
CAP.1. UTILIZAREA LOGARITMILOR ÎN CONCEPȚIA UNITĂȚILOR ARITMETICE DE CALCUL ………………….……. 5 1.1 Considerații privind metodele de generare a logaritmilor și antilogaritmilor binari ….……………………………………..……… 5
1.2. Prezentarea arhitecturii unui coprocesor având încorporată o unitate logaritmică pentru generarea logaritmilor și antilogaritmilor binari 9
Unitatea de control 10
Unitatea de execuție numerică 11
CAP. 2. ALGORITMUL DE CONVERSIE DE FORMAT
FP-LNS și LNS-FP , 12
Conversia FP-LNS 12
Conversia LNS-FP 14
Organizarea pe nivele pipe-line a structurii logice care implementează
operațiile de înmulțire și împărțire 15
CAP.3. SUMATOARE RAPIDE PERFORMANTE 18
Prezentarea sumatorului cu transport anticipat CLA 18
Prezentarea sumatorului cu selectarea transportului CSA 23
Circuite rapide de adunare/scădere .24
CAP. 4. MULTIPLICATOARE RAPIDE CARE UTILIZEAZĂ SUMATOARE CU SALVAREA TRANSPORTULUI .26
CAP. 5. UNITATEA LOGARITMICĂ DE CALCUL PENTRU EFECTUAREA OPERAȚIILOR DE ÎNMULȚIRE ȘI ÎMPĂRȚIRE 30
Unitățile de logaritmare și antilogaritmare 33
Circuitul de adunare/scădere 40
CAP. 6. PARTICULARITĂȚI ALE PROGRAMULUI MSIM5.2 UTILIZATE ÎN SIMULAREA CIRCUITELOR LOGICE .43
Programul Schematics .43
Programul Stimulus Editor .45
Programul PSpice .47
Programul Probe 49
ANEXAI , .51
ANEXA 2 .60
BIBLIOGRAFIE
CAPITOLUL 1
UTILIZAREA LOGARITMILOR ÎN CONCEPȚIA UNITĂȚILOR ARITMETICE DE CALCUL
Considerații privind metodele de generare a logaritmilor și antilogaritmilor binari
Operația de înmulțire, efectuată cu ajutorul logaritmilor, este bazată pe următoarea relație:
A x B = antilogilogA + logB) (1)
în care A și B reprezintă modulul celor 2 numere care se înmulțesc. Semnul produsului este generat în exteriorul structurii hard care permite implementarea relației precedente.
Pentru a păstra o gamă dinamică largă de reprezentare a numerelor, cei doi factori A și B vor fi reprezentați în format virgulă flotantă cu mantisa normalizată:
A=x2 i (2)
B=y2 j
unde x 1, y 1, x, y < 2. Logaritmul produsului este dat de relația (3):
log A x B = i +j + log xy (3)
iar produsul propriu-zis este obținut pe baza relației (4):
A x B = 2i+j antilog(log x + logy)= 2 i+j z (4)
În mod uzual este utilizată baza 2 pentru reprezentarea numerelor. Astfel generarea produsului actual necesită o operație de adunare (realizată cu un sumator rapid), două operații de logaritmare ce se pot realiza simultan și o operație de antilogaritmare. Logaritmarea și antilogaritmarea pot fi realizate fie prin utilizarea unor structuri logice celulare (SLC) de generare a logaritmilor și antilogaritmilor binari, fie prin utilizarea unor memorii ROM care memorează direct valoarea logaritmilor și antilogaritmilor binari.
Eroarea care apare la generarea lui z se determină pe baza următoarelor considerente:
prima sursă de eroare e dată de însăși reprezentarea numărului x pe n biți, obtinînd x(n):
e1= x(n) –x ( 5)
– a doua sursă de eroare apare la generarea pe m biți a logaritmului binar log(m)x:
e2=log(m)x-logx (6)
– a treia sursă de eroare apare la generarea antilogaritmului binar pe n biți (s-a considerat că produsul este reprezentat pe n biți, ca și factorii).
e3 = antilog(logx + e2 ) + e3 – x = antilog(log,x) + e3 (7)
Deoarece e2 provine dintr-o reprezentare pe m biți a unui număr subunitar rezultă că:
Deoarece e1 provine dintr-o reprezentare pe n biți a unui număr cuprins între 1 și 4, (produsul a două numere cuprinse între 1 și 2), rezultă că:
În aceste condiții, eroarea totală care apare la executarea operației de înmulțire după această metodă este:
(8)
Modelul matematic complet al înmulțirii logaritmice poate fi reprezentat astfel în figura 1.1.
Aici e1 și e2 sunt erorile care apar la obținerea logaritmului lui x(n) și y,y iar e3 este eroarea care apare la antilogaritmare.
Logaritmarea și antilogaritmarea pot fi realizate fie prin utilizarea unor structuri logice celulare (SLC) de generare a logaritmilor și antilogaritmilor binari (metoda l), fie prin utilizarea unor memorii ROM care memorează direct valoarea logaritmilor și antilogaritmiior binari {metoda 2). Metoda 1 se bazează pe descompunerea numărului ce se logaritmează în factori de forma (l+ki 2-i), respectiv pe descompunerea numărului ce se antilogaritmează în termeni de forma ki Li. Coeficienții ki pot fi 0 sau 1 și se numesc coeficienți de creștere, ei arătând dacă un factor, respectiv termen este prezent sau nu în descompunere. Valorile Li reprezintă logaritmii binari ai numerelor de forma 1+2-i . Valoarea maximă a lui i determină precizia cu care se calculează logaritmul sau antilogaritmul.
Structura hard care implementează această metodă prezintă următoarele caracteristici:
– operează cu numere normalizate, fiind compatibilă cu sistemele în virgulă flotantă.
– schema electronică are o structură celulară și deci poate fi ușor reprodusă și extinsă.
– durata maximă de generare a logaritmului sau antilogaritmului este aproximativ 500 x tp(tp – timp de propagare prin poartă) pentru simplă precizie.
– eroarea apărută la logaritmare sau antilogaritmare se poate face oricât de mică prin simpla creștere a numărului de celule.
Dezavantajul oferit constă în timpul prea mare de propagare a transportului prin structură. Acest timp poate fi micșorat substanțial utilizând tehnici de anticipare a transportului însă cu prețul unui consum suplimentar de arie pe cipul de siliciu.
Metoda 2 furnizează mult mai rapid logaritmul sau antilogaritmul fiecărui număr reprezentabil în format, prin citirea sa dintr-o memorie ROM. Volumul total de memorie necesară, în biți, este 2 × m × 2" + n × 2m, atunci când sunt utilizate două memorii ROM pentru generarea simultană a logaritmilor lui x și y.
Tabelul I prezentat mai jos, permite determinarea dimensiunii optime a memoriei ROM, din diversele combinații ale lungimii cuvântului produsului și logaritmului.
Nr. biți produs
↑
Nr. biți logaritm
Tabel I. Volumul de memorie necesară în biți
Așa cum se observă din tabelul I, cantitatea de memorie necesară pentru lungimi ale cuvântului produsului și logaritmului mai mari de 14 biți, va depăși IMbit. Dezavantajul acestei metode constă în aceea că, pentru lungimi mari ale cuvintelor de date, e necesar un volum imens de memorie ce nu mai poate fi integrat.
În mod uzual se operează cu logaritmul în bază 2 întrucât majoritatea unităților de calcul în virgulă flotantă utilizează baza 2 de numeratie pentru reprezentarea numerelor, fiind în felul acest mai ușor de obținut logaritmul. Astfel, considerând mantisa normalizată în domeniul [1,2), partea întreagă a logaritmului numărului este dată de chiar valoarea exponentului, iar partea fracționară de logaritmul mantisei. Această concatenare este posibilă deoarece logaritmul în baza 2 al mantisei normalizate este întotdeauna un număr subunitar pozitiv.
În plus, apropierea care există între valoarea logaritmului mantisei și valoarea părții fracționare a mantisei stă la baza metodelor de calcul a logaritmilor și antilogaritmilor binari.
Alte avantaje ale utilizării logaritmilor în baza 2 apar în cazul operațiilor de ridicare la pătrat și de extragere a rădăcinii pătrate unde sunt necesare doar o logaritmare, o deplasare la stânga sau la dreapta cu un bit și o antilogaritmare.
Prezentarea arhitecturii unui coprocesor având încorporată o unitate logaritmică pentru generarea logaritmilor și antilogaritmilor binari
Ca și procesorul, coprocesorul este un ansamblu complex de microcircuite care implementează funcții complexe.
Procesorul și coprocesorul lucrează în tandem. Procesorul citește și decodează instrucțiuni, calculează adresele operanzilor din memorie. Coprocesorul execută instrucțiuni în virgulă flotantă special codate, numite instrucțiuni escape ESC.
în consecință, în ciuda aparentei complexității, arhitectura coprocesorului este mult mai simplă decât cea a procesorului.
Cum procesorul și coprocesorul sunt două microprocesoare distincte (atât din punct de vedere hard, cât și soft), coprocesorul este capabil să lucreze, într-un mod asincron, în paralel cu procesorul. Când procesorul întâlnește o instrucțiune ESC (deci destinată NPX), el calculează adresa memoriei dacă un operand este specificat și trece imediat sa decodeze și să execute instrucțiunea următoare. Numai dacă aceasta nu este tot de tip ESC și care să utilizeze rezultatul instrucțiunii ESC în curs de execuție, cele două procesoare lucrează în paralel. Dar o codare îngrijită în asamblor (ținând cont că o operație în virgulă flotantă poate dura sute de CK) permite folosirea paralelismului pentru a obține performanțe îmbunătățite.
Arhitectura de bază a coprocesorului este descrisă în figura 1.2 .
1.2.1. Unitatea de control
Pe scurt, unitatea de control îndeplinește funcțiile: efectuează interfațarea cu magistrala și decodarea instrucțiunilor coprocesorului; accede și reține operanzii și opcodurile (cod mașină, cod executabil sau cod obiect) transmise apoi către NEU.
CU (unitatea de control) este responsabilă de sincronizarea coprocesorului cu procesorul. Sincronizarea este necesară când cele două procesoare trebuie să schimbe informații, să acceadă la rezultatele operațiilor sau să decodeze instrucțiuni.
Unitatea de control este legată la liniile de stare ale procesorului și este capabilă să aducă instrucțiuni în paralel cu procesorul, atunci când acesta le citește din memorie.
Coprocesorul trebuie să citească și să decodeze aceleași instrucțiuni ca și procesorul principal. Coprocesorul trebuie deci să emuleze precitirile și decodarea instrucțiunilor proprii procesorului asociat.
De exemplu: FPU trebuie să mențină o coadă de așteptare de precitire de aceeași mărime cu a procesorului, să o manipuleze în așa fel încât instrucțiunile să fie plasate sau retrase (cu ocazia inițializărilor) în același timp cu procesorul.
Instrucțiunile destinate coprocesorului sunt inserate direct în codul destinat procesorului. Astfel procesorul și FPU decodează împreună clasa de instrucțiuni ESC.
Procesorul decodează suficient instrucțiunile ESC pentru a diferenția pe cele care fac referință la memorie de cele care nu fac. Dacă se face referire la memorie, procesorul calculează adresa operandului și începe un ciclu de citire pe magistrală, dar ignoră data trimisă. Dacă nu se face referire la memorie, procesorul începe imediat să decodeze și să execute instrucțiunea următoare. Procesorul ignoră operațiile incluse în instrucțiunile ESC. Coprocesorul are următoarele atribuțiuni: în caz de acces la memorie, salvează adresa efectivă a operandului. Dacă un operand registru este specificat, valoarea acestui operand este salvată.
Dacă extragerea unui operand durează mai mult de un ciclu de magistrală (un transfer de date) din cauza mărimii sau aliniamentului său, CU a FPU ia controlul magistralei sistemului și transferă restul operandului.
La scrierea unui operand în memorie, după calculul adresei de către procesor, FPU salvează adresa și începe ciclii de scriere în memorie a operandului.
Există instrucțiuni ale FPU executate numai de CU (fără participarea NEU) care indică sau modifică starea coprocesorului: inițializează NPX, șterge fanioanele de excepție, stochează cuvântul de control într-un operand în memorie.
1.2.2. Unitatea de execuție numerică
NEU- este veritabilul coprocesor
Acesta efectuează, în virgulă flotantă, toate operațiile care acced la regiștrii numerici ai NPX sau prelucrează datele acestuia. Efectuează operații aritmetice, logice, transcedentale, furnizând și un anumit număr de constante matematice înscrise într-un ROM intern al cipului. Regiștri săi numerici conțin 80 de biți și utilizează formatul temporar. Datele sunt decupate în două părți și trimise pe două căi distincte:
– pe magistrala de mantise, 64 biți;
– pe magistrala semn/exponent pe 16 biți.
în afara stivei de regiștri, 4 biți suplimentari sunt adăugați magistralei de mantise rezultând 68 biți.
NEU conține circuite specializate precum sumatoare de exponenți sau mantise, decodoare programabile utilizate după nevoi pentru efectuarea unor funcții matematice specifice. Pe măsură ce instrucțiunile ESC sunt decodate, ele trec în secvențiatorul de instrucțiuni care programează unitățile cipului pentru realizarea funcției cerute.
Când execuția instrucțiunii ESC începe, NEU activează semnalul său BUSY (ocupat). Această stare este raportată în cuvântul de control al NPX sau chiar pe un pin extern al procesorului care poate fi supravegheat de procesorul principal. Acest semnal, combinat cu instrucțiunea WAIT a procesorului permite resincronizarea procesorului și coprocesorului arunci când este necesar.
CAPITOLUL 2
ALGORITMUL DE CONVERSIE DE FORMAT
FP-LNS și LNS-FP
Datorită lungimii cuvintelor de date, nu poate fi utilizată metoda simplă a citirii din memorie a logaritmului sau antilogaritmului fiecărui număr reprezentabil în format întrucât ar fi nevoie de o cantitate enormă de memorie necesar a fi integrată. Din acest motiv se va utiliza o tabelă implementată într-o memorie ROM care va furniza doar anumite valori ce vor reprezenta valori de corecție în metoda utilizată și între care se va realiza interpolare liniară. Calculul logaritmului și antilogaritmului utilizează aproximarea lui Mitchell însă mult îmbunătățită.
2.1. Conversia FP-LNS
Se efectuează partiția argumentului și memorarea doar a anumitor valori pentru reducerea cantității de memorie așa cum sugerează Maenner și, în plus se aplică o metodă de corecție care se bazează pe memorarea în anumite puncte și a valorilor derivatei funcției după care se realizează interpolarea.
Un număr x reprezentat în formatul FP IEEE754 în simplă precizie și cu exponentul cumulat cu un deplasament de 127 are expresia:
x = (-1)S(1 + OM) 2E-127 = (-l)5(l+y) 2E-127 (1)
Presupunând x pozitiv, notăm:
z =log2x = E-127 + log2(1+y) (2)
Semnul se procesează separat, exponentul rămâne neschimbat, deci singura conversie care trebuie făcută este de fapt calculul funcției Iog2(l+y) în care 0<y<l. Formatul LNS conține o parte întreagă identică cu exponentul E pe 8 biți și o parte fracționară dată de calculul lui Iog2{1+ y) pe 23 de biți.
Partiționăm mantisa y în două cantități: y1 conținând cei mai semnificativi 11 biți și y2 conținând cei mai puțin semnificativi 12 biți. Curba erorii de conversie, arătată în figura 2.1, poate fi discretizată în 2U = 2048 puncte ale căror proiecții pe abscisă sunt echidistantate. Valorile în aceste puncte ale funcției Iog2{1+y) -y sunt memorate în ROM ca și valori de corecție Ey, furnizate prin aplicarea adresei y1.
Următoarea aproximare, îmbunătățită care se poate face acum, este:
log2(1+y)≈y+Ey (3)
Totuși în afară de cele 2048 puncte care furnizează valoarea exactă a funcției (afectată doar de precizia reprezentării pe 23 de biți) celelalte valori rămân încă afectate de eroare. Reducerea în continuare a erorilor se face prin aplicarea interpolării liniare între puncte consecutive memorate. Pentru aceasta se memorează
în ROM și diferențele ΔEy dintre valorile învecinate ale funcției Iog2{1+y) -y. Obținem astfel următoarea aproximare:
Iog2(l+y) ≈y + Ey ± ΔEyx y2 (4)
A doua tabelă ROM este mult mai mică întrucât AE << E. Considerând pentru ΔE o reprezentare pe 12 biți, conversia completă între cele două formate se face printr-o citire în tabelele de memorie, două adunări pe 24 de biți și o înmulțire de 12x 12 biți. Sunt utilizate sumatoare rapide și un multiplicator utilizând sumatoare de tip CSA aranjate într-o structură de tip arbore Wallace.
2.2. Conversia LNS-FP
Procesul de antilogaritmare se tratează similar. Considerând x rezultatul antilogaritmării, se poate scrie:
x=2(E-127)+(0.M)=2(E-127) 20.M=2(E-127).2y (5)
în care E reprezintă partea întreagă în format LNS, iar M reprezintă partea fracționară. Se face următoarea aproximare:
x=2(E-127)∙2y ≈2(E-127)(1+y) (6)
Se observă că și în acest caz mantisa M în format FP este același lucru cu partea fracționară M din format LNS. Cifra 1 este bitul implicit din formatul FP. Această primă aproximare dă o eroare de conversie de valoare (1+y) – 2y a cărei curbă de variație este dată tot în figura 2.1; y se partiționează în același mod și se utilizează o memorie ROM pentru a memora eroarea de conversie Ey în 2048 puncte precum și diferența ΔEy . Rezultatul final al conversiei este:
2y≈(l+y)-Ey ± ΔEy× y2
Pe baza celor arătate mai sus se prezintă algoritmii de conversie FP-LNS și LNS-FP în figura 2.2.
În figura 2.2, X și Y sunt cei doi operanzi în format FP, mx și my sunt mantisele normalizate, mxl și myl sunt cantitățile cele mai semnificative din mx și my , mx2 și my2 sunt cantitățile cele mai puțin semnificative din mx și my, mx′ și my′ sunt părțile fracționare ale operanzilor în format LNS, ex este exponent FP, ex este parte întreagă în format LNS, sx și sx′ sunt biți de semn în FP respectiv LNS. Așa cum se vede în figura 2.2 sunt necesare 2 memorii de tip ROMA și o memorie de tip ROMC ce reprezintă un volum total de memorie de 2 x 33 x 2k + 33 x 2k = 198 kbiți. într-o tehnologie CMOS 0,8 µm această cantitate de memorie se poate integra în aproximativ 3 mm2.
Eroarea maximă pe care o introduce conversia de format este sub 3 x IO-7.
2.3. Organizarea pe nivele pipe-line a structurii logice care implementează operațiile de înmulțire și împărțire
Arhitectura unității logaritmice de calcul este dată în figura 2.3. Această unitate este organizată într-o structură "pipeline" pe 6 nivele. Liniile îngroșate de la intrarea și ieșirea fiecărui nivel sunt latch-urile necesare funcționării structurii "pipeline". Informația care se prelucrează în manieră asincronă în fiecare etaj pe diversele căi, este sincronizată cu ajutorul acestor latch-uri.
Memoria ROMA include două memorii identice ce sunt accesate de cei doi operanzi încărcați în latch-urile de la intrarea primului nivel. Tot în primul nivel sunt două blocuri identice care extrag deplasamentul din exponenții celor doi operanzi. Aceste blocuri sunt de fapt două sumatoare care adună la valoarea pozitivă a exponentului cu deplasament pe -127 reprezentat în complement de 2. Sumatoarele utilizate sunt sumatoare cu selecția trasportului. Timpul în care se realizează adunarea a două numere de 8 biți nu este critic și deci s-a preferat utilizarea unui sumator de viteză medie care însă nu ocupă suprafață mare pe cip.
În nivelul 2 sunt prezente cele două multiplicatoare de 12 x 12 biți implementate într-o arie de înmulțire utilizând sumatoare cu salvarea transportului (CSA) și utilizând un arbore Wallace pentru compresia coloanelor. Ele furnizează cantitățile de tip ΔEy×y2 necesare în interpolare. Tot în același nivel are loc calculul sumelor de tîp y+Ey pe 24 de biți. Pentru aceasta sunt folosite două sumatoare cu anticiparea transportului, (CLA) adică două sumatoare rapide. Ele vor ocupa o arie mai mare pe cip, însă prezența lor este necesară pentru a nu se obține întârziere în acest nivel, ținând cont de lungimea mare a cuvintelor ce se adună.
În nivelul 3 sunt folosite două sumatoare cu transport anticipat (CLA) pe 24 biți, alese de acest tip din același considerent ca și în nivelul anterior. Cantitatea ΔEy vine cu semnul său, deci pentru o valoare negativă a sa are loc conversia in complement de doi. Rezultatul acestor adunări va fi întotdeauna pozitiv întrucât ΔEy este o cantitate mică în comparație cu y+Ey .în acel»și nivel se găsește și unitatea aritmetico-logică, care poate efectua operațiile de adunare
și scădere sau deplasare
necesare pentru realizarea operațiilor de înmulțire, împărțire, extragere de radical, ridicare la putere sau logaritm în bază n. Acumulatorul utilizat are o structură foarte eficientă care permite calculul unor produse de forma :
Aceasta se face fără a mai fi nevoie de conversia LNS-FP pentru fiecare termen, ci doar pentru rezultatul final. Aparent, acest nivel ar duce la strangularea structurii "pipeline" deoarece în același nivel se găsesc sumatoarele care furnizează rezultatul final al conversiei FP-LNS cât și sumatorul din ALU pe aceeași lungime de biți (24). Totuși timpul de parcurgere al nivelului 3 nu este critic deoarece sumatoarele fiind cascadate, se pot utiliza celule de sumatoare cu salvarea transportului (CSA) ca și într-o arie de înmulțire. Astfel transportul se propagă în jos și la stânga, structura fiind optimizată folosind tehnica de anticipare a transportului final. întârzierea este doar cu puțin mai mare decât timpul necesar unei singure adunări.
În nivelul 4 este accesată memoria ROMC care va furniza cantitățile Ey si ΔEy necesare pentru antilogaritmare.
Nivelul 5 al structurii conține un multiplicator identic cu cele necesare la logaritmarea operanzilor, un circuit de scădere pentru calcul expresiei (1+ y)-E precum și unitatea de însumare a deplasamentului la partea întreagă a rezultatului operației efectuate, în format LNS. Scăzătorul este de fapt un sumator care face conversia în complement de 2 a scăzătorului Ey și îl adună la 1+y obținându-se o valoare evident pozitivă. Sumatorul este de tip CLA (pe 24 de biți). Exponentul cu deplasament s-a calculat folosind un sumator pe 8 biți cu selecția transportului.
În nivelul 6 are loc însumarea finală folosind tot un sumator CLA pe 24 de biți. Astfel, la ieșirea ultimului latch din structura pipe-line apare rezultatul operației în format FP-IEEE754.
CAPITOLUL 3
PREZENTAREA DE SUMATOARE RAPIDE PERFORMANTE
3.1. Prezentarea sumatorului cu transport anticipat CLA
Un sumator complet trebuie să genereze suma a doi biți de pe același nivel ținând cont de transportul de la nivelul anterior și să genereze un transport către nivelul superior. Având două numere binare A și B de câte n biți, va rezulta, prin suma acestora numărul binar S.
(3.1)
(3.2)
unde a., b. sunt 2 biți de la nivelul i, si este bitul i al sumei, iar ci este transportul de la nivelul inferior.
Folosind:
(3.3)
(3.4)
(3.5)
rezultă :
(3.6)
Cu ajutorul relațiile de mai sus, vom construi două blocuri conținând circuite logice cu scopul efectuării operației de sumare, interesându-ne în primul rând reducerea nivelurilor logice. Această reducere a timpului de propagare se va face cu prețul creșterii ariei pe chip necesară integrării celor două blocuri A și B. Această structură prezintă și avantajele legate de reproductibilitatea celulelor componente A și B, precum și faptul că porțile logice utilizate au doar câte două intrări.
Structura la nivel de poartă a celulei de rang * a unui sumator complet este prezentată în figura 3.1.:
Fig. 3.1. Structura unui sumator complet
Un sumator fiind de fapt un circuit combinațional, bitul i al sumei poate fi scris (pentru un sumator complet):
(3.7)
în care ai și bi sunt biții numerelor ce se adună, iar ci este transportul generat de sumatorul pe 1 bit anterior. Dacă pentru obținerea lui Si este nevoie de 2 nivele logice (produse și apoi sumă), ținând cont că transportul se propagă de la o celulă la alta, e nevoie de 2n nivele logice. Reducerea numărului de nivele se poate face utilizând următoarele relații:
in care si (3.8)
Făcînd înlocuirile din aproape în aproape, obținem:
(3.9)
În concluzie avem nevoie de 1 nivel logic pentru a forma p și g, 2 nivele pentru a forma transportul cu relația anterioară și 2 nivele logice pentru sumă. în total rezultă 5 nivele logice. Dezavantajele structurii obținute constau în faptul că sunt necesare porți cu foarte multe intrări, semnalul pn+1, de exemplu, trebuie să apară la intrarea a n porți ȘI, rezultînd astfel o structură neregulată și foarte multe fire de legătură.
Această idee totuși va fi folosită pentru a se construi un sumator care va avea log2n nivele logice, deci mult mai puține decât un sumator cu propagarea transportului și în plus o structură mai simplă și mai regulată.
Ideea constă în construirea semnalelor auxiliare g șip în pași. Există deja
(3.10)
ceea ce înseamnă că un transport este generat din poziția 0 fie datorită faptului că poziția în sine (prin ao și b0=1) generează transport, fie datorită faptului că un transport anterior se poate propaga peste această poziție.
Similar unde si (3.11)
Gol arată că blocul format din primii doi biți generează un transport, iar pol arată că prin prin acest bloc se poate propaga un transport anterior, în general, considerând i<j<k putem scrie următoarele relații:
. (3-12)
(3.13)
(3.14)
în care Pii = pi si Gii = gi
Relația (3.13) se interpretează astfel: un transport este generat la ieșirea blocului format din biții de la i la k inclusiv, dacă partea superioară a acestui bloc (de j+1 la k) generează un transport sau dacă există un transport generat de partea inferioară (cuprinzând biții de la i lay) care se poate propaga prin partea inferioară.
Pe baza acestor considerații se prezintă o variantă practică de sumator CLA. Sumatorul constă din două părți. Prima parte (fig.3.2) calculează diverse valori P și G din pi și gi utilizând ecuațiile (3.13), (3.14).
Celulele de tip 1 vor calcula valorile gi și pi din ai și bi, iar celulele de tip 2 interconectate într-o structură de tip arbore, grupate două câte două, vor calcula perechile corespunzătoare (P,G).
A doua parte folosește aceste valori P și G pentru a calcula toate transporturile cu ajutorul ecuației (3.12).
Cele două tipuri de celule pot fi alăturate într-o structură unică așa cum se observă în fig.3.3. Astfel, într-un sumator arbore de tip CLA, numerele ce
trebuie adunate intră în partea de sus a arborelui, curg în jos pentru a se combina
cu c0 și apoi informația curge în sus pentru a se calcula biții sumei.
Numărul de celule utilizate este 2n (inclusiv pentru cea necesară pentru generarea lui c8), deci de două ori mai multe decât un sumator clasic, însă din punct de vedere al spațiului ocupat pe cip suprafața ocupată este egală cu n x log2n celule dintr-un sumator clasic.
Concluzia care se desprinde totuși aici este că, printr-o mică investiție în mărimea structurii se obține o creștere substanțială a vitezei comparativ cu un sumator cu propagare din aproape în aproape a transportului. Acest lucru este cu atât mai pregnant cu cât numărul n de biți ai numerelor ce trebuie adunate este mai mare.
Există mai multe tipuri de sumatoare de tip CLA în funcție de tehnologia utilizată. De exemplu dacă fiecare nod al arborelui ar avea trei intrări în loc de două, atunci înălțimea arborelui ar descrește de la log2n la log3n, dar și celulele ar fi mai complexe. Pentru tehnologii în care propagarea semnalelor este rapidă, o proiectare hibridă între un sumator cu propagarea transportului și un arbore CLA, ar fi un bun compromis.
Structura la nivel de poartă a blocurilor de tip A și B este prezentată în figurile 3.4. si 3.5.
Fig.3.4 Structura blocului A
Fig.3.5 Structura blocului B
3.2. Prezentarea sumatorului cu selectarea transportului CSA
Sumatorul cu selectarea transportului funcționează după următorul principiu: două adunări sunt realizate în paralel pentru fiecare bloc al sumatorului, (mai puțin cel mai puțin semnificativ) una presupunînd transportul de intrare al blocului ca fiind 0 alta presupunându-1 1. Când transportul de intrare este în final cunoscut, rezulta suma corectă. în fig. 3.6 este construit un sumator pe 19 biți, format fiind din 4 blocuri. Dacă un bloc cel puțin semnificativ necesită k unități de timp pentru a calcula k biți și o unitate de timp pentru a furniza "carry in" al blocului următor din două semnale "carry out" disponibile, rezultă că pentru a optimiza operația de adunare e necesar ca fiecare bloc următor să fie mai mare cu 1 bit decât anteriorul.
Utilizarea unuia sau altuia dintre tipurile de sumatoare sau a uneia sau a alteia dintre variante din cadrul aceluiași tip este strict dependentă de tehnologia utilizată. Astfel un sumator cu selectarea transportului funcționează bine în tehnologiile în care un semnal poate comanda multe multiplexoare, un sumator cu selectarea transportului este atractiv în cazurile în care operanzii sunt reprezentați pe un număr mare de biți.
în tabelul următor sunt prezentate comparativ timpii necesari de calcul a două numere de n biți și spațiul ocupat pe cipul de siliciu.
3.3. Circuite rapide de adunare/scădere
De-a lungul timpului au fost studiate și mereu îmbogățite tehnicile de adunare a două numere cu semne diferite sau de scădere a două numere de același semn, prin utilizarea reprezentării în cod complement de doi și folosirea apoi a unui sumator rapid. Se face precizarea că adunarea a două numere pozitive reprezentate în cod complement de doi sau în cod mărime-semn este aceeași. Asta înseamnă că poate fi folosit același sumator atât pentru adunare cât și pentru scădere, și bineînțeles este necesar un circuit care să convertească oricare din cei doi operanzi în cod complement de doi. Problema care apare în acest caz este că dacă rezultatul se dovedește a fi negativ, el este reprezentat în cod complement de doi și trebuie reconvertit în cod mărime-semn. Această conversie duce la creșterea timpului de calcul, precum si la utilizarea unei componente hard suplimentare.
O altă variantă de implementare pentru un sumator/scăzător constă în utilizarea unui sumator pentru adunarea a două numere de același fel reprezentate în cod mărime-semn și separat, utilizarea unui circuit de scădere specializat. Problema care apare aici constă în aceea că dacă rezultatul va fi negativ, el este reprezentat în cod complement de doi, și deci trebuie reconvertit. Este necesară deci o componentă hard adițională și deci crește timpul de calcul. Timpul de calcul ar putea fi scurtat, dacă se folosesc două circuite de scădere ce calculează simultanA – B și B-A, după care se selectează rezultatul pozitiv ce corespunde reprezentării în cod mărime-semn. Această variantă este însă costisitoare din punct de vedere al suprafeței
ocupate pe cip. Ambele variante descrise aici prezintă dezavataje importante.
Tehnica ce va fi prezentată în continuare oferă performanțe superioare comparativ cu implementările anterioare și se bazează pe următoarele două relații:
(la.A se adună B reprezentat în complement de 2) (3.15)
(3.16)
Pentru a realiza operația de scădere, circuitul sumator/scăzător din figura 3.7 calculează simultan și. Dacă .este pozitiv sau zero, atunci el este selectat ca și rezultat al operației. Dacă .este negativ, înseamnă că este pozitiv, și deci rezultatul se obține prin selectarea lui și inversarea biților lui.
întrucât atât A cât și B pot fi negative se utilizează inversoare pe ambele căi. Inversoarele sunt selectate de cele două semnale de control. Selecția rezultatului final și a circuitului de inversare de la ieșire (dacă este cazul) este controlată de semnul rezultatului obținut la ieșirea sumatorului cu transport inițial. Se observă că acest circuit este similar cu sumatorul cu selecția transportului, cele două circuite funcționând după același principiu.
Cele două sumatoare utilizate în această tehnică pot fi de diverse tipuri în funcție de lungimea operanzilor. Pentru scăderea exponenților de 8 biți, în scopul alinierii mantiselor, se vor utiliza sumatoare cu selecția transportului, cuprinzând două secțiuni de câte patru sumatoare complete, cascadate. Pentru adunarea/scăderea mantiselor pe 24 de biți, se vor utiliza sumatoare cu transport anticipat.
CAPITOLUL 4
MULTIPLICATOARE RAPIDE CARE UTILIZEAZĂ SUMATOARE CU SALVAREA TRANSPORTULUI
Primul multiplicator care va fi prezentat în continuare este de tipul multiplicator simplu de tip arie de înmulțire. în figura 4.1 este prezentat un astfel de multiplicator, fiind dat exemplul unui multiplicator pe 8 biți. Acesta utilizează 6 sumatoare cu salvarea transportului (CSA) și un sumator cu propagarea transportului (CPA). Așa cum se observă din figură, fiind nevoie de 8 adunări pentru a calcula produsul, latența nu a fost substanțial îmbunătățită față de cazul clasic. Totuși, un avantaj important se poate remarca: structura acestui multiplicator permite utilizarea tehnicii pipe-line, ceea ce mărește capacitatea totală de trecere a informației.
Așa cum se observă în figura de mai sus un astfel de multiplicator este relativ ușor de implementat datorită faptului că sumatoarele cu salvarea transportului utilizate sunt identice. Problemele care pot apărea în acest caz sunt legate de interconexiunile dintre blocurile componente. O asfel de structură
ocupă siliciu pe chip importantă, ceea ce reprezintă un dezavantaj important.
Tehnologia din 1990 nu a făcut însă posibilă implementarea într-un singur chip a acestui multiplicator împreună cu hardul necesar pentru realizarea celorlalte operații aritmetice. Astfel, proiectanții au preferat să utilizeze un aranjament în doi pași, așa cum se observă în figura 4.2.
În primul pas, prin această arie se introduc 4 biți ai înmulțitorului B. Rezultatul obținut la ieșirea celui de al patrulea CSA este întors la intrare, în arie, pentru a se combina cu următorii 4 biți ai înmulțitorului. Rezultatul celui de al doilea pas este apoi furnizat la intrarea sumatorului cu propagarea transportului (CPA).
Această proiectare, deși avantajoasă din punctul de vedere al spațiului ocupat pe chip, pierde proprietatea de a permite utilizarea tehnicii pipe-line. Așa cum se observă din figura de mai sus, în acest caz numărul sumatoarelor cu salvarea transportului utilizate se reduce la jumătate față de cazul considerat anterior. însă o problemă suplimentară care apare în acest caz o reprezintă necesitatea introducerii în structura hard a multilpicatorului a unor circuite de multiplexare care au rolul de a selecta semnalele aplicate sumatoarelor în funcție de etapa de calcul. Aceste multiplexoare introduc și ele la rândul lor o anumită întârziere ceea ce reprezintă un dezavantaj față de cazul anterior, unde semnalele de la intrarea sumatoarelor se propagă direct, fără nici o întârziere. Aceste
circuite suplimentare ocupă o arie de siliciu pe chip suficient de mică.
În continuare este prezentată o arie de înmulțire care cuprinde două secțiuni ce lucrează în paralel. Fiecare flux de informații trece prin doar jumătate de sumatoare, și în consecință, viteza de calcul este de aproape două ori mai mare decât a multiplicatorului din figura 4.1.
Multiplicatorul prezentat în figura 4.3 mai este denumit multiplicator par/ impar și este larg utilizat în VLSI atât datorită vitezei sale, cât și structurii regulate pe care o oferă. Acest tip de multiplicator utilizează un număr de sumatoare cu salvarea transportului mai mare decât multiplicatorul din figura 4.2 dar mai mic decât cel din figura 4.1
Timpul de propagare pentru acest multiplicator este îmbunătățit față de cazurile prezentate până acum, acest lucru datorându-se faptului că informația trece prin doar jumătate din sumatoare. Un dezavantaj important al acestui tip de
multiplicator îl reprezintă faptul că o implementare în siliciu se face destul de greu datorită structurii neregulate a acestuia.
Un alt aranjament care permite o creștere suplimentară a vitezei de calcul este cel prezentat în figura 4.4, cunoscut sub numele de arbore Wallace. Dezavantajul principal al acestui multiplicator constă în implementarea mai dificilă în VLSI, întrucât structura sa nu este așa de regulată cum pare la prima vedere. Arborele Wallace este un multiplicator de tip logn. El utilizează deci relative porți, dar layout-ul său este complicat datorită numeroaselor ramificații și intersecții.
Comparând diferitele tipuri de multiplicatoare prezentate aici, se pot desprinde următoarele observații:
1. Utilizarea unei arii de multiplicare permite obținerea unei latențe mici, deoarece aria este un circuit combinațional. Semnalele "curg" prin aceasta fără a fi nevoie de semnal de clock. Deși structura din figura 4.2 necesită încă clock-ul, timpul necesar pentru a trece prin k arii poate fi mai mic decât k perioade de clock necesare într-o structură clasică.
2. Ariile de multiplicare se pretează la îmbunătățiri ulterioare care duc la o creștere semnificativă a vitezei de calcul.
CAPITOLUL 5
UNITATEA LOGARITMICĂ DE CALCUL PENTRU
EFECTUAREA OPERAȚIILOR DE
ÎNMULȚIRE SI ÎMPĂRȚIRE
Atașarea unei unități aritmetice specializate procesorului principal, conduce la creșterea semnificativă a vitezei de lucru a sistemelor de calcul utilizate în aplicații profesionale sau științifice. în proiectarea unui astfel de coprocesor aritmetic, principala preocupare se referă la micșorarea timpului în care se execută diversele operații matematice, folosind structuri hard performante care să poată fi însă implementate fără consum excesiv de arie pe cipul de siliciu. Soluția adoptată este deci puternic dependentă de tehnologia disponibilă în VLSI.
În ultimul timp s-au impus două tipuri de coprocesoare: logaritmice și în virgulă flotantă. Tipul coprocesorului este dat de modul în care sunt reprezentate numerele în interiorul său. Atunci când sunt cerute simultan, un domeniu larg de reprezentare a numerelor, precum și precizie ridicată, se adoptă de cele mai multe ori sistemul de reprezentare a numerelor în virgulă flotantă (FP). Totuși comparativ cu aritmetica în virgulă fixă, operațiile în virgulă flotantă sunt mai complexe și inevitabil mai lente.
Creșterea densității de integrare a permis dezvoltarea ca și alternativă și a unităților de calcul logaritmice. Așa cum s-a arătat în Capitolul!, proprietățile aritmeticii logaritmice permit dezvoltarea unor algoritmi de calcul competitivi, care în cazuri particulare oferă o viteză de operare mai mare decât sistemele în virgulă flotantă. în același timp, precizia pe care o oferă sistemul LNS (Logarithm Number System) în reprezentarea și manipularea numerelor, este cu ceva mai mare decât a sistemului FP, pentru aceeași dimensiune a formatului. Singura deficiență a procesoarelor LNS existente este că deocamdată nu permit decât calcule în simplă precizie în cel mai bun caz.
Deocamdată, cu tehnologia actuală nu pot fi implementate unități de calcul logaritmice care să lucreze în dublă precizie datorită faptului că acest lucru presupune un volum imens de memorie ROM, întrucât aria circuitelor crește exponențial cu numărul de biți ai cuvintelor de date. Totuși, rămân foarte multe aplicații pentru care este suficientă simpla precizie și care pot fi rulate cu mai mare viteză folosind un astfel de procesor aritmetic. în același timp și precizia pe care o oferă sistemul LNS este cu ceva mai bună decât sistemul FP la o aceeași lungime de format.
Astfel, într-o reprezentare FP cu F biți în mantisă plus un bit implicit, eroarea în cel mai defavorabil caz este:
εFP=2-F-1 (5.1)
Într-o reprezentare LNS cu F biți fracționări, eroarea în cel mai defavorabil caz este următoarea:
εLNS=exp(2-F-1-1)≈ln2×2-F-1 ≈2-F-1,528 (5.2)
Se observă că formatul LNS asigură aproximativ jumătate de bit suplimentar de precizie comparativ cu formatul FP.
În Capitolul 2 a fost prezentată o metodă de realizare a logaritmării și antilogaritmării. Determinarea logaritmului (similar pentru antilogaritm) prin citirea directă din memoria ROM nu se poate face decât pentru cuvinte de maxim 12-15 biți deoarece aria circuitelor crește exponențial cu numărul de biți. Peste această cifră se pot utiliza structuri logice celulare (SLC), care pot genera logaritmul oricât de precis și a căror arie crește doar cu pătrarul numărului de biți ai mantisei, dar care au dezavantajul unui timp relativ mare de producere a rezultatului.
Având în vedere că operația de împărțire, într-o unitate aritmetică de tip FPU, durează de 4-5 ori mai mult decât operația de înmulțire (împărțirea nu poate fi implementată cu structuri asincrone ca și înmulțirea, deoarece stabilirea biților catului presupune decizie după deplasare – scădere) s-a conceput un procesor hibrid în virgulă flotantă ce are încorporată o unitate de calcul logaritmică. Premisele care au făcut posibil acest lucru sunt următoarele:
– procesoarele logaritmice sunt foarte eficiente în operații ca înmulțirea, împărțirea, ridicarea la putere, extragerea de radical, logaritmarea sau antilogaritmarea, dar sunt lente în operații ca adunarea și scăderea.
– procesoarele în virgulă flotantă includ circuite rapide de înmulțire, dar cu prețul unui consum excesiv de arie pe cipul de siliciu. împărțirea și toate celelalte operații enunțate mai sus sunt mult mai lente decât adunarea și scăderea în virgulă flotantă.
Astfel procesorul care va fi descris în continuare realizează adunarea și scăderea în virgulă flotantă, în simplă precizie (mantisa reprezentată pe 23 de biți, exponentul reprezentat pe 8 biți și 1 bit de semn), precizie suficientă în multe aplicații. Toate celelalte operații (înmulțire, împărțire, logaritmare, antilogaritmare) vor fi executate de aceeași unitate de calcul, însă prin intermediul unor unități de logaritmare și a unei unități de antilogaritmare. Acest procesor prezintă și avantajul eliminării timpului de conversie din cod complement de 2 înapoi în cod mărime-semn în cazul obținerii diferenței negative.
Tema proiectului se referă concret la realizarea unei unități logaritmice care să permită realizarea rapidă a operațiilor de înmulțire și împărțire. Această unitate logaritmică primește 2 operanzi la intrare reprezentați în format virgulă flotantă (X și Y) și furnizează rezultatul Z tot în format virgulă flotantă. Unitatea implementează în ansamblul ei următoarele 2 relații:
z = x x y = antilog(logx + logy) (5.3)
z = x : y = antilog(logx – logy) (5.4)
Schema bloc a unității de calcul logaritmice este următoarea:
Așa cum se observă din figura 1 biții de semn ai operanzilor se prelucrează separat. Deoarece reprezentarea numerelor în virgulă flotantă este făcută în cod mărime – semn (0 corespunde unui număr pozitiv, 1 corespunde unui număr negativ) rezultă că bitul de semn al rezultatului poate fi obținut prin implementarea funcției logice:
(5.5)
Fig. 5.2
5.1. Unitățile de logaritmare și antilogaritmare
Cele două subunități de logaritmare sunt identice. Schema bloc internă a acestora este prezentată în figura 5.3.
Schema implementează relația:
log2(1+y)≈y+Ey ±ΔEy×y2 (5.6)
în care:
• y reprezintă mantisa operandului pe 23 biți;
• Ey reprezintă valoarea de corecție (memorată în 2048 de puncte) pentru funcția Iog2(l + y)-y1 în care yl reprezintă un număr fracționar ce conține după virgulă cei mai semnificativi 11 biți ai mantisei. Aceste valori sunt memorate într-o tabelă ROM care primește ca și biți de adresă cei mai semnificativi 11 biți ai mantisei y. Pentru a determina numărul de biți diferiți de 0 pe care poate fi reprezentat Ey în simplă precizie (maxim 23 biți) se calculează maximul funcției:
f(y)=log 2 (1+y) -y (5-7)
Astfel, calculăm rădăcina ecuației
f′(y)=0 (5.8)
f′(y)=[log2(1+y)-y]′=0 (5.9)
(5.10)
Pentru această valoare a lui y funcția f(y) are valoarea maximă f(y) = 0,087 și care reprezentat ca număr fracționar binar pe 23 de biți prezintă 3 zerouri după virgulă. Așadar, lățimea cuvintelor memorate este 23 – 3 = 20 biți.
• ΔEy reprezintă diferențele dintre valorile învecinate ale funcției f(y) și se memorează la fel ca și Ey într-o tabelă de memorie ROM, care admite la intrare același cuvânt de adresă pe 11 biți. Această a doua tabelă de memorie este mult mai mică decât cea corespunzătoare lui Ey întrucât ΔEy <<Ey si deci numărul de zerouri după virgulă în reprezentarea fracționară binară a lui ΔEy este mult mai mare decât 3. Pentru a determina acest număr de zerouri (care nu mai este necesar a fi memorate) calculăm maximul funcției f′(y) pe intervalul [0,1]. Așa cum se observă din figura 2.1 cel mai mare număr binar fracționar ΔE pe 23 de biți se obține la cea mai mică adresă diferită de 0, și anume aceasta este 00000000001. Aceasta este (în sistemul de numerație binar):
log2 (l + 0,00000000001)- 0,00000000001 = 0,00000000000101100100111
Deci lățimea cuvintelor memorate în cea de-a doua tabelă de memorie ROM este 23 – 11 = 12 biți. 11 reprezintă numărul de zerouri după virgulă.
• y2 este privit ca un număr fracționar binar cu 12 biți după virgulă și sunt cei mai puțin semnificativi 12 biți ai mantisei.
Termenul ΔEy × y2 este obținut cu ajutorul unui multiplicator de 12 x 12biți, astfel că numărul binar de la ieșirea acestuia va avea 24 de biți. Deoarece numărul binar fracționar y2 are 12 biți după virgulă iar numărul binar fracționar ΔEy are 23 de biți după virgulă, din care primii 11 sunt zerouri,rezulta ca la ieșirea multiplicatorului vor fi reținuți doar cei mai semnificativi 12 biți. Astfel că numărul care va fi furnizat la o intrare a sumatorului va fi deplasat cu 23 – 12 = 11 poziții spre dreapta față de celălalt operand (ΔEy).
Acest prim sumator realizează calculul expresiei Ey ± ΔEy × y2. Semnul celui de-al doilea termen este memorat în prima secțiune a memoriei. Astfel bitul atașat lui va avea valoarea 0 (va corespunde semnului +) pentru adresele de la 0 până la adresa 980 în zecimal, și valoarea 1 de la adresa 981 la adresa 2048 în zecimal.
Schema bloc a acestui sumator este prezentată în figura 5.4. Ținând cont de faptul că începând de la adresa 980 în zecimal circuitul de fapt trebuie să realizeze operația de scădere, s-a introdus blocul inversor și blocurile multiplexoare MUX1și MUX2, care permit realizarea operației A- B = A + + l, în care A este termenul Ey iar B este termenul ΔEy × y2. Multiplexoarele sunt comandate de bitul de control care este furnizat de către memorie. Multiplexorul
2 asigură transportul inițial 0 respectiv transport inițial 1 în funcție de tipul operației selectate (adunare respectiv scădere).
Calculul final al expresiei (5.6) și anume y + (Ey± ΔEy ×y2) se face cu un al doilea sumator tot pe 23 de biți. Pentru creșterea vitezei de calcul a celor două însumări consecutive am utilizat un bloc de sumatoare cu salvarea transportului și un sumator final de tip CLA, ceea ce micșorează de aproape două ori timpul de calcul. Astfel schema de însumare devine:
În acesta schemă bloc C reprezintă y – mantisa pe 23 de biți a numărului ce trebuie logaritmat.
Blocul CSA este format din 23 sumatoare complete pe un bit, independente. Un sumator complet pe un bit are următoarea reprezentare.
Bitul de sumă și cel de transport se obțin după parcurgerea a 4 nivele logice, respectiv după parcurgerea a două unități de timp de propagare (unitatea de timp de propagare corespunde propagării printr-o poartă SAU – EXCLUSIV) așa cum se observă în figura 3.1.
Astfel blocul CSA acceptă la intrare 3 operanzi de 23 de biți și va produce 23 de perechi de biți memorați în secțiunile pentru sumă și transport. Deoarece la nivelul unui sumator complet, din cele 23, adunarea celor 3 biți este independentă de biții de rang inferior sau superior, întreaga operație va dura 2 unități de timp de propagare.
De exemplu adunarea următoarelor 3 numere (1111, 1010, 0111) cu un bloc CSA pe 4 biți este prezentată în figura următoare:
Numerele A, B și C care se aplică la intrările CSA au 23 de biți, numărul A are primii 3 biți după virgulă zero, numărul B are primii 11 biți după virgulă zero, astfel că, în realitate nu este nevoie de 23 de sumatoare complete, putând fi folosite 11 sumatoare incomplete pe un bit. Rezultatul final al adunării celor 3
operanzi reprezentați pe 23 de biți se obține cu ajutorul unui sumator final de tip CLA care adună cuvintele sumă (S) și transport (Ci +1).
Multiplicatorul 12×12 este un multiplicator rapid care utilizează sumatoare cu salvarea transportului și grupează produsele parțiale într-un arbore binar de tip Wallace. Circuitul poate fi implementat ușor în layout având în vedere numărul relativ mic al operanzilor, și anume 12, necesitând doar 2 straturi de metalizare. Viteza mare de calcul se obține pe de o parte datorită propagării doar pe verticală a transportului în aria de înmulțire (ca și în cazul celor 2 sumatoare cascadate descrise anterior), iar pe de altă parte datorită calculării simultane a mai multor produse parțiale intermediare, avantaj oferit de structura în arbore Wallace. Schema bloc a acestui multiplicator este dată în figura 5.8:
Fig. 5.8
Ultima operație de însumare a cuvintelor sumă finală și transport final se realizează cu un sumator rapid cu generarea anticipată a transportului. Din punct de vedere al timpului de propagare multiplicatorul este de tip logn și asigură cel mai scurt timp posibil de generare a rezultatului. Structura multiplicatorului și a elementelor componente este prezentată în Anexa1
Pentru simularea funcționării multiplicatorului cu ajutorul programului MSim vom folosi rezultatele obținute de la programul pentru realizarea și simularea lay-out-ului (programul Msk). Lucrând într-o tehnologie de 0,5 µm rezultă un timp de propagare printr-o poartă logică de 0,35 ns. Multiplicatorul
este constituit din 880 de porți logice. în urma efectuării simulării pentru cazurile cele mai defavorabile s-a obținut un timp de propagare maxim de 12 ns, așa cum se observă în diagrama următoare.
Întrucât operația de înmulțire este cea mai lentă din cadrul unității de logaritmare, și datorită faptului că, utilizând un multiplicator de tip arbore Wallace se obține un timp pentru efectuarea operației de înmulțire de numai 12 ns, rezultă că întreaga unitate de logaritmare va fi performantă. în structura unității de logaritmare mai sunt incluse și circuite de însumare, multiplexoare, inversoare și o memorie ROM. Timpii de propagare prin sumatoare, multiplexoare și inversoare sunt extrem de reduși datorită faptului că aceste circuite sunt constituite în principal din porți logice elementare, și deci numărul de nivele logice necesare a fi parcuse de către semnale este redus. Memoria ROM este implementată și ea într-o tehnologie de 0,5 µm, și ea se consideră că este implementată în chip, alături de celelalte componente ale structurii de logaritmare. Datorită acestui fapt timpii de acces la memoria ROM vor fi și ei reduși. Vom considera acești timpi de numai 7 ns.
În continuare a fost simulată cu ajutorul programului MSim întrega structură de logaritmare. Pentru aceasta am folosit un fișier de stimuli externi care să furnizeze la intrarea unității de logaritmare operandul X, și în plus, fișierul va oferii și datele corespunzătoare memoriei ROM (numerele binare corespunzătoare valorilor Ey și respectiv ΔEy).
Rezultatele simulării unității de logaritmare sunt prezentate în diagrama următoare.
Așa cum se observă din diagramă, obținem un timp de propagare prin structură de aproximativi 8 ns. La acest timp se mai adaugă 7 ns, corespunzător timpului de acces la memoria ROM. Deci întreaga unitate de logaritmare execută operația de logaritmare a operandului X într-un timp de 25 ns.
În diagramă semnalul MX reprezintă mantisa operandului X, iar semnalele VH și VC sunt cuvintele de date provenite de la memoria ROM. Semnalul de selecție SELLOGl reprezintă bitul cel mai semnificativ al termenului Ey care este memorat în memoria ROM, și care determină semnul expresiei ΔEy ×y2.
Schema electronică a unității de logaritmare, precum și elementelor ce o compun este prezentată în Anexa1. Layout-ul porților logice ce intră în componența întregii structuri este prezentat în Anexa2. Unitatea de logaritmare este constituită din 1190 de porți logice.
Întrucât ambele unități de logaritmare sunt identice din punctul de vedere al structurii lor, nu vom mai prezenta unitatea de logaritmare corespunzătoare operandului Y.
Unitatea de antilogaritmare este similară cu unitățile de logaritmare datorită faptului că procesul de antilogaritmare se tratează în mod analog. Singura deosebire care apare aici este că e necesar a se memora în memoria ROM termenul –Ey și nu termenul Ey ca în cazul unităților de logaritmare. Timpul de calcul necesar pentru a fi efectuată operația de antilogaritmare este deci de 25 ns.
Aceste circuite de logaritmare respectiv de antilogaritmare sunt performante. O îmbunătățire a acestor perfomanțe poate fi obținută prin implementarea operațiilor de logaritmare și antilogaritmare sub forma unei structuri de tip pipe-line.
5.2. Circuitul de adunare/scădere
Unitatea pentru efectuarea operațiilor de adunare/scădere (corespunzător unei înmulțiri/împărțiri) este implementată având la bază următoarea structură:
Unitatea aritmetică este relativ complexă deoarece ea este astfel concepută încât să realizeze operația de scădere (corespunzător unei împărțiri) cât mai repede. Operația de adunare nu pune probleme din punctul de vedere al timpului de execuție. Problemele care apar sunt date de operația de scădere. în cele ce urmează ne vom referii doar la cazul efectuării operației de scădere.
Structura prezentată mai sus rezolvă problema reconversiei rezultatului din cod complement de doi în cod mărime – semn în cazul în care rezultatul operației este negativ. Astfel se elimină o componentă hard suplimentară (necesară pentru efectuarea conversiei) care ar ocupa arie suplimentară pe cipul de siliciu și deci, se reduce timpul de calcul.
Construcția unității de adunare/scădere se face pe baza relațiilor 3.15 și 3.16. Unitatea calculează simultan termenii A-B și B-A. Primele inversoare se folosesc pentru obținerea termenului – A respectiv pentru obținerea termenului – B. Apoi urmează două sumatoare pe 31 de biți (deoarece semnul este tratat separat), sumatoarele fiind independente și având o structură similară. Deoarece este de dorit ca aceste operații de adunare să se execute cât mai repede vom utiliza sumatoare performante. în altă ordine de idei, operanzii fiind reprezentați pe un număr relativ mare de biți nu putem utiliza sumatoare clasice cu propagarea transportului, întrucât obținem o întârziere semnificativă. De aceea vom realiza operațiile de însumare rapidă cu ajutorul a două sumatoare cu anticiparea transportului. Acest tip de sumator a fost utilizat și în structura multiplicatorului 12×12, unde efectuează suma finală dintre termenii sumă și transport. Primul sumator nu necesită transport inițial (transportul inițial este 0), dar al doilea sumator necesită transport inițial (transportul inițial este 1).
În urma simulărilor cu programul MSim am obținut următoarea diagramă:
Sumatoarele efectuează simultan operațiile A – B și B – A. Dacă termenul A-B este pozitiv atunci el este selectat ca rezultat al operației de către blocul selector. Rezultatul astfel obținut nu mai este trecut prin blocul inversor de la ieșire deoarece nu mai este nevoie de nici o conversie. Dacă termenul .A – B este negativ, rezultă că termenul B – A este pozitiv, iar ca rezultat al operației este selectat termenul B – A căruia și se inversează biții înainte de a fi oferit ca rezultat. Astfel prin acest artificiu de calcul se evită conversia ce ar trebui făcută dacă rezultatul ar ieși negativ.
Selecția rezultatului final și a circuitului de inversare de la ieșirea unității de calcul (dacă este cazul) este controlată de semnul rezultatului obținut la ieșirea sumatorului cu transport inițial.
Din diagrama de mai sus se observă că timpul maxim de calcul pentru această unitate de adunare/scădere este de 8 ns. Unitatea de adunare/scădere este alcătuită din 900 porți logice. Structura unității de calcul și a elementelor care o compun este prezentată în Anexai.
Formele de undă corespunzătoare simulării sumatorului cu anticiparea transportului din cadrul unității de adunare/scădere sunt prezentate în figura 5.13.
Însumând timpii de propagare a semnalelor prin unitățile de logaritmare/ antilogaritmare și prin unitatea aritmetică, obținem timpul necesar efectuării unei operații de înmulțire/împărțire de 32ns.
CAPITOLUL 6
PARTICULARITĂȚI ALE PROGRAMULUI MSIM52 UTILIZATE ÎN SIMULAREA CIRCUITELOR LOGICE
Acest program face parte dintr-o serie de programe, specializate în editarea grafică și funcționarea circuitelor electronice, create de firma MicroSim Corporation, programe compatibile cu sistemul de operare multitasking WINDOWS 95.
Modul de lucru sub sistemul de operare WINDOWS 95 le conferă avantaje deosebite în ceea ce privește "comutarea" dintr-un program într-altul (editor grafic – vizualizarea rezultatelor), permițând o analiză interactivă a circuitelor din partea operatorului uman.
Organizarea acestor programe este de tipul sistem de meniuri, organizare specifică sistemului WINDOWS 95.
Pachetul de programe MSIM52 conține următoarele subprograme:
– Schematics Editor (psched.exe) – editor grafic de circuite;
– PSpice (WPspice.exe) – program de simulare
-Probe (Wprobe.exe) – postprocesorul grafic pentru vizualizarea rezultatelor analizelor;
– Stimulus editor (Stmed.exe) – editor pentru formele de undă generate de surse;
– Parts (Parts.exe) – program de determinare semiautomată a parametrilor modelelor componentelor.
Pașii care trebuiesc parcurși pentru editarea și simularea funcționării unui circuit electronic sunt următorii:
– programul Schematics pentru editarea grafică a circuitului;
– programul Spice pentru analiza funcționării (simulare);
– programul Probe pentru vizualizarea rezultatelor;
6.1. Programul SCHEMATICS
Este un editor grafic de circuite care va permite utilizatorului să-și deseneze circuitul într-o formă adecvată analizei cu Pspice.
Urmează crearea fișierului grafic pentru circuit.
La lansarea programului se observă că fereastra care apare conține o linie de meniuri și o zonă disponibilă pentru desenare.
Pentru ușurința plasării componentelor această zonă de lucru este marcată cu o rețea de puncte (caroiaj).
Mai jos sunt prezentate pe scurt cele mai importante comenzi din meniurile aferente: FILE MENU conține comenzi specifice : Open, New, Save, Save as, comenzi care permit deschiderea fișierelor grafîce existente (sch), crearea de fișiere grafice noi, salvare, etc.
Pe lângă aceste comenzi, meniul FILE conține și comenzile: Library Editor, comandă care permite adăugarea de simboluri grafice noi sau editarea celor existente, și Current Errors – pentru vizualizarea greșelilor de editare;
EDIT MENU conține:
– Undelete – reface ultimul obiect șters;
– Cut – șterge obiectul (obiectele) selectat(e); acesta rămâne memorat pentru utilizarea comenzii Paste;
– Copy – copiază un obiect
– Paste – plasează ultimul obiect memorat cu comanda Cut sau Copy;
– Rotate – rotește obiectul selectat cu 90° în sens orar;
– Flip – crează imaginea-oglindă;
– Attributes – editează atributele,
– Labei – editează eticheta;
– Symbol – editează simbolul obiectului selectat;
– Copy to clipboard – această comandă permite copierea schemei desenate în scopul exportării în alte programe compatibile cu WINDOWS 95;
– Replace – înlocuiește toate componentele selectate cu un nou tip de componentă;
– Search – caută în schema curentă componentele cu atributele specificate de utilizator.
DRAW MENU
Acest meniu, prin comenzile sale Get New Part, Paice part, Text, Wire, Bus, permite selectarea unei componente noi dintr-o bibliotecă, plasarea ei în schemă, trasarea conexiunilor și a magistralelor.
Altă comandă a acestui meniu Redraw pernițe redesenarea schemei în urma modificărilor făcute;
ANALYSIS MENU
Acest meniu conține comenzile de analiză propriu-zisă:
– Electrica! Rule Check – verifică schema din punct de vedere electric. Această comandă generează o listă de erori care pot fi vizualizate cu comanda
Current errors din meniul File.
– Create NetList – generează lista de legături, care conține toate componentele interconexiunile acestora și valorile componentelor.
– Run PSpice – acesta comandă realizează o analiză a circuitului curent. Alegând această comandă, se execută (dacă este necesar) toți pașii anteriori în vederea adnotării componentelor, verificarea electrică și generare listă de legături.
– Run Probe – lansează postprocesorul grafic în vederea vizualizării rezultatelor grafice;
– Setup – specifică tjpul analizei și parametrii acesteia;
– Examine Netlist – permite vizualizarea conținutului fișierului listă de legături.
– Examine Output – permite vizualizare_conținutului fișierului de ieșire.
Programul Schematics conține, pe lângă meniurile prezentate, și următoarele meniuri:
– Navigate – deplasare pe nivele ierarhice și la nivelul aceluiași nivel;
– Zoom – măriri, micșorări;
– Configure – stabilirea diferitelor opțiuni pentru biblioteci, pentru pagină și pentru modul de afișare;
– Markers – plasează și manipulează indicatorii care vor activa vizualizarea automată a punctelor respective în programul Probe;
– Help – furnizează informații despre toate aspectele editării.
6.2. Programul STIMULUS EDITOR
Pentru a furniza semnale de intrare părților numerice dintr-un circuit, PSpice folosește o componentă digitală de stimulare (generator de semnale digitale). O astfel de componentă are același rol în simularea digitală ca și sursele independente de tensiune și curent (componentele V și I) în simularea analogică, cu deosebirea că sursa digitală este o sursă multiplă de semnale. Semnalele generate sunt aplicate la mai multe noduri specificate în instrucțiunea de descriere a componentei digitale de stimulare.
Există două componente digitale de stimulare: generatorul de stimuli (STIM), care utilizează comenzi simple pentru a genera o varietate mare de forme de undă, și fișierul de stimuli (FSTIM), care permite obținerea formelor de undă dintr-un fișier extern.
Sintaxa instrucțiunii de descriere a generatorului de impulsuri STIM este:
U<nume> STIM (<dimensiune>, <tablou format>)
+ <nod alimentare digitală> <nod masă digitală> <nod>*
+ <model intrare/ieșire>
+ [IO _LEVEL=<selecție subcircuit interfață>]
+ [TIMESTEP=<increment timp>]
+ <comandă>*
Spre deosebire de componenta digitală obișnuită, generatorul de impulsuri nu are un model de sincronizare deoarece temporizările sunt descrise chiar de el, nu de un model separat. Semnificația unor câmpuri este similară cu a câmpurilor identice din instrucțiunea de descriere a componentelor digitale. Semnificațiile câmpurilor suplimentare sunt următoarele:
<dimensiune> specifică numărul semnalelor (nodurilor) furnizate de generatorul de impulsuri <tablou format> specifică formatul valorilor (<valoare>) utilizate în definirea impulsurilor; <tablou format> este o secvență de cifre care specifică numărul de semnale (noduri) pe care îl reprezintă cifra corespunzătoare din <valoare>; fiecare cifră din <valoare> este în baza 2m unde m este cifra corespunzătoare din <tablou>
format>; suma cifrelor din <tablou format> trebuie să fie <dimensiune> și fiecare cifră trebuie să fie 1, 3 sau 4 (ceea ce corespunde unei cifre din <valoare> în binar, octal sau hexazecimal;
<nod>* reprezintă unul sau mai multe noduri la care sunt furnizate impulsurile. Numărul nodurilor trebuie să fie egal cu <dimensiune>;
TIMESTEP reprezintă numărul de secunde pe un ciclu de ceas sau un pas; timpii de tranziție <timp> care sunt specificați în perioadele de tact (cu sufixul "c") sunt înmulțiți cu <increment timp> pentru a determina valoarea reală a timpului de tranziție; TIMESTEP nu are nici o acțiune asupra timpilor de tranziție specificați în secunde (având sufixul "s");
<comandă>* este o descriere a formelor de undă care trebuie generate folosind una sau mai multe construcții de forma:
<<timp>, <vafoare>
<LABEL=<etichetă>
<timp> GOTO <etichetă> <n> TIMES>
<<timp> GOTO <etichetă> UNTIL
+ <GT↑GE↑ LT↑LE↑ > <valoare>>
<<timp> INCR BY «valoare>>
<<timp> DECR BY <valoare>>
<timp> specifică timpul de tranziție pentru noua <valoare>, GOTO sau INCR/ DECR; unitatea de măsură pentru timp este secunda (sufixul "s") sau perioada de tact (sufixul "c"); timpii pot fi absoluți sau relativi (cu prefixul "+");
<valoare> reprezintă valoare pentru fiecare nod (0, 1, R, F sau Z) și este interpretată folosind <tablou format>;
<etichetă> este utilizată de comanda GOTO prin care se sare la prima comandă de după comanda LABEL=<etichetă>;
<n> reprezintă de câte ori se repetă o buclă GOTO;
Tranzițiile cu timpi absoluți dintr-o comandă GOTO vor fi convertite în timpi relativi pe baza timpului din comanda anterioară și a pasului în momentul respectiv. Timpii trebuie să fie în ordine strict crescătoare.
Nivelurile logice utilizate de PSpice sunt:
e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Nivel Semnificație
Este important faptul ca nivelurile logice nu trebuie in mod neaparat sa corespunda unei anumite tensiuni.
6.3. Programul PSPICE
Programul PSpice permite simularea ușoară și eficientă a circuitelor care conține atât componentele analogice cât și componentele digitale. Se pot simula și circuite care conțin doar componente digitale.
In timp ce opțiunea de simulare analogică calculează tensiuni și curenți, opțiunea de simulare digitală permite calculul nivelurilor logice. Nivelurile logice nu trebuie neapărat să corespundă unei anumite tensiuni.
Nivelurile logice utilizate de PSpice sunt prezentate în paragraful anterior. Toate analizele PSpice sunt prezentate pot fi aplicate circuitelor care conțin și componente digitale. Totuși, PSpice permite modelarea limitată a componentelor numerice, suficientă pentru testarea funcționalității.
Opțiunea digitală PSpice permite modelarea comportării unui mare număr de componente digitale de nivel scăzut (porți, bistabile, convertoare A/D și D/A multibit, memorii RAM și ROM, dispozitive logice programabile). Modelele interne pentru componentele digitale se numesc primitive. Acestea sunt utilizate de biblioteca PSpice pentru a modela dispozitivele digitale comerciale, care nu trebuie confundate cu primitivele. Dar primitivele pot fi utilizate și pentru descrierea componentelor digitale direct într-un program PSpice.
Sintaxa de descriere a unei componente digitale este asemănătoare cu aceea pentru o componentă analogică. Diferența constă în faptul că o componentă digitală utilizează, pe lângă tipul de primitivă digitală, două modele în loc de unul singur. Un model este modelul de sincronizare (timing model) care specifică întârzierile de propagare și restricțiile privind sincronizările. Celălalt model este modelul de intrare/ieșire (I/O model) care furnizează informații specifice despre caracteristicile de intrare/ieșire ale componentelor. Motivul pentru care avem două modele este acela că informațiile referitoare la sincronizări sunt specifice unui dispozitiv, pe când informațiile referitoare la caracteristicile de intrare/ieșire sunt specifice unei familii de dispozitive.
Sintaxa generală a instrucțiunii de descriere a unei componente digitale este următoarea:
U<nume> <tip primitivă> [(<parametru>*)]
+ <nod alimentare digitală> <nod masă digitală> <nod>*
+ <model sincronizare> <model intrare/ieșire>
+ [MNTYMXDLY=<selecție întârziere>]
+ [IO_LEVEL=<selecție subcircuit interfață>]
<tip primitivă> [(<parametru>*] reprezintă tipul primitivei (tipul intern al componentei digitale) urmat opțional de un număr de parametrii. Numărul și semnificația parametrilor depind de tipul primitivei.
<nod alimentare digitala> <nod masă digitală> sunt nodurile de
alimentare utilizate de subcircuitele de interfață.
<nod>* reprezintă unul sau mai multe noduri de intrare sau ieșire, numărul lor depinzând de tipul primitivei și de valoarea parametrilor acestuia.
<model sincronizare> este numele modelului care descrie caracteristicile de sincronizare ale componentei. Fiecare parametru de sincronizare are o valoare minimă, una tipică și una maximă, valori care pot fi selectate cu parametrul opțional MNTYMXDLY. Valorile posibile sunt:
0 – valoarea curentă a parametrului DIGMNTYMX din Options (valoare implicită)
1 – valoare minimă
2 – valoare tipică
3 – valoare maximă
<model intrare/ieșire> reprezintă numele modelului de intare/ieșire care descrie caracteristicile de intrare/ieșire ale componentei. Aceste modele pot fi selectate de parametrul IOJLEVEL. Valorile posibile sunt:
0 – valoare curentă a parametrului DIGIOLVL din Options (valoare implicită)
1 – AtoDl/DtoAl
2 – AtoD2/DtoA2
3 – AtoD3/DtoA3
4 – AtoD4/DtoA4
PSpice recunoaște trei tipuri de noduri: analogice, digitale și de interfață. Tipul unui nod este determinat de tipul componentelor care sunt conectate de acel nod. Dacă toate componentele sunt analogice/digitale atunci nodul este analogic/ digital. Dacă la nod sunt conectate atât componente analogice cât și digitale, atunci nodul este considerat de interfață. PSpice separă automat fiecare nod de interfață într-un nod analogic și un nod digital, inserând între ele unul sau mai multe circuite interfață analogic/digitale.
Fiecare dispozitiv numeric dintr-un circuit trebuie să aibă un nod de alimentare șl o masă (referința). Acestea sun folosite numai de subcircuitele interfață AtoD și DtoA pe care PSpice le inserează între dispozitivele numerice și cele analogice.
Amintim aici că PSpice are predefinite, pe lângă nodul analogic global 0 (masă analogică), și următoarele noduri digitale globale:
Nume nod predefinit Valoare
$D_HI "1"
$D_LO "0"
$D_X "X"
$D NC nod neconectat
6.4. Programul PROBE
Acest program permite vizualizarea în mod grafic a rezultatelor analizelor. în cazul semnalelor digitale vizualizarea poate fi făcută independent pentru fiecare semnal sau în ansamblu pentru toată magistrala (unde este cazul).
Timpii de propagare pot fi evidențiați prin plasarea celor două cursoare, diferența lor fiind generată automat.
Un traseu poate fi, fie un semnal digital, fie o magistrală obținută prin gruparea a maximum 32 de semnale digitale. Trasele digitale reprezintă nivelele logice astfel:
– o linie coborâtă/ridicată pentru 0/1;
– o linie dublă pentru un nivel necunoscut (X);
– o linie triplă pentru o stare de impedanță ridicată (Z);
– o linie înclinată în sus pentru o tranziție crescătoare(R);
– o linie înclinată în jos pentru o tranziție descrescătoare(F);
Un grafic digital poate conține până la 75 de trasee. Dacă sunt mai multe decât se pot afișa simultan într-un grafic, ultimul și/sau primul traseu afișat este marcat cu un simbol + la începutul numelui indicând faptul că mai există trasee după/înaintea traseului marcat.
Un semnal digital poate fi oricare nod digital dintr-un fișier de date sau o expresie booleana implicând noduri digitale. O magistrală este formată incluzând între acolade o listă de semnale separate de un spațiu sau virgulă. Elementele unei magistrale sunt scrise de la stânga spre dreapta, începând cu semnalul cel mai semnificativ în determinarea valorii magistralei.
Magistralele pot fi combinate cu operatori logici și aritmetici pentru a forma expresii. Operatorii valizi în expresiile pentru descrierea unui semnal sau a unei magistrale sunt următorii:
() = grupare;
~ = complementul logic;
*/ = înmulțire și împărțire (numai pentru valorile magistralelor);
*- = adunare și scădere (numai pentru valorile magistralelor);
& = și;
^ = sau exclusiv;
| = sau;
Expresiile pentru semnale pot conține următoarele constante semnal:
0 = nivel logic coborât;
1 = nivel logic ridicat; R = front crescător;
F = front descrescător;
X = nivel logic necunoscut
Z = impedanță ridicată;
Expresiile pentru magistrale pot conține constante care sunt specificate sub forma r'ddd, unde r este o literă mică ce specifică baza de numerație în care este dată valoarea constantei (h- hexazecimal, d- zecimal, o- octal, sau b- binar) iar ddd este un șir de cifre corespunzătoare bazei de numerație alese.
Formatul pentru definirea unui traseu digital este următorul:
< expresia de definire a traseului digital > [[<nume traseu>] [<bază>]]
<bază> se aplică doar pentru expresiile pentru magistrale și reprezintă baza de numerație în care se afișează valoarea magistralei.
Valorile posibile sunt: h – hexazecimal, d – zecimal, o – octal și b -binar. Valoarea implicită este h.
<nume traseu> este numele care este afișat pe grafic. Dacă el nu este specificat, se utilizează expresia de definire a traseului.
O notație prescurtată este disponibilă pentru un set de semnale care au nume asemănătoare. Intr-o definiție de semnal digital, un șir de caractere de forma sss[xx:yy], unde sss = un șir de caractere alfanumerice, xx și yy = număr zecimal, înlocuit de șirul de caractere sssaa sssbb … ssszz, unde aa, bb, …zz = toate numerele zecimale de la zz la yy.
în urma desenării schemei electrice a circuitului cu ajutorul programului Sche-matics Editor este generat fișierul <nume>.sch, care conține desenul circuitului într-o formă interpretabilă de către programul Schematics.
Trebuie specificat că la desenarea schemei sunt folosite simboluri aflate în bibliotecile de simboluri: *.slb (analog.slb; digital.slb; port.slb; etc.)
Modelele acestor simboluri se află în bibliotecile de modele: *.lib (analog.lib; digital.lib;etc.)
Cu ajutorul comenzii Library Editor din meniul File pot fi editate bibliotecile de simboluri existente sau pot fi create biblioteci noi, personalizate.
în urma executării comenzii Create Netlist sunt create fișierele:
– <nume>.net, fișies care conține lista componentelor, valoarea acestora, precum și nodurile între care sunt conectate (fișier listă de legături);
-<nume>.als, fișier care conține date necesare despre componente într-o formă acceptată de către PSpice (denumiri alternative pentru componente și noduri);
-<nume>.cir, fișier care conține toate informațiile necesare pentru a putea folosi fișierele anterioare la analiza propriu-zișă_a circuitului;
– <nume>.out, este fișierul de ieșire rezultat în urma analizei;
-<nume>.dat, fișier care conține datele necesare pentru vizualizarea grafică cu ajutorul programului Probe.
BILIOGRAFIE
1. Ciugudean Mircea, Algoritmi și structuri logice celulare de generare a logaritmilor și antilogaritmilor binari pentru dispozitive aritmetice cu virgulă mobilă. Teză de doctorat. I.P.T.V. Timișoara, 1976.
2. David Petterson, John L. Hennessy, Computer Arhitecture. A Quantitative Approach. Morgan Press, 1996.
3. William Stallings, Computer Arhitecture and Organization. Prentince Hali Inc., 1996.
4. Junji Mori, Masato Nagamatsu, A 10-ns 54×54-b Parallel StructuredFull Array Multiplier with 0.5-µm CMOS Tehnology. IEEE Journal of Solid-State Circuits, voi. 26, No. 4, April 1991.
5. Thomas A. Brubaker, John C. Becker, Multiplication Using Logarithms Implemented with Read-Only Memory. IEEE Trans. comp voi. C-24, No. 8 August, 1975.
6. N. Zhunang, H. Wu, A new Design of the CMOS Full Adder. IEEE Journal of Solid-State Circuits, voi. 27, No. 5, May 1992.
7. Lucian Jurca, Stadiul actual al procesoarelor aritmetice cu virgidă flotantă, Referat Nr. 1, Timișoara, 1997.
8. Lucian Jurca, Stadiul actual al procesoarelor aritmetice cu virgulă flotantă, Referat Nr. 2, Timișoara, 1997.
9. Voloșencu Constantin, Analiza circuitelor cu programul SPICE, Electronistul, Timișoara, 1994.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Utilizarea Logaritmilor In Conceptia Unitatilor Aritmetice DE Calcul (ID: 149243)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
