Sunteți pe pagina 1din 19

Capitolul 2 Structura hardware a microcalculatorului ADSP2181

2.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.

Figura 2.1 Arhitectura microcalculatorului ADSP-2181

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

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

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

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.

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)

Aritmetica ALU

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

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

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.

13

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.

Figura 2.2 Unitatea ALU ADSP 2181

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.

14

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.

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

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

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.

16

2.2.3 Unitatea de deplasare (SHIFTER) Acest bloc functional permite efectuarea unui set complet de functii de deplasare pe 16 biti de intrare, genernd o iesire pe 32 biti; setul include deplasari aritmetice, deplasari logice si normalizari. De asemenea unitatea de deplasare poate fi utilizata pentru calcule in virgula mobila.

Schema bloc a unitatii de deplasare este data n figura 2.4:


Figura 2.4 Unitatea SHIFTER ADSP 2181

DESCRIERE: SHIFTER se divide in urmatoarele componente: matricea de deplasare, logica OR/PASS, detectorul de exponent si logica de comparare a exponentului. Matricea de deplasare este constituita dintr-un barell-shifter cu 16 intrari si 32 iesiri. Acest circuit permite realizarea unei deplasari pe 16 biti intr-un singur ciclu. Registrul SE este de 8 biti si memoreaza exponentul in timpul operatiilor de normalizare si denormalizare; reprezinta o valoare in complement fata de 2; poate fi citit/scris pe bus-ul DMD. Regsistrul SB retine exponentul unui bloc de date (cel mai mare exponent care va fi utilizat pentru normalizare); este un registru de 5 biti, in complement fata de 2; poate fi citit scris de pe DMD. Citirea registrelor SB as SE se face pe DMD, in format pe 16 biti cu extensia semnului. Toate registrele din unitatea de deplasare pot fi citite/scrise intr-un singur ciclu (citire la inceputul ciclului si scriere la sfarsitul acestuia). Se permite ca un operand sa fie incarcat in unitatea de deplasare la inceputul ciclului si sa fie actualizat la sfarsitul acestuia. Unitatea de daplasare contine un set duplicat de registre (SE,SB si SR1,SR0); un singur set este accesibil la un moment dat; sunt utilizate in schimbarea rapida a contextului programului (in cazul intreruperilor); selectarea unui set se face prin program. Operatiile posibile ale unitatii sunt: ASHIFT (deplasare aritmetica), LSHIFT (deplasare logica), NORM (normalizare), EXP (calculul exponentului unui numarin virgula mobila), EXPANDJ (ajustarea exponentului unui bloc de date in virgula mobila). Functiile de deplasare pot fi efectuate in modurile HI as LO. Blocul OR este utilizat pentru deplasari in dubla precizie (pe 32 biti de intrare).

17

2.3 Generatoarele de adresare ale datelor Capitolul descrie unitatile ce controleaza transportul datelor din si spre procesor si a datelor de la una din magistrale de date la alta fara interventia procesorului. Aceste unitati includ: Generatoarele de adrese de date (DAG) Unitatea de schimb intre magistrala de date de program (PMS) si magistralele de memorie de date (DMD) Generatoarele de adresa de date (DAG) Fiecare componenta a familiei de procesoare ADSP-281x contine doua generatoare de adrese de date independente pentru ca memoria de program si memoria de date sa poata fi accesate simultan. DAG ofera capacitati de adresare indirecte. Ambele efectueaza modificarea automata a adresei. Pentru buffere circulare, Dag pot efectua modificarea modul a adresei . Cele doua DAG-uri difera: DAG1 genereaza doar adrese pentru memoria de date, dar ofera capacitatea de reversie a bitilor, DAG2 poate genera att adrese pentru memoria de date ct si pentru memoria de program, dar nu are capacitati de reversie a bitilor. Urmatoarele paragrafe explica functionarea interna a DAG-urilor, dar trebuie tinut minte ca dezvoltarea programelor pe familia de procesoare ADSP-218x permite o metoda directa de declarare a bufferelor de memorie ca circulare sau liniare. Programarea permite de asemenea o metoda de management al plasarii bufferului n memorie. Doar initializarea registrilor DAG trebuie facuta explicit. Registrii DAG Figura 2.5 prezinta diagrama bloc a unui singur generator de adrese. Sunt trei locuri de registre: de modificare(M), de index (I) si de lungime (L). Fiecare din aceste blocuri contin 4 registrii pe 14 biti, care pot fi cititi si scrisi via magistralei DMD.

