Curs 3 Arhitectura ADSP 2181

Download Curs 3 Arhitectura ADSP 2181

Post on 24-Jul-2015

118 views

Category:

Documents

6 download

Embed Size (px)

TRANSCRIPT

<p>Capitolul 2 Structura hardware a microcalculatorului ADSP21812.1 Arhitectura ADSP 2181 Familia de procesoare ADSP 21xx este o familie de procesoare optimizata pentru prelucrarea semnalelor si aplicatii de viteza ce necesita calcule numerice. Arhitectura utilizata este Harvard modificata.</p> <p>Figura 2.1 Arhitectura microcalculatorului ADSP-2181</p> <p>Exista posibilitatea incarcarii programelor dintr-o memorie EPROM externa (numita boot memory); in acest scop in figura 1 apare generatorul de adrese pentru boot memory. Incarcarea se face la initializarea procesorului daca este indeplinita o conditie electrica externa. Microcalculatorul ASDP 2101 permite cedarea magistralelor prin semnale specifice si poate utiliza pana la 6 nivele de intrerupere. ADSP 2101 poate sa realizeze intr-un singur ciclu: - generarea adresei instructiunii urmatoare - incarcarea instructiunii urmatoare - 1 sau 2 transferuri de date - actualizarea a 1 sau 2 pointeri de adresa - efectuarea oricarei operatii de calcul - receptia si transmiterea unui bit pe porturile seriale Setul de instructiuni este puternic; permite transferuri flexibile de date si instructiuni multifunctie (transferuri de 1 sau 2 date urmate de o operatie de calcul). Orice instructiune se executa intr-un singur ciclu masina (tipic de 80 ns la o frecventa a ceasului de 12,5 MHz). Sintaxa limbajului de asamblare este algebrica.11</p> <p>ADSP 2101 are 5 busuri interne:PMA (Program Memory Address) busul adreselor pentru memoria de program DMA (Data Memory Address) busul adreselor pentru memoria de date PMD (Program Memory Data) busul adreselor pentru memoria de program DMD (Data Memory Data) busul adreselor pentru memoria de date R (Result) bus de rezultate</p> <p>Pe busul R se interconecteaza unitatile de calcul. Aceste unitati sunt prezentate in continuare pe scurt: Unitatea ALU poate efectua setul standard de operatii aritmetice si logice; in plus are si 2 primitive de impartire. Unitatea MAC permite efecuarea operatiilor de inmultire, inmultire cu acumulare, inmultire cu scadere fiecare intr-un singur ciclu. Unitaea SHIFTER permite efectuarea deplasarilor logice si aritmetice si a operatiilor de normalizare si denormalizare a blocurilor de date. Iesirea oricarei unitati de calcul poate fi intrare in oricare unitate de calcul la urmatorul ciclu masina. In timpul executiei unei operatii in registrul de intrare al unitatii de calcul se poate incarca un operand. Toate cele 3 unitati de calcul au registre de intrare si registre de iesire care pot fi citite sau scrise de pe busul DMD. Rezulta existenta unui nivel de pipe-line la intrare si la iesire pentru unitatile de calcul (intre memorie si unitatea de calcul exist registre atat la intrare cat si la iesire). Busul R permite rezultatelor unor operatii anterioare sa fie utilizate direct ca intrare pentru operatia urmatoare. Acest lucru evita intarzierile excesive datorate pipe-line-ului existent, cand se executa o serie de operatii diferite. Cele 2 generatoare de adrese (DAG1 si DAG2) determina adresa datelor pentru memoria de date (DAG1) si pentru memoria de date si program (DAG2). Se pot genera adrese cu modificarea ulterioara a poiterului de adresa. Fiecare unitate de deplasare poate genera 4 adrese indirecte prin registru. Se pot implementa buffere de memorie circulare (utile in realizarea filtrelor digitale FIR). Exista modul de generare a adreselor cu inversarea bitilor (bit reverse) util pentru calculul FFT. Secventorul de program genereaza adresa instructiunii din memoria de program. Exista un registru de instructiuni in care se memoreaza codul instruciunii curente. Acest registru introduce un nivel de pipe-line. Instruciunea este citita din memoria de program si incarcata in registrul de instructiuni (IR) intr-un singur ciclu; este executata in ciclul urmator cand instructiunea urmatoare este incarcata in IR. Secventorul permite salturi conditionate, apeluri de subrutine si reintoarcere din acest apel intrun singur ciclu. Datorita faptului ca exista stive hardware, in componetnta secventorului, se pot executa bucle DO UNTIL fara cicluri suplimentare (zero overhead). Salturile conditionate se executa de asemenea fara cicluri suplimentare. Secventorul de program contine si un controler de intreruperi asociat. Circuitul de timp programabil contine un registru de prescalare pe 8 biti, un registru numarator pe 16 biti si un registru pentru constanta de numarare pe 16 biti. La trecerea prin zero a registrului numarator se genereaza o intrerupere. Cele doua porturi seriale (SPORT0 si SPORT1) permit relizarea unei comunicatii seriale sincrone; protocolul de comunicatie este flexibil, programabil. Pentru a se interschimba informatii intre memoria de program interna si memoria de date interna exista blocul bus exchange. Busurile PMA si DMA sunt multilplexate pentru a rezulta magistrala de adrese externa (pentru memoria externa de program sau de date). Busurile DMA si DMD sunt multilplexate pentru a rezulta magistrala de date externa. Separarea memoriei externe in memorie de program si memorie de date se efectueaza prin semnale de selectie separate; totodata exista si semnale specifice pentru citirea si scrierea memoriei externe. Sunt prevazute de asemenea si semnale pentru acceptarea si confirmarea cedarii magistralelor externe altor dispozitive.12</p> <p>In continuare sunt prezentate semnalele microcalculatorului ADSP 2101:A0 A13 bus de adrese extern (pentru date, program si boot) D0 D23 bus de date extern (pentru date, program si boot) RESET/ - semnal de initializare IRQ2 intrerupere externa (#2) BR/ - cerere de bus BG/ - confirmarea cererii de magistrala PMS/ - selectie memorie de program DMS/ - selectie memorie de date BMS/ - selectie memorie boot RD/ - citire WR/ - scriere MMAP configurare memorie de program CLIKIN,XTAL pentru conectarea ceasului CLKOUT iesire de ceas SPORT0 (TFS0,RFS0,DT0,DR0,SCLK0) semnale asociate portului serial #0 (sincronizare la transmisie, sincronizare la receptie, transmisie de date, receptie de date, ceas serial ) SPORT1 (TFS1,RFS1,DT1,DR1,SCLK1) semnale asociate portului serial #1 (sincronizare la transmisie, sincronizare la receptie, transmisie de date, receptie de date, ceas serial ) sau (IRQ1/,IRQ0/,SCLK1,FO,FI) cerere de intrerupere #1, cerere de intrerupere #0, ceas programabil, flag aut, flag in in functie de configurarea procesorului.</p> <p>2.2 Unitati de calcul Microcalculatorul ADSP 2181 lucreaza n virgula fixa pe 16 biti. Interpretarea datelor este urmatoarea:siruri de biti (pentru operatii logice NOT,AND,OR,XOR nu se interpreteaza sirul binar ca numar) numere ntregi fara semn numere ntregi cu semn (in complement de 2) numere fractionare (in format 1.15 in complement de 2)</p> <p>Aritmetica ALU</p> <p>Cu exceptia primitivei de mpatrire cu semn (DIVS) ALU interpreteaza operanzii si rezultatele ca operanzii ca siruri binare de 16 biti. Rezultatul poate fi interpretat ca numar cu semn prin intermediul indicatorilor conditionali (flag-uri). Detectarea depasirii aritmetice se face conform aritmeticii n complement fata de 2 (daca bitul MSB al rezultatului se modifica n mod incorect). De exemplu adunarea a doua numere pozitive trebuie sa genereze un rezultat pozitiv, n caz contrar a aparut o depasire aritmetica ce a alternat cu bitul de semn (MSB) al rezultatului.Aritmetica MAC</p> <p>Multiplicatorul produce rezultate ca siruri de biti. Intrarile pe 16 biti sunt interpretate n conformitate cu informatia continuta n instructiune (ambii operanzi cu semn, unul cu semn si celalalt fara semn). Rezultatul pe 32 biti este considerat cu semn, iar bitul de semn (MSB) este extins pna la 40 biti. Exista doua formate posibile pentru nmultitor: 1.15 (pentru numere cu semn) si 16.0 (pentru numere ntregi).Aritmetica SHIFTER</p> <p>Deplasarile logice interpreteaza operanzii ca numere ntregi fara semn sau ca siruri binare, iar deplasarea aritmetica interpreteaza rezultatul ca un numar cu semn n complement de 2. Exponentul pentru numerele n virgula mobila se reprezinta n complement de 2. Se poate lucra n blocuri de date n virgula mobila care sunt interpretate n complement de 2.</p> <p>13</p> <p>2.2.1 Unitatea aritmetica si logica (ALU) Este prezentata n figura 2.2 Este o unitate pe 16 biti cu doua porturi de intrare X si Y si un port de iesire R.</p> <p>Figura 2.2 Unitatea ALU ADSP 2181</p> <p>DESCRIERE: Intrarea X a ALU poate accepta date din doua surse: registrul AX sau busul de rezultate R. Conectarea directa pe busul R permite utilizarea operanzilor de tip imediat (acest lucru este specific pentru toate unitatile de calcul ale ADSP 2181). Registrul AX este dedicat pentru intrarea X si are n compunere doua registre de 16 biti AX0 si AX1 care se pot citi/scrie de pe magistrala DMD; cu ajutorul blocului de interschimbare DMD PMD aceste registre sunt accesibile si pe magistrala PMD. Un registru PMX poate fi intrare n ALU n acelasi timp n care celalalt registru este citit/scris de pe magistrala DMD. Intrarea Y a unitatii ALU poate de asemenea sa accepte date din doua surse: registrul AY si registrul de reactie AF. Registrul AY este dedicat pentru intrarea Y si contine 2 registre: AY0 si AY1; aceste doua registre se pot citi/scrie de pe magistrala DMD si se pot scrie direct de pe magistrala PMD; ele se pot citi de pe magistrala PMD prin intermediul blocului de interschimb intre PMD si DMD. n mod similar unul dintre registrele AY poate fi intrare n ALU n timp ce celalalt registru este citit/scris de pe magistrala DMD. Iesirea ALU este ncarcata n registrul AF sau n registrul de rezultat AR; iesirea ncarcata n AF poate fi utilizata ca intrare n ALU. Registrul AR poate fi ncarcat si n mod direct de pe magistrala DMD; prin blocul de interschimbare DMD PMD registrul AR poate fi citit /scris de pe magistrala PMD. Orice registru asociat unitatii ALU poate fi citit sau scris intr-un singur ciclu masina; citirea se face la nceputul ciclului iar scrierea la sfrsitul acestuia. Acest lucru permite ca un operand al ALU sa fie citit la nceputul unui ciclu si actualizat la sfrsitul acestuia. De asemenea se permite ca rezultatul sa fie ncarcat n memorie la nceputul unui ciclu si actualizat cu un nou rezultat la sfrsitul ciclului. Unitatea ALU contine un set de registre duplicat (AX,AY,AF,AR); un singur set este accesibil la un moment de timp dat. Setul secundar de registre este util pentru schimbarea rapida a contextului programului, de exemplu n cazul ntreruperilor. Selectarea unuia dintre acestea se face prin program.</p> <p>14</p> <p>2.2.2 Unitatea de nmultire si acumulare (MAC) Unitatea de nmultire acumulare (MAC) poate efectua nmultiri rapide si nmultiri cu acumulare (adunare sau scadere). Rezultatul poate fi rotunjit sau saturat. Schema bloc a acestei unitati este prezentata n figura 4.3.</p> <p>Figura 2.3Unitatea MAC ADSP2181 DESCRIERE: Unitatea MAC permite efectuarea operatiilor de nmultire rapida, a operatiilor de nmultire cu acumulare/scadere, saturare si stergere (aducere la zero). O bucla de reactie permite utilizarea unei parti a rezultatului ca intrare in MAC. Unitatea MAC are doua porturi de intrare X si Y de cte 16 biti si un port de iesire P de 32 biti. Produsul pe 32 biti este o intrare ntr-un sumator de 40 biti care sumeaza rezultatul anterior cu cel curent. Registrul MR are 40 biti si este compus din 3 registre: MR0 (16 biti) cel mai putin semnificativ, MR1 (16 biti) registru mai semnificativ si MR2 (8 biti) registrul de extensie de semn. Sumatorul este de 40 de biti pentru a permite depasirile aritmetice imediate ce apar ntr-o suma de produse. Exista un bit de stare (flag) MV care indica daca acumulatorul a fost afectat de depasire aritmetica (n complement de 2) peste 32 biti (cnd suma de produse s-a ncheiat). Registrele de intrare iesire ale unitatii MAC sunt similare cu registrele ALU. Portul X accepta date de la registrul MX sau de pe bus-ul R (de rezultat). Se permite in acest mod incarcarea unor operanzi de tip imediat. Exista 2 registre MX: MX0 si MX1 care pot fi citite sau pot fi scrise de pe magistrala DMD. Este permis ca n timp ce unul din registrele MX este intrare pentru MAC celalalt sa fie citit/scris de pe DMD. Portul Y accepta date de la registrul MY sau registru MF. Registrul MY are registrele MY0 si MY1; aceste registre pot fi citite si scrise de pe magistrala DMD si scrise direct de pe magistrala PMD; citirea pe PMD se poate face prin blocul de interschimb PMD DMD. Este permis ca n timp ce unul din registrele MY este intrare pentru MAC celalalt sa fie citit/scris de pe DMD. Iesirea sumatorului este ncarcata n registrul MF sau in registrul MR. Registrul MF permite ca biti 16-31 ai rezultatului sa fie utilizati direct la intrarea nmultitorului la ciclul urmator. Registrele MR0,MR1,MR2 pot fi ncarcate de pe magistrala DMD si pot fi citite de pe DMD sau bus-ul R. Orice registru asociat unitatii MAC poate fi citit si scris n acelasi ciclu: citirea se face la nceputul ciclului iar scrierea la sfrsitul acestuia. Se permite ca o intrare n MAC (un operand) sa fie ncarcata la nceputul ciclului (operatiei) si sa fie actualizata la sfrsitul ciclului (de exemplu din memorie).15</p> <p>De asemenea se permite ca un rezultat sa fie ncarcat n memorie si actualizat cu un nou rezultat n acelasi ciclu. Unitatea MAC contine un set duplicat de registre (MX,MY,MR,MF); un singur set este disponibil la un moment dat. Acest set este utilizat pentru schimbarea rapida a contextului programului (n cazul ntreruperilor). Setul de registre este selectat prin program.Operatiile MAC</p> <p>Operatiile efectuate de MAC sunt: MR*=X*Y, MR=MR+X*Y, MR=MR-X*Y, MR=0. Sunt permise 2 moduri pentru functiile de nmultire acumulare : modul pentru numere fractionare (n format 1.15) si modul pentru numere ntregi (n format 16.0). Modul este selectat printr-un bit dintru registru de stare al MAC (MSTAT); la initializare este activ modul pentru numerele fractionare. n ambele moduri de lucru iesirea nmultitorului este ncarcata ntr-un acumulator de 40 biti (sumator scazator) pentru a implementa functia MR+/-X*Y. n modul de lucru fractionar iesirea pe 32 biti a multiplicatorului este ajustata n cazul operatiei de multiplicare acumulare prin extinderea bitului de semn pana la 40 biti si deplasarea cu 1 bit la stnga, nainte de ncarcarea rezultatului n registrul MR. Acest lucru se realizeaza deoarece o nmultire n format 1.15 cu 1.15 trebuie sa genereze un rezultat n format 1.31 care poate fi rotunjit la formatul 1.15. Bitul LSB este pozitionat n 0. Formate de intrare pentru operanzi Operanzii pot fi cu semn sau fara semn fiecare; se pot nmulti operanzi de tipuri diferite (semn fara semn). Tipul operandului este specificat dinamic pentru fiecare operatie de nmultire n parte. Registrele de intrare iesire ale MAC Sunt urmatoarele: registre X: MX0,MX1,AR,MR0,MR1,MR2,SR0,SR1; registre Y: MY0,MY1,MF; registre destinatie: MR (MR2,MR1,MR0),MF.</p> <p>16</p> <p>2.2.3 Unitatea de deplasare (SHIFTER) Acest bloc functional permite efectuarea unui set complet de functii de deplasare pe 16 biti de intrare,...</p>

Recommended

View more >