+ All Categories
Home > Documents > Curs 3 Arhitectura ADSP 2181

Curs 3 Arhitectura ADSP 2181

Date post: 24-Jul-2015
Category:
Upload: sanda-ruxandra
View: 162 times
Download: 6 times
Share this document with a friend
19
11 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.
Transcript
Page 1: Curs 3 Arhitectura ADSP 2181

11

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.

Page 2: Curs 3 Arhitectura ADSP 2181

12

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 intr-un 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.

Page 3: Curs 3 Arhitectura ADSP 2181

13

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 pâna 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.

Page 4: Curs 3 Arhitectura ADSP 2181

14

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 sfârsitul acestuia. Acest lucru permite ca un operand al ALU sa fie citit la începutul unui ciclu si actualizat la sfârsitul acestuia. De asemenea se permite ca rezultatul sa fie încarcat în memorie la începutul unui ciclu si actualizat cu un nou rezultat la sfârsitul 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.

Page 5: Curs 3 Arhitectura ADSP 2181

15

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 câte 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 (când 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 sfârsitul acestuia. Se permite ca o intrare în MAC (un operand) sa fie încarcata la începutul ciclului (operatiei) si sa fie actualizata la sfârsitul ciclului (de exemplu din memorie).

Page 6: Curs 3 Arhitectura ADSP 2181

16

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 stânga, î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.

Page 7: Curs 3 Arhitectura ADSP 2181

17

2.2.3 Unitatea de deplasare (SHIFTER) Acest bloc functional permite efectuarea unui set complet de functii de deplasare pe 16 biti de intrare, generând 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).

Page 8: Curs 3 Arhitectura ADSP 2181

18

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 atât adrese pentru memoria de date cât 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. Când 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

Page 9: Curs 3 Arhitectura ADSP 2181

19

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 atât adresarea liniara cât si adresarea circulara. Valoarea registrului L (lungime) corespunde unui registru I (de exemplu I0 ar corespunde lui L0) determinând 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 când 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 când sunt cititi. Continutul registrilor M are semn. Când 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 când 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

Page 10: Curs 3 Arhitectura ADSP 2181

20

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, permitând 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 când cei 24 de biti sunt necesari.

Figura 2.6 Unitate de schimb intre magistrale

Page 11: Curs 3 Arhitectura ADSP 2181

21

2.4 Interfata de memorie

Familia de procesoare ADSP-218x are o arhitectura Harvard modificata în care memoria de date si program stocheaza atât instructiuni cât 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 când 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 (atât la memoria de program cât si cea de date) a procesorului de date – exceptând 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, exceptând 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 cât mai mici. Pe de alta parte, aceasta reducere a dimensiunilor necesita un design

Page 12: Curs 3 Arhitectura ADSP 2181

22

mai complex pentru a putea folosi simultan atât magistralele de date si adrese externe, cât si functionalitatea portului IDMA.

Interfata de memorie

În arhitectura Harvard modificata a procesorului folosita de familia ADSP-218x, memoria de program stocheaza atât instructiuni, cât 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.

Câmpul 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. Câmpul 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, exceptând 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 atât memoriei de program interna cât si celei externe.

Când se acceseaza paginile de memorie de program externe, registrul PMOCLAY controleaza sau determina valoarea pinului de adresa A13. Când registrul PMOVLAY este egal cu 1, valoarea pinului A13 este 0. Când 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 atât instructiuni cât 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, incluzând 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) pâna 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 când 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 când se realizata salturi indirecte cu registrii sau instructiunile de apel sau când 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, pâna 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, exceptând

Page 13: Curs 3 Arhitectura ADSP 2181

23

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 atât memoriei externe cât si celei interne de date.

Câmpul 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) pâna 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 putând 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 pâna 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 câmpul 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.

Page 14: Curs 3 Arhitectura ADSP 2181

24

Spatiul de memorie pentru I/O Familia de procesoare ADSP-218x au un spatiu de memorie de I/O dedicat pe 16 biti continând

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 câmpurile IOWAIT0:3 care controleaza fiecare regiunile de memorie, continând 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 câmpuri:

• IOWAIT0 – acest câmp de 3 biti seteaza numarul de timpi de asteptare (0-7) pentru accesul la adresele de memorie I/O 0x000-0x1ff

• IOWAIT0 – acest câmp de 3 biti seteaza numarul de timpi de asteptare (0-7) pentru accesul la adresele de memorie I/O 0x200-0x3ff

• IOWAIT0 – acest câmp de 3 biti seteaza numarul de timpi de asteptare (0-7) pentru accesul la adresele de memorie I/O 0x400-0x5ff

• IOWAIT0 – acest câmp de 3 biti seteaza numarul de timpi de asteptare (0-7) pentru accesul la adresele de memorie I/O 0x600-0x7ff

Page 15: Curs 3 Arhitectura ADSP 2181

25

2.5 Porturi seriale Porturile seriale sincrone, sau SPORT’s, 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:

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 întâi cei mai importanti biti, sincronizate cu ceasul serial. Partea de receptie a SPORT accepta date prin pinul DR, sincronizate cu ceasul serial. Când este primit un cuvânt î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 (atât de receptie cât 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 pâna la 0 Hz

• Lungimea cuvântului – 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 cuvânt, 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

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

Page 16: Curs 3 Arhitectura ADSP 2181

26

Întreruperile

Fiecare SPORT are o întrerupere de transmisie si o întrerupere de receptie. Prioritatea acestor întreruperi este aratata în tabelul urmator:

Prioritate Întreruperea de transmisie sau receptie

Cea mai mare SPORT0 transmite SPORT0 receptioneaza SPORT1 transmite

Cea mai mica SPORT1 receptioneaza

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 cuvânt, chiar daca transmisia cuvântului continua.

În partea de receptie, bitii se acumuleaza în timpul receptiei, si apoi cuvântul 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 câmpurilor în registrii de configuratie. Acesti registrii se gasesc în memoria de date. Registrii de configuratie a SPORT0 ocupa locatiile 0x3FF3 pâna la 0x3FFA. Registrii de configuratie a SPORT1 ocupa locatiile 0x3FEF pâna la 0x3FF2.

Adresa Continut 0x3FFA Activeaza modul multicanal receptie cuvinte SPORT0 0x3FF9 Activeaza modul multicanal receptie cuvinte SPORT0 0x3FF8 Activeaza modul multicanal transmitere cuvinte SPORT0 0x3FF7 Activeaza modul multicanal transmitere cuvinte SPORT0 0x3FF6 Registrul de control SPORT0

Control mod multicanal Sursa de ceas serial Controlul sincronizarii cadrelor Modul companding Lungimea cuvintelor seriale

0x3FF5 Divizorul de ceas serial (determina frecventa) 0x3FF4 Modul de sincronizare a receptiei cadrelor la ceas divizat 0x3FF3 Registrul de contro autobuffer 0x3FF2 Registrul de control SPORT1

Valoarea fanionului de iesire Sursa de ceas serial Controlul sincronizarii cadrelor Modul companding Lungimea cuvintelor seriale

0x3FF1 Divizorul de ceas serial (determina frecventa) 0x3FF0 Modul de sincronizare a receptiei cadrelor la ceas divizat 0x3FEF Registrul de contro autobuffer

Page 17: Curs 3 Arhitectura ADSP 2181

27

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 oricând î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, dezactivând 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 putând 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 când 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 cuvânt, reducând timpul semnificativ.

Autobuffering-ul foloseste o adresare circulara a unui buffer al DAG-ului. Când 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 întâmpla. Nici o întrerupere nu este generata pentru transferul individual de date.

Figura 2.12 SPORT Autobuffer Control Register

Page 18: Curs 3 Arhitectura ADSP 2181

28

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, având 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 atât formatul întreg cât 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 încât 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 putând fi

mai mica decât 1. De notat este faptul ca formatul descrie doua numere separate prin virgula, primul numar fiind cel prezent la stânga 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

Page 19: Curs 3 Arhitectura ADSP 2181

29

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 stânga. Aditional, daca unul din numere este de formatul 1.15, deplasarea la stânga 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. Când deplasam la stânga un bit, rezultatul este un numar 5.27, sau un numar 5.11 plus înca 16 biti cei mai nesemnificativi.


Recommended