Figura 2.5 Generator de adrese

DESCRIERE: Registrii I (de index) (I0-I3 n DAG1 din I4-I7 n DAG2) contin adresa actuala folosita la accesul n memorie. Cnd datele sunt accesate n modul indirect, adresa stocata n registrul I selectat devine adresa de memorie. Cu DAG1, adresa de iesire poate fi inversata prin setarea bitului de mod din registrul de stare MSTAT folosind instructiunea ENA BIT_REV. Facilitatea de inversare a ordinii bitilor permite adresarea FFT. Generatorul de adrese angajeaza o schema post-modificare; dupa un acces indirect, registrul specificat M (M0-M3 n DAG1, M4-M7 n DAG2) este adaugat la registrul I specificat pentru generarea unei noi valori I. Alegerea registrelor I si M este independenta pentru fiecare din DAG-uri. Cu alte cuvinte, oricare din registrele I0-I3 poate fi modificat cu oricare din registrele M0-M3 n orice
18

combinatie, dar nu de cele din DAG2. Valoarea modificate stocata n registrele M este cu semn pentru ca urmatoarea adresa sa fie mai mare sau mai mica. Generatoarele de adrese suporta att adresarea liniara ct si adresarea circulara. Valoarea registrului L (lungime) corespunde unui registru I (de exemplu I0 ar corespunde lui L0) determinnd care schema de adresare este folosite pentru registrul I0. Pentru adresarea bufferelor circulare, registrul L este initializat cu lungimea bufferului de date. Pentru adresarea liniara, modulul logic este dezactivat prin setarea registrului corespunzator L cu 0. De fiecare data cnd un registru I este selectat, registrul corespunzator L ofera modulul logic cu informatiile de lungime. Daca suma dintre registrul I si M depaseste lungimea bufferului, valoarea calculata din registrul I este modului logic cu valoarea din registrul L. Toate registrele de generare a adreselor ( I, L si M) sunt ncarcabile si citibile pe cei 14 biti mai putin semnificativi de pe linia de adrese. n timp ce registrii I si l sunt considerati fara semn, cei mai importanti 2 biti ai magistralei de date sunt considerati 0 cnd sunt cititi. Continutul registrilor M are semn. Cnd citim un registru M, cei mai importanti 2 biti ai magistralei de adrese reprezinta extensia de semn.
Adresarea indirecta

Familia de procesoare ADSP-218x permite doua moduri de adresare a datelor din memorie: adresare directa si adresare indirecta. Adresarea indirecta este ndeplinita prin ncarcarea unei adrese n registrul I(index) si specificarea unuia dintre registrii de modificare M. Registrele L ofera facilitatea de accesare circulara pentru bufferele circulare. Un buffer circular este implementat doar cnd registrul L este setat pe o valoare nenula. Pentru adresarea liniara indirecta, registrul L corespunzator registrului I trebuie setat pe 0. Nu trebuie presupus ca registrii L sunt initializati automat sau pot fi ignorati; registrii I,L si M contin valori aleatoare imediat dupa resetarea procesorului. Programul trebuie sa respecte initializarea registrilor L corespunzatori registrilor I care sunt folositi.
Adresarea liniara indirecta

Setarea unui registru L la o valoare nenula activeaza adresarea circulara modulo logic. Pentru adresarea liniara indirecta, trebuie setat registrul L pe 0 pentru dezactivarea operatiei modulo-logic.
Adresarea modulo (buffere circulare)

Operatia modulo logic implementeaza adresarea modulo automata pentru accesarea bufferelor de date circulare. Pentru calcularea urmatoarei adrese, operatia modulo logic utilizeaza urmatoarele operatii:
locatia curenta, regasita in registrul I (fara semn) valoare modificata regasita in registrul M (cu semn) Lungimea bufferului, regasita in registrul L (fara semn) Adresa bazei bufferului

Pentru acestea, urmatoarea adresa este calculata dupa formula: Next address = (I+M-B) modulo (L) + B, unde: I adresa curenta M valoarea modificata (cu semn) B adresa de baza L lungimea bufferului M+I adresa modificata

Valorile de intrare trebuie sa ndeplineasca urmatoarea conditie: | M | < L

19

Adresarea prin inversarea bitilor

Logica de inversare a bitilor este n mod primar necesara n calcularea FFT, unde intrarile sunt date sau iesirile sunt generate prin inversarea ordinii bitilor. Inversarea ordinii bitilor este disponibila doar n DAG1. Punctul de pivotare pentru inversare este mijlocul adresei pe 14 biti, ntre bitii 6 si 7. Acest lucru este ilustrat n exemplul urmator: Ordine normala 13 12 11 10 09 08 07 06 05 04 03 02 01 00 Ordine inversata 00 01 02 03 04 05 06 07 08 09 10 11 12 13 Modul de inversare este activat sau dezactivat de registrul de stare MSTAT.
Unitatea de schimb al magistralelor PMD-DMD

Unitatea de schimb intre magistralele PMD-DMD cupleaza magistrala de memorie de program si magistrala de memorie de date, permitnd transferul de date n ambele directii. Datorita faptului ca magistrala de memorie de program are o lungime de 24 de bitii, I iar cea de date 16 biti, doar cei 16 biti superiori sunt transferati direct. Un registru intern PX este ncarcat cu ceilalti 8 biti. Acest registru poate fi ncarcat direct sau citit cnd cei 24 de biti sunt necesari.

Figura 2.6 Unitate de schimb intre magistrale

20

2.4 Interfata de memorie Familia de procesoare ADSP-218x are o arhitectura Harvard modificata n care memoria de date si program stocheaza att instructiuni ct si date. O instructiune din program poate fi adusa din memorie si executata. n acelasi tact de ceas, doua date pot fi accesate din memorie: una din memoria de date si cealalta din memoria de program.
Memoria de date si memoria de program

Fiecare procesor al familiei ADSP-218x contine RAM n cip (n procesor), care permite ca o parte din spatiul memoriei de program si o portiune din spatiul memoriei de date rezida in cip. Memoria de program externa si memoria de date externa pot fi de asemenea utilizate n modelarea unui sistem. Cei 16 K de cuvinte din memoria de program externa (pe 24 biti) si cei 16K de cuvinte din memoria de date externa (pe 16 biti) pot fi adresate ca segmente de memorie de 8K.
Spatiul de memorie pe bytes

Fiecare procesor are un spatiu de 4M adresabili pe o lungime de un byte. Acest spatiu poate fi folosit dupa cum urmeaza: - ncarcarea n memoria de program on-chip (din procesor) de la un EEPROM extern la rest - cod si stocare de date n timpul rularii - prelungiri ale codului programelor atunci cnd lungimea codului depaseste cantitatea de memorie din procesor
Spatiul de memorie de intrare/iesire (I/O)

In fiecare procesor al familiei ADSP 218x, memora este conectata la o unitate functionala din 4 magistrale on-chip: magistrala de adrese Data Memory Address(DMA), magistrala de date Data Memory Data (DMD), magistrala de adrese de program Program Memory Address (PMA) si magistrala de date de program Program Memory Data (PMD). Magistralele interne PMA si DMA sunt multiplexate ntr-o singura magistrala de adrese care este extinsa Off-chip (n afara procesorului). n acelasi mod magistralele interne PMD si DMD sunt multiplexate ntr-o singura magistrala. Cei 6 biti mai importanti ai magistralei de date externa sunt folositi de magistrala DMD. Liniile D23-8 ale magistralei externe sunt folosite de DMD15-0.
Portul intern de acces direct la memorie

Portul intern de acces direct la memorie (IDMA) este un port secundar pe 16 biti ce suporta boot-area de la un procesor gazda extern. Acest port poate de asemenea sa gazduiasca o rutina de acces la tot continutul memoriei interne (att la memoria de program ct si cea de date) a procesorului de date exceptnd memoria alocata registrelor de control, care rezida la cele 32 de locatii interne aflate n zona superioara a acesteia. Aceasta functie a acestui port permite definirea unui numar de locatii de memorie n care DSP-ul sa transfere din si spre memoria interna n fundal n timp ce continua procesarea.
Modulele de memorie

