Documente Academic
Documente Profesional
Documente Cultură
Setul de instructiuni
Setul de instructiuni al unui procesor este un factor cheie care determina nu numai ce
operatii sunt posibile, dar si ce operatii sunt naturale si eficiente. Instructiunile controleaza modul in
care datele circula pe calea de date a procesorului, modul in care sunt citite si scrise in memorie, si
asa mai departe. De aici rezulta ca setul de instructiuni al unui procesor are o influenta determinanta
asupra sarcinilor la care un procesor este potrivit.
In acest capitol sunt trecute in revista diverse aspecte ale setului de instructiuni. Vom vedea
diferite tipuri de instructiuni (si, in stransa relatie, tipurile de registre) intalnite la procesoarele DSP
si vom analiza suportul setului de instructiuni pentru deplasarea datelor in paralel cu operatiile
aritmetice si de multiplicare. Vom analiza ortogonalitatea setului de instructiuni si usurinta in
programare si vom incheia prin examinarea executiei conditionate si a instructiunilor cu functii
speciale.
Instructiuni aritmetice
Dupa cum a fost evidentiat anterior, instructiunile de adunare, multiplicare si multiplicare cu
acumulare sunt operatii absolut necesare in aplicatii DSP. Majoritatea procesoarelor pun la
dispozitie un set bogat de instructiuni aritmetice (adunare, scadere, incrementare, decrementare,
negare, rotunjire, valoare absoluta) si multiplicare. Cu exceptia procesoarelor Texas Instruments -
TMS320C1x, toate procesoarele moderne implementeaza instructiuni de multiplicare cu acumulare.
De obicei aceste instructiuni se executa intr-un singur ciclu de instructiune.
Unele procesoare (cum ar fi PineDSPCore si OakDSPCore - DSP Group sau TMS320C5x -
Texas Instruments) ofera instructiuni de ridicare la patrat. Instructiunile de multiplicare de pe aceste
procesoare utilizeaza de obicei date din memorie adresate indirect drept operanzi. Alte procesoare
care utilizeaza registre pentru operatia de multiplicare nu necesita instructiuni speciale pentru
ridicarea la patrat. De exemplu la DSP5600x (Motorola) operatia de ridicare la patrat se
implementeaza printr-o instructiune „MPY X0,X0,A”.
1
Unele procesoare au instructiuni pentru aritmetica cu precizie extinsa. De exemplu,
instructiuni de inmultire a valorilor cu semn si fara semn sunt disponibile la D950-CORE (SGS-
Thomson), TMS320C54x (TI) si ZR3800x (Zoran). Multe procesoare executa adunarea cu transport
si scaderea cu imprumut, ambele fiind extrem de importante pentru aritmetica cu precizie extinsa.
Operatii logice
Majoritatea procesoarelor DSP ofera instructiuni pentru efectuarea operatiilor logice,
incluzand operatiile logice SI, SAU, SAU-EXCUSIV si NEGARE. Acestea sunt utile in corectii de
erori si in aplicatiile cu procesare a deciziilor care sunt din ce in ce mai intalnite la DSP-uri. De
remarcat faptul ca procesoarele pot avea si instuctiuni de manipulare a bitilor (sau a campurilor de
biti), care vor fi discutate in continuare.
Deplasari
Operatiile de deplasare sunt de doua categorii: aritmetice si logice. O deplasare logica spre
stanga cu un bit insereaza un zero in pozitia celui mai putin semnificativ bit, in timp ce o deplasare
logica spre dreapta cu un bit insereaza un zero in pozitia celui mai semnificativ bit. Pe de alta parte,
o deplasare aritmetica la dreapta copiaza bitul de semn (un unu sau un zero, in functie de semnul
numarului) in cel mai semnificativ bit. Chiar daca se utilizeaza termenul „deplasare aritmetica spre
stanga”, deplasarile la stanga aritmetice si logice sunt identice: ambele deplaseaza cuvantul la
stanga si insereaza un zero in pozitia celui mai putin semnificativ bit.
Deplasarile aritmetice ofera o modalitate de a scala datele fara a utiliza instructiunea de
multiplicare a procesorului. Scalarea este deosebit de utila pentru procesoarele cu virgula fixa unde
este necesara o scalare corespunzatoare pentru a obtine rezultate precise la efectuarea operatiilor
matematice. De asemenea operatia de deplasare pote fi privita si ca o inmultire cu o data care este o
putere a lui 2.
Practic toate DSP-urile pun la dispozitie instructiuni de deplasare in diverse variante. Unele
procesoare ofera doar un set minim, respectiv instructiuni pentru efectuarea deplasarilor aritmetice
spre stanga si spre dreapta cu un bit. Alte procesoare pot oferi in plus instructiuni de deplasare cu
doi sau patru biti. Acestea se pot combina cu deplasarile cu un singur bit pentru a forma deplasari
cu n biti, dar cu mai multe cicluri de instructiune.
Din ce in ce mai multe procesoare DSP pun la dispozitie un registru de deplasare reversibil
si instuctiuni care il utilizeaza pentru a realiza deplasari aritmetice sau logice cu orice numar de biti
(denumite barell shifter). Exemplele includ DSP16xx (AT&T), ADSP-21xx si ADSP-210xx
(Analog Devices), OakDSPCore (DSP Group), DSP563xx (Motorola), D950-CORE (SGS-
Thomson) si TMS320C5x si TMS320C54x (Texas Instruments).
2
Rotatii
Rotatia poate fi considerata drept o deplasare circulara: o deplasare in care bitii de la un
capat sunt deplasati la celalalt capat. De exemplu, la o rotatie spre stanga cu un bit, bitul cel mai
semnificativ este dus pe pozitia bitului cel mai putin semnificativ, iar ceilalti biti sunt deplasati cate
o pozitie la stanga. Rotatia este utila in diverse cazuri, cum ar fi la codarea cu corectie a erorilor
(care foloseste „intreteserea bitilor”). De asemenea operatia mai poate fi utilizata la generarea
adreselor cu bitii inversati de catre procesoarele care nu accepta operatia de inversare a bitilor
implementata in unitatea de generare a adreselor.
Majoritatea procesoarelor au instructiuni pentru rotirea unui cuvant la stanga sau la dreapta
cu un bit. Exceptiile includ DSP16xx (AT&T), PD7701x (NEC), Z893xx (Zilog) si ZR3800x
(Zoran).
Comparatii
Multe procesoare pun la dispozitie un set de biti de stare care dau informatii despre
rezultatele operatiilor aritmetice. De exemplu, bitii de stare includ un bit de zero (setat daca
rezultatul ultimei operatii aritmetice a fost zero), un bit de minus (setat daca rezultatul ultimei
operatii aritmetice a fost negativ), un bit de depasire si asa mai departe. Acesti biti de stare sunt
setati ca rezultat al unei operatii aritmetice si pot fi apoi utilizati in salturi conditionate sau in
instuctiuni cu executie conditionata (discutate mai jos).
Intr-o instructiune in care se iau decizii un procesor poate avea nevoie sa compare rapid o
serie de valori cunoscute cu o data dintr-un registru. O modalitate de a face acest lucru este de a
scadea valoarile ce urmeaza a fi comparate din valoarea de referinta pentru a seta bitii de stare. La
unele procesoare aceasta operatie modifica valoarea referintei in timp ce pe altele rezultatul ei poate
fi stocat intr-un alt registru. La procesoarele cu putine registre (incluzand majoritatea procesoarelor
DSP in virgula fixa), nici una dintre acestea nu poate fi o solutie. Drept alternativa, unele
procesoare ofera instructiuni de comparare a valorilor care efectueaza aceasta scadere fara a
modifica valoarea referinta si fara a utiliza un alt registru pentru stocarea rezultatului. O
imbunatatire interesanta a operatiei normale de comparare este compararea in valoare absoluta care
permite determinarea rapida a incadrarii unei valori intr-un domeniu.
Executarea buclelor
Majoritatea aplicatilor DSP necesita executarea repetata a unui numar mic de operatii
aritmetice sau de multiplicare. Deoarece numarul de instructiuni dintr-o bucla este de obicei mic,
instructiunile de decrementare a unui contor, de testare a acestuia si de salt la inceputul buclei pot
adauga o cantitate relativ mare de operatii suplimentare. Astfe, practic toate procesoarele DSP ofera
instructiuni de efectuare a buclelor implementate hardware. Aceste instructiuni permit repetarea
3
unei instructiuni sau a unui bloc de instructiuni fara a adauga operatiile suplimentare ale secventei
de decrementare, test sau de salt de la sfarsitul buclei.
Facilitatiile buclelor hardware sunt discutate detaliat in Capitolul 8.
6
Unele procesoare pun la dispozitie instructiuni de impartire iterativa care calculeaza doar un
bit al rezultatului la fiecare executie.
ADSP-210xx (Analog Devices) si TMS320C4x (TI) ofera o instructiune de aflare a valorii
aproximative a radacinii patrate, care poate fi folosita ca o baza la aflarea mai exacta a valorii
radacinii patrate a unui numar.
Multe procesoare pun la dispozitie instructiuni specializate de implementare a operatiilor cu
stive, push si pop fiind cele mai intalnite instructiuni.
Instructiunile de activare si dezactivare a intreruperilor sunt utilizate de unele procesoare
pentru controlul intreruperilor.
7.2 Registrele
Registrele principale dintr-un procesor sunt strans legate de setul sau de instructiuni,
deoarece instructiunile folosesc deseori registre drept operanzi sursa sau destinatie, sau le folosesc
pentru a genera adrese pentru operanzii lor sursa sau destinatie. In paragrafele ce urmeaza vom trece
in revista tipurile de registre ce se gasesc pe DSP-urile programabile si functiile acestora. La fel ca
in cazul altor facilitati ale procesoarelor, un numar mare de registre face programarea mai usoara,
dar mareste dimensiunea instructiunilor si a pastilei de siliciu a procesorului, rezultand un chip mai
scump.
Registre acumulatoare
Fiecare procesor DSP de pe piata are cel putin un registru acumulator, cu toate ca la anumite
procesoare poate avea alta denumire. Un registru acumulator este cel putin suficient de larg pentru a
cuprinde cel mai mare rezultat aflat pe calea de date, produs de ALU sau de multiplicator. Unele
procesoare, cum ar fi TMS320C1x, TMS320C2x si TMS320C5x (TI) au un singur acumulator.
Altele, ca DSP16xx (AT&T), PineDSPCore si OakDSPCore (DSP Group), DSP5600x si DSP561xx
(Motorola) si TMS320C54x (TI) au doua sau mai multe registre acumulatoare, ceea ce simplifica
codarea algoritmilor ce folosesc numere complexe. Unele procesoare ce opereaza in virgula mobila
au numar mare de registre cu precizie extinsa, din care o parte se pot folosi drept registre
acumulatoare.
Registre de uz general si special
Unele procesoare, cum ar fi ADSP-210xx (Analog Devices), DSP32xx (AT&T), PD7701x
(NEC), TMS320C3x si TMS320C4x (TI), si ZR3800x (Zoran), pun la dispozitie un grup de registre
de uz general. De obicei acestea se pot utiliza ca operanzi pentru majoritatea operatiilor aritmetice si
de multiplicare.
La polul opus se gasesc procesoarele ce au registre dedicate anumitor unitati de executie din
cadrul procesorului. De exemplu, la familia ADSP-21xx (Analog Devices), ALU, multiplicatorul si
unitatea de deplasare au fiecare propriile registre dedicate de intrare si iesire. Multe DSPuri, cum ar
7
fi DSP16xx (AT&T), Z893xx (Zilog) si PineDSPCore (DSP Group) au registre dedicate de iesire a
unitatii de multiplicare.
La unele procesoare registrele de intrare/iesire a unitatii de executie pot servi de asemenea
drept registre de uz general. De exemplu, DSP5600x (Motorola) foloseste registrele X0, X1, Y0, Y1
drept intrari pentru multiplicare, dar si ca intrari pentru ALU sau in alte scopuri. Aceasta abilitate
mareste flexibilitatea procesorului.
Majoritatea programatorilor prefera procesoarele cu registre de uz general ce pot fi folosite
pentru sarcini variate fata de procesoarele cu registre specializate, dedicate unei singure functii de
pe calea de date. Totusi procesoarele cu registre generale au si dezavantaje: implementarea acestor
registre este mai costisitoare.
Alte registre
Alte registre intalnite la DSP-uri includ:
- Pointerul de stiva. De obicei se gaseste la procesoarele ce suporta stive software, un
pointer de stiva este un registru dedicat indicarii varfului curent al stivei.
- Numaratorul de program. Numaratorul de program stocheaza adresa urmatoarei
instructiuni ce urmeaza a fi decodata.
- Registre de bucla. Aceste contin informatii despre buclele hardware, cum ar fi adresa
de start, ce de sfarsit si numarul de repetari.
In majoritatea cazurilor interactiunea programatorului cu aceste registre este mult mai
limitata decat ce cu registrele principale ale procesorului.
8
Instructiunile pentru transfer paralel utilizate de DSP-uri pot sa aiba doua forme, dupa cum
datele deplasate sunt sau nu in relatie directa cu operanzii instructiunii care se refera la ALU sau la
multiplictor.
Setul de instructiuni de pe PineDSPCore (DSP Group) este tipic pentru operatia de transfer
paralel in relatie directa cu operanzii. La acest procesor, doar instructiunile care au operanzi din
surse multiple pot efectua accesari multiple de date din memorie intr-un ciclu instructiune si accesul
este limitat la datele necesare unei operatii aritmetice sau de multiplicare. De exemplu, o
instructiune de inmultire poate fi:
MPY (R0), (R4)
Aceasta instructiune ia continutul locatiilor de memorie la care indica R0 si R4, inmulteste aceste
valori si depune rezultatul in registrul produs. De remarcat ca pentru a obtine operanzii instructiunii
MPY sunt executate doua accesari la memorie.
In contrast, un exemplu de transfer paralel care nu este in relatie directa cu operanzii este
prezenta la familia DSP5600x (Motorola). La acest procesor, operatiile ALU si de multiplicare iau
operanzii din registre ce au fost in prealabil incarcate cu valori de intrare si depun rezultatul in
registre acumulatoare. In paralel cu o instructiune ALU sau de multiplicare, DSP5600x poate accesa
(pentru scriere sau citire) doua locatii de memorie care pot sa nu se afle in relatie directa cu
operanzii instructiunii. O posibila instructiune de inmultire pe DSP5600x:
MPY X0, Y0, A X:(R0)+,X0 Y1,Y:(R4)+
Aceasta instructiune inmulteste X0 cu Y0 si depune rezultatul in acumulatorul A. In paralel
incarca continutul locatiei din blocul de memorie X indicat de R0 in X0, si stocheaza Y1 in blocum
de memorie Y indicata de R4.
Transferul paralel care nu este in relatie directa cu operanzii permite programatorului sa
foloseasca mai eficient latimea de banda a memoriei oferita de procesor. In cazul anterior, daca
instructiunea nu necesita doua accesari ale memoriei, cele doua accesari sunt pierdute, chiar daca
componenta hardware are latimea de banda necesara executarii lor. Transferul paralel care nu este
in relatie directa cu operanzii permite utilizatorului sa utilizeze aceste doua accesari pentru a stoca
rezultate de la instructiunea anterioara sau pentru a incarca date pentru instructiunea urmatoare.
Transferul paralel care nu este in relatie directa cu operanzii este util pentru executia algoritmilor
care necesita acces frecvent, nesecvential, la memorie, cum ar fi transformarea Fourier rapida.
Procesoarele ce pun la dispozitie acest al doilea tip de acces includ DSP16xx (AT&T), toate
procesoarele Analog Devices, toate procesoarele Motorola, PD7701x (NEC), D950-CORE (SGS-
Thomson) si ZR3800x (Zoran). Procesoarele ce folosesc primul tip de acces includ DSP32C si
DSP32xx (AT&T), PineDSPCore si OakDSPCore (DSP Group), TMS320C2x si TMS320C5x (TI),
si familia Z893xx (Zoran). Alte procesoare, cum ar fi TMS320C3x, TMS320C4x si TMS320C54x
9
suporta ambele tipuri de acces pentru instructiuni diferite. TMS320C1x nu ofera transfer paralel de
nici un fel, permitand doar un acces la memorie pe ciclu instructiune.
Cele doua tipuri de transfer paralel sunt corelate cu tipurile de codare in limbaj de
asamblare, stationare temporal si cu stationare in date, discutate in Capitolul 9.
10
instructiune executata care nu utilzeaza toata puterea setului de instructiuni constituie un argument
pentru un set de instructiuni mai mic, mai putin ortogonal, mai greu de programat dar mult mai
eficient din punct de vedere al utilizarii memoriei.
Exista cateva modalitati frecvent folosite pentru a obtine o functionalitate mai mare cu un
set de instructiuni cu latime a cuvantului de instructiune mai mic la procesoarele DSP cu
instructiuni codate cu 16 biti:
- Reducerea numarului de operatii. Executind mai putine operatii se elibereaza biti din
cuvantul de instructiune pentru alte scopuri. De exemplu, DSP16xx (AT&T) nu are instructiuni de
rotatie.
- Reducerea numarului de moduri de adresare. Procesoarele cu lungimi ale cuvantului
instructiune mai mare pun la dispozitie o mare varietate de moduri de adresare disponibile pentru
toate instructiunile. Procesoarele cu o lungime mai mica a cuvantului instructiune au mai putine
moduri de adresare si un numar limitat de moduri de actualizare pentru adresarea indirecta prin
registre. De asemenea pot fi limitate combinatiile valide de operatii si moduri de adresare.
- Restrictii asupra operanzilor sursa/destinatie. Familia DSP561xx (Motorola) este
tipica pentru justificarea acestei solutii. De exemplu, a doua deplasare paralela intr-o instructiune
poate folosi doar un anumit registru (R3) pentru generarea adreselor. Similar, alegerea sursei
operanzilor la o instructiune de multiplicare determina cate scrieri sau citiri paralele sunt permise.
- Utilizarea bitilor de mod. Texas Instruments foloseste aceasta abordare la familiile
TMS320C1x si TMS320C2x, dar mai ales la TMS320C5x. Aceste procesoare folosesc bitii de mod
stocati in registre dedicate pentru a determina partial ce face o instructiune. De exemplu,
TMS320C5x nu are instructiuni separate de deplasare aritmetica si logica. In schimb un bit de
deplasare intr-un registru de control determina daca instructiunea de deplasare este aritmetica sau
11
logica. Similar, instructiunea de deplasare a acumulatorului ia numarul de biti cu care are loc
deplasarea dintr-un registru special si nu dintr-o valoare codata in cuvantul instructiune.
Majoritatea acestor optiuni cresc dificultatea de programare, dar cuvantul instructiune este mai scurt
ceea ce reduce pretul total al procesorului si sistemului.
12
Capitolul 8
Algoritmii DSP implica adesea executia repetata a unui numar mic de instructiuni numite
cicluri interne (kernels). Filtrele FIR si IIR, FFT, inmultirea matricilor si o multime de alte aplicatii
elementare sunt toate realizate prin executarea repetata a unei instructiuni sau a unei secvente de
instructiuni. Procesoarele DSP au evoluat pentru a include caracteristici care sa le permita
manevrarea eficienta a acestor tipuri de activitati repetate. Pentru a intelege aceasta evolutie,
trebuie analizate problemele asociate abordarilor traditionale ale acestor forme de executie repetata
a instructiunilor.
In primul rand, o abordare naturala a ciclului foloseste o instructiune de salt (branch
instruction) pentru a reveni la punctul de inceput a ciclului. Cum este mentionat in Capitolul 7 si
discutat in amanuntime in Capitolul 9, de obicei instructiunile de salt necesita cateva cicluri de tact
pentru fi executate. In special pentru cicluri mici incarcarea buclei (respectiv cresterea timpului de
executie) datorata instructiunilor de salt poate fi considerabila.
In al doilea rand, deorece majoritatea ciclurilor sunt executate de un numar fix de ori,
procesorul trebuie sa foloseasca un registru index pentru a contoriza numarul de instructiuni din
bucla si un registru index pentru a contoriza numarul de parcurgeri a ciclului. Calea de date a
procesorului trebuie folosita pentru a incrementa/decrementa indexul si pentru testarea valorii sale,
pentru a stabili daca au fost executate toate instructiunile si pentru a aduce procesorul la inceputul
buclei. Toate aceste activitati sporesc incarcarea buclei si folosesc in plus registre care ar putea fi
utilizate in alte scopuri.
Procesoarele DSP au evoluat, pentru a evita problemele datorate ciclurilor asistate software,
spre tehnici cunoscute sub numele “zero-overhead looping”. Mecanismele hardware de control a
1
buclelor sunt unitati speciale de control hardware care repeta de un anumit numar de ori o singura
instructiune sau un grup de instructiuni. Principala diferenta intre ciclurile hardware si cele software
este aceea ca ciclurile hardware nu consuma timp pentru incrementarea sau decrementarea
contoarelor si pentru a verifica daca ciclul este incheiat, pentru a reveni la inceputul ciclului. De
exemplu, figurile 8.1 (a) si 8.1 (b) prezinta un filtru FIR implementat in limbaj de ansamblare pe
doua procesoare DSP, unul cu cicluri asistate software si celalalt cu cicluri executate hardware.
Ciclul software necesita in general de trei ori mai mult timp pentru a fi executat, presupunand ca
toate instructiunile sunt executate intr-un singur ciclu de tact. De fapt, instructiunile de salt necesita
cateva cicluri de tact pentru a fi executate, deci avantajul ciclurilor hardware este si mai evident.
3
repetate este mai scazut daca contorizarea numarului de repetari este specificata folosind datele
imediate (alta solutie ar consta in folosirea unui contor de repetare mapat in memorie).
O varianta a ciclurilor hardware, intalnita la unele procesoare (de exemplu, Motorola-
DSP5600x si Zoran - ZR3800x) este urmatoarea: un ciclu numarat ca zero determina procesorul sa
repete ciclul de un numar maxim de ori. Atata timp cat dimensiunea buclelor este fixa aceasta nu ar
fi o problema; poate fi o problema daca in timpul rularii programul determina dinamic numarul de
repetitii. Daca zero este o numarare posibila a repetitiilor (adica nu se repeta deloc ciclul), un test
conditional si o instructiune de salt trebuiesc plasate inainte de startul ciclului pentru a evita
executia buclei daca numararea executiei ar fi zero.
Adancimea de intrepatrundere
Un ciclu imbricat (nested loop) este un ciclu plasat in interiorul altui ciclu. Majoritatea
aplicatiilor care folosesc cicluri hardware au nevoie doar de unul singur. In unele aplicatii,
introducerea unui ciclu in altul poate fi eficienta si convenabila. De exemplu, calculul transformatei
Fourier rapide are nevoie de trei cicluri imbricate.
Cele mai comune abordari pentru executia ciclurilor hardware imbricate sunt:
- Imbricare directa. Unele procesoare, inclusiv toate procesoarele DSP de la
Motorola, Analog Devices si NEC - PD7701x, permit ca ciclurile hardware sa fie imbricate prin
introducerea instructiunilor unui ciclu hardware in interiorul altui ciclu. Adancimea de intre-
patrundere variaza de la trei (NEC - PD7701x) pana la sapte nivele (procesoarele Motorola).
Procesoarele care pot executa cicluri hardware direct imbricate folosesc cite o stiva separata (doar
pentru ciclurile hardware) care contine adresa de inceput a ciclului, adresa de sfarsit si numarul de
repetitii.
4
- Imbricare partiala. Procesoarele care executa cicluri hardware mono si multi-
instructiune permit ca un ciclu mono-instructiune sa fie introdus intr-un ciclu multi-instructiune,
chiar daca ciclurile multi-instructiune nu pot fi imbricate.
- Imbricare software. La procesoarele TMS320C3x si TMS320C5x (TI) ciclurile
hardware pot fi imbricate salvand starea diversilor registri ai ciclului ( startul, sfarsitul ciclului si
indexul ciclului) si apoi executand o noua instructiune din ciclu. In functie de numarul de cicluri
interioare si exterioare, aceasta ar fi o abordare mai buna decat folosirea unei instructiuni de salt
pentru ciclul interior. Reamintim ca o instructiune de ramificare produce o incarcare suplimentara la
fiecare iteratie in timp ce salvarea restaurarea registrelor ciclului trebuie facuta doar odata la fiecare
parcurgere a ciclului.
- Lipsa imbricarii. Exista procesoare DSP (TMS320C2x, DSP16xx, DSP32xx –
AT&T) care nu accepta cicluri hardware imbricate .
5
un sistem propriu de intreruperi, folosit ca mijloc principal de dialog cu dispozitivele periferice sau
pentru tratarea unor situatii anormale de functionare.
In continuare vor fi analizate aspecte privind functionarea sistemului de intreruperi la
procesoarele DSP.
Sursele de intreruperi
Intreruperile provin din surse variate, incluzind:
- perifericele incorporate. Majoritatea procesoarelor poseda o varietate de periferice
incorporate (on-chip peripheral) cum ar fi porturi seriale, paralele, timere, etc., care genereaza
intreruperi cand sunt indeplinite anumite conditii.
- Linii de intreruperi externe. Sunt linii de comanda care pot fi utilizate de elementele
externe pentru a comanda o intrerupere.
- Intreruperi software. Numite si exceptii sau capcane (traps), acestea sunt intreruperi
generate sub control software sau datorate unei operatii initiate prin software. Exemplele includ:
capcanele pentru cod ilegal, exceptiile pentru functionarea in virgula mobila (division by zero,
overflow, underflow, etc.) si altele
Atat perifericele incorporate cat si liniile de intrerupere sunt discutate in detaliu in Capitolul
10.
Vectorii de intrerupere
Fiecarei surse de intrerupere ii este asociat un vector de intrerupere cu ajutorul caruia
microprocesorul stabileste legatura intre sursa intreruperii si subrutina de tratare asociata. Dupa cum
am mentionat mai sus, o intrerupere face ca procesorul sa inceapa executia de la o anumita locatie
de memorie, alta decit cea indicata de valoarea curenta a PC. De fapt, toate procesoarele asociaza o
adresa diferita de memorie cu fiecare intrerupere. Intreruperile vectorizate simplifica programarea
deoarece programatorul nu mai trebuie sa cunoasca care sursa de intreruperi a generat intreruperea;
aceasta informatie este continuta implicit in vectorul de intrerupere. Fara vectorizarea intreruperilor
programatorul trebuie sa verifice fiecare sursa posibila de intrerupere pentru a vedea cine a generat
respectiva intrerupere, crescand timpul de raspuns la intrerupere.
Vectorii de intrerupere tipici au o lungime de unul sau doua cuvinte si sunt localizati in zona
inferioara de memorie (low memory). Locatia accesata cu vectorul de intrerupere contine de obicei
un salt sau o instructiune de apel a unei subrutine care poate fi plasata oriunde in memoria de
program. La unele procesoare locatiile corespunzatoare vectorilor de intrerupere sunt distantate la
cateva cuvinte. Aceasta permite ca scurte rutine de intreruperi sa fie localizate direct la adresa
indicata de vectorul de intrerupere, eliminand instructiunile de salt si de revenire. La alte
6
procesoare, locatia indicata de vectorul de intrerupere nu contine de fapt o instructiune; ea contine
doar adresa rutinei de intrerupere.
Activarea intreruperilor
Toate procesoarele ofera mecanisme pentru activarea/dezactivarea globala a intreruperilor.
Pe anumite procesoare aceasta s-ar putea face prin instructiuni de speciale de activare sau
dezactivare, in timp ce pe altele ar implica scrierea intr-un registru special de control. Majoritatea
procesoarelor permit activarea individuala a intreruperilor pentru fiecare sursa de intreruperi.
Latenta intreruperilor
Latenta intreruperii este timpul de raspuns al procesorului la aparitia unei intreruperi.
Latenta intreruperilor poate varia semnificativ de la o familie de procesoare la alta. Latenta mica a
intreruperii poate fi un factor important in special pentru controlul aplicatiilor in timp real. Aceasta
deoarece furnizorii de procesoare folosesc definitii gresite, vagi sau contradictorii ale latentei
intreruperilor (sau a conditiilor in care este masurata). Definitia formala a latentei intreruperii
precizeaza timpul minim garantat in anumite conditii de la aparitia unei cereri de intrerupere externa
si pana la executia primului cuvant din vectorul de intrerupere. Acest timp este masurat in cicluri
instructiune. Citeva detalii legate de aceasta definitie:
- Majoritatea procesoarelor testeaza starea liniilor externe de intrerupere la sfirsitul
fiecarui ciclu instructiune. Pentru a recunoaste aparitia unei intreruperi intr-un anumit ciclu
instructiune, linia de intreruperi trebuie sa fie activata un anumit cu un anumit timp inainte de
inceputul ciclului instructiune, acest timp fiind numit timp de stabilire (set-up). Deoarece
7
dispozitivul de intrerupere nu are cum sa garanteze ca va indeplini conditiile timpului de set-up al
procesorului, presupunem ca aceste conditii de set-up nu sunt indeplinite. Aceasta mareste latenta
intreruperii cu un ciclu.
- Dupa ce o linie de intreruperi a fost testata cu tactul procesorului este tipic trecuta
prin cateva etape de retinere pentru a evita problemele de metastabilitate. Aceasta etapa este numita
sincronizare. In functie de procesor, aceasta poate adauga unul pana la trei cicluri instructiune
latentei intreruperii.
- Din acest moment intreruperea este tipic recunoscuta ca valida si nerezolvata
depinzind de procesor. Daca procesorul nu este intr-o stare intreruptibila, procesarea intreruperii
este intarzaiata pana cand procesorul intra intr-o stare intreruptibila. Exemplele de stari
neintreruptibile includ dezactivarea unei intreruperi sub control software, executia de catre procesor
a unei alte intreruperi, executia unui ciclu hardware care dezactiveaza intreruperile, executia unui
ciclu multi-instructiune sau procesorul este intarziat datorita starilor de asteptare cand acceseaza
memoria externa. In definitia data latentei intreruperii s-a presupus ca procesorul se afla intr-o stare
intreruptibila care tipic inseamna ca poate executa instructiunea cea mai scurta.
- Procesorul trebuie apoi sa termine executia instructiunilor care sunt deja procesate in
pipeline. Presupunem ca aceste instructiuni reprezinta toate instructiunile care se executa intr-un
singur ciclu instructiune. In paralel cu aceasta, procesorul poate incepe sa incarce si procese din
primul cuvant al vectorului de intrerupere. Definitia data latentei intreruperii include timpul in care
primul cuvant al vectorului de intrerupere este trecut prin prima etapa de executie a pipeline-ului.
Conform descrierii de mai sus unele procesoare nu stocheaza un cuvant instructiune chiar in
locatia vectorului de intrerupere. La aceste procesoare, locatia vectorului de intrerupere contine mai
degraba numai adresa rutinei de intrerupere, iar procesorul executa salt la aceasta adresa. Pe aceste
tipuri de procesoare, definitia latentei de intrerupere include timpul de salt la rutina de intreruperi.
Acest timp nu este inclus pentru procesoarele care contin instructiuni la vectorul de intrerupere,
aceasta deoarece rutina de intreruperi poate in unele situatii sa se afle chiar la locatia indicata de
vectorul de intrerupere. In alte situatii acest lucru nu este posibil si timpul necesar procesorului
pentru a executa o instructiune de salt trebuie luat in consideratie in calculul latentei intreruperii.
Unele procesoare (AT&T - DSP32C si DSP32xx) ofera intreruperi rapide (fast). La
procesoarele Motorola o intrerupere este clasificata ca fiind rapida daca primele doua instructiuni
de la locatia vectorului de intrerupere nu sunt inserate direct in pipeline si executate fara salt,
reducand latenta intreruperii. Latenta intreruperii este strans legata de managementul si adancimea
pipeline-ului.
8
Mecanisme pentru reducerea intreruperilor
Unele procesoare, ca cele din familia DSP-21xx (Analog Devices) sau TMS 320C54x
(Texas Instruments) poseda etaje tampon (autobuffering) la porturile lor seriale. Aceasta
caracteristica permite portului serial sa-si salveze direct in memoria procesorului datele primite, fara
a-l intrerupe. Dupa ce un anumit numar de date a fost transferat, portul serial intrerupe procesorul.
De fapt aceasta este o forma specializata de DMA.
8.3 Stiva
Toate procesoarele DSP poseda instructiuni de salt ca una dintre cele mai simple forme de
control al executiei. In unele aplicatii (calculatoarele personale multimedia multitasking) o forma de
salt, cunoscuta ca saltul relativ la PC, poate fi extrem de utila. In salturile relative la PC, adresa la
care procesorul executa saltul este specificata ca offset la adresa curenta. Adresarea relativa la PC
9
este utila pentru crearea programelor independente de pozitie. Un program independent de pozitie
este acela care poate fi localizat oriunde in memorie. Daca toate referintele la memorie sunt
specificate relativ la alte locatii din codul programului, atunci nu este nici o greutate daca programul
este incarcat in alta parte a memoriei de fiecare data cand este rulat. Pe de alta parte, daca un
program contine referinte absolute la o alta locatie de memorie atunci programul nu mai pote fi
realocat fara a modifica aceste referinte.
In plus, prin folosirea codului independent de pozitie, saltul relativ la PC poate economisi
memorie de program in anumite situatii. In majoritatea programelor, salturile tind sa fie neglijabil
de scurte. Ca rezultat, frecvent offset-ul de la instructiunea curenta la instructiunea destinatie nu are
nevoie sa fie reprezentat de o instructiune cu lungime maxima. Ca urmare, offset-ul, poate fi
continut chiar in instructiunea de salt, rezultand o semnatura de offset de lungime redusa. De
exemplu, OakDSPCore (DSP Group) ofera o instructiune de salt cu o valoare a semnaturii de offset
de 7-biti.
10
Capitolul 9
Functionarea pipeline
1
Intr-o implementare pipeline a acestui procesor imediat dupa ce prima instructiune a fost
incarcata, incepe incarcarea urmatoarei instructiuni, s.a.m.d. Similar, imediat ce a fost decodata
instructiunea curenta incepe decodarea urmatoarei instructiuni. Rezulta ca in cazul folosirii tehnicii
pipeline procesorul executa o noua instructiune la fiecare 20 ns, ceea ce inseamna o crestere de 4
ori a vitezei de lucru. In Figura 9.2 este aratat un lucru interesant: cu toate ca fiecare instructiune
este executata pe durata a mai multi cicli instructiune ele apar pentru programator ca fiind
executate intr-un singur ciclu.
Exemplul de functionare considerat este asemanator cu cel folosit de procesorul
TMS320C3x (Texas Instruments).
2
9.3 Interblocarea
Secventa de lucru aratata in Figura 9.2 prezinta o suprapunere perfecta, deoarece fazele
pipeline-ului se imbina perfect si ofera o utilizare de suta la suta a etajelor functionale ale
procesorului. In realitate, procesoarele nu lucreaza atat de bine ca in exemplul dat. Cea mai
comuna explicatie pentru aceasta este conflictul accesului la resurse. De exemplu, presupunem ca
procesorul considerat are nevoie de doua cicluri instructiune (40ns) pentru a scrie date in memorie.
(acesta este cazul procesoarelor AT&T - DSP16xx.) Daca instructiunea I2 incearca sa scrie in
memorie si instructiunea I3 are nevoie sa citeasca din memorie, al doilea ciclu instructiune pentru
I2 prezinta un conflict in faza de scriere a datelor cu operatia de citire a datelor ceruta de I3.
Aceasta este ilustrata in Figura 9.3, ciclul extins de scriere este evidentiat printr-un chenar negru si
conflictul dintre I2 scriere/I3 citire este redat prin casuta hasurata.
3
O observatie importanta care se desprinde din aceasta este ca timpul de executie al unui
procesor cu pipeline cu interblocare variaza in functie de instructiunile pe care le executa. De
exemplu, daca insructiunea I3 din exemplul nostru nu ar fi avut nevoie sa citeasca date din
memorie atunci nu ar mai fi aparut un conflict, deci nu ar mai fi fost necesara interblocarea. Acesta
complica optimizarea codului pe un procesor cu interblocare deoarece nu este usor sa se determine
momentele in care trebuie facuta interblocarea doar citind codul programului.
De asemenea, pot fi prevazute si alte scenarii de conflict la accesarea resurselor. De
exemplu, unele procesoare poseda instructiuni cu date imediate cu format lung. Acestea sunt datele
care fac parte din instructiune, dar care nu au loc in cuvantul instructiune. Pentru aceste date
procesorul foloseste un ciclu suplimentar de citire din memorie pentru a extrage datele. In
consecinta citirea datelor imediate cu format lung intra in conflict operatia de extragere a codului
urmatoarei instructiuni rezultand o interblocare.
Exemplele de mai sus arata sursele de conflicte care apar in pipeline si unde interblocarea
este singura solutie posibila; fara interblocare, in aceste exemple ar aparea rezultate eronate. In alte
cazuri lipsa interblocarii poate genera rezultate care nu sunt eronate, dar nu corespund intentiilor
programatorului. Vom ilustra acest lucru cu un exemplu pentru procesorul DSP5600x (Motorola),
un procesor care foloseste foarte putin operatia de interblocare.
Ca majoritatea procesoarelor DSP, DSP5600x are registri de adrese care sunt folositi
pentru “adresarea indirecta cu registru”. Un efect interesant la nivelul pipeline-ului apare la
executia urmatoarei secvente de instructiuni:
MOVE #$1234, R0
MOVE X: (R0), X0
Prima instructiune incarca adresa hexazecimala 1234 in registrul de adrese R0. A doua
instructiune transfera continutul locatiei din bancul de memorie X, indicata de registrul de adrese
R0, in registrul X0. De asteptat ar fi ca instructiunile de mai sus sa transfere valoarea stocata la
adresa 1234 a memoriei X in registrul X0. Totusi, datorita efectelor de pipeline, instructiunile de
4
mai sus nu sunt executate in modul in care ne-am fi asteptat. Pentru a intelege de ce, este necesara
o scurta examinare a pipeline-ului procesorului DSP5600x.
Procesorul DSP5600x foloseste un pipeline cu trei etaje. Operatiile executate de ALU
(adunare, inmultire, etc.), accesarea datelor (citirea si scrierea datelor din memorie, ca in exemplul
de mai sus) si incarcarea registrilor sunt realizate in etapa de executie. Adresele folosite pentru
accesarea datelor sunt generate in etapa de decodare. Acest lucru creaza o stare nedeterminata a
pipeline-ului (hazard) – apare o problema datorata pipeline-ului, pe care programatorul trebuie sa
o evite pentru a obtine rezultate corecte. In acest exemplu, prima instructiune MOVE modifica un
registru de adrese folosit in generarea adreselor, dar modificarea nu este reflectata in adresele
folosite in timpul acesului datelor pentru a doua instructiune MOVE.
Figura 9.5 prezinta in detaliu acest hazard. Se remarca ca aceasta figura este usor diferita
fata de figura precedenta in felul cum arata folosirea resurselor procesorului (inclusiv memoria si
unitatile de executie). O astfel de situatie este denumita uzual “tablou de rezervare” (rezervation
table).
5
pot fi inserate alte cateva instructiuni (sau chiar NOP) intre cele doua instructiuni MOVE, pentru a
da pipeline-ului timp sa obtina valoarea corecta in R0.
Procesoarele TMS320C3x, TMS320C4x, TMS320C5x (Texas Instruments) prezinta
aceasta problema dar folosesc interblocarea pentru a proteja programatorul de hazard. De exemplu,
TMS320C3x detecteaza scrierea in oricare dintre registrii sai de adrese si opreste inaintarea in
pipeline a altor instructiuni care folosesc orice registru de adrese pana cind scrierea a fost
terminata. Aceasta este ilustrata in Figura 9.6. In acest exemplu, o instructiune LDI (“incarca
imediat”) incarca o valoare intr-un registru de adrese, la fel ca prima instructiune MOVE din
exemplul cu DSP5600x. A doua instructiune este MPYF (“inmultire in virgula mobila”) care
foloseste adresarea indirecta cu registru pentru a extrage unul din operanzi. Deoarece instructiunea
MPYF foloseste unul din registrii de adrese, prin interblocare este oprita etapa de decodare pana
cand instructiunea LDI este finalizata. Aceasta pentru ca procesorul executa doua instructiuni
NOP.
6
multe cicluri de instructiuni. In mod curent, un salt multi-ciclu se executa intr-un numar de cicluri
egal cu adancimea pipeline-ului, desi pentru a economisi un ciclu de instruciuni, unele procesoare
folosec artificii pentru executa saltul tarziu in etapa de decodare.
O alternativa a saltului multi-ciclu este “saltul intarziat” care nu goleste pipeline-ul. Atunci
cateva dintre instructiunile care urmeaza saltului sunt executate nomal, dupa cum este ilustrat in
Figura 9.8. Un efect secundar al saltului intarzaiat este ca instructiunile care vor fi executate
inainte de salt trebuie sa fie localizate in memorie dupa instructiunea de salt:
BRD NEW_ADDR ; Salt la o noua adresa.
INST 2 ; Aceste trei instructiuni sunt executate inainte de aparitia
INST 3 ; saltului
INST 4 ;
Salturile intarzaiate sunt numite astfel deoarece, pentru programator, efectul saltului pare a
fi intarzaiat cu cateva cicluri instructiune.
Aproape toate procesaorele DSP folosesc salturi multi-ciclu. De asemenea, multe ofera
salturi intarziate, inclusiv TMS320C3x, TMS320C4x si TMS320C5x (Texas Instruments).
Procesoarele ADSP-210xx (Analog Devices), DSP32C si DSP32xx (AT&T) si ZR3800x (Zoran)
executa doar salturi intarziate.
Impreuna cu interblocarea, salturile multi-ciclu si intarziate reprezita un compromis intre
o programare usoara si una eficienta. In cel mai rau caz, programatorul poate intodeauna sa plaseze
7
instructiuni NOP dupa o instructiune de salt intarzaiat si sa obtina acelasi efect ca al saltului multi-
ciclu, dar aceasta cere multa atentie din partea programatorului.
Efectele de salt apar de fiecare data cand apare o schimbare in desfasurarea programului si
nu doar pentru instructiuni de salt. De exemplu: instructiunile de apelare a subrutinelor,
instructiunile de revenire din subrutine si instructiunile de revenire din intreruperi sunt toate
posibile surse de efecte de pipeline ca in prezentarea anterioara. Procesoarele care executa salturi
intarziate poseda de asemenea si reveniri intarziate.
8
Figurile 9.10 si 9.11 arata doua dintre cele cateva scenarii posibile de procesare a
intreruperilor de catre procesorul DSP5600x (Motorola). Se observa imediat anumite diferente fata
de procesorul TMS320C5x.
In primul rand, pentru a incepe procesarea, procesorul are nevoie de doua cicluri de
instructiuni dupa recunoasterea intreruperii. In al doilea rand, DSP5600x nu foloseste instructiuni
INTR pentru a comuta executia la adresa specificata de vectorul de intrerupere. In schimb,
procesorul incepe pur si simplu extragerea codurilor de la adresa data de vector dupa ce o
intrerupere a fost recunoscuta. Cu toate acestea, cel mult doua cuvinte sunt incarcate de la aceasta
adresa. Daca unul dintre cele doua cuvinte este apelul unei subrutine (Figura 9-10), procesorul
elimina instructiunea incarcata anterior si apoi executa saltul la la o adresa specificata printr-un
vector lung de intrerupere (long interrupt vector). Daca nici un cuvant nu este un apel al unei
subrutine, procesorul executa cel mult doua cuvinte si continua sa execute din programul original,
cum este ilustrat in Figura 9-11. Aceasta a doua forma a rutinei de intreruperi este numita
intrerupere rapida. Intreruperile au fost analizat in Capitolul 8.
9
Capitolul 10
O interfata seriala transmite si primeste datele bit cu bit. Spre deosebire, porturile paralele
trimit si primesc date in format paralel, sub forma de cuvinte de 8, 16 sau 32 de biti. Desi
interfetele seriale nu sunt la fel de rapide ca cele paralele (in ceea ce priveste numarul de biti
transferati pe secunda), ele folosesc un numar mai redus de pini de interfata (numai 3 sau 4 pentru o
interfata seriala completa).
Porturile seriale prezente pe chip-urile DSP sunt folosite pentru aplicatii variate, incluzind:
transmiterea si primirea esantioanelor de date catre si de la convertoarele si codecurile
(codoare/decodoare) A/D si D/A
trimiterea si primirea de date catre si de la alte microprocesoare sau DSP-uri
comunicatia cu alte periferice si componente externe
Exista doua mari categorii de interfete seriale: sincrone si asincrone. Un port serial sincron
transmite bitii de date impreuna cu un semnal de ceas. Receptorul foloseste acest semnal pentru a
decide cand sa preia datele primite serial.
In cazul interfetelor seriale asincrone datele nu sunt insotite de un semnal de ceas
suplimentar. Ele se bazeaza pe faptul ca receptorul va recupera semnalul de ceas din datele primite,
lucru care complica interfata seriala si limiteaza viteza maxima de transmisie a datelor. Porturile
seriale asincrone sunt de obicei folosite pentru comunicatii conform standardelor RS-232 sau RS-
422. Desi exista procesoare care poseda porturi seriale asincrone (de exemplu, Motorola -
DSP5600x si cateva procesoare din familia μPD7701x - NEC), numarul lor este redus.
Aproape toate procesoarele DSP asigura unul sau mai multe porturi de interfata seriala
sincrona pe chip. Tipic, fiecare port permite transmisia si receptionarea de informatii in mod serial.
In continuare sunt prezentate unele particularitati ale interfetelor seriale sincrone.
1
Datele si tactul
Dupa cum s-a mentionat, un transmitator serial sincron trimite un semnal de ceas sub forma
unui bit pe care interfata seriala de la receptie il foloseste pentru a determina intervalul in care bitii
de date sunt valizi. Figura 10.1 reprezinta formele de unda pentru o transmisie seriala sincrona.
Toate interfetele sincrone presupun ca transmitatorul modifica datele pe unul din fronturile
semnalului de ceas (fie pe frontul crescator fie pe cel descrescator) si ca datele devin stabile (nu se
mai modifica) pe celalalt front. In figura, datele se schimba pe frontul crescator al ceasului si sunt
citite la receptie pe frontul descrescator. Totusi, diferite interfete seriale sau periferice pot prezenta
relatii diferite intre semnalul de ceas si date. Ca rezultat, unele porturi seriale incorporate in DSP-uri
permit programatorului sa aleaga “polaritatea” ceasului, de fapt care dintre fronturi controleaza
momentul schimbarii datelor.
Fig 10.1
Majoritatea, dar nu toate circuitele de interfata seriala, folosesc o logica pozitiva, respectiv
o tensiune pozitiva (tipic 3,3 V sau 5 V) pe linia seriala de date reprezinta un “1” logic, iar o
tensiune scazuta (aproape 0 V) reprezinta un “0” logic. La unele circuite DSP polaritatea datelor
poate fi selectata de programator.
O alta problema o reprezinta ordinea in care sunt transferati bitii de date. In figura 10.1 se
presupune ca, cuvintele de date au 8 biti lungime si sunt transmise cu cel mai putin semnificativ bit
(LSB) primul. Nu toate echipamentele care folosesc protocoale de comunicatii seriale accepta
aceasta conventie; la unele primul bit transmis este cel mai semnificativ bit (MSB). Prin urmare,
interfetele seriale ale unor DSP-uri permit selectarea directiei, respectiv a ordinii de transmisie.
Porturile seriale permit diverse lungimi ale cuvintelor de date. Valorile obisnuite sunt: 8 biti
(folosit in aplicatii din telefonie) si 16 biti (folosit la reprezentarea semnalului audio digital); totusi
unele porturi seriale accepta si alte lungimi ale cuvintelor.
Sincronizarea cadrelor
Interfetele seriale sincrone folosesc un al treilea semnal, in plus fata de date si ceas, numit
semnal de sincronizare a cadrelor (frame sync.). Acest semnal indica receptorului primul bit al unui
2
cuvant de date transmis pe o linie seriala. Semnalul de sincronizare de cadre este cunoscut si sub
alte denumiri: unii producatori il numesc semnal de sincronizare de cuvinte (“word sync”) sau
semnal de inceput de cuvant (“start of word”).
Pentru semnalele de sincronizare de cadre sunt disponibile doua formate: lungime de bit
(“bit length”) si lungime de cuvant (“word length”). Aceste denumiri se refera la durata semnalului
de sincronizare de cadre raportata la durata unui bit de date. Un semnal de sincronizare de cadru de
tip „lungime de bit” dureaza timp de un bit si este transmis de obicei cu un bit inainte de
transmiterea primului bit al cuvantului de date, dar poate poate fi transmis si simultan cu
transmiterea primului bit al cuvantului de date. Semnalul de sincronizare de cadre aratat in figura
10.1 este un semnal de tip “lungime de bit”. Spre deosebire, un semnal un semnal de sincronizare de
cadre de tip “lungime de cuvant” dureaza intreaga lungime a cuvantului de date. Un exemplu de
astfel de semnal este aratat in figura 10.2. Majoritatea DSP-urilor ofera semnale de sincronizare de
cadre “lungime de bit” , dar exista si multe care ofera semnale de tip “lungime de cuvant”.
Anumite echipamente externe pot sa accepte un semnal de sincronizare de cadre cu polaritae
inversa, respectiv are un nivel logic 0 pe durata cuvintului de date si 1 pe durata pauzei dintre
cuvinte. Relativ putine DSP-uri permit alegerea polaritatii semnalului de sincronizare de cadre.
4
ajunge la zero la iesire este generat un impuls, dupa care numaratorul se reincarca cu valoarea de
numarat.
Unele generatoare de ceas de pe DSP-uri nu includ un numarator programabil, fortand
utilizatorul sa selecteze una dintre frecvente de ceas disponibile. Altele asigura numai un numarator
(fara prescalare), care s-ar putea sa nu poata reduce frecventa de ceas la valoarea dorita.
Fig. 10.4 a, b
Figura 10.4(b) prezinta un set tipic de semnale seriale care sunt prezente intr-o retea TDM.
Un procesor (sau un circuit extern) este responsabil cu generarea semnalului de ceas si de
sincronizare de cadre. Semnalul de sincronizare de cadre este folosit pentru a indica inceputul unui
nou set ferestre de timp. Dupa sincronizarea de cadru, fiecare procesor trebuie sa tina cont de
5
numarul ferestrei de timp curente si sa transmita numai in fereastra atribuita lui. Un cuvant de date
(16 biti in figura) ar putea contine un numar de biti care sa indice DSP-ul destinatie (de exemplu 2
biti pentru 4 procesoare) in timp ce restul contin date. O alta varianta foloseste o a doua linie de date
pentru a transmite adresele de sursa si destinatie in paralel cu cuvantul de date.
Intr-o varianta minima, suportul TDM presupune ca procesorul este capabil sa-si puna linia
de transmisie de date a portului serial in stare de impedanta inalta atunci cand procesorul nu
transmite. Aceasta permite altor DSP-uri sa transmita date in timpul ferestrelor atribuite fara a
produce conflicte. Unele porturi seriale au un suport aditional, ca de exemplu un registru care face
portul serial sa transmita in timpul unei anumite ferestre de timp. Fara acest suport, procesorul ar
trebui sa primeasca datele transmise catre toate celelalte procesoare si sa elimine datele care nu ii
sunt adresate si pentru a stabili cand ii vine randul sa transmita.
6
10.2 Porturile paralele
Un port paralel transmite si primeste simultan mai multi biti de date (tipic 8 sau 16 biti), pe
linii separate. Porturile paralele pot sa transfere de obicei date, mult mai repede decat cele seriale,
insa au nevoie de mai multe linii si pini pentru aceasta. Pe langa un numar mai mare de linii de
date, un port paralel de obicei include si linii de comanda a transferului (denumite linii de
handshake sau de strobe). Aceste linii indica unui echipament extern ca datele au fost transmise
catre port de catre DSP, sau invers.
Unele DSP-uri folosesc principala magistrala de date a procesorului ca port paralel. De
obicei fac aceasta rezervand o parte a spatiului lor de adrese (sau folosesc o instructiune speciala)
pentru acces I/O prin magistrala externa. Cand este accesata acea adresa de memorie (sau cind
instructiunea I/O este executata) este activat un pin special de strobe sau handshake, iar procesorul
executa un ciclu pe magistrala externa de citire sau scriere a unei date de la/catre un dispozitiv I/O.
Un echipament extern care monitorizeaza acest pin va sti ca trebuie sa citeasca sau sa scrie de la sau
catre pinii de date externi ai procesorului. Aceasta abordare este destul de obisnuita si este folosita
de majoritatea DSP-urilor Texas Instruments.
Alte DSP-uri, ca de exemplu familia AT&T DSP16xx, asigura porturi paralele separate de
magistrala externa a procesorului. Acesti pini pot fi folositi doar de portul paralel sau pot fi pusi in
comun cu alte periferice. Separand portul paralel de magistrala externa de date a procesorului se
poate simplifica interfatarea cu alte echipamente externe.
Aceste intrari/iesiri se refera la un port paralel de I/O unde liniile pot fi programate
individual sa fie linii de intrare sau de iesire. Spre deosebire de porturile I/O traditionale, porturile
de I/O de bit nu au de obicei asociate linii de strobe sau handshake si pot sa nu aiba suport de
intreruperi. Prin program procesorul trebuie sa verifice portul pentru a stabili daca valorile de
intrare s-au schimbat. Acest port I/O este folosit in scop de control insa uneori este folosit si pentru
transfer de date.
Majoritatea DSP-urilor asigura cel putin una sau doua linii I/O de bit, desi altele pot sa aiba
citeva zeci. Pe unele procesoare porturile I/O de bit sunt puse in comun cu alti pini de periferice.
De exemplu pe Motorola DSP5600x unii dintre pinii asociati unui port serial pot fi configurati
pentru folosire ca port I/O de bit daca aplicatia nu are nevoie sa foloseasca portul serial. Pe alte
procesoare porturile I/O de bit pot sa foloseasca pini dedicati.
Multe procesoare au instructiuni speciale a caror executie depinde de starea portului I/O de
bit. De exemplu majoritatea procesoarelor Texas Instruments in virgula fixa, au un pin de intrare de
7
bit numit “BIO” si de asemenea poseda o instructiune speciala (BIOZ – „ramifica daca starea
portului I/O de bit este zero”) care se transfera controlul la adresa specificata de instructiune daca
starea pinului BIO este zero. In felul acesta poate fi monitorizata starea unui dispozitiv extern.
Procesorul TMS320C14 (Texas Instruments) si familia de DSP-uri AT&T DSP16xx au
porturi de I/O de bit mai sofisticate. Pe langa posibilitatea de a configura individual liniile ca intrari
sau iesiri si posibilitatea de a seta sau reseta bitii, aceste porturi I/O de bit verifica in mod continuu
starea porturilor I/O de bit pentru a stabili daca bitii de intrare se potrivesc unui model
preprogramat. Pe DSP16xx, rezultatul acestei comparatii seteaza starea a 4 fanioane: toti bitii se
potrivesc modelului, unii dintre biti se potrivesc modelului, unii dintre biti nu se potrivesc
modelului si nici un bit nu se potriveste modelului. Aceste fanioane pot fi apoi folosite in
instructiuni cu executie conditionata. De exemplu, folosind o unitate I/O de bit, o instructiune
DSP16xx poate incrementa conditionat un registru daca unul din doi biti specificati este setat.
Unitatea I/O de bit a procesorului TMS320C1x poate intrerupe procesorul cand modelul intrarilor
se potriveste cu modelul memorat.
8
10.5 Porturi de comunicatie
Comunicatiile interprocesoare sunt necesare cind o aplicatie DSP necesita mai multe
procesoare sau acolo unde sunt folosite mai multe procesoare pentru a manipula mai multe secvente
de date interconectate. Un port de comunicatii este un port paralel special destinat pentru
comunicatia multiprocesor. Un port de comunicatii difera de un port gazda sau de un port paralel
obisnuit in doua feluri: In primul rand este facut pentru comunicatia interprocesor intre acelasi tip
de DSP-uri (spre deosebire de conectarea unor diferite tipuri de procesoare sau conectarea la
periferice). In al doilea rand porturile de comunicatii nu asigura in general functii speciale pentru
controlul procesorului DSP, cum este cazul porturilor gazda.
Procesoarele TMS320C4x (Texas Instruments) si ADSP-2106x (Analog Devices) sunt
singurele DSP-uri cu porturi de comunicatii. TMS320C40 si ADSP-2106x au 6 porturi de
comunicatii in timp ce TMS320C44 are 4; porturile TMS320C4x sunt fiecare de 8 biti latime in
timp porturile ADSP-2106x sunt de 4 biti latime. Din moment ce ambele procesoare au o lungime
a cuvantului de date de 32 de biti, porturile de comunicatii ale ambelor procesoare asigura suport
FIFO pentru fragmentarea si reasamblarea cuvintelor mai mari cand acestea sunt transmise prin
porturile de comunicatii relativ inguste.
Porturile de comunicatie au instructiuni dedicate care usureaza folosirea lor. Uzual ele
lucreaza in regim DMA; datele prezente la port sunt scrise automat in memoria DSP.
Practic toate DSP-urile au circuite timer programabile. Acestea sunt folosite de obicei ca o
sursa de intreruperi periodice (adica semnal de ceas pentru un sistem de operare in timp real), dar
sunt posibile si alte aplicatii. De exemplu, unele DSP-uri contin un pin de iesire care furnizeaza un
semnal rectangular cu o frecventa generata de catre timer. Deoarece frecventa este controlata
software, aceasta iesire poate fi considerata ca un oscilator controlat software, util pentru
implementarea unor cicluri de faza constanta
In esenta, un timer seamana mult cu un generator de ceas al unui port serial, fiind compus
dintr-o sursa de semnal de ceas, un cicuit de prescalare si un numarator dupa cum se arata in fig.
10.5. Sursa de semnal de ceas este de obicei ceasul principal al DSP-ului, insa unele DSP-uri
folosesc si un semnal extern ca sursa de semnal de ceas.
Scopul prescalatorului este de a reduce frecventa sursei de ceas astfel incat numaratorul sa
poata numara perioade mai lungi de timp. El face acest lucru divizand frecventa sursei de ceas cu
una din mai multe valori selectabile. De exemplu, familia de procesoare Analog Devices - ADSP-
21xx, prescalatorul foloseste o valoare pe 8 biti , divizand ceasul cu un factor de la 1 la 256, iar la
9
familia AT&T - DSP16xx prescalatorul foloseste o valoare reprezentata cu 4 biti pentru a diviza
ceasul.
Numaratorul foloseste acest semnal prescalat ca o sursa de semnal de ceas, in mod obisnuit
numarand descrescator de la o valoare prestabilita pe fiecare front crescator al ceasului.
Numaratorul intrerupe de obicei procesorul cind ajunge la zero. In acest moment numaratorul poate
sa se reancarce cu valoarea anterioara sau poate sa se opreasca, functie de configuratie.
Majoritatea registrilor numarator folosite de circuitele DSP au 16 biti, ceea ce asigura un
domeniu larg de frecvente care pot fi generate. Pe majoritatea circuitelor, utilizatorul poate citi
valoarea stocata in registrul numarator. Aceasta permite DSP-ului sa citeasca registrul numarator la
inceputul si la sfarsitul unui eveniment, calculand astfel durata acestuia.
La procesoarele DSP56000 si DSP56001 (Motorola), generatorul de tact este conectat cu
generatorul de ceas serial asincron. Pentru a folosi si generatorul de tact si generatorul serial de
ceas, pe aceste DSP-uri utilizatorul trebuie sa aleaga o frecventa comuna acceptabila pentru ambele
aplicatii.
Dupa cum s-a mentionat, unele DSP-uri, in mod optional, pot oferi pe un pin de iesire
semnalul de ceas generat. Acest lucru poate fi folositor fie pentru un circuit PLL controlat software
fie pur si simplu pentru un sintetizator de frecventa. Totusi majoritatea DSP-urilor au generatoare
de tact capabile sa genereze doar intreruperi si care nu au pini de iesire.
Fig. 10.5
Unele DSP-uri folosite in aplicatii de voce (de exemplu telefoane digitale celulare sau roboti
telefonici) au convertoare A/D si D/A integrate (numite codec–uri), care pot realiza si compandarea
esantioanelor. Astfel esantioanele semnalului reprezentate in mod normal cu 14÷16 biti sunt
comprimate de regula la 8 biti. Compandarea se efectueaza dupa o anumita regula (uzual legea A
sau legea µ).
Exista un numar de criterii de evaluare a performantelor codec-urilor incorporate:
10
- rezolutia (exprimata in biti) de reprezentare binara a valorii esantioanelor. Tipic, codec-
urile asigura o rezolutie de 8 sau de 16 biti;
- rata de esantionare. Majoritatea codec-urilor produc si accepta esantioane la o rata de 8
Kes/s. Procesoarele din familia Motorola DSP561xx, produc sau primesc esantioane la o rata
cuprinsa intre 16 si 24 Kes/s. In unele cazuri procesorul DSP poate sa proceseze datele pentru a le
reesantiona la o rata dorita;
- raportul semnal/zgomot+distorsiuni. Acest parametru este raportul dintre puterea
semnalului (tipic o sinusoida) si puterea zgomotului si a distorsiunilor introduse de codec. El
reprezinta o masura a fidelitatii codec-ului. Valoarea acestui raport creste odata cu semnalul de
intrare pina la o valoare maxima si apoi scade rapid. De obicei producatorii indica aceasta valoare
maxima care este apropiata de 65 dB. Valoarea acestui parametru poate fi specificata si separat
pentru canalul de intrare respectiv iesire a codec-ului;
- numarul canalelor de intrare analogice. Majoritatea codec-urilor pe incorporate au la
intrare un circuit de multiplexare analogic care permite DSP-ului sa accepte mai multe surse de
semnal;
- castigul de iesire programabil. Codec-urile asigura de obicei castig de iesire programabil
insa domeniul de castig si dimensiunea pasului poate varia;
- oprirea analogica. Un avantaj semnificativ pentru controlul puterii consumate de procesor
este posibilitatea de a opri portiunea analogica a codec-ului cand aceasta nu este folosita.
Doua familii de procesoare cu suport A/D si D/A incorporat in chip sunt DSP561xx
(Motorola) si ADSP-21msp5x (Analog Devices). Ambele familii poseda codec-uri cu rezolutie de
16 biti si o rata de esantionare efectiva de 8 kHz.
Majoritatea DSP-urilor poseda linii de intreruperi externe. Acestea linii care pot fi activate
de un dispozitiv pentru a comanda intreruperea procesorului. Liniile de intrerupere sunt de doua
categorii:
- cu declansare de front. Un front crescator sau descrescator pe pin activeaza intreruperea.
- cu declansare pe palier. Un nivel inalt sau scazut pe pin activeaza intreruperea.
Unele DSP-uri asigura linii numai cu declansare de nivel sau de front, in timp ce altele
permit liniei de intrerupere sa fie configurata sa fie oricare din cele doua. In general, intreruperile
declansate pe front sunt executate mai rapid decit intreruperile declansate de palier care pot pune
restrictii asupra duratei minime de activare a liniei pentru ca cererea sa fie recunoscuta.
Numarul de linii de intrerupere variaza pentru diferite procesoare, dar majoritatea poseda
intre una si patru linii de intrerupere externe. In general nucleele DSP poseda un numar mai mare de
11
linii de intrerupere decat procesoarele incapsulate. Aceasta deoarece majoritatea DSP-urilor
incapsulate au si un numar de periferice incorporate care folosesc propriile linii de intrerupere
interne. Spre deosebire, majoritatea nucleelor DSP nu au periferice incorporate pe nucleu. Cand
periferice sunt adaugate in afara nucleului, ele folosesc propriile linii de intrerupere.
10.10 Exemple
12
Periferice incorporate:
Generator de stari de wait programabil si comutator de bancuri de memorie programabil
Generator de tact programabil oscilator intern si cu circuit PLL
Port serial ful duplex cu transfer pe 8/16 biti
Port serial cu multiplexare prin divizarea timpului
Port serial cu buffer
Port paralel gazda pe 8 biti
Timmer pe 16 biti
Generatorul de stari de wait programabil poate fi utilizat pentru extensia ciclului extern de
magistrala cu pina la 7 cicli masina pentru sincronizarea procesorului cu memoriile externe sau cu
dispozitivele I/O mai lente. Starile de wait generate prin software nu necesita hardware extern
suplimentar.
Comutarea programabila a bancurilor de memorie poate fi utilizata pentru a insera automat un
ciclu atunci cind se face comutarea de la un banc de memorie de cod sau de date la alt banc. Acest
ciclu suplimentar permite bancului de memorie sa elibereze magistrala inainte ca un alt dispozitiv sa
o foloseasca. In felul acesta se elimina posibilitatea aparitiei conflictelor de magistrala.
Portul gazda de 8 biti este folosit pentru conectarea procesorului gazda cu un alt dispozitiv DSP.
Prin intermediul unei memorii interne de 2KB asociate portului gazda sunt schimbate informatii
intre gazda si un dispozitiv DSP. Memoria portului gazda poate fi accesata atit de procesorul gazda
cit si de circuitul DSP.
Procesorul are 3 porturi seriale: un port serial ful duplex standard, un port serial cu multiplexare
prin divizarea timpului (TDM), un port serial cu buffer.
Sectiunile pentru transmisie si pentru receptie ale portului serial standard au semnale de tact, de
sincronizare a cadrelor si registre pentru serializsare/deserializare separate. Functionarea poate fi
gestionata prin software si cu ajutorul sistemului de intreruperi mascabile.
Portul serial cu multiplexare TDM permite circuitului sa comunice cu pina la 7 dispozitive care
poseda port TDM.
Portul serial cu buffer este o varianta mai performanta a portului serial standard. Prin intermediul
unei unitati speciale autobuffer portul poate citi/scrie direct date din/in memoria circuitului folosind
o magistrala proprie. In acest fel se accelereaza transferul de date cu memoria. Portul poate
transfera pachete de date de 8, 10, 12, 16 biti.
Procesorul are un timmer de 16 biti cu circuit de prescalare de 4 biti. Timmerul lucreaza prin
decrementare. Cind ajunge la valoarea zero timmerul genereaza o cerere de intrerupere.
Generatorul de tact este constituit dintr-un oscilator si un circuit PLL. Generatorul de tact necesita
un semnal de referinta care poate fi generat intern cu un cristal de cuart sau este primit din exterior.
Semnalul de referinta poate fi divizat intern sau poate fi multiplicat cu circuitul PLL pentru a obtine
13
tactul procesorului. Circuitul PLL este un sistem adaptiv care mentine semnalul de tact in
sincronism cu semnalul de referinta. Cind se folosesc instructiunile pentru reducerea consumului
(IDLE1/IDLE2/IDLE3) circuitul PLL realizeaza reducerea frecventei de tact pentru scaderea
consumului.
14
15
II. DSP 56002 (Motorola)
Dispozitive periferice:
Port gazda de 15 biti cu acces DMA. Liniile pot fi folosite si ca porturi I/O de uz general
Port serial sincron/asincron cu 6 canale, cu sectiuni separate de transmisie sau receptie
Port serial de comunicatie cu 3 canale
Timer/contor de evenimente de 24 de biti
Suport TDM cu pina la 32 de sloturi de timp selectabile
Sintetizator de frecventa cu bucla PLL pentru frecvente cuprinse intre 12,2 KHz si 80 MHz.
16
multichannel capability that allows the receiving or transmitting of
arbitrary data words from a 24-word or 32-word bitstream. The other
serial port, SPORT1, may optionally be configured as two additional
external interrupt pins (IRQ1 and IRQ0)and the Flag Out (FO) and Flag In
(FI) pins.
1.3.2 Timer
The programmable interval timer provides periodic interrupt generation.
An 8-bit prescaler register allows the timer to decrement a 16-bit count
register over a range from each cycle to every 256 cycles. An interrupt is
generated when this count register reaches zero. The count register is
automatically reloaded from a 16-bit period register and the count
resumes immediately.
1.3.3 Host Interface Port (ADSP-2111, ADSP-2171, ADSP-21msp5x)
The host interface port (HIP) is a parallel I/O port that allows for an easy
connection to a host processor. Through the HIP, an ADSP-21xx DSP can
be used as a memory-mapped peripheral of the host. The HIP operates in
parallel with and asynchronous to the ADSP-21xx’s computational core
and internal memory. The host interface port consists of registers through
which the ADSP-21xx and the host processor pass data and status
information. The HIP can be configured for: an 8-bit data bus or 16-bit
data bus; a multiplexed address/data bus or separate address and data
buses; and separate read and write strobes or a read/write strobe and a
data strobe.
1.3.4 DMA Ports (ADSP-2181)
The ADSP-2181 contains two DMA ports, and Internal DMA Port and a
Byte DMA Port. The IDMA port provides an efficient means of
communication between a host system and the DSP. The port is used to
access the on-chip program memory and data memory of the DSP with
only one cycle per word of overhead. The IDMA port has a 16-bit
multiplexed address and data bus and supports 24-bit program memory.
The IDMA port is completely asynchronous and can be written to while
the ADSP-2181 is operating at full speed.
The internal memory address is latched and then automatically
incremented after each IDMA transaction. An external device can
therefore access a block of sequentially addressed memory by specifying
only the starting address of the block.
The byte memory DMA controller allows loading and storing of program
instructions and data using the byte memory space. The BDMA circuit is
able to access the byte memory space while the processor is operating
normally and steals only one processor cycle per 8-, 16- or 24-bit word
transferred.
1.3.5 Analog Interface
The analog interface of the ADSP-21msp58/59 consists of input amplifiers
and a 16-bit sigma-delta analog-to-digital converter (ADC) as well as a
sigma-delta digital-to-analog converter (DAC) and a differential output
amplifier.
17
Capitolul 11
Depanarea reprezinta una dintre cele mai dificile etape ale proiectarii. Acest lucru este
valabil in mod special pentru sistemele integrate care lucreaza in timp real, la care accesul la
componentele depanate poate fi foarte limitat si la care poate fi dificil de rulat in alt mod, decat in
timp real. Ca rezultat, elementele care faciliteaza depanarea au devenit tot mai importante pe
masura ce a crescut complexitatea sistemelor.
Una dintre cele mai importante inovatii in acet sens este emularea in circuit bazata pe
scanare (ICE), care combina circuitele de depanare de pe procesor cu pini dedicati pentru
depanare/testare, pentru a permite depanarea functionarii DSP-ului in timp ce acesta este instalat in
sistemul tinta. Depanarea prin emulare in circuit a devenit destul de populara la DSP-uri in ultimii
ani, desi multe alte abordari relative la depanare sunt inca in folosinta (emularea in circuit pe baza
de pod, depanarea bazata pe monitorizare).
In capitol vor fi prezentate facilitatile de depanare bazate pe verificare oferite pe chip.
Emularea bazata pe verificare foloseste un mic numar de pini dedicati (pana la 4) si o logica
dedicata pentru depanare si emulare in circuit, dupa cum se arata in figura 11.1. Interfetele bazate
pe verificare se conecteaza de obicei la un calculator (PC sau statie de lucru) gazda cu o placa de
interfata speciala. Software-ul de depanare executat pe PC sau pe statia de lucru permite
utilizatorului sa descarce programe, sa examineze si sa modifice registrii si memoria, sa puna sau sa
stearga puncte de intrerupere si sa efectueze alte functii pe DSP in timp ce este instalat in sistemul
tinta.
1
Emularea bazata pe verificare este mult mai putin invaziva decat alte abordari referitoare la
emularea in circuit. Nu are nevoie de scoaterea fizica a procesorului din sistemul tinta si de
inlocuirea acestuia cu un procesor emulator impreuna cu componentele anexa. In loc de aceasta,
placa de interfata pentru depanare din computerul gazda se conecteaza la un conector dedicat din
sistemul tinta, rezultand mai putine legaturi fizice si probleme electrice.
Alt avantaj al depanarii pe baza de verificare este acela ca circuitul de depanare dedicat de
pe chip asigura vizibilitatea unor aspecte ale executiei procesorului care nu sunt disponibile cu
tehnicile conventionale. De exemplu circuitele de depanare pe baza de pod de la Motorola permit
utilizatorului sa examineze continutul liniei de transmisie a procesorului dupa generarea unei
intreruperi.
Emularea pe baza de verificare este frecvent asociata cu “verificarea pe granita” o tehnica
de testare devenita populara in anii 1980. Testarea prin verificarea pe granita (boundary-scan test),
cunoscuta si ca standardul JTAG, se refera la standardul IEEE 1149.1 care defineste un set de reguli
de proiectare pentru facilitarea testarii, programarii si depanarii dispozitivelor semiconductoare la
nivel de cip, de placa si la nivel de sistem. Testarea prin verificarea pe granita presupune
introducerea in cip a unor circuite speciale de test care sa faciliteze testarea circuitului la nivel de
placa si a placii insasi. Aceste circuite suplimentare permit scanarea intrarilor si a iesirilor intr-o
maniera seriala, prevazind circuitul doar cu un numar mic de pini de acces. Beneficiile acestei
tehnici de testare sunt mai multe: reducerea semnificativa a numarului de puncte fizice de testare de
pe placa, cresterea densitatii componentelor pe placa, reducerea timpului de acces pe piata a
produsului, reducerea costului legat de operatiile de testare, cresterea eficientei productiei,
automatizarea operatiei de testare, s.a. Un dispozitiv care satisface cerintele standardului JTAG
poseda: 1) o celula de margine la fiecare linie I/O, 2) o cale de scanare care conecteaza aceste celule
in serie, 3) 4 sau 5 pini suplimentari pentru manipularea semnalelor JTAG, 4) un port pentru
accesare care controleaza semnalele de testare (Test Access Port – TAP), 5) un controler cu 16 stari
a acestui port pentru controlul stadiului operatiei de testare. In mod normal de functionare celulele
de margine permit trecerea semnalelor de intrare/iesire catre/de la pinii I/O. Cind dispozitivul este
plasat in modul „Test” celulele de margine devin active permitind introducerea sau captura
semnalelor de test. Celulele de margine sunt realizate din registre de deplasare cu multiplexare
localizate la periferia circuitului. Caracteristicile logicii de testare a unui circuit care satisface
cpecificatiile standardului JTAG sunt definite intr-un fisier extern denumit BSDL (Boundary-Scan
Description Language) care este oferit de producatorul circuitului si este folosit pentru definirea si
generarea algoritmilor pentru realizarea operatiei de testare. Testarea unui dispozitiv sau a unei
placi pe baza acestei tehnologii consta din urmatoarele etape: a) testerul extern aplica la intrarile
dispozitivului secventele de test, b) celulele de margine de la intrari capteaza semnalele de intrare,
2
c) datele de intrare sunt scanate sau deplasate serial in nucleul dispozitivului, d) datele de iesire
rezultate sunt preluate serial de la nucleul dispozitivului si e) testerul extern compara datele de
iesire cu valorile martor. In felul acesta pot fi identificate defecte de tipul: scurtcircuite sau
intreruperi, lipsa unor componente, componente prost plasate sau defecte. Verificarea pe granita
asigura un mijloc neinvaziv de testare a interconectarii intre circuite, simplu si eficient.
Este interesant ca majoritatea procesoarelor DSP care suporta depanarea pe chip bazata pe
interfata JTAG nu permite verificarea pe granita. Microprocesoarele si DSP-urile au din ce in ce
mai mult capabilitati de depanare pe baza de verificare. DSP-urile care folosesc JTAG pentru
depanarea pe baza de verificare includ: familia ADSP-210xx (Analog Devices), familia DSP16xx
(AT&T), familia μPD7701x (NEC), familiile TMS320C2xx, TMS320C3x, TMS320C4x,
TMS320C5x, TMS320C54x, TMS320C80 (Texas Instruments). Toate procesoarele Motorola cu
exceptia familiilor DSP56000, DSP56001 si noua familie DSP563xx, au o facilitate de depanare
bazata pe verificare numita OnCE (On Chip Emulation) care foloseste un protocol serial propriu,
similar cu JTAG. (DSP56000 si DSP56001 nu au emulare pe chip, iar familia DSP563xx foloseste
JTAG pentru a accesa propriile facilitati de emulare de pe chip).
Capabilitatile de depanare hardware existente pe chip variaza foarte mult. Ca un minim,
toate procesoarele cu depanare hardware pe chip permit utilizatorului sa citeasca si sa scrie
registrele procesorului si memoria. Majoritatea asigura unul sau doua puncte de intrerupere (numite
si puncte de intrerupere cu potrivire de adresa). Aceste puncte de intrerupere sunt implementate
incarcand o adresa in componentele de depanare de pe chip, spre deosebire de inlocuirea unei
instructiuni din programul procesorului cu o instructiune software capcana. Un avantaj al punctelor
de intrerupere hard pe unele procesoare este ca pot fi de asemenea folosite pentru a opri procesorul
cand acesta incearca sa acceseze o locatie de memorie de date (spre deosebire de o locatie a
memoriei de program). Componentele de depanare de pe chip asigura un “tampon de urmarire a
discontinuitatilor de program”, care economiseste valorile numaratorului de program pentru
ultimele cateva momente de ramificare sau cand procesorul a raspuns unei intreruperi. Aceasta
informatie de anterioritate poate fi folositoare in a intelege de ce procesorul a ajuns sa execute o
anumita portiune de cod.
Furnizorii de procesoare DSP nu descriu de obicei posibilitatile exacte ale componentelor de
emulare pe chip in documentatia de procesor. (Motorola este o exceptie, asigurand o documentatie
detaliata asupra portului “OnCE”). In loc de aceasta, utilizatorul trebuie sa isi dea seama de
capabilitatile prezente dupa ceea ce ofera uneltele de emulare software ale procesorului.
3
11.2 Consumul de energie si managementul acestuia
Numarul de aplicatii DSP portabile a crescut dramatic in ultimii ani. DSP-urile sunt acum
folosite in mod obisnuit in echipamentele portabile (telefoanele celulare, pagere, PDA-uri,
computere laptop si echipamente audio). Toate aceste aplicatii necesita alimentare de la baterii, iar
viata bateriei este o diferentiere cheie intre produse. Ca rezultat, proiectantii cauta mereu noi moduri
de a reduce consumul.
Furnizorii de DSP-uri au raspuns acestei provocari in multiple feluri. In primul rand,
aproape toti producatorii au introdus DSP-uri care functioneaza la tensiune scazuta, capabile de a fi
folosite la tensiune de alimentare nominala de 3 sau 3,3 V. In al doilea rand, multi furnizori au
adaugat capabilitati de management al puterii sub control soft sau hard. Ambele variante sunt
discutate in continuare.
Nota
Folosim termenul “nominal” cand ne referim la tensiunea de alimentare ale DSP-urilor. In
mod tipic, componentele electronice cum sunt procesoarele DSP, pot functiona intr-o gama de +/-
10% in jurul tensiunii de alimentare nominale. Astfel, un echipament de 3,3V poate opera intre 3 si
3,6V. Similar un echipament de 3V poate opera intre 2,7 si 3,3V. Intr-o incercare de a castiga un
avantaj pe piata, unii comercianti au declarat tensiunea de alimentare minima in descrierea
procesoarelor. Acest lucru poate crea o confuzie: o componenta descrisa ca functionand la 3V
4
inseamna ca tensiunea sa nominala de alimentare este 3V sau 3,3V? Pentru consistenta, vom folosi
valori de tensiuni nominale pe parcursul prezentarii.
In unele cazuri, DSP-uri de tensiune scazuta, sunt de fapt componente de 5V capabile de a
functiona la tensiuni mai scazute. In astfel de cazuri, tactul sistemului trebuie redus, pentru a
permite operarea la tensiuni mai joase. Furnizorii de DSP-uri au inceput de asemenea sa introduca
variante “adevarate” de 3V a DSP-urilor lor, capabile de a functiona la viteza maxima la 3 sau 3,3V.
Procesoare DSP cu tensiune scazuta includ: familiile AT&T - DSP16xx si DSP32xx;
ADSP-2103 ADSP-2173, ADSP-2183 si ADSP-2106x (Analog Devices), PineDSPCore si
OakDSPCore (DSP Group), IBM - MDSP2780, Motorola - DSP56L002 si DSP563xx; NEC -
μPD77015, μPD77017 si μPD77018, SGS-Thomson - D950-CORE, Texas Instruments -
TMS320LC3x, TMS320LC5x, TMS320VC54x si TMS320C80.
5
de consum redus. Procesoarele care au pini de comanda a regimului de consum redus pot avea si un
pin de confirmare a regimului de consum redus prin care semnaleaza circuitelor externe ca
procesorul a intrat in modul adormit.
Procesoarele din familia TMS320C5x (TI) au un regim de consum redus (power-down
mode) in care consumul este sensibil mai redus decit in regimul normal de lucru. Procesorul intra
in acest regim prin executia instructiunilor IDLE1/IDLE2 sau prin activarea liniei HOLD cind bitul
de stare HM este setat. Cind procesorul este comutat in regimul de consum redus toata starea
interna este conservata; aceasta permite reluarea functionarii cind procesorul iese din acest regim.
Dupa executia instructiunii IDLE1 perifericele interne continua sa functioneze; in schimb, cind este
executata instructiunea IDLE2 tot procesorul, inclusiv perifericele interne, intra in regim de consum
redus.
Latenta de trezire poate fi o preocupare in unele aplicatii. Latenta de trezire este timpul
necesar pentru a iesi dintr-un mod adormit si a relua executia normala. In cazurile cand procesorul
foloseste un ceas extern ca ceas principal, aceasta latenta este de obicei de 1 sau 2 cicluri
instructiune. Dupa cum se va discuta ulterior, un procesor poate folosi un oscilator intern in
combinatie cu un cristal extern pentru a genera un semnal de ceas. In acest caz, daca modul adormit
dezactiveaza oscilatorul intern, o latenta de trezire de mii (chiar zeci de mii) de cicluri de
instructiuni poate fi necesara pana cand oscilatorul se stabilizeaza. O problema similara are loc cu
ceasurile comandate cu circuite PLL (oscilatoare cu calare de faza) de pe chip: oprirea PLL-ului
reduce consumul de putere, insa PLL-ul poate avea nevoie de un interval semnificativ de timp cand
reporneste.
6
macrocelule de divizare a ceasului pentru nucleele DSP, PineDSPCore si OakDSPCore.
TMS320LC31 si TMS320C32 (Texas Instruments) au o instructiune LOPOWER care reduce
frecventa de ceas cu factorul 16.
Unele DSP-uri (de exemplu, procesoarele familiei AT&T - DSP16xx) pot folosi un oscilator
pe chip de mica viteza ca sursa de ceas principal. Desi nu e la fel de flexibil ca un divizor de ceas,
care suporta multiple viteze, totusi e suficient pentru multe aplicatii.
7
Capitolul 13
Familia TMS320C2000
TMS320C2000 este o familie de procesoare care opereaza in virgula fixa pe 16/32
biti. Arhitectura Harvard a familiei TMS320 este destinata special aplicatiilor de prelucrare
digitala a semnalelor in timp real. Procesoarele din generatia C2000 ofera facilitati de
prelucrare de inalta preformanta cu periferice de tip microcontroler la un pret de cost redus.
In prezent familia contine doua tipuri de procesoare: TMS320C24x (procesoare pe 16 biti,
care executa 40 MIPS) si TMS320C28x (procesoare pe 32 biti cu o productivitate de pina la
400 MIPS). Structura lor este data in Fig. 1 si in Tabelul 1 sunt date principalele caracteristici
ale procesoarelor din fiecare familie.
1
Fig. 1
Tabelul 1
2
Arhitectura C2000 foloseste doua magistrale principale: una pentru coduri si una pentru date.
Magistrala pentru coduri este destinata transferului codului instructiunilor si a operanzilor de
tip imediat din memoria de program. Magistrala pentru date interconecteaza elementele
functionale, cum ar fi CPU si memoria pentru date. In felul acesta arhitectura Harvard
maximizeaza puterea de prelucrare asigurind accesarea simultana a codurilor si a datelor cu
viteza mare. Prin modificarea arhitecturii Harvard clasice la procesoarele familiei C2000 pot
fi executate transferuri intre memoria pentru coduri si memoria pentru date. Aceasta face
posibila stocarea coeficientilor in memoria pentru program, eliminind necesitatea folosirii
unei memorii ROM separate pentru coeficienti.
Procesoarele C2000 contin trei unitati functionale care lucreaza concurent: controlerul
pentru program, CPU si generatorul de adrese pentru date (DAGEN). Unele functiuni DSP
critice (de exemplu, multiplicarea 16x16 biti intr-un singur ciclu de tact, deplasarea datelor,
prelucrarea adreselor) sunt executate de unitati hardware in timp ce la microprocesoarele de
uz general aceste operatii sunt executate prin software sau prin microcod. De asemenea
procesoarele incorporeaza citeva dispozitive periferice avansate, optimizate pentru functiuni
de control, ceea ce confera procesoarelor calitatile unor microcontrolere performante
(procesoarele din aceasta generatie sunt denumite de firma Digital Signal Controllers). In plus
pentru cresterea performentelor procesoarele C2000 folosesc un pipeline cu patru etaje.
3
Formatul instructiunilor in limbajul de asamblare al procesoarelor C2000 este
urmatorul:
[label] ADD dma[,shift1] ;adresare directa
[label] ADD ind [,shift1[ARn]] ;adresare indirecta
[label] ADD #k ;adresare imediata scurta
[label] ADD #1k[,shift2] ;adresare imediata lunga
unde:
0≤ dma ≤127 -este o adresa pentru memoria de date (sau un simbol definit cu
directiva asamblorului .equ sau .set folosind modul de adresare direct);
0≤ shift1 ≤16 (default 0) -reprezinta numarul de ranguri pentru deplasare la
stinga;
0≤ ARn ≤7 -specifica registrul de adresa pentru urmatoarea instructiune;
0≤ k ≤255 -reprezinta o data imediata de 8 biti;
-32768≤ 1k ≤32767 -este o data imediata de 16 biti;
0≤ shift2 ≤15 -reprezinta numarul de ranguri pentru deplasare la stinga
ind -semnifica modul de adresare indirecta
Acestia sunt operanzii cei mai frecvent folositi de instructiunile limbajului de asamblare a
procesoarelor C2000. Operanzii pot fi constante sau expresii temporare ale asamblorului
referitoare la memorie, porturi I/O, registre, pointeri, contoare pentru deplasari sau diferite
alte constante.
4
5
Fig. 2
Deplasatorul de intrare
Produce o deplasare la stinga cu 0 pina la 16 ranguri a datelor de 16 biti din memoria
pentru program sau pentru date. Deplasarea poate fi indicata fie de un cimp special de biti din
codul instructiunii fie de cei mai putin semnificativi 4 biti ai registrului temporar TREG. Bitii
de ordin inferior ai deplasatorului de 32 de biti sunt completati cu zerouri, iar bitii mai
semnificativi liberi sunt completati fie cu zerouri fie reprezinta o extensie a semnului in
functie de valoarea bitului de extensie a semnului (SXM) din registrul de stare ST1. Bitul
SXM poate fi setat cu instructiunea SETC SXM sau resetat cu instructiunea CLRC SXM.
Deplasatorul de intrare poate fi invocat cu o instructiune de incarcare, cu una de adunare sau
de scadere referitoare la acumulator. De exemplu, instructiunea
LACC dma,shift1
incarca in acumulator data din memorie de la adresa dma, deplasata in prealabil la stinga cu
shift1 ranguri. Similar actioneaza si instructiunea ADD dma, shift1. In ambele cazuri operatia de
deplasare este inclusa in instructiune si nu necesita timp suplimentar pentru executie. In cazul
anterior deplasarea este specificata de codul instructiunii. Exista si posibilitatea ca deplasarea
sa fie indicata de 4 biti de ordin inferior ai registrului TRAG, ca in exemplul urmator:
LACT dma
6
Folosind registrul TRAG este posibil ca factorul de scalare sa fie stabilit in mod dinamic. De
asemenea, deplasatorul de intrare poate fi utilizat pentru multiplicarea unor date cu intregi
care sunt puteri ale lui 2.
Multiplicatorul
Este constituit din patru unitati: matricea de multiplicare de 16x16 biti care genereaza
un produs de 32 de biti intr-un singur ciclu, registrul TREG de 16 biti care furnizeaza unul
dintre operanzii multiplicatorului, registrul pentru produs de 32 de biti – PREG si deplasatorul
pentru produs. Produsul din registrul PREG poate fi transferat in acumulator cu instructiunea
PAC, sau poate fi stocat in memoria de date de 16 biti cu instructiunile SPH (cuvintul mai
semnificativ din PREG), respectiv SPL (cuvintul mai putin semnificativ din PREG).
7
incarca in TREG data de la adresa dma, deplaseaza continutul registrului PREG dupa cum
este specificat de bitii de mod pentru deplasarea produsului – PM, si apoi il aduna la
acumulator. In plus, instructiunea:
LTD dma
realizeaza operatia LTA plus o operatie de tip DMOV. Aceasta instructiune extrage operandul
pentru multiplicare de la adresa dma si apoi incarca aceasta data in memorie la adresa imediat
superioara. Aceasta operatie este eficienta pentru recircularea datelor dintr-un buffer cum este
cazul filtrelor RFI. Pentru a executa recircularea datelor cu una dintre instructiunile DMOV,
LTD sau MACD esantioanele semnalului trebuie incarcate in buffer dupa cum urmeaza: la
adresa cea mai mica esantionul cel mai recent - x(n), la adresa mai mare urmatoare - x(n-1),
s.a.m.d.
Instructiunea MPY dma aduce cel de al doilea operand al multiplicarii din memorie de
la adresa dma si executa operatia de multiplicare. Deoarece inmultirea a doua numere binare
de 16 biti cu semn produce un rezultat de 32 de biti cu doi biti de semn, stocarea in memoria
de 16 biti a rezultatului impune o deplasare la stinga cu un bit pentru eliminarea bitului
suplimentar de semn si apoi stocarea celor mai semnificativi 16 biti.
Deplasatorul de produs deplaseaza la stinga datele din registrul de PREG. Bitii PM din
registrul de stare ST1 indica modul de functionare a acestui deplasator dupa cum este aratat in
tabelul urmator:
PM Felul deplasarii
00 fara deplasare
01 deplasare stinga 1 bit
10 deplasare stinga 4 biti
11 deplasare dreapta 6 biti
8
data din registrul TREG este inmultita cu data din memorie si apoi produsul este stocat in
PREG. In acelasi timp, produsul anterior din PREG este deplasat dupa cum indica bitii PM si
apoi este adunat la ACC.
Dupa cum este aratat in Fig. 3, acumulatorul ACC de 32 de biti este impartit in doua
segmente de 16 biti: ACCH (bitii b31-B16) si ACCL (bitii b15-b0). ACC poate sa execute
deplasarea sau rotirea continutului. Bitul de transport – C este afectat de operatiile de
adunare/scadere din ACC si de operatiile de deplasare/rotatie a continutului ACC. Bitul C
permite o realizare mai eficienta a operatiilor in precizie extinsa.
9
Deplasatorul de la iesirea ACC poate executa deplasarea la stinga cu 0 pina la 7 biti.
Deplasarea este executata cind data este transferata din ACC in memorie. Cind deplasatorul
este folosit pentru ACCH bitii mai semnificativi sunt pierduti, iar bitii mai putin semnificativi
sunt incarcati cu bitii mai semnificativi deplasati din ACCL. Cind deplasatorul este folosit
pentru ACCL, bitii mai semnificativi sunt pierduti, iar bitii mai putin semnificativi sunt
incarcati cu zero.
Inmultirea a doua numere de 16 biti cu semn produce un rezultat cu 32 de biti ditre
care doi biti sunt bitii de semn. Fixind bitii PM pentru o deplasare stinga cu un bit poate fie
eliminat unul dintre bitii suplimentari de semn. O alternativa consta in a aduna produsele in
ACC fara deplasare si de a elimina bitul suplimentar de semn atunci cind data din ACC este
salvata in memorie cu instructiunea:
SACH yn,1 ;left shift one bit and save ACCH to yn
Avantajul este ca exista un bit de garda in acumulator pentru operatii consecutive de inmultire
si acumulare.
Registrele auxiliare
Dupa cum este aratat in Fig. 4, procesoarele C2000 au 8 registre auxiliare de 16 biti
pentru adresarea datelor din memorie (AR ÷ AR7). In modul de adresare indirecta cu registru,
registrul auxiliar curent, specificat de registrul pointer ARP, este folosit ca pointer pentru
memoria de date. Oricare dintre cele 8 registre auxiliare poate fi utilizat ca pointer pentru
accesarea memoriei de date. Continutul registrelor auxiliare este actualizat de o unitate
aritmetica speciala (ARAU) in paralel cu operatiile executate de ALU. Una din intrarile
ARAU poate fi: cei 8 biti mai putin semnificativi din codul instructiunii, continutul registrului
AR0, sau o data din memorie, iar cealalta este continutul registrului auxiliar curent specificat
de ARP. Prin urmare, accesarea unei secvente de date din memorie nu solicita ALU care
executa in paralel operatii cu datele. Registrele auxiliare si ARP pot fi incarcate cu date din
memorie, ACC, PREG sau cu date imediate. Registrul auxiliar curent este selectat incarcind
in ARP un pointer de adresa de 3 biti. De exemplu, instructiunea MAR *,AR2 incarca 2 in ARP
astfel ca registrul curent folosit de instructiune este AR2. De asemenea, ARP este fixat
indirect de multe instructiuni care folosesc modul de adresare indirect, cu urmatoarea sintaxa:
mnemonic ind[,shift[,ARn]]
unde ultimul cimp optional ARn incarca valoarea lui n in ARP pentru a specifica urmatorul
registru auxiliar. In felul acesta urmatorul AR este stabilit fara a necesita un ciclu suplimentar.
AR poate fi initializat cu instructiunea LAR (Load Auxiliary Register), ca in exemplul
urmator:
10
LAR AR1,#k (sau#1k)
AR1 este incarcat cu constanta de 8 biti k (sau cu valoarea 1k de 16 biti).
De exemplu, daca ARP = 1, instructiunea:
ADD *+
aduna la acumulator data din memorie adresata cu AR1 si apoi incrementeaza cu 1 continutul
lui AR1. La fel, instructiunea:
ADD *0+
aduna continutul registrului AR curent cu o valoare intreaga fara semn de 16 biti continuta in
AR0 si apoi aduna la ACC data din memorie de la adresa rezultata. Operanzii *BR0+ si *BR0-
genereaza adrese cu inversarea bitilor pentru implementarea algoritmilor TFR.
11
ARAU poate executa sase operatii cu adresare indirecta, secificate in tabelul urmator:
In cazul modului de adresare directa, codul instructiunii contine cei 7 biti mai putin
semnificativi ai dma. Pentru a genera o adresa de 16 biti pentru memoria de date acestia sunt
concatenati cu 9 biti furnizati de registrul de selectie a paginii (DP). DP poate selecta una din
512 pagini de memorie fiecare avind 128 de cuvinte. DP poate fi initializat cu instructiunea
LDP (Load Data Page Pointer) sau cu instructiunea LST (Load Status Register).
Registrele de stare
Procesoarele C2000 au doua registre de stare, ST0 si ST1, care contin bitii de stare si de
control. Aceste registre pot fi stocate sau incarcate din memoria pentru date, astfel incit starea
procesorului poate fi salvata/restaurata in vederea executarii subrutinelor. Pentru aceasta sunt
disponibile instructiunile: LST (Load Status Register) si SST (Store Status Register). Bitii
individuali din aceste registre pot fi setati/resetati cu instructiunile SETC/CLRC. De exemplu:
12
SETC INTM ;set interrupt mode bit
SETC OVM ;set overflow saturation mode
Controlul programului
Controlerul de program este o unitate functionala independenta care stabileste ordinea
de executie a instructiunilor. El include: contorul de program – PC, stiva si registrii de stare.
Elementele software care pot modifica fluxul programului sunt instructiunile de salt, apelare
si revenire din subrutine, instructiunile conditionate, de repetare si intreruperile.
Executarea salturilor
Procesoarele C2000 poseda citeva instructiuni de salt pentru implementarea
structurilor pentru controlul programului folosite in programele C. Exista doua tipuri de
salturi: neconditionate, respectiv conditionate. Instructiunea de salt neconditionat determina
incarcarea in PC a adresei memoriei pentru program specificata de instructiune. De exemplu:
B dst_label ;branch unconditionally to dst_label
13
Adresa incarcata in PC, dst_label, este operandul instructiunii. In cazul saltului conditionat
intii sunt evaluate conditiile care determina efectuarea saltului, si in situatia cind aceste
conditii sunt indeplinite acesta este executat. De exemplu, instructiunea:
BCND pma [,cond1][,cond2][,.....] ;branch conditionally
Determina saltul la adresa pma daca toate conditiile specifiate sunt indeplinite. Conditiile care
pot fi specificate sunt prezentate in Tabelul 2.
Executarea buclelor
Cea mai simpla metoda pentru implementarea buclelor consta in folosirea instructiunii
BANZ a carei sintaxa este:
[label] BANZ pma[,ind[,ARn]]
Adresa pma de 16 biti a memoriei de program poate fi o eticheta folosita de limbajul de
asamblare sau o adresa numerica. Programul executa salt la adresa specificata cind ARn nu
este zero. Pentru ca o secventa de program sa fie executata de N ori, secventa este incheiata cu
instructiunea BANZ, iar registrul auxiliar folosit drept contor este initializat cu valoarea N-1
inaintea de a incepe executarea buclei.
Tabelul 2
Operand Conditia Descriere
EQ ACC=0 None
NE ACC≠0 ACC not equal to 0
LT ACC<0 ACC less then 0
LEQ ACC≤0 ACC less then or equal to 0
GT ACC>0 ACC greater then 0
GEQ ACC≥0 ACC greater then or equal to 0
C C=1 Carry bit set to 1
NC C=0 Carry bit set to 0
OV OV=1 ACC overflow detected
NOV OV=0 No overflow detected
BIO BIO is low BIO pin is low
TC TC=1 Test/control flag set to 1
NTC TC=0 Test/control flag set to 0
Particularitati de programare
Implementarea algoritmilor DSP necesita realizarea unor operatii speciale, cum sunt
cele de multiplicare si acumulare. De aceea arhitectura si setul de instructiuni a fost optimizat
pentru realizarea eficienta a acestor operatii.
14
Repetarea instuctiunilor
Instructiunea RPT determina executarea de N-1 ori a instructiunii care urmeaza. De
exemplu, secventa:
RPT #k ;repeat next instruction k+1 time
ADD *+ ;add k+1 samples to the ACC
incarca valoarea k de 8 biti in contorul de repetare (RPTC) determinind executarea
instructiunii ADD de k+1ori. RPTC poate fi incarcat si cu o data din memorie de 16 biti
determinind executarea instructiunii urmatoare de maximum 65536 ori. Dupa extragerea
codului din memoria de program el este introdus intr-un buffer de repetare astfel incit la
repetarea executiei codul este citit din acest buffer. De exemplu, instructiunea TBLR (Table
Read) necesita trei sau mai multi cicli pentru executie dar cind instructiunea este repetata
acest lucru are loc intr-un singur ciclu. De notat ca nu toate instructiunile pot fi repetate.
Configuratia sistemului
Procesoarele familiei C2000 sunt destinate unei game largi de aplicatii care includ
controlul digital al motoarelor si aplicatiile de control dedicate. Procesoarele sunt prevazute
cu periferice incorporate si cu resurse de memorie ROM (sau memorii flash), plus memorii
DARAM sau optional SARAM.
Configurarea memoriei
Capacitatea de adresare a memoriei la procesoarele C2000 este de 192 kcuvinte,
memoria fiind organizata in trei spatii independente: (1) 64 kcuvinte memoria de program, (2)
64 kcuvinte memoria pentru date si (3) 64 kadrese pentru dispozitivele I/O. Cele trei spatii
sunt selectate cu semnalele P S, D S si I S . Dupa cum este aratat in Fig. ... procesoarele
15
familiei C2000 poseda memorie interna cu diferite capacitatati si moduri de organizare.
Memoria pentru date poate fi configurata prin software in sau in afara spatiului de adrese
pentru aceasta memorie. Cind aceste memoriile pentru date sunt in spatiul propriuprocesorul
executa automat accesul cind adresele sunt in limitele spatiului rezervat. Cind adresele exced
limitele procesorul genereaza o adresa pentru memoria externa. Performantele memoriei
interne sunt mai bune decit ale memoriei externe deoarece nu sunt necesare stari de asteptare
(wait), fluxul in pipeline este mai bun, iar consumul este mai redus.
Memoria interna poate fi configurata cu urmatoarele module de memorie: DARAM,
SARAM, flash (ROM) si ROM pentru pornire (boot). De exemplu, la procesoarele LF2407,
544 cuvine de memorie DARAM sunt inmpartite in trei blocuri: blocul 0 (B0 – 256 cuvinte),
blocul 1 (B1 – 256 cuvinte) si blocul 2( B2 – 32 cuvinte). B1 si B2 sunt localizate in spatiul
memoriei pentru date. B0 poate fi configurat ca memorie pentru date (CNF=1) la adresele
200h - 2FFh sau ca memorie pentru program (CNF=0) la adresele 0FF00h - 0FFF0h. Dupa
initializare blocul 0 este configurata ca memorie pentru date.
Memoria flash ocupa pina la 32 kadrese in spatiul pentru program si reprezinta o
alternativa la memoria ROM realizata prin mascare. Memoria flash este utila pentru etapa de
dezvoltare a produselor.
Cu toate ca procesoarele familiei pot accesa un spatiu relativ mare de memorie
capacitatea memoriei interne este limitata. De aceea sunt disponibile citeva instructiuni pentru
transferul blocurilor de date sau program din memoria externa mai lenta in memoria interna.
De exemplu, instructiunea:
BLDD source ,destination
transfera date din memoria de date (interna sau externa) in memoria de date. Folosind
instructiunea RPT impreuna cu BLDD pot fi transferate blocuri de date. Similar, instructiunea
BLPD transfera date din memoria pentru program in memoria pentru date. Urmatoarea
secventa :
LAR AR7,#300h ;AR7←300h
MAR *,AR7 ;ARP←7
RPT #255 ;repeat next instruction 256 times
BLDD #8800h ;block move of 256 data
muta o secventa de 256 coeficienti din memoria externa incepind cu adresa 8800h in blocul
B1 din memoria interna pentru date incepind cu adresa 300h.
O alta metoda pentru transferul unui cuvint din memoria pentru program in cea pentru
date consta in folosirea instructiunii TBLR. TBLW executa transferul invers. Pentru aceste
instructiuni cei 16 biti ai ACCL reprezinta adresa memoriei de program, iar instructiunea
specifica adresa memoriei de date.
16
Intreruperile
Procesoarele familiei folosesc o intrerupere nemascabila si sase intreruperi mascabile,
controlate prin software. Sursele pentru intreruperi sunt: initializarea (comandata prin
hardware su software), intreruperile generate prin software (cerute pe linii externe sau de la
perifericele incorporate) si intreruperi initiate prin software. Deoarece procesoarele C2000 nu
au suficiente resurse pentru a manipula toate cererile perifericelor, nucleul celor sase
intreruperi (INT1 ÷ INT6) poate fi extins prin folosirea unui controler extern.
17
zero sau foarte mica. Daca eroarea de faza creste circuitul actioneaza asupra oscilatorului
pentru a reduce aceasta eroare.
Circuitul PLL este constituit din trei blocuri. Detectorul de faza care compara faza
semnalului oscilatorului controlat in tensiune, y(n), cu faza semnalului de referinta x(n), si
produce semnalul de eroare e(n), proportional cu eroarea de faza. Semnalul e(n) are o
componenta continua (componenta utila) si o componenta nedorita de zgomot care trebuie
redusa prin filtrare. Semnalul de eroare filtrat, c(n), este folosit pentru controlul fazei si a
frecventei oscilatorului comandat in tensiune.
Primele circuite PLL integrate au fost analogice. Detectia de faza este realizata cu un
multiplicator analogic, iar filtrul din bucla este un filtru activ sau pasiv de tip RC. Primul
circuit PLL digital a aparut in jurul anului 1970 si folosea porti logice XOR si circuite
bistabile JK pentru realizarea detectorului de faza. Ulterior au fost realizate circuite PLL
complet digitale. In continuare va fi prezentat un circuit PLL realizat cu procesorul de semnal
TMS320F2407.
x(n)
Detector de e(n) Etaj de c(n)
faza filtrare
Oscilatorcomandat
Oscilator comandatin
intensiune
tensiune
y(n)
a)
b)
Fig. ... Circuit PLL digital; a)- schema bloc, b)- etajul de filtrare
18
mari decit componenta dorita de curent continuu. Prin urmare etajul de filtrare necesar pentru
eliminarea interferentelor este format din din doua filtre conectate in cascada (Fig. …b).
Filtrul median este un filtru liniar de ordinul 5, constituit dintr-un buffer de tip FI-FO
cu cinci celule folosit pentru memorarea esantioanelor e(n), e(n-1), …, e(n-4). Aceste
esantiane sunt mutate intr-un nou buffer, denumit buffer de sortare, unde elementele sunt
ordonate dupa marime. Iesirea filtrului median este simplu elementul median din bufferul de
sortare. Pentru reducerea zgomotului de banda larga se foloseste un filtru neliniar cu medie
alunecatoare (moving-average) al carui raspuns este dat de ecuatia:
c(n) (1 )c(n 1) e(n) c(n 1) c(n 1) e(n)
Daca coeficientul este o putere negativa a lui 2 ( 2 m ), atunci produsul e(n) poate fi
implementat prin deplasarea lui e(n) cu m biti la dreapta. Deoarece acumulatorul
procesorului TMS320C2000 are 32 biti deplasarea cu m biti la dreapta si incarcarea
rezultatului in cuvintul de ordin superior al acumulatorului poate fi facuta deplasind-ul cu 16-
m biti la stinga si incarcind rezultatul in cuvintul inferior al acumulatorului. Semnalul de iesire
este reprezentat cu 32 de biti si este memorat la adresele cn_low (cuvintul de ordin inferior),
respectiv cn_high (cuvintul de ordin superior). Subrutina in limbajul de asamblare a
procesorului C2000 care executa aceste operatii este:
unde m8 este numarul de ranguri binare cu care este deplasata data, echivalentul operatiei de
inmultire.
19
Familia TMS320C5000
Procesoarele TMS320C54x
Familia de procesoare de semnal in virgula fixa TMS320C54x este orientata pe
aplicatii portabile precum telefoane celulare, sisteme pentru comunicatii de date cordless si
wireless, PDA, playere MP3, aparate foto digitale, telefonie VoIP, modemuri.
Caracteristici arhitecturale
Unitatea ALU
ALU de 40 de biti executa operatii aritmetice in complement fata de doi si operatii
logice. ALU poate sa lucreze in regim saturat sau cu extensia semnului. De exemplu, in
regimul de lucru cu extensia semnului numarul negativ de 16 biti, F000h, este inregistrat ca
un numar de 32 biti de forma FFFFF000h (SXM=1) sau 0000F000h (SXM=0).
20
Acumulatoarele
Comparativ cu familia C2000 procesoarele C54x poseda cite doua acumulatoare de 40
de biti. Cei opt biti de garda asigura o protectie mai buna la depasirea scalei.
21
Registrul pentru deplasare
Datele de la iesirea acumulatoarelor sau din memorie pot fi deplasate la stinga cu 0
pina la 31 de biti sau la dreapta cu 0 pina la 16 biti cu registrul barell shifter. Registrul barell
shifter este folosit pentru scalarea semnalelor, pentru deplasarea aritmetica sau logica a
acumulatorului, pentru extragerea bitilor, pentru operatii in precizie extinsa si pentru
prevenirea depasirilor de scala.
22
Moduri de adresare
Procesoarele C54x folosesc urmatoarele moduri de adresare:
- Adresare indirecta. Ca pointer de adresa sunt folosite registrele auxiliare AR0÷AR7.
Simbolul * in fata unui registru auxiliar indica registrul auxiliar curent si folosirea modului de
adresare indirect. In plus fata de procesoarele C2000, familia C54x asigura suplimentar
adresare cu pre-incrementare/decrementare si adresare circulara.
- Adresare absoluta. Adresa este specificata explicit de instructiune printr-un cuvint
suplimentar.
Pentru optimizarea codului C54x foloseste doua moduri de adresare speciale:
adresarea circulara si adresarea cu inversarea bitilor.
Arhitectura C54x foloseste un singur buffer circular dimensiunea acestuia fiind
indicata de registrul BK (Buffer size). Dimensiune buffer-ului este limitata doar de
dimensiunea spatiului de memorie. De exemplu, pentru a defini un buffer de 32 de cuvinte,
BK se incarca cu 32. Modul de folosire a unui buffer circular este urmatorul:
Setul de instructiuni
C54x poseda urmatoarele tipuri de instructiuni:
- Operatii load/store
- Operatii aritmetice
- Operatii logice
23
- Instructiuni pentru controlul programului
- Instructiuni speciale
C54x foloseste un numar de instructiuni specifice aplicatiilor:
- FIRS (filtru FIR simetric). Sintaxa instructiunii FIRS este urmatoarea:
FIRS *AR3,*AR4,#coeff
Efectul acestei instructiuni este echivalent cu cel al secventei urmatoare:
MACA #coeff,B,B ;B=B+(AH*coeff)
||ADD *AR3+,*AR4+,A ;A=(*AR3+*AR4)<<16
Valoarea din AH este multiplicata cu o valoare din memoria de program, iar rezultatul este
adunat la ACC B. In acelasi timp, instructiunea aduna operanzii din memoria de date accesati
cu registrele AR3 si AR4, deplaseaza suma la stinga cu 16 biti si stocheaza rezultatul in ACC
A.
- LMS (Least Mean Square). Este o instructiune speciala folosita pentru ajustarea
coeficientilor unui filtru adaptiv pe baza calculului erorii medii patratice, denumita metoda
gradientului stocastic. Sintaxa instructiunii este:
LMS *AR3+,*AR4+
iar efectul este acelasi cu cel dat de secventa urmatoare:
MAC *AR3+,*AR4+,B ;B=B+(*AR3+**AR4+)
||ADD *AR3,16,A ;A=(*AR3+A)<<16
RND A ;A=round(A)
Prima instructiune executa operatia de multiplicare si acumulare specifica operatiei de filtrare
FIR asupra primului coeficient si plaseaza rezultatul in ACC B. In acelasi timp, cel de al
doilea coeficient este adunat la ACC A. Rezultatul este deplasat la stinga cu 16 biti si este
rotunjit inainte de a fi plasat in ACC A. In acest mod filtrarea si adaptarea coeficientilor este
executata in ACC B si respectiv in ACC A.
- SQDST (patratul diferentei). Instructiunea calculeaza patratul diferentei dintre
doi vectori. De exemplu:
SQDST *AR3+,*AR4+
efectul fiind echivalent cu al secventei:
SQUR A,A ;A=AH*AH
ADD A,B ;B=A+B
||SUB *AR3,*AR4,A ;A=((*AR3)-(*AR4))<<16
Configuratia sistemului
Procesoarele C54x sunt folosite in multe aplicatii ieftine si cu consum redus. Aceste
aplicatii necesita viteza mare de prelucrare, o mare varietate de memorii si de dispozitive
periferice.
24
Memoria
La fel ca C2000, C54x au un spatiude memorie de 192 kcuvinte. Acest spatiu este
impartit in trei blocuri: (1) 64 kcuvinte –memoria pentru program si constante, (2) 64 kcuvinte
– memoria pentru date si (3) 64 kcuvinte – spatiul de adrese pentru dispozitivele I/O.
Unele procesoare C54x folosesc tehnica paginarii memoriei pentru extinderea
memoriei de program. De exemplu procesorul C5402 are posibilitatea extinderii acesui spatiu
pina la 1 Mcuvinte folosind 20 de linii de adresa. Spatiul este impartit in 16 pagini, iar o
pagina din spatiul memoriei de program contine 64 Kcuvinte.
Dispozitivele periferice interne
Toate procesoarele au porturi I/O de uz general, un timmer, un generator de tact si un
generator de stari de asteptare (wait) programabil. Perifericele pentru dispozitive specifice
sunt: (1) un port de interfatare gazda (HPI – Host-Port Interfacing) de 8 sau de 16 biti, (2) un
port serial care poate fi o combinatie de porturi seriale sincrone, BSP (Buffered Serial Port),
McBSP sau porturi seriale multiplexate in timp.
HPI permite procesorului gazda sa citeasca sau sa scrie 1kcuvinte din memoria interna
a procesorului C54x. Procesoarele C54x au patru interfete de tip port serial. Portul serial de
baza este de tip serial sincron si lucreaza la o viteza egala cu cea a tactului master.
BSP lucreaza fie ca port serial sincron fie ca port cu autobuffer-are. Portul serial
sincron este asemanator cu portul serial de baza, dar foloseste si un buffer de 2 kcuvinte in
memoria DARAM interna. La C54x unitatea de autobuffer-are transfera 2kcuvinte de date
intre port si memorie automat si semnalizeaza printr-o intrerupere cind buffer-ul este gol sau
plin.
McBSP este similar cu BSP dar are o functionalitate mai complexa. El accepta pina la
128 de canale si este destinat conectarii mai multor dispozitive rapide. McBSP poseda un
numar de facilitati avansate: ceas separat pentru emisie si receptie, generator de tact flexibil,
comunicatie full-duplex, registre multiple tip buffer, hardware de compresie/decompresie
dupa legile A si .
Procesoarele C54x au trei moduri de lucru cu consum redus configurabile prin
software (IDLE1, IDLE2 si IDLE3). Atunci cind este activat oricare din cele 3 moduri este
blocat tactul. In modul IDLE3 sunt blocate dispozitivele periferice incorporate, inclusiv
oscilatorul si circuitul PLL.
25
Procesoarele TMS320C55x
Este un procesor de semnal in virgula fixa, compatibil software cu familia C54x,
avind insa o viteza superioara de lucru si o densitate a codului superioara. Procesorul este
destinat aplicatiilor care cer consum mic si inalta performanta de calcul cum sunt: telefoanele
celulare, dispozitivele digitale audio portabile, aparatele foto digitale, protezele audio, etc.
Diferentele hardware fata de familia C54x constau in: (1) doua unitati MAC, fiecare
capabila sa execute o multiplicare de 17x17 biti, o adunare/scadere pe 40 de biti si optional o
saturare intr-un singur ciclu, (2) patru acumulatoare de 40 de biti, (3) un ALU suplimentar de
16 biti, (4) patru noi registre de 16 biti, (5) stiva software cu salvarea/restaurarea automata a
contextului la intreruperi.
Procesoarele C55x accepta instructiuni cu lungime variabila (8/16/24/32/40/48 biti)
pentru imbunatatirea denstitatii codului. Setul de instructiuni cuprinde sase tipuri de operatii:
(1) transfer, (2) aritmetice, (3) manipulare a bitilor, (4) lucru cu registrele extinse, (5) logice,
si (6) control a programului. Sintaxa de baza a unor instructiuni poate fi schimbata prin
adaugarea unor prefixe. De exemplu, instructiunea MOV poate fi schimbata in AMOV astfel ca
instructiunea poate fi executata in paralel cu o alta.
Procesoarele C55x pot executa doua operatii (instructiuni) in paralel in cadrul
aceluiasi ciclu, daca acestea folosesc resurse diferite. Exista trei tipuri de paralelism:
a) Paralelism intrinsec. Unele instructiuni pot realiza doua operatii diferite in
paralel.Paralelismul intrinsec in cadrul unei singure instructiuni este indicat prin semnul ::
pentru a separa cele doua operatii. De exemplu:
MPY *AR0,*CDP,AC0
::MPY *AR1,*CDP,AC1
Aceasta este o singura instructiune care foloseste unitatile MAC. Data adresata cu AR0 este
inmultita cu coeficientul adresat cu CDP, iar produsul este salvat in AC0. In acelasi timp, data
adresata cu AR1 este inmultita cu acelasi coeficient adresat cu CDP, iar produsul este salvat
in AC1.
b) Paralelism definit de utilizator. Programatorul sau compilatorul de C poate plasa
doua instructiuni in paralel astfel incit cele doua instructiuni sunt executate intr-un singur
ciclu. Semnul || este folosit pentru a delimita cele doua inastructiuni executate in paralel. De
exemplu:
MPYM *AR+,*CDP,AC1
||XOR AR2,T1
In acest exemplu, prima instructiune executa inmultirea in unitatea de calcul, iar cea de a doua
executa operatia logica in unitatea de adresare.
26
c) Paralelism combinat. Acesta apare atunci cind una din doua instructiuni definite de
utilizator au si paralelism intrinsec. De exemplu:
MPY *AR0,*CDP,AC0
::MPY *AR1,*CDP,AC0
||RPT CSR
Procesoarele C55x poseda citeva facilitati arhitecturale importante: o unitate MAC duala,
facilitati pentru adresarea circulara si pentru executarea buclelor cu incarcare zero. Unitatea
MAC este exploatata optim atunci cind algoritmul prezinta simetrii cum este cazul filtrelor
FIR. In plus operatiile MAC duale pot fi aplicate pentru inmultirea vectorilor, inmultirea
matricilor, filtrarea FIR pe bloc si pentru sistemele multicanal. Adresarea circulara poate fi
utilizata cu orice mod de adresare indirecta. Fiecare registru auxiliar ARn poate fi configurat
pentru a fi un pointer liniar sau circular.
27
TMS320C5x – pag. 56, Venkatamarani – de dezvoltat
28
Capitolul 14
Tabelul 1
Virgula fixa Virgula mobila
Arhitectura de sistem mai simpla Arhitectura de sistem complexa
Programare mai dificila Programare eficienta in
limbajele de nivel inalt
Memorie interna extinsa Necesita extinderea memoriei in
afara cipului
Cost mai redus Cost mai ridicat
Precizie limitata Precizie ridicata si mentinuta
fara operatii suplimentare
Gama dinamica redusa Gama dinamica ridicata
Erorile de calcul sunt rapid
acumulabile
1
conduc la cresterea valorii datelor la propagarea de la etaj la etaj nu produc usor
depasirea scalei cum se intimpla in cazul virgulei fixe. In plus efectele de cuantizare
sunt mai putin prezente.
Deoarece lungimea cuvintelor cu care opereaza procesoarele in virgula mobila
este mai mare decit la virgula fixa, aceste procesoare accepta un numar mai mare de
moduri de adresare precum si un grad mai mare de paralelism in executie. Folosirea
limbajelor de nivel inalt pentru programare este mai eficienta datorita arhitecturii
orientate pe registri, a folosirii instructiunilor in virgula mobila, a spatiului mai mare
de adrese, a numarului mai mare de moduri de adresare, a flexibilitatii setului de
instructiuni, etc. In plus virgula mobila permite o trecere mai directa de la mediul de
simulare pe un calculator gazda folosind programele MatLab sau C, catre o
implementare in timp real pe un sistem tinta cu procesor DSP. In mod curent
procesoarele in virgula mobila sunt folosite pentru aplicatii performante, ca de
exemplu sisteme pentru videoconferinta, retele de comunicatii cu comutare de
pachete, statii de baza pentru telefonia celulara, sisteme radar si sonar, imagistica
digitala, etc.
Familia TMS320 contine trei generatii de procesoare in virgula mobila,
respectiv C3x, C4x si C67x.
TMS320C3x
Structura interna este prezentata in Fig. 1 (5.1). Generatia C3x foloseste o
arhitectura Harvard pe 32 de biti, cu registre de 40 de biti pentru extinderea preciziei.
Aceste procesoare includ unitati de prelucrare in virgula mobila (de exemplu,
multiplicator, ALU, deplasator), facilitati pentru managementul rapid al memoriei cu
controler DMA incorporat, un cache intern pentru instructiuni de 64 cuvinte si un
spatiu de adrese de 16 Mcuvinte. Procesorul are un fisier de registre de uz general, un
cache pentru program, doua unitati aritmetice dedicate pentru registrele auxiliare
precum si o memorie interna cu acces dublu.
Viteza de executie este optimizata prin implementarea hardware a unor
operatii frecvent utilizate, cum sunt operatiile repetitive cu blocuri de date, adresarea
circulara, multiplicarea. Sistemul de magistrale interne permite executarea in paralel a
operatiilor de extragere a codurilor, a accesarii datelor (pentru citiri/scrieri) si a
transferurilor DMA. Procesorul foloseste adrese de 24 de biti pentru accesarea
cuvintelor de cod si de date de 32 de biti.
2
Pentru functionarea in sisteme multiprocesor, cu memorie globala partajata,
C3x foloseste cinci instructiuni si doua fanioane I/O externe, care pot fi configurati
prin software ca intrari sau iesiri pentru executarea operatiei de interblocare.
Desi procesorul este folosit mai ales ca procesor pentru operatii in virgula
mobila, operatiile in virgula fixa sunt utile pentru anumite aplicatii, cum sunt
prelucrarile de imagini. Procesoarele C3x executa operatii in virgula fixa, in virgula
mobila si operatii logice folosind instructiuni cu doi sau cu trei operanzi. De asemenea
C3x poate executa in paralel multiplicati si operatii cu ALU cu numere intregi
reprezentate in virgula fixa sau cu numere reale reprezentate in virgula mobila intr-un
singur ciclu. Procesoarele familiei pot executa mai multe tipuri de bucle (buclare
hardware pentru instructiuni sau pentru blocuri de program, buclare intirziata pentru
multiprocesare, buclare standard pentru golirea pipeline-ului). De asemenea pot fi
executate conversii din virgula fixa in virgula mobila. Procesoarele familiei pot
executa pina la 150 milioane de instructiuni in virgula mobila pe secunda (150
Mflops).
C3x foloseste trei formate de date: intregi cu semn, intregi fara semn si
numere in virgula mobila. Pentru numerele in virgula mobila este disponibil si un
format in precizie extinsa. Numerele intregi pot fi reprezentate cu 16 biti (formatul
scurt) sau cu 32 de biti (formatul lung). Pentru reprezentarea in virgula mobila sunt
folosite trei formate de date: formatul scurt (16 biti), formatul standard (32 de biti) si
formatul extins (40 de biti). Formatele de reprezentare nu respecta standardul IEEE
754. Pentru anumite aplicatii de timp real datele de intrare sunt esantioane de semnal
furnizate de convertoare A/D. Procesoarele C3x convertesc datele intregi intr-un
format cu virgula mobila, le prelucreaza, iar la sfirsit convertesc rezultatul in format
intreg si le transefera la CDA.
3
TMS320C4x
Generatia C4x contine primele procesoare DSP proiectate pentru prelucrari
paralele. Procesoarele C4x sunt compabibile la nivel de cod cu C3x. Procesoarele
familiei includ sase porturi de comunicatie, un controler DMA cu sase canale, doua
unitati independente de 32 de biti pentru interfatarea memoriei. Dupa cum s-a
mentionat pot fi conectate direct pina la sase procesoare C4x pentru prelucrari
paralele.
TMS320C67x
Cel mai recent procesor in virgula mobila din familia TMS320 este
TMS320C67x. C67x are la baza arhitectura VLIW prezentata anterior. Setul de
instructiuni al procesorului C67x este un superset al setului de instructiuni al
procesoarelor C62x, fiind adaugate instructiuni pentru operatii in virgula mobila.
4
Procesorul este capabil sa execute pina la 1350 Mflops la un tact de 225MHz. C67x
este optimizat pentru executarea eficienta a programelor scrise in limbajul C.
Procesoarele C67x sunt destinate aplicatiilor care cer precizie ridicata de calcul, gama
dinamica mare si viteza mare de calcul (radar, sonar, grafica 3D, statii de baza
wireless, linii de abonat digitale, imagistica medicala, s.a.)
Arhitectura C67x accepta date reprezentate in virgula mobila pe 32 de biti sau
pe 64 biti. Fiecare din cele doua cai de date contin cite patru unitati de executie, cite
un fisire de registre de uz general si cai de transfer de date intre registre si memorie.
Arhitectura C67x este prezentata in Fig. 2 (5.6).
5
si registre. Procesoarele C67x pot executa pina la opt instructiuni intr-un ciclu,
incluzind doua operatii de multiplicare in precizie simpla sau o multiplicare in
precizie dubla. Fata de procesoarele C62x arhitectuta C67x a fost modificata pentru a
permite incarcarea operanzilor cu precizie dubla pe 64 biti. Procesoarele contin doua
fisiere de cite 16 registre de uz general de 32 biti (A si B). Grupuri de cite doua
registre adiacente pot stoca si operanzi pe 64 biti pentru operatii realizate cu precizie
dubla. Operatiile realizate in precizie dubla necesita mai mult timp decit cele
executate in precizie simpla.
Memoria interna are o arhitectura Harvard modificata ccare asigura spatii
separate pentru coduri si date. Cele doua cai de date sunt conectate la memoria de date
prin magistrale de adrese (32 biti) si de date (64 biti) separate. Memoria pentru
programe este accesata printr-o magistrala de adrese de 32 biti si una pentru date de
256 biti. O varianta mai performanta din familia C67x (C6713) ofera posibilitatea de a
configura memoria interna ca memorie cache de nivel 1 (L1), iar memoria externa ca
memorie cache de nivel 2 (L2), atit pentru coduri cit si pentru date.
Procesoarele C67x poseda un sistem de periferice similar cu cel existent la
procesoarele C62x/64x.
C67x accepta toate instructiunile procesoarelor C62x plus un numar de
instructiuni noi incluzind: multiplicari de numere intregi pe 32 de biti, incarcari de
date de 64 biti, instructiuni pentru operatii in virgula mobila, etc. C67x realizeaza o
folosire intensa a memoriei deoarece arhitectura VLIW produce “pachete” de pina la
opt instructiuni de 32 de biti.
6
Capitolul 17
In ultimii ani numarul aplicatiilor cere includ prelucrarea digitala a semnalelor a crescut in
mod constant. Pentru implementare sunt folosite circuite diverse, de la arii de porti programabile
prin cimp (FPGA) pina la circuite integrate dedicate (custom IC). Procesoarele digitale de semnal
(DSP) reprezinta o clasa de microprocesoare optimizate pentru implementarea algoritmilor DSP.
Comparativ cu alte tipuri de microprocesoare, procesoarele DSP prezinta avantaje din punct de
vedere a vitezei de operare, a costului si a consumului.
1
12.1.2 Variante imbunatatite ale procesoarelor DSP conventionale
O posibilitate pentru imbunatatirea performantelor procesoarelor DSP este extinderea
arhitecturii prin adaugarea unor unitati de executie in paralel a operatiilor, frecvent a unui
multiplicator si a unui sumator. Aceste imbunatatiri arhitecturale sunt completate cu extinderea
setului de instructiuni care exploateaza aceste facilitati noi prin codarea mai multor operatii intr-o
instructiune si executarea acestora in paralel. Datorita gradului crescut de paralelism procesoarele
din aceasta categorie pot executa mai multe operatii intr-un ciclu de tact; de exemplu, doua operatii
de multiplicare si acumulare in locul unei singure operatii. In Fig. 12.1-a) si b) este comparat un
procesor coneventional (DSP16xx – Lucent Tech.) cu un procesor cu arhitectura imbunatatita
(DSP16xxx – Lucent Tech.).
Fig. 12.1
In mod curent, procesoarele DSP imbunatatite au o magistrala de date mai larga pentru a
transfera mai multe cuvinte de date pentru unitatile de executie intr-un ciclu. De asemenea, ele
folosesc cuvinte instructiune mai mari pentru a coda un numar sporit de operatii care sunt executate
in paralel. Cresterea costului si a puterii consumate sunt compensate de cresterea nivelului de
performante.
2
operatiilor, dar care extrag simultan grupuri de instructiuni pe care le executa in paralel. Folosirea
instructiunilor simple simplifica decodarea si executia ceea ce conduce la o crestere a frecventei
tactului fata de procesoarele conventionale.
Texas Instruments a fost primul producator care a folosit aceasta abordare pentru
procesoarele DSP comerciale. In 1996 TI a creat primul procesor, TMS320C62xx, care
implementeaza acest concept, si care a depasit in momentul aparitiei viteza procesoarelor existente.
Ulterior si alti producatori au folosit acest concept pentru realizarea unor procesoare cu performante
inalte (Analog Devices, Motorola, Lucent Technologies). In prezent exista doua categorii de
procesoare care executa in paralel mai multe instructiuni: procesorele VLIW (Very Long Instruction
Word) si procesoarele superscalare. Cele doua arhitecturi sunt similare, diferenta constind in
modul in care sunt grupate instructiunile care sunt executate in paralel.
Cele doua arhitecturi folosesc mai multe unitati de executie, fiecare comandata de propria
instructiune. In Fig. 12.2 este prezentata unitatea de executie si magistrala procesorului
TMS320C62xx (TI) care contine opt unitati de executie independente. Un procesor DSP de tip
VLIW extrage in mod curent pina la opt instructiuni, care sunt parti ale unei intructiuni codate cu un
cuvint instructiune “lung”. Pe dealta parte, procesoarele superscalare manipuleaza si executa de
asemenea citeva instructiuni intr-un ciclu, de regula intre doua si patru.
Fig. 12.2
Intr-o arhitectura VLIW limbajul de asamblare stabileste care instructiuni sunt executate in
paralel. Deoarece instructiunile sunt grupate in momentul in care este asamblat programul,
ordonarea nu se modifica cind programul este executat. Prin contrast, procesoarele superscalare
contin unitati hardware specializate care stabilesc care instructiuni sunt executate, in functie de
disponibiltatea resurselor, schimbind astfel sarcina de manipulare in paralel a instructiunilor de la
programator la procesor. Procesorul poate grupa instructiunile in mod diferit in momentul executiei.
3
Diferentele in modul in care sunt manipulate in paralel instructiunile sunt importante in contextul
folosirii lor in aplicatiile DSP executate in timp real.
Deoarece procesoarele superscalare manipuleaza dinamic operatiile executate in paralel este
foarte greu pentru programator sa stabileasca timpul de executie a unui segment de program.
Timpul de executie poate diferi mult in functie de datele care sunt accesate; de exemplu, timpul de
executie difera atunci cind procesorul executa o bucla prima data sau cind o executa a treia oara.
Aceasta incertitudine in ceeea ce priveste timpul de executie poate crea probleme pentru utillizator
atunci cind conditiile de operare in timp real sunt critice. Masurarea timpului de executie la nivel
hardware nu rezolva problema deoarece timpul de executie difera deseori. Stabilirea timpului de
executie in conditiile cele mai defavorabile si folosirea acestuia pentru a aprecia conditiile de timp
real este o alta cale de a rezolva problema. Dar aceasta poate conduce la o optiune pentru
procesoare care poseda o viteza de lucru mult peste necesitati. Caracterul dinamic al functionarii
ingreuneaza si operatia de optimizare a software-ului. De aceea procesoarele DSP evita folosirea
unor facilitati dinamice, cum sunt executia superscalara si incarcarea dinamica a cache-ului.
Cu toate ca instructiunile sunt simple si ele codifica in mod curent un singur tip de operatie,
multe procesoare VLIW folosesc cuvinte instructiune mai lungi pentru codarea operatiilor decit
procesoarele DSP conventionale (de exemplu, 32 biti in loc de 16 biti). Intr-o arhitectura VLIW
cuvintele instructiune mai lungi sunt folosite pentru a specifica informatii pentru unitatile
functionale care executa operatiile. Cuvintele instructiune mai lungi permit specificarea uniforma a
unui set mai extins de registre (fata de setul redus de registre specializate folosite de procesoarele
DSP conventionale). De asemenea folosirea cuvintelor instructiune mai lungi imbunatateste
consistenta si regularitatea setului de instructiuni. Aceste instructiuni au mai putine restrictii in
privinta folosirii registrelor si a modurilor de adresare, usurind in felul acesta sarcina
compilatorului.
Exista si unele dezavantaje datorate folosirii intense a instructiunilor simple. Deoarece
fiecare instructiune VLIW estre mai simpla decit la un procesor DSP conventional, procesoarele
VLIW au tendinta sa foloseasca mai multe instructiuni decit este necesar pentru o sarcina data.
Combinat cu faptul ca instructiunile sunt codate cu cuvinte mai lungi rezulta un necesar mai mare
de memorie de program; in consecinta, prin marirea resurselor de memorie, circuitul devine mai
scump.
Cind un procesor manipuleaza mai multe instructiuni intr-un ciclu el trebuie sa stabileasca
care unitate de executie va manipula fiecare instructiune. In mod curent procesoarele VLIW
identifica unitatea functionala care executa o anumita operatie pe baza pozitiei instructiunii simple
in cadrul cuvintului instructiune lung. Arhitecturile VLIW recente folosesc mecanisme de
4
redirectionare a informatiilor continute de fiecare subinstructiune catre unitatea functionala care va
executa operatia respectiva.
Pentru a executa instructiuni in paralel, procesoarele VLIW si superscalare trebuie sa posede
facilitati pentru decodare, magistrale, registre si largime de banda suficienta. In mod curent
procesoarele VLIW folosesc fie magistrale largi fie un numar mai mare de magistrale pentru
accesul memoriei, pentru a alimenta cu date unitatile multiple de executie. Arhitectura
procesoarelor VLIW seamana atit cu cea a procesoarelor de uz general cit si cu cea a procesoarelor
DSP conventionale. Deseori din structura procesoarelor VLIW lipsesc facilitati functionale prezente
la procesoarele DSP conventionale. De exemplu, procesorul TMS320C62xx nu poseda instructiuni
de executarea a buclelor cu incarcare zero; toate operatiile de executare a buclelor sunt realizate
prin software. Reducerea performantelor din acest motiv este nesemnificativa deoarece procesoarele
VLIW sunt capabile sa execute mai multe operatii in paralel. Operatiile necesare pentru executarea
buclei pot fi executate in paralel cu alte tipuri de operatii. Un alt avantaj al acestor arhitecturi
consta in marirea vitezei de operare folosind o arhitectura mai simpla si mai regulata si cu un set de
instructiuni care permite obtinerea unui cod eficient dupa compilare. Totusi procesoarele VLIW si
superscalare prezinta un consum mai mare fata de procesoarele conventionale deoarece atentia a
fost concentrata spre obtinerea unei viteze cit mai mari de operare.
Deoarece aceste categorii de procesoare folosesc o cantitate mai mare de memorie si
consuma mai multa energie, ele sunt folosite in aplicatiile care cer o mare putere de calcul dar care
nu sunt foarte sensibile la consumul energetic. Un procesor VLIW poate fi utilizat la o statie pentru
telefonie mobila, dar nu poate fi inclus intr-un telefon celular. O exceptie o constituie procesorul
VLIW, SC140, realizat de firmele Motorola si Lucent, care datorita consumului redus poate fi
utilizat si in aplicatiile portabile.
5
identica cu cea originala. Noul procesor este ADSP-2116x. Fiecare set de unitati de executie a
procesorului ADSP 2116x contine o unitate MAC, un ALU si un shifter, fiecare cu propriul set de
registre. Arhitectura imbunatatita poate manipula o singura instructiune si o poate executa in paralel
pe ambele cai de date folosind date diferite, rezultind practic o dublare a performantelor pentru
executarea anumitor algoritmi.
Din contra, in loc de a fi prevazute mai multe unitati de executie identice, unele procesoare
DSP pot “imparti” unitatile de executie existente (unitatea ALU sau MAC) in mai multe subunitati
care prelucreaza date de format mai redus. De exemplu, procesoarele care prelucreaza operanzi
stocati in registre “lungi” (de exemplu, 32 biti) pot trata aceste registre ca un set de registre de
lungime mai mica (doi operanzi de 16 biti sau patru de 8 biti). Un exemplu de procesor cu facilitati
SIMD este TigerSHARC de la Analog Devices, care combina doua tehnici SIMD: o instructiune
poate controla functionarea celor doua unitati functionale ale procesorului si acceasi instructiune
poate comada functionarea unei unitati de executie impartita in unitati mai mici (un ALU sau un
MAC divizat). Folosid aceste capabilitati SIMD ierarhizate procesorul poate executa opt
multiplicari pe 16 biti intr-un ciclu, dupa cum se observa din Fig. 12.3.
Fig. 12.3
6
multe resurse (magistrale, registre, ALU), care pot fi tratate ca resurse multiple, dar mai mici. De
exemplu, un CPU cu magistrala de date de 64 de biti, registre de 64 de biti si ALU de 64 de biti
poate fi considerat ca avind de patru ori mai multe magistrale (respectiv registre sau ALU) de 16
biti, precizia curent folosita de algoritmii DSP. Folosind aceasta abordare procesoarele de uz
general pot realiza operatii DSP mai rapid decit un procesor DSP performant datorita eficientei
tratarii SIMD si a vitezei de lucru superioare specifica procesoarelor de uz general. Procesoarele de
uz general opereaza in prezent la frecvente mai mari de 2 GHz, in timp ce procesoarele DSP
performante folosesc frecvente de 200÷250 MHz.
7
12.3 Arhitectura TriCore – Siemens
Arhitectura TriCore dezvoltata de firma Siemens reprezinta cel mai bun exemplu de
imbinare a facilitatilor celor trei clase de microprocesoare: procesoarele de uz general,
microcontrolerele si procesoarele DSP. Aceasta simbioza este intilnita in cazul multor aplicatii
complexe, unde folosirea unui singur tip de microprocesor nu asigura performantele dorite. In Fig.
12.4 este sunt prezentate etapele integrarii celor trei unitati intr-un procesor unic.
TriCore-1 este primul nucleu pe 32 de biti care integreaza functionalitatea unui
microcontroler cu un procesor DSP si care este destinat realizarii sistemelor care opereaza in timp
real. Alte avantaje oferite de acest procesor hibrid sunt: consumul energetic redus, gabaritul mai mic
decit al unui sistem realizat cu componente separate, pretul de cost competitiv. Cerintele
arhitecturale care sunt satisfacute de TriCore-1 sunt sintetizate in Tabelul 12.1. Arhitectura setului
de instructiuni TriCore defineste un procesor optimizat pentru operare multitasking, cu resurse mari
de memorie interna si facilitati de comutare rapida a contextului. TriCore-1 lucreaza ca un
multiprocesor virtual, capabil sa execute in timp real operatii complexe, comandate prin intreruperi.
Nivelul ridicat al performantelor este datorat urmatorilor factori:
- Setul unificat de instructiuni. Procesorul poate executa atit activitati de control cit si
operatii DSP cu un set de bogat de formate de date, de moduri de adresare si cu un numar mare de
registre.
- Comutarea rapida a contextului. Largimea mare a magistralei pentru accesul
memoriei (tipic 256 de biti) permite comutarea functionarii de la o activitate de control la o
activitate DSP in mai putin de 100 ns.
- Resurse mari de memorie interna. Nucleul poseda pina la 2 Mbytes memorie DRAM
si pina la 512 Kbytes memorie flash.
- Viteza de operare mare. Procesorul executa controlul direct al perifericelor interne,
poseda mecanisme de protectie a memoriei si pentru depanare software.
8
Sistem unitar de instrumente software. Proiecatntul de sistem are la dispozitie un sistem
unic de instrumente software pentru programarea nucleului constind din compilatoare, biblioteci de
functii si pentru algoritmi de prelucrare, sisteme de operare de timp real, emulatoare, etc.
Sistem integrat on-chip. Deoarece contine majoritatea componentelor unui sistem (unitate
centrala hibrida, memorie, periferice) nucleul reprezinta un sistem integrat. Folosirea procesorului
TriCore reduce sensibil costul sistemului fata de implementarile care folosesc procesoare diferite
pentru control si pentru prelucrarea semnalelor.
Fig. 12.4
In Fig. 12.5 este prezentat un sistem pentru comanda unui periferic multifunctional complex
(printer-scanner-fax-copiator) care foloseste posibilitatile procesorului TriCore-1. Sunt utilizate
posibilitatile RISC si DSP pentru a executa in timp real cele trei operatii de baza: printarea,
scanarea si comunicatia cu fax-modem. Memoria DRAM interna asigura memoria de cadru pentru
operatia de scanare.
Un alt exemplu de folosire a posibilitatilor procesorului hibrid este dat in Fig. 12.6. Cresterea
capacitatii de stocare pentru unitatea HDD implica cresterea performantelor DSP pentru algoritmii
de comanda. In plus cresterea largimii de banda pentru transferul datelor necesita performante
superioare pentru controler. TriCore-1 satisfece deplin cele doua cerinte. De exemplu, o parte din
memoria cache pentru disc poate fi localizata in memoria DRAM a nucleului TriCore.
9
Fig. 12.5
Fig. 12.6
10
Tabelul 12.1
11
Capitolul 19
Pagina 2 din 11
diferenţe între cadrele asemănătoarea sau chiar similare. Prin procesarea
integrată, decoderul MPEG-2 poate transfera informaţiile critice către codorul
H.264, incluzând aici locaţiile cadrelor I şi care sunt vectorii de mişcare care au
fost folosiţi pentru a coda cadrele. Dacă această conversie este acceptabil de
simplă, cum ar fi reducerea rezoluţiei sau reducerea vitezei cadrelor, codorul
poate furniza cadre B mai puţin calitative în favoarea cadrelor I, pentru a
îmbunătăţi calitatea codării.
Prin conversia cu ASIC, unde decodarea si codarea se fac independent,
astfel de informaţii nu sunt disponibile. Ca rezultat, codorul trebuie să creeze un
nou vector de mişcare şi să selecteze propriile cadre I. Selectarea unor vectori de
mişcare diferiţi decât cei care au fost folosiţi de codarea iniţială, duc la
degradarea calitaţii imaginii şi în acelaşi timp la un consum mai mare a lărgimii
de bandă. Pierderea de calitate este dată de posibilitatea ca un codor să se
desicronizeze faţă de decoder şi să fie tentat să folosească un cadru B ca şi cadru
I.
Pierderea sincronizării şi crearea unor vectori de mişcare diferiţi duc atât la
o pierdere semnificativă de calitate cât şi la o creştere a lărgimii de bandă.
Pierderile din conversie pot fi neglijate atunci când informaţia poate fi prelucrată
atât de decodor cât şi de codor.
Pentru echipamentele video de uz general, TI oferă familia DM64X, o
generaţie de procesoare media digitale flexibile. Acestea oferă procesare digitală
de semnal cu o performanţă superioară pentru o gamă largă de aplicaţii. Sunt
potrivite pentru prelucrea video, sunt construite pe o arhitectură VLIW (Very
Long Instruction Word) îmbunătăţită cu instrucţiuni video specifice, asigurând
performanţe excelente şi un flux optimizat de date. Echipat cu suficientă memorie
pentru a prelucra aplicaţii video, un modul DMA (Direct Memory Acces) optimizat
pentru a creşte concurenţa datelor de intrare/iesire, periferice video esenţiale
integrate şi abilitatea de a prelucra doua fluxuri de 64 de biţi pe fiecare ciclu,
generaţia DM64X oferă performanţe superioare pentru prelucrare video digitală.
De asemenea, pentru a furniza un produs eficient, este esenţială alegerea
unei combinaţii corecte de periferice pentru aplicaţii. PDS-urile trebuie să fie
capabile să interacţioneze cu diverse tipuri de memorie, standarde de BUS de
sistem şi conectivitate cu diverse porturi: USB şi 1394. Procesoarele de semnal
avansate, au implementate module de securitate prin care utilizatorii nu pot
rescrie soft-ul, decât cu utilizarea unui ID, pe care nu-l au decât dezvoltatorii şi
producătorii. Aceste module de securitate ajută dezvoltatorii să prevină ugrade-
urile neautorizate ale echipamentelor care distrug mecanismele DRM.
Noua tehnologie de la Texas Instruments, DaVinci, face inovaţia posibilă în
mediul digital pentru echipamentele mobile. DaVinci este optimizat pentru
sistemele video digitale şi include un procesor digital de semnal bazat pe SoC (
System on Chip), codecuri multimedia, ASP (Advanced Simple Profile), cadre şi
instrumente de dezvoltare. Astfel se pot crea aplicaţii unice optimizate pentru
nevoile particulare ale fiecărui sistem.
Sunt multe modalităţi prin care se poate ajunge la calitate. Unul din ele
este să prelucrezi cât mai bine un semnal de înalte definiţie. De exemplu,
utilizând un PDS performant, putem trece de la secvenţe de 48 KHz la secvenţe
de 96 KHz sau chiar 192 KHz. Calitatea este de asemenea bazată pe numarul de
Pagina 3 din 11
canale pe care echipamentul poate să-l suporte. Oricum, dublarea frecvenţei unei
secvenţe sau a numărului de canale, necesită dublarea cerinţelor de procesare.
Ceea ce îi stimulează pe dezvoltatorii de echipamente audio profesionale, din
punct de vedere al calităţii, este numărul mare de modalităţi de procesare a
semnalului: multiplele filtrări ce se pot aplica semnalului duc la un rezultat mai
bun al calităţii sunetului. În timp ce sute de algoritmi de prelucrare audio sunt
disponibili, mulţi producători de echipamente originale îşi diferenţiază
profesionalismul prin propriile filtre audio speciale, demonstrând că
programabilitatea este cerinţă esenţială.
Modalitatea clasică de a măsura performanţele unui echipament audio
profesional este numărul de biquad-uri (un anumit tip de filtrare liniară, ce
implementează funcţia de transfer ca raport a doua funcţii quadratice) pe care
poate să le realizeze pe secundă. În timp ce MFLOPS (millions of floating-point
operations per second) este un etalon de măsură pentru procesoarele în virgulă
mobilă, filtrul biquad este etalonul pentru mulţi algortimi audio, ce poate da
informaţii precise cu privire la performanţă. Mulţi producători, în loc să folosească
propriile teste, rulează testul biquad pentru a evalua performanţele hardware şi
software, având astfel un raport de calitate precis chiar dacă implementarea se
face pe diverse platforme.
Filtrarea standard biquad necesită cinci multiplicări, de aceea procesoarele
digitale de semnal, cum este de exemplul generaţia C67X de la Texas
Instruments, necesita 2.5 cicli pe biquad. Unii producatori afişează caracteristici
de calitate utilizând testul biquad modificat, cu doar patru multiplicări, dar
această practică generează informaţii inexacte cu privire la performanţele reale
ale aplicaţiilor. Cu cât testul biquad este mai bun, cu atât mai multe filtrări pot fi
implementate, obţinându-se astfel o calitate mai bună a semnalului audio.
Familia C67X de procesoare digitale de semnal de la Texas Instruments
este o platformă ideală pentru aplicaţiile audio profesionale. Arhitectura pe 32 de
biţi în virgulă mobilă dă posibilitatea dezvoltatorilor să realizeze rapid prototipuri
de algoritmi audio complecşi. Având o arhitectură pe 32 de biţi – 24 de biti
pentru mantisă şi 8 biţi pentru exponent – oferă dezvoltatorilor posibilitatea de a
captura mai mult din gama dinamică a sunetului; calitatea CD-ului audio pe 16
biti nu are acelaşi raport de calitate al semnalului – SNR – faţă de cel ce poate fi
obţinut pe 24 biţi. Combinând instrucţiuni precise şi permiţând operaţii pe 32 de
biţi, se îmbunătăţeşte foarte mult eficienţa procesului de prelucrare.
Lucrând în virgulă mobilă, producătorii au abilitatea de crea rapid algoritmi,
de a-i evalua şi de a-i îmbunătăţi. Nu trebui să-şi faca griji pentru depăşirile
numerice şi se pot focaliza pe obţinerea rapidă a prototipurilor. Pentru a ajuta la
dezvoltarea rapidă de aplicaţii, mulţi producători preferă să creeze prototipuri de
algoritmi în virgulă mobilă şi apoi să facă trecerea către virgula fixă pentru a
reduce costul hardware ( procesoarele în virgulă fixă sunt de obicei mai ieftine
decat cele în virgulă mobilă). Pentru acest timp de trecere de la virgula mobilă la
virgula fixă, Texas Instruments oferă instrumente specifice care uşurează mult
procesul.
În realitate, chipurile de silicon pentru modulele de memorie şi periferice
sunt mai scumpe decât procesoarele de semnal. Marii producatori şi-au îndreptat
atenţia către producţia de procesoare în virgulă mobilă, pentru ca dezvoltatorii să
poată trece peste procesul de conversie a aplicaţiilor de la virgula mobilă la
virgula fixă, care de obicei durează între 4 şi 6 luni. Astfel dezvoltatorii trec direct
Pagina 4 din 11
la producţia în virgulă mobilă, obţinând astfel o reducere a costurilor, a timpului
de lucru şi o îmbunătăţire a poziţiei pe piaţă.
Arhitectura VLIW (very long instruction word) a familiei de procesoare
C67X este bazată pe cel mai avansat, optimizat şi cunoscut compilator C pentru
PDS-uri, furnizând performanţe superioare ale aplicaţiilor şi uşurinţă în
programare. Avantajul de a fi posibilă programarea în C în detrimentul
programării în assembler nu poate fi trecut cu vederea. Optimizarea manuală în
assembler este una din cele mai dificile proceduri .
Codul algoritmului este proprietatea intelectuală a companiei care l-a creat,
iar acest lucru nu trebuie ascuns. Algoritmii de procesare audio tind să fie din ce
în ce mai complicaţi, iar pentru a-i controla este nevoie de un limbaj de
programare de nivel înalt, aşa cum este C. Lucrand în C, oricine altcineva în afară
de dezvoltatorul care a scris prima dată algoritmul, poate modifica şi îmbunătăţi
codul sursă.
Dezvoltarea rapidă a prototipurilor software reprezintă jumătate din
provocările proiectanţilor. Din acest motiv, marii producători de procesoare de
semnal pun la dispoziţia dezvoltatorilor seturi complete de instrumente atât
hardware (flexibilitatea porturilor de intrare/ieşire, flexibiliate în configurare) cât
şi software (module şi biblioteci predefinite) care ajută foarte mult la proiectarea
rapidă a aplicaţiilor.
Pagina 5 din 11
modelare software a proceselor analogice, dezvoltatorii pot modela proiectele
fără să fie nevoiţi să refacă arhitectura platformei de producţie.
Controlerele digitale fac, de asemnea, posibilă şi eficientizarea altor
operaţii. De exemplu, dezvolatorii pot implementa cuplul la zero rotaţii pe minut.
Cu alte cuvinte, sistemul poate avea cuplu înainte ca motorul să înceapă rotirea.
Acest lucru este posibil doar cu algoritmi sofisticaţi, imposibil de realizat cu
componente analogice. Dezvoltatorii pot, de asemenea, să corecteze orice
deficienţă de energie cu PFC (Power Fact Correction), aceasta fiind o altă funcţie
intens folosită.
Controlul digital oferă posibilitatea unei funţionări simple, nerealizabile cu
componente analogice. În afară de dirijarea motorului, controlerul digital poate
monitoriza răspunsul senzorilor şi îl poate încorpora în operaţiile motorului. De
exemplu, răspunsul sistemului de ştergătoare la o maşină poate fi folosit pentru a
determina cât de multă apă este prezenta pe parbriz. Astfel viteza de ştergere
poate fi ajustată ducând la o mai bună vizibilitate pentru sofer.
Analiza rezultatelor în detaliu poate duce la obţinerea de funcţii ce nu există
în sistemele analogice. De exemplu, SawStop a dezvoltat un tip de senzor pentru
maşinile de tăiat lemne, care, folosind procesoare de semnal, poate citi
caracteristicile lamei de tăiat de 1000 de ori pe secundă. Senzorul este capabil să
determine când fierăstrăul taie un lemn şi când taie un deget. Senzorii SawStop
funţionează în timp real, procesând rapid informaţia şi activând întreruperea în
cazul în care apare un eveniment. Poate opri lama fierăstrăului în mai puţin de 2
ms de la detectarea faptului ca lama taie altceva decat un material din lemn.
Un exemplu de controler digital avansat este Texas Instruments C2000,
caracterizat prin:
- viteza de execuţie, bucle rapide;
- comunicaţia cu perifericele prin liste FIFO, care reduc substanţial
încărcarea CPU-ului;
- convertoare analogice digitale ultra rapide;
- arhitectură pipeline, ce dă posibilitatea citirii şi scrierii în acelaşi timp, pe
acelaşi ciclu;
Un punct forte pentru aplicaţiile de control al motorului prin procesoare
digitale de semnal este asemănarea cu caracteristicile microcontrolerelor la
partea de întreruperi şi la interfaţa cu utilizatorul. Dezvoltatorii au nevoie de
puterea de procesare a procesoarelor de semnal fără a renunţa la controlul şi
uşurinţa în programare oferite de microcontrolere. Managementul întreruperilor
este foarte important în controlul digital. Un procesor trebuie să fie capabil să
reacţioneze rapid, primind date de la senzori în acelaşi timp ce prelucrează
instrucţiuni de control. În consecinţă, întreruperile de prioritate mare trebuie să
fie capabile să oprească întreruperile de prioritate scăzută pentru a asigura lipsa
priederilor de date şi securitatea controlului integrat.
Procesoare de semnal au nevoie de un singur ciclu pentru a citi, modifica şi
scrie o dată (RMW- Read Modify Write). La acest tip de arhitectură este nevoie ca
mascarea întreruperii să fie oprită în timpul acestor operaţii. Acest mecanism
previne citirea unei valori, atunci când apare o întrerupere care poate să schimbe
o valoare tocmai citită. Astfel PDS-ul ar fi prelucrat vechea valoare în loc sa
prelucreze noua valoare, ducând astfel la obţinerea unui rezultat nedorit. Oprirea
mascării întreruperilor duce la întârzieri în prelucrare şi astfel se pot pierde date
şi se poate altera integritatea controlului. Procesoarele avansate evită această
problemă prin mecanisme ce capacitează controlerul să acorde atenţie rapidă
Pagina 6 din 11
atât întreruperilor cât şi structurii RMW. Memorarea şi restaurarea automată a
contextului ajută producătorii să dezvolte aplicaţii software de control prin
proceduri şi funcţii specifice.
Procedura RMW se face în asa fel încât o întrerupere nu poate apărea în
mijlocul unuei sarcini de citire-modificare-scriere, fără a fi o întrerupere mascată.
În acest fel, operaţiile RMW critice nu pot fi întrerupte sau corupte nici dacă este
vorba de întreruperi cu prioritate ridicată.
Avantajele controlerelor digitale de semnal vin din intrumentele de
dezvoltare software puse la dispoziţie de producători. Limbajele de programare
suportate C, C++ ajută şi mai mult dezvoltatorii de aplicaţii, eliminând
dificultăţile din optimizare şi complexitate caracteristice assembler-ului.
Unul din principale avantaje ale controlerelor digitale de semnal este
creşterea rezoluţiei numerice care duce la creşterea acurateţei datelor. Cu o
arhitectură pe 32 de biti, dezvoltatorii pot realiza calcule mult mai precise şi pot
menţine uşor gama dinamică de valori.
Combinaţia optimizată de capacităţi impresionante de procesare de semnal
pentru stăpânirea complexităţii, controlul în timp real al motorului şi combinaţia
optimă de periferice, fac din controlerele digitale de semnal, arhitecturi ideale
pentru un mare număr de aplicaţii de control, de la domeniul industrial la
domeniul auto, de la controlul avansat de energie la senzori avansaţi, incluzând:
- reglarea puterii şi consumului automobilelor;
- controlul digital al vitezei motoarelor în cazul compresoarelor de răcire,
îmbunătăţind eficienţa şi reducând consumul de energie.
Sisteme de securitate
Pagina 7 din 11
- apoi camera începe recunoaşterea de formă pentru a evalua dacă
obiectul este o presoană (eveniment importat) sau un câine (eveniment
lipsit de importanţă);
- cu o tehnologia de recunoaştere, camera poate verifica indetitatea
persoanei ;
- din acest punct, doar când sunt suficiente probe că evenimentul este
relevant şi cu potenţiale consecinţe, camera porneşte sistemul de alarmă
şi este implicat personalul de supravegere;
Înţelegând semnificaţia a ceea ce monitorizează, o cameră inteligentă
poate lua decizii despre cum să captureze o imagine:
- cand nu se întâmpla nimic, camera poate face capturi la o rezoluţie mai
mică sau poate reduce numărul de cadre. În acest fel, camera
minimizează impactul său asupra reţelei şi poate economisi spaţiul de pe
mediile de stocare;
- când apare o modificare între imaginile capturate, camera poate creşte
automat calitatea ori de câte ori un eveniment este potenţial important.
În loc de a alerta o personă şi de a aştepta o comanda, camera poate
face propriile determinări prin creşterea automată a rezoluţiei, a calităţii
compresiei şi a vitezei cadrelor;
- camera poate de asemenea să mărească inteligent zona de interes
pentru a obţine mai multe detalii, ceea ce camerele analogice nu pot
face fără intervenţia unei persoane;
- în timpul urmăririi obiectului, camera se poate roti şi poate chiar
transfera urmărirea pe camerele din apropiere;
- camerele inteligente pot controla utilizarea lor în locuri unde intimitatea
este esenţiala, de exemplu, o camera ce supravegheaza o parcare şi are
vedere şi la apartamentele de la blocul din apropiere: imaginile din acea
direcţie pot fi automat estompate pentru ca cineva să nu le poată vedea
sau înregistra.
Sistemele video digitale reduc şi alte costuri. De exemplu, un sistem cu 10
camere utilizat 10 ore pe zi timp de un an, necesita 1100 de casete. Un singur
DVD poate memora peste 60 de ore de imagini video digitale compresate,
aceeaşi arhivă pe un an necesitând mai puţin de 150 de DVD-uri.
Prin proiectarea modulară, inginerii pot realiza proiecte de investiţii pe mai
multe linii de produse şi diverse pieţe. Tehnicienii în domeniu pot personaliza o
placă pentru un anumit client prin introducerea în socheturile libere a
componentelor configurate corespunzător: senzor de imagine, procesor şi
conexiune de reţea. În timp ce componentele analogice încep să piardă din teren,
partea digitală din sistem poate să avanseze, reţinând o parte semnificativă din
costul totalul al sistemului. În plus, sistemul video digital poate înlocui sistemul
analogic instalat deja într-un spaţiu, protejând invesţiile în infrastructura deja
existentă.
Costul proiectării este redus prin folosirea aceluiaşi software atât pentru
aplicaţiile simple cât şi pentru aplicaţiile complexe. În plus, o mare parte a
software-ului care să permită prelucrări video digitale este disponibil deja gratis.
Diferenţierea produselor este administrată de caracteristicile care sunt activate
din software. Împreună, proiectarea modulară şi refolosirea software-ului va
permite inginerilor să dezvolte aplicaţii din ce în ce mai complexe, scăzând
substanţial costurile de dezvoltare.
Pagina 8 din 11
Din perspectiva unui utilizator, camerele video digitale bazate pe standarde
comune îşi vor schimba problema de interoperabilitate de la una hardware la o
chestiune de aplicare a software-ului de compatibilitate. Având în vedere că
inteligenţa este distribuită în întreaga reţea de securitate, nu este nevoie de o
consolă de management analogică scumpă. Personalul va avea posibilitatea de a
vizualiza şi controla orice cameră de la orice calculator din reţea (cu permisiunea
corespunzătoare şi cu o parolă, bineînţeles).
Avantajele securităţii video digitale se pot evidenţia şi peste internet. Au
fost create platforme complete de hardware şi software pentru a dezvolta aplicaţii
cu camere intelingente într-o reţea, care au performanţe deosebite.
Pagina 9 din 11
În medie, scanerele de amprente capturează între 5 şi 15 cadre pe
secundă. Scanerul are nevoie de un procesor puternic cu o arhitectură de
memorie rapidă, atât pentru a captura imagini multiple, cât şi pentru a împreuna
părţile scanate, şi apoi să analizere rezultatul final, toate acestea realizându-se în
timp real. Împreunarea trebuie făcută cu atenţie pentru a evita introducerea de
forme false şi curăţarea imaginii devine pe cât de importantă pe atât de
complicată. Toate procesele trebuie să se întâmple în timp real pentru că
întârzierea este un factor important pentru clienţii finali.
Este important să existe flexibilitate în sistemele biometrice, atât din
perspectiva tehnologiei cât şi din perspectiva utilizatorilor. Procesările de imagine
tradiţionale folosesc FFT (transformata Fourier rapidă) pentru a extrage
caracteristicile imaginii. Algoritmii mai avansaţi folosesc transformata wavelet
discretă sau algoritmi proprii. Industria securităţii biometrice este departe de a se
stabiliza atâta timp cât cercetătorii continuă să dezvolte algoritmi rapizi, cu
acurateţe din ce în ce mai mare pentru procesarea şi recunoaşterea imaginilor.
Fără o arhitectură programabilă, echipamentele ar fi blocate în algoritmul
pus din fabrică, în timp ce restul industriei merge înainte. În plus, pentru a
implementa noi servicii şi caracteristici, sistemele biometrice ar necesita
intervenţia service-ului şi înlocuiri de hardware chiar şi pentru îmbunătăţiri
simple. La arhitecturile programabile, îmbunătăţirile complexe sunt atât de
simple pe cât este descărcarea unui nou software.
Multe scanere biometrice, cum ar fi cele care blochează uşile cu cititoare de
amprentă, folosesc baterii, deci consumul de energie este un factor important de
luat în seamă. Familia de procesoare digitale de semnal C55X de la Texas
Instruments oferă un consum eficient de energie şi suportă activarea rapidă
astfel încât procesarea datelor poate începe imediat ce un deget a atins senzorul.
Tehnologiile biometrice sunt un domeniu promiţător care îşi face uşor şi
rapid loc în industrie şi printre utilizatori. De exemplu, sisteme de acces cu
cititoare de amprentă elimină nevoia codurilor de acces nesigure. Utilizatorii sunt
nevoiţi să memoreze atât de multe coduri câte uşi sunt protejate. Cu scanerele
biometrice, utilizatorii au nevoie doar de un deget pentru accesa orice uşă. În
plus, atunci când un angajat care avea acces peste tot este demis, nu mai este
nevoie de schimbarea tuturor codurilor de acces, ci doar de ştergerea lui din baza
de date.
Un alt domeniu de interes unde tehnologiea biometrică îşi face simţită
prezenţa este projarea datelor de pe PC. Multe sisteme se bazează pe sistemul de
operare al PC-ului pentru a încărca şi activa protecţia biometrică. Chiar şi aşa, din
moment ce sistemul de operare este activ, hackerii pot învinge sistemul
biometric. De aceea, scanerele de securitate biometrice, trebuie să se activeze
îmainte ca bios-ul PC-ului să se încarce. În consecinţă, scanerele biometrice
trebuie să fie sisteme independente cu propriul sistem de operare securizat,
pentru a proteja într-un mod mult mai sigur toate datele.
Pagina 10 din 11
digital de semnal sau microcontroler) este mult mai mic dacă se optează pentru
realizarea în masă a unei familii de astfel de sisteme, urmând ca diferenţierea
caracteristicilor funţionale să se facă prin algoritmii şi programele software
implementate. Astfel se ajunge la utilizare unui singur model de astfel ce chip în
mai multe echipamente electronice cu funcţionalităţi diferite, ceea ce diferă fiind
doar programul instalat.
Tehnologia din ce în ce mai avansată, caracteristicile fizice din ce în ce mai
bune, consumul de energie din ce în ce mai mic şi viteza de execuţie din ce în ce
mai mare, fac posibile prelucrarea unui volum din ce în ce mai mare de date şi
realizarea unor operaţii, asura datelor, din ce în ce mai complexe.
În doar câţiva ani s-a trecut de la procesări de date pe 8 şi 16 biţi, la
procesări pe 32 şi chiar 64 de biţi. Calculul paralel, posibil a fi implementat la
procesoarele de semnal cu două sau chiar patru unităţi centrale de prelucrare, îşi
face simţită contribuţia la aplicaţiile cu viteză, eficienţa şi randament sporite.
Nevoiele de mobilitate, de prelucrare rapidă, de calitate superioară, de
consum tot mai mic de energie şi resurse, vor fi din ce în ce mai bine satisfăcute
de noile generaţii de procesoare digitale de semnal cu arhitecturi avansate şi de
algoritmii tot mai eficienţi, mai complexi şi mai rapizi ce vor fi implementaţi.
Bibliografie:
www.microchip.com
www.ti.com
www.atmel.com
Pagina 11 din 11