Portul IDMA este un port separat n procesoarele ADSP-2181 si ADSP-2183 si un port configurabil n celelalte procesoare ADSP-218x. Pentru toate procesoarele familiei DSP 218x, exceptnd ADSP-2181 si ADSP-2183, pinii de adresele externe si pinii de date sunt multiplexati cu pinii magistralei de adrese/date IDMA si semnale de control. Functionalitatea acestor pini multiplexati este data la reset de pinii externi MODE. Valorile acestor pini MODE determina daca cei 100 de pini ai procesoarelor ADSP-218x au acces la cei 14 biti ai magistralei de adrese si la cei 24 de biti ai magistralei de date (Modul toata memoria) sau daca procesorul are functionalitate IDMA (modul memorie gazda) cu un singur bit de adresa si 16 biti de date (D[23:8]). Proiectarea prin multiplexarea pinilor asigura procesoarelor folosirea a unui numar mic de pini, ceea ce determina o mai mica suprafata de mpachetare. Aceasta marime redusa duce la posibilitatea de a realiza cablaje ct mai mici. Pe de alta parte, aceasta reducere a dimensiunilor necesita un design
21

mai complex pentru a putea folosi simultan att magistralele de date si adrese externe, ct si functionalitatea portului IDMA.
Interfata de memorie

n arhitectura Harvard modificata a procesorului folosita de familia ADSP-218x, memoria de program stocheaza att instructiuni, ct si date pe 24 sau 16 biti. Memoria de date stocheaza doar date pe 16 biti. Cantitatea de memorie din cip difera de la procesor la procesor. Cmpul PWAIT din registrii de control al sistemului seteaza numarul de timpi de asteptare (STATCS) pentru fiecare acces la memoria de program externa. Valoarea bitilor PWAIT din registrii de control revine la starea initiala la bitul 15 la seriile de procesoare M si N din familia ADSP-218x. Bitul 15 din registrii de control ai sistemului au ca stare initiala 1, care asigura dublul plus 1 al valorii bitului PWAIT. Cmpul de biti PWAIT revine la 5 la celelalte procesoare ale familiei. Pentru toate procesoarele ADSP-218x, zonele 1 si 2 acoperite de memoria de program corespund regiunilor acoperite de memoria de program externa, fiecare 8K lungime. Orice alte zone acoperite sunt zone interne, exceptnd regiunea 3, care este rezervata. Memoria de program externa este selectata folosind registrul PMOVLAY. Doar o singura zona de memorie poate fi activa la un moment dat; aceasta restrictie se aplica att memoriei de program interna ct si celei externe. Cnd se acceseaza paginile de memorie de program externe, registrul PMOCLAY controleaza sau determina valoarea pinului de adresa A13. Cnd registrul PMOVLAY este egal cu 1, valoarea pinului A13 este 0. Cnd registrul PMOVLAY este 2, valoarea pinului A13 este 1.
Interfata cu memoria de program

Memoria de program on-chip si zonele de memorie interna si externa pot contine att instructiuni ct si date intercalate n orice combinatie. Prin asignarea descrierii arhitecturii de memorie din Fisierul de Descriere a legaturilor, un programator poate specifica adresa de plasament absoluta n orice cod sau modul de date, incluznd codul pentru tabela de ntreruperi sau vectorul de reset. Vectorul de reset este localizat n memoria de program la adresa 0x0000. n conjunctie cu Fisierul de Descriere a Legaturilor, editorul de legaturi al procesorului determina unde sa plaseze cod si date relocabile. Toate regiunile de memorie de program acopera zona de adrese de la PM(0x2000) pna la PM(0x3FFF). Valoarea registrului PMOVLAY determina care regiune este n acel moment accesata si care dintre zonele de memorie interna sau externa sunt accesate de catre nucleul procesorului. Secventiatorul de program al procesoarelor ADSP-218x opereaza independent de registrul PMOVLAY. Secventiatorul de program opereaza doar asupra adresei absolute a instructiunii curente executate. Pentru memoria de program, regiunile acoperite sunt cuprinse intre 0x2000 si 0x3fff. n special trebuie avut grija de catre programator ca adresa tinta si de acoperire sunt accesate cnd se face un salt sau un apel n program. De asemenea, registrele DAG opereaza independent de registrul PMOVLAY. Din nou, trebuie avuta mare grija pentru a se asigura ca regiunea tinta din memoria de program este accesata cnd se realizata salturi indirecte cu registrii sau instructiunile de apel sau cnd se realizeaza auto-buffering ale porturilor catre zonele de memorie de program.
Interfata cu memoria de date

Interfata cu memoria de date a familiei de procesoare ADSP-218x este de lungime de 16 biti. n mod similar cu memoria de program interna, pna la doua accese la memora de date pot fi realizate ntr-un ciclu de instructiune. Accesul de citire a memoriei este facuta n prima jumatate de ciclu si scrierea n memorie este facuta n a doua parte a ciclului. Magistrala de adrese a memoriei de date este are lungimea de 14 biti; un procesor ADSP-218x poate accesa direct 16K din memoria de date interna. Pentru procesoarele cu memorie interna de date mai mare de 16K, memoria aditionala poate fi selectata sau accesata prin segmente acoperind 8K folosind registrul de acoperire a memoriei de date DMOVLAY. Acest registru actioneaza ca un selector de pagina de memorie de date. Pentru toate procesoarele ADSP-218x, zonele extinse ale memoriei de date 1 si 2 corespund memoriei de date extinse, fiecare cu o lungime de 8K. Toate celelalte zone sunt interne, exceptnd
22

zona 3, care este rezervata. Memoria externa de date este selectata folosind registrul DMOVLAY. Doar o singura zona de memorie de date poate fi activa la un moment dat. Aceasta restrictie se aplica att memoriei externe ct si celei interne de date. Cmpul DWAIT al registrului de control a starilor de asteptare seteaza numarul de stari de asteptare pentru fiecare zone de memorie de date. Valoarea DWAIT revine la starea initiala 7 dupa reset pentru procesoarele din seria M si N, iar la celelalte procesoare este de 15. Bitul 15 al registrului de control al asteptarii este la seriile M si N 1. Memoria de date on-chip si memoriile de date interna si externa pot fi folosite pentru stocarea de date. Prin asignarea descrierii arhitecturii din fisierul de descriere a legaturilor, se pot specifica adresele absolute de deplasament pentru fiecare segment de date. n conjunctie cu fisierul de descriere al legaturilor, editorul de legaturi determina locul de relocare a segmentelor de date. Toate regiunile de memorie de date rezida de la adresa DM(0x0000) pna la DM(0x1FFF). Valoarea registrului DMOVLAY, cere determina care regiune este la acel moment accesata si care regiune de memorie de date este accesata(interna sau externa).
Interfata de memorie pe byte

Spatiul de memorie pe byte a procesoarelor ADSP-218x este pe 8 biti si poate adresa pana la 4Mbytes de cod sau date. Procesoarele ADSP-218x pot realiza boot-area prin aceasta interfata, de asemenea putnd realiza operatii de citire si scriere la componente de memorie de pe 8 biti prin portul BDMA n timpul executiei. Semnalul extern BMS este activ n timpul accesului la memoria de byte. Fiecare citire sau scriere a memoriei de byte are n componenta date(care sunt conduse pe liniile magistralei D[15:8]) si adrese(conduse pe liniile de adresa A[13:0], concatenate cu liniile D[23:16]). Aceasta da portului BDMA un total de 22 de biti de adresa, care permit acces pna la 4Mbytes de ROM sau RAM. Aceasta memorie poate fi citita sau scrisa n patru formate diferite: cod pe 24 de biti, date pe 16 biti, date MSB aliniate pe 8 biti, sau date LSB aliniate pe 8 biti. Pentru accesul pe 8 biti MSB, cei 8 biti LSB sunt 0 in timpul citirii memoriei. Pentru accesul LSB pe 8 biti, cei 8 biti MSB sunt pe 0 in timpul citirii. Timpii de asteptare pentru memoria de pe byte la acces sunt programabili prin cmpul BMWAIT al fanioanelor programabile si registrul de control al memoriei compozite. Pentru procesoarele din seria M si N, setarea initiala pentru BMWAIT este 15 dupa reset. Pentru toate celelalte procesoare, valoarea initiala este 7 dupa reset.

23

Spatiul de memorie pentru I/O

Familia de procesoare ADSP-218x au un spatiu de memorie de I/O dedicat pe 16 biti continnd 2048 de locatii. Acest spatiu de memorie dedicat asigura o harta de memorie pentru periferice fara a folosi memoria de program sau/si memoria de date externe pentru adresarea resurselor prin interfata cu perifericele. Procesoarele poseda 4 regiuni programabile de asteptare care sunt asociate cu spatiul de memorie I/O. Registrul de control al starilor de asteptare contine cmpurile IOWAIT0:3 care controleaza fiecare regiunile de memorie, continnd fiecare 512 locatii. Pentru seriile M si N, valoarea initiala pentru IOWAIT este 15 dupa reset. Pentru celelalte procesoare, valoarea este 7 dupa reset. Figura 2.7 prezinta registrul de control al starilor si IOWAIT0:3. care controleaza timpii de asteptare pentru zonele de memorie I/O ale procesoarelor din seriile M si N. Figura 2.8 este pentru celelalte tipuri de procesoare.

Figura 2.7

Figura 2.8

Registrii de control al starilor de asteptare sunt mpartiti n urmatoarele cmpuri:


IOWAIT0 acest cmp de 3 biti seteaza numarul accesul la adresele de memorie I/O 0x000-0x1ff IOWAIT0 acest cmp de 3 biti seteaza numarul accesul la adresele de memorie I/O 0x200-0x3ff IOWAIT0 acest cmp de 3 biti seteaza numarul accesul la adresele de memorie I/O 0x400-0x5ff IOWAIT0 acest cmp de 3 biti seteaza numarul accesul la adresele de memorie I/O 0x600-0x7ff de timpi de asteptare (0-7) pentru de timpi de asteptare (0-7) pentru de timpi de asteptare (0-7) pentru de timpi de asteptare (0-7) pentru

24

2.5 Porturi seriale Porturile seriale sincrone, sau SPORTs, suporta o mare varietate de protocoale de comunicatie seriala. Acestea pot oferii interconectari directe ntre procesoare n sisteme multiprocesor. Toate procesoarele familiei ADSP-218x contin doua porturi seriale, SPORT0 si SPORT1. Aceste porturi au similaritati dar si diferente. Acest capitol ofera o descriere detaliata si explica diferentele dintre cele doua.
Descrierea de baza

Fiecare port are o interfata de 5 pini, interfata externa:


Nume pin SCLK RFS TFS DR DT Functie Ceas seria Sincronizare cadre receptie Sincronizare cadre transmisie Date primite serial Date transmise serial

Un SPORT primeste date seriale pe intrarea DR si transmite date seriale pe iesirea DT. Poate primii si transmite simultan n operatii full duplex. Bitii de date sunt sincronizati de ceasul serial SCLK, care este o iesire daca procesorul geneza acest ceas sau ca intrare daca ceasul este generat n exterior. Semnalele de sincronizare a cadrelor RFS si TFS sunt folosite pentru a indica nceputul datelor seriale sau a canalelor a cuvintelor seriale.

Figura 2.9

Datele ce urmeaza a fi transmise sunt scrise de la registrele interne ale procesorului n registrul TX al portului SPORT via magistralei DMD. Aceste date pot si comprimate optional n hardware, apoi automat transmise registrului de deplasare si transfer. Bitii din registrul de deplasare sunt deplasati n afara pe port prin pinul DT, mai nti cei mai importanti biti, sincronizate cu ceasul serial. Partea de receptie a SPORT accepta date prin pinul DR, sincronizate cu ceasul serial. Cnd este primit un cuvnt ntreg, datele sunt optional decomprimate, apoi transferate n registrul RX, unde sunt disponibile procesorului. Urmatoarea lista prezinta caracteristicile porturilor SPORT. Multe din aceste caracteristici sunt configurabile si asigura o mare flexibilitate n comunicatia seriala:
bidirectionalitatea fiecare SPORT are sectiuni de transmitere si primire independente buffer dublu fiecare sectiune a SPORT (att de receptie ct si de transmitere) au registre de date pentru transferul de cuvinte de la si spre alte parti ale procesorului si registre de deplasare pentru datele de intrare si iesire ceasul fiecare port poate utiliza un semnal extern sau poate genera propriul ceas pe o gama larga de frecvente pna la 0 Hz Lungimea cuvntului fiecare SPORT suporta cuvinte de date seriale de diferite lungimi de la 3 la 16 biti Cadre fiecare sectiune a SPORT (de primire sau transmisie) poate opera cu sau fara semnal de sincronizare a cadrelor pentru fiecare cuvnt, cu semnal pentru cadre activ pe front crescator sau descrescator ntreruperi fiecare SPORT genereaza o ntrerupere separat pentru transmisia sau receptia unui transfer de cuvinte, sau dupa transferul unui ntreg buffer Capacitati multi-canal SPORT0 poate primi si transmite date selectiv pentru canale de date seriale multiplexate n 24 sau 32 de canale Configuratie alternativa 25

ntreruperile

Fiecare SPORT are o ntrerupere de transmisie si o ntrerupere de receptie. Prioritatea acestor ntreruperi este aratata n tabelul urmator:
Prioritate Cea mai mare ntreruperea de transmisie sau receptie SPORT0 transmite SPORT0 receptioneaza SPORT1 transmite SPORT1 receptioneaza

Cea mai mica Operarea

Scrierea in registrul TX al SPORT-ului pregateste unitatea pentru transmisie; semnalul TFS initializeaza transmisia de date seriale. Odata ce transmisia a nceput, fiecare valoare scrisa n registrul TX este transferata n registrul de deplasare si ncepe transmisia bit cu bit. Fiecare bit este transmis pe frontul crescator al SCLK. Dupa ce primul bit a fost transferat, SPORT-ul genereaza o ntrerupere de transmisie. Registrul TX este din nou disponibil pentru urmatorul cuvnt, chiar daca transmisia cuvntului continua. n partea de receptie, bitii se acumuleaza n timpul receptiei, si apoi cuvntul este scris n registrul RX si se genereaza o ntrerupere.
Programarea SPORT

Pentru programator, SPORT poate fi vazut cu doua functii. Sectiunea de configurare este un bloc cu registrii de control (n memoria de date) pe care programul trebuie sa-l initializeze nainte de folosirea SPORT-ului. Sectiunea de date sunt registrii folositi pentru transmiterea sau primirea de date.
Configurarea

Configurarea porturilor este ndeplinita de setarile bitilor si cmpurilor n registrii de configuratie. Acesti registrii se gasesc n memoria de date. Registrii de configuratie a SPORT0 ocupa locatiile 0x3FF3 pna la 0x3FFA. Registrii de configuratie a SPORT1 ocupa locatiile 0x3FEF pna la 0x3FF2. Adresa
0x3FFA 0x3FF9 0x3FF8 0x3FF7 0x3FF6

Continut
Activeaza modul multicanal receptie cuvinte SPORT0 Activeaza modul multicanal receptie cuvinte SPORT0 Activeaza modul multicanal transmitere cuvinte SPORT0 Activeaza modul multicanal transmitere cuvinte SPORT0 Registrul de control SPORT0 Control mod multicanal Sursa de ceas serial Controlul sincronizarii cadrelor Modul companding Lungimea cuvintelor seriale Divizorul de ceas serial (determina frecventa) Modul de sincronizare a receptiei cadrelor la ceas divizat Registrul de contro autobuffer Registrul de control SPORT1 Valoarea fanionului de iesire Sursa de ceas serial Controlul sincronizarii cadrelor Modul companding Lungimea cuvintelor seriale Divizorul de ceas serial (determina frecventa) Modul de sincronizare a receptiei cadrelor la ceas divizat Registrul de contro autobuffer

0x3FF5 0x3FF4 0x3FF3 0x3FF2

0x3FF1 0x3FF0 0x3FEF

26

Primirea si transmiterea datelor

Fiecare SPORT are un registru de transmisie si unul de receptie. Acesti registrii nu se gasesc nicaieri n memorie, dar pot fi identificati n mnemonicile asamblorului. Registrii de transmisie sunt TX0 si TX1, pentru SPORT0, respectiv SPORT1. Registrii de transmisie sunt numiti RX0 si RX1 pentru SPORT0 si SPORT1. Acesti registrii pot fi accesati oricnd n timpul executiei programului.
Activarea SPORT

Porturile SPORT pot fi activate prin registrii de control ai sistemului. Acesti registrii se gasesc n memoria de date la adresa 0x3FFF. Bitul 12 activeaza SPORT0 daca este 1, iar bitul 11 activeaza SPORT1 daca este 1. Ambii biti sunt stersi la reset, dezactivnd SPORT-urile.

Figura 2.10 Activarea in registrul de control al sistemului Ceasul serial

Fiecare port opereaza cu propriul sau semnal de ceas. Ceasul serial SCLK poate fi generat intern sau primit de la o sursa externa. Bitul SCLK, bitul 14 din ambele SPORT-uri determina sursa ceasului. Daca bitul este 1, atunci ceasul este cel al procesorului. Daca bitul este 0, procesorul asteapta semnalul de ceas de la o sursa externa. Dupa reset ISCLK este stres, ceasul generat de procesor fiind cel folosit de port. Ceasul va ncepe cu urmatoarea instructiune, portul putnd fi folosit ca generator de ceas, contor, sau divizor de ceas.

Figura 2.11 ISCLK Bit in SPORT Control Register Autobuffering

n mod normal, un SPORT genereaza o ntrerupere atunci cnd a primit sau ncepe sa transmita cuvinte de date. Autobuffering-ul ofera un mecanism de transmisie si receptie a unui ntreg bloc de date serial nainte de generarea unei ntreruperi. Rutinele pot prelucra un ntreg bloc de date, spre deosebire de un singur cuvnt, reducnd timpul semnificativ. Autobuffering-ul foloseste o adresare circulara a unui buffer al DAG-ului. Cnd este activat, fiecare data seriala este transferata de la memoria de date ntr-un singur ciclu de ceas. Acest ciclu se executa independent de instructiunea executata la momentul respectiv, daca se ntmpla. Nici o ntrerupere nu este generata pentru transferul individual de date.

Figura 2.12 SPORT Autobuffer Control Register


27

2.6 Formatele datelor pe 16 biti Familia de procesoare ADSP-218x suporta date pe 16 biti cu virgula fixa in hardware. Aceasta facilitate al unitatii de calcul permite suportul altor formate n software. Acest capitol descrie o varietate de aspecte al formatelor de date pe 16 biti. Este de asemenea descris modul de implementare a blocurilor cu virgula mobila n software.
Cu semn sau fara semn doua formate complementare

Numerele binare fara semn pot fi privite ca pozitive, avnd o plaja aproape dubla fata de un numar cu semn de aceeasi lungime. n familia de procesoare ADSP-218x sunt doua formate complementare: cu semn si complement fata de 1, BCD si formatul extins nu sunt suportate.
Formatul ntreg sau fractionar

Familia ADSP-218x suporta att formatul ntreg ct si formatul fractionar, cu exceptia procesorului ADSP-2100, care nu realizeaza multiplicari cu ntregi. ntr-un numar ntreg, virgula este asumata ca existenta la dreapta bitului cel mai putin semnificativ, astfel nct gradul fiecarui numar este cel putin 1.

Figura 2.13 Formatul intreg

ntr-un format fractionar, virgula este asumata ca fiind undeva n numar, ponderea putnd fi mai mica dect 1. De notat este faptul ca formatul descrie doua numere separate prin virgula, primul numar fiind cel prezent la stnga virgulei, iar de-al doilea la dreapta virgulei. Figura 2.14 arata dimensiunile intervalului de numere ce pot fi reprezentate in formatul fractionar cu 16 biti.

Figura 2.14 Formatul frationar nmultirea binara

n adunari sau scaderi, ambii operanzi trebuiesc sa fie n acelasi format(cu semn sau fara, virgula n acelasi loc) si rezultatul se formeaza n acelasi mod ca si operanzii. Adunarii si scaderile sunt facute n acelasi mod chiar daca intrarile sunt cu semn sau nu. n nmultirii, valorile de intrare pot avea diferite formate, iar rezultatul depinde de aceste doua formate. Limbajul de asamblare a familiei de procesoare ADSP-218x permite specificarea tipului de
28

date de intrare: ambele cu semn, ambele fara semn, sau cate una din fiecare. Pozitia virgulei in rezultat este derivata din pozitia acesteia n operanzi. Produsul a doua numere pe 16 biti este un numar pe 32 de biti. Daca valorile de intrare sunt de forma M.N si P.Q atunci rezultatul va fi de forma (M+P).(N+Q).
Modul fractionar sau modul ntreg

Un produs a doua numere cu semn are doi biti de semn. Datorita faptului ca unul din biti este redundant, se poate deplasa ntregul rezultat cu o pozitie la stnga. Aditional, daca unul din numere este de formatul 1.15, deplasarea la stnga cu o pozitie produce rezultatului sa aiba acelasi format ca si celalalt operand. De exemplu nmultind un numar 1.15 cu un numar 5.11 rezultatul va fi un numar 6.26. Cnd deplasam la stnga un bit, rezultatul este un numar 5.27, sau un numar 5.11 plus nca 16 biti cei mai nesemnificativi.

29