Procesoare Numerice de Semnal - CURS

1

2.5 Dezvoltări software
Proiectarea unui sistem DSP se axează pe dezvoltarea şi implementarea algoritmilor DSP pentru a obţine funcţionarea dorită pentru o aplicaţie dată. Odată ce algoritmii cei mai potriviţi au fost aleşi, sarcina rămasă este de a dezvolta şi testa programul. Folosind un limbaj de programare, se transpune algoritmul într-o formă care să poată fi prelucrată pe baza resurselor disponibile dintr-un anumit procesor. În multe aplicaţii, timpul de execuţie şi mărimea memoriei necesare sunt dictate de rata de eşantionare şi de complexitatea algoritmului implementat pe un anumit procesor DSP. Arhitectura şi setul de instrucţiuni ale procesorului DSP au un impact major asupra implementării algoritmilor într-o formă optimală.

Procesoare Numerice de Semnal - CURS

2

2.5 Dezvoltări software
În principiu, sarcina programatorului se rezumă la deplasarea datelor între memorie şi registre şi de a gestiona unităţile de operare, astfel încât ALU şi MAC să opereze corect şi eficient asupra eşantioanelor de date pentru a realiza procesarea dorită. Dezvoltarea soft-ului pentru DSP trebuie să exploateze în totalitate procesarea paralelă şi capacităţile de "pipeline" care se regăsesc în structura hard şi în cea dată de setul de instrucţiuni asociate unui procesor dat. Utilizarea unei tehnici adecvate de programare este esenţială în utilizarea cu succes a DSP-urilor. Trebuie ţinut cont de o serie întreagă de factori care influenţează semnificativ procesarea digitală, precum: cerinţele de memorie, limitările procesorului, mărimea programului, timpul de execuţie, etc. Există două limbaje de programare curent utilizate pentru scrierea codului DSP: asamblare şi C. Deoarece procesorul permite ca mai multe unităţi de procesare să lucreze în paralel, limbajele de programare de nivel înalt, precum C, sunt adesea ineficiente.

Procesoare Numerice de Semnal - CURS

3

2.5.1 Setul de instrucţiuni
Instrucţiunea defineşte operaţiile ce trebuie executate de către procesorul DSP la fiecare ciclu de ceas. Setul de instrucţiuni reprezintă totalitatea operaţiilor pe care un anumit procesor le poate efectua. Setul de instrucţiuni cuprinde instrucţiuni pentru procesarea aritmetică, pentru manipularea datelor, deplasarea datelor în memorie, operaţii logice, testarea unor condiţii şi pentru controlul programului astfel încât să se optimizeze exploatarea memoriei şi timpul de execuţie. Multe dintre procesoarele TMS320 suportă două forme pentru setul de instrucţiuni: o formă mnemonică şi o formă algebrică. Forma mnemonică este cea folosită cel mai des.

Procesoare Numerice de Semnal - CURS

4

2.5.1 Setul de instrucţiuni
Instrucţiunile aritmetice realizează operaţiile de bază folosind registrele de deplasare, multiplicatorul şi ALU. Aceste instrucţiuni includ: adunarea, scăderea, calculul valorii absolute, înmulţirea, înmulţirea cu sumare, înmulţirea cu scădere, negarea şi deplasările spre stânga sau spre dreapta. În funcţie de arhitectura procesorului, pot exista o serie de operaţii care specifică registrele implicate, rolul bitului de transport şi dacă extensia de semn trebuie considerată. Multiplicatorul are asociat un set specific de instrucţiuni de înmulţire cu acumulare care manipulează şi eventualele depăşiri intermediare.

Procesoare Numerice de Semnal - CURS

5

2.5.1 Setul de instrucţiuni
Operaţiile logice, precum AND, OR, deplasările logice, de testare a stării logice şi XOR (eXclusive-OR) sunt şi ele ataşate ALU şi se folosesc pentru mascarea, sau pentru setarea unor anumiţi biţi ai operanzilor. Aceste instrucţiuni pot fi de asemeni utilizate pentru manipularea biţilor (de exemplu testare, setare, resetare, complementare, etc.). Ele pot opera asupra orcărui bit (sau perechi de biţi) din componenţa unui cuvânt din memorie sau dintr-un registru intern. Instrucţiunile pentru deplasarea datelor acoperă încărcarea şi stocarea datelor (sau a unui bloc de date) din şi în memoria de date, între memoria de program şi cea de date, sau între registrele interne.

Procesoare Numerice de Semnal - CURS

6

2.5.1 Setul de instrucţiuni
Instrucţiunile pentru testarea condiţiilor furnizează suportul pentru operaţiile de control ale programului, ca de exemplu instrucţiunea IF-ELSE din C. Condiţiile care pot fi testate variază de la un procesor la altul, dar de obicei includ valoarea acumulatorului (adică zero, pozitivă sau negativă), starea unor linii de intrare, precum şi starea unor flag-uri specifice - carry (transport), overflow (depăşire), etc. Instrucţiunile de control a programului includ ramificări, apeluri de subrutine, reveniri din subrutine şi întreruperi. Instrucţiuni de repetare, repetare a unui bloc şi de întârziere a ramificărilor sunt disponibile doar pentru procesoarele din generaţiile avansate. Aceste instrucţiuni pot fi executate de obicei într-o manieră condiţionată de rezultatele testării anumitor condiţii.

Procesoare Numerice de Semnal - CURS

7

2.5.2 Programe de asamblare
Pentru a proiecta cel mai eficient sistem DSP, codul scris trebuie optimizat pentru a exploata cât mai bine resursele disponibile ale unui procesor dat. Limbajul de asamblare constituie prima etapă situată deasupra codului maşină utilizat direct de către procesor; astfel, el determină cea mai rapidă execuţie şi cea mai compactă formă de reprezentare a unui algoritm. Instrucţiunile sunt desemnate prin mnemonici, registre interne şi simboluri predefinite. Numerele pot fi reprezentate în formă hexazecimală, zecimală, sau binară, sau prin intermediul unor simboluri definite de către utilizator. Asamblorul (assembler) plasat în calculatorul gazdă traduce programul de asamblare în cod obiect, care poate fi descărcat direct în memoria de program a procesorului în vederea execuţiei. Scrierea în limbaj de asamblare permite specificarea modului de generare a adreselor, modul de exploatare a resurselor procesorului (registre şi unităţi funcţionale), setarea modului de lucru, precum şi alte operaţii de administrare, dând astfel programatorului posibilitatea de a deţine controlul total asupra performanţelor.

Procesoare Numerice de Semnal - CURS

8

2.5.3 Programe C
Limbajul C este o unealtă de programare extrem de utilă mai ales în cazul sarcinilor de calcul intensiv. Limbajele de programare de uz general, aşa cum este C sau C++, sunt adesea folosite pentru realizarea sarcinilor de procesare a semnalelor într-o formă compactă şi portabilă. Programarea orientată pe obiecte (object-oriented programming) a căpătat un interes aparte datorită faptului că ea permite reutilizarea elementelor soft (sau obiecte) în alte programe. Acest fapt poate conduce la o scădere semnificativă a costului de dezvoltare a noi programe. C are capacităţile unui limbaj de nivel înalt, precum manipularea ariilor şi funcţiilor, necesare în implementarea algoritmilor DSP. De asemeni, dispune de capacităţi specifice unui limbaj de nivel scăzut, precum manipularea la nivel de bit, a pointerilor şi acţiunea directă asupra facilităţilor I/O hardware. Eficienţa compilatorului C s-a îmbunătăţit continuu, dar programele în C nu vor putea să înlocuiască niciodată complet avantajele codului de asamblare.

Procesoare Numerice de Semnal - CURS

9

2.5.4 Utilizarea combinată a limbajului C şi a codului de asamblare
Principalul scop al dezvoltării software este scrierea mai uşoară a unui program, care să asigure şi facilităţi de depanare, întreţinere şi portabilitate pe o mare varietate de procesoare. În plus, se doreşte dezvoltarea unui program care să necesite mai puţine locaţii de memorie şi care să utilizeze resursele de calcul specifice unui anumit procesor, făcându-l astfel să ruleze cât mai rapid. Aceste două direcţii sunt adesea contradictorii. Limbajul C, de nivel înalt, este mai uşor de utilizat pentru un anumit algoritm dat şi uşor de transpus de la un anumit procesor la altul. El permite urmărirea logicii unui algoritm, programul obţinut fiind uşor de înţeles şi de întreţinut. Totuşi, codul de asamblare generat de compilatorul C nu este la fel de eficient ca şi codul scris direct în acest limbaj. Programul scris direct în limbaj de asamblare este în general mai rapid şi de dimensiuni mai mici, dar necesită un timp mai mare pentru dezvoltare.

Procesoare Numerice de Semnal - CURS

10

2.5.4 Utilizarea combinată a limbajului C şi a codului de asamblare
Bibliotecile software devin importante pe măsură ce algoritmii DSP devin tot mai complicaţi şi necesită resurse computaţionale tot mai mari. Producătorii de DSP-uri furnizează de obicei şi un set din cele mai utilizate operaţii de procesare de semnal în biblioteci software optimizate pentru un anumit procesor. Pe baza creşterii eficienţei compilatorului C şi a disponibilităţii tot mai mari de unelte de dezvoltare software integrate, utilizarea în paralel a limbajului C şi a unor rutine în asamblare devine calea cea mai bună în domeniul dezvoltării programelor pentru sisteme DSP.

Procesoare Numerice de Semnal - CURS

11

2.5.5 Unelte pentru dezvoltarea software

Uneltele software de bază includ un compilator C, un asamblor şi un linker. Pentru validarea unui algoritm se poate utiliza fie un simulator software, fie un emulator hardware.

MATLAB este un limbaj pentru calcul de mare performanţă care este utilizat frecvent în domeniul DSP pentru proiectarea algoritmilor şi pentru analiză. MATLAB pune la dispoziţie un mediu de lucru pentru manipularea variabilelor şi a datelor I/O şi pentru afişare, dar şi pentru dezvoltarea aplicaţiilor. El include biblioteci matematice şi DSP de bază şi permite crearea unor funcţii mai complexe printr-o mare varietate de toolbox-uri.

Procesoare Numerice de Semnal - CURS

12

2.5.5 Unelte pentru dezvoltarea software
Compilatorul C
Compilatoarele C ale procesoarelor DSP generează în mod obişnuit cod de asamblare, astfel încât utilizatorul poate urmări instrucţiunile de asamblare generate de compilator pentru fiecare linie din codul sursă în C. Codul de asamblare poate fi apoi optimizat de către utilizator şi reintrodus în asamblor. Compilatorul C pentru familia TMS320 corespunde standardelor ANSI-C, făcând posibilă o portabilitate maximă şi o creştere a capacităţilor. Uneltele de compilare conţin şi o bibliotecă completă care include funcţii de intrare / ieşire standard, de manipulare a şirurilor, de alocare dinamică a memoriei, de conversie a datelor, precum şi funcţii matematice. Compilatorul dispune şi de o facilitate opţională de optimizare pentru generarea unui cod compact şi eficient pornind de la programul sursă C.

Procesoare Numerice de Semnal - CURS

13

2.5.5 Unelte pentru dezvoltarea software
Asamblorul
Fişierul care conţine programul de asamblare este utilizat ca intrare în asamblor, care, de obicei, se află pe calculatorul gazdă. Sarcina asamblorului este de a converti modulele de cod sursă, scrise folosind mnemonicile limbajului de asamblare, în module executabile în cod obiect pentru procesorul DSP. Asamblorul produce două fişiere de ieşire. Un fişier listă care corelează operaţiile de asamblare ale unui modul particular sau a unui grup de module, cu locaţiile memoriei de program/date, erorile de asamblare, etc. Celălalt fişier este fişierul obiect, care poate fi folosit ca intrare în linker. Asamblorul include de obicei facilităţi macro-library pentru a permite o abordare modulară a programării şi pentru a produce cod relocatabil pentru un linker software.

Procesoare Numerice de Semnal - CURS

14

2.5.5 Unelte pentru dezvoltarea software
Linker-ul
Sarcina specifică a linker-ului este de a combina modulele de cod obiect generate separat şi fişierele asociate pentru a forma un singur modul legat în cod obiect. Linker-ul realizează realocarea şi rezolvă referinţele externe în timpul creerii modulului executabil. Avantajul procesului modular de asamblare - compilare C - legare este că doar secţiunile sau modulele relevante ale unui program trebuie să fie editate şi asamblate (sau compilate) în timpul procesului de dezvoltare şi nu întreg fişierul sursă. Această facilitate poate salva timp şi efort considerabil. Un număr de comenzi speciale legate de maparea în memorie şi de organizarea acesteia pot fi implementate într-un fişier de comandă a linker-ului.

Procesoare Numerice de Semnal - CURS

15

2.5.5 Unelte pentru dezvoltarea software
Simulatorul
Simulatorul este un program care rulează pe calculatorul gazdă. El acceptă la intrare cod obiect şi simulează operaţiile efectuate de procesorul DSP aşa cum ar rula acesta programul, dar nu în timp real, ci sub controlul utilizatorului. Interfaţa utilizator prezintă memoria, registrele interne, I/O, etc., şi efectele asupra acestor resurse după execuţia fiecărei instrucţiuni. Pot fi inserate puncte de întrerupere (break points), sau programul poate fi rulat pas cu pas, iar conţinutul oricărui registru intern, a memoriei interne de program sau de date pot fi examinate în diferite moduri de afişare alese de utilizator. Utilizatorul poate schimba oricând conţinutul oricărui registru, flag (indicator), sau locaţie de memorie înainte de reluarea execuţiei simulate. Datele pot fi citite sau scrise în anumite fişiere pentru analiza sau procesarea lor ulterioară. Simulatoarele unui anumit procesor DSP permit utilizatorului să determine performanţa unui algoritm pe un anumit procesor ţintă înainte de a dezvolta hardware-ul.

Procesoare Numerice de Semnal - CURS

16

2.5.5 Unelte pentru dezvoltarea software
Code Composer Studio (CCS)
Există o cerere tot mai mare de platforme de dezvoltare complete, care să dispună de cele mai avansate unelte, precum: programare bazată pe scheme bloc, sisteme de operare în timp real, unelte grafice pentru organizarea memoriei, depanarea şi prezentarea codului, înregistrarea datelor în timp real, depanarea sistemelor eterogene sau multiprocesor, etc. Code Composer Studio (CCS) al firmei Texas Instruments, reprezintă o astfel de platformă, care ajută utilizatorul în dezvoltarea mai rapidă a unui cod eficient. CCS este un mediu integrat de dezvoltare care încorporează un compilator C, un asamblor, un linker, un simulator, un depanator, etc., cu resurse adiţionale precum o interfaţă grafică pentru dezvoltarea software-ului pentru DSP. Este o unealtă software uşor de utilizat destinată dezvoltării de programe. Ea furnizează un editor pentru programare şi un manager de proiect pentru construirea programelor de aplicaţie. În scopul testării programelor, dispune de paşi, puncte de oprire, ferestre de supraveghere, capacităţi grafice pentru monitorizarea datelor şi puncte de probă pentru fişierul de date de I/O.

Procesoare Numerice de Semnal - CURS

17

2.5.5 Unelte pentru dezvoltarea software
Code Composer Studio (CCS)
CCS dispune de asemenea de capacităţi de urmărire care permit utilizatorului să determine timpul de execuţie solicitat de o anumită porţiune a programului. În plus, CCS pune la dispoziţia utilizatorului un sistem de operare DSP, numit DSP/BIOS (basic input/output system). Acesta reprezintă un nucleu software de timp real care permite utilizatorului să organizeze sarcinile în programul DSP şi să monitorizeze performanţa de timp real a codului pentru DSP, fără a fi necesară stabilirea unor puncte de oprire. Spre deosebire de depanarea convenţională, unde utilizatorul trebuie să oprească execuţia DSP prin puncte de stop, DSP/BIOS furnizează servicii runtime (în timpul rulării) şi poate detecta punctele slabe care nu ar fi putut fi detectate prin depanarea convenţională. CCS dispune şi de o unealtă prin care este legat cu MATLAB.

Procesoare Numerice de Semnal - CURS

18

2.6 Cerinţe hardware

În afara cerinţelor software descrise anterior, există şi unele cerinţe importante, precum selectarea componentelor hardware necesare şi modul de interfaţare a dispozitivelor hardware externe la procesorul DSP. Este de asemenea necesar să se configureze hard-ul cu soft-ul microprogramat (firmware) şi care se integrează în software-ul DSP pentru a forma un sistem DSP complet.

Procesoare Numerice de Semnal - CURS

19

2.6.1 Selectarea hard-ului
Familia TMS320 pune la dispoziţie o gamă largă de dispozitive din care să se poată alege cea mai bună soluţie pentru o anumită aplicaţie. De exemplu, dispozitivele generaţiei C54x diferă între ele prin nucleul DSP, frecvenţa ceasului de operare, tensiuni, configuraţiile ROM on-chip, configuraţiile RAM, tipul şi numărul porturilor seriale, etc. Aceste deosebiri între dispozitivele DSP generează flexibilitate utilizatorului pentru a adopta soluţia optimă pentru aplicaţia sa. Un alt avantaj este că utilizatorul poate programa pe un dispozitiv şi apoi poate porta codul pe un alt dispozitiv din aceeaşi familie cu mare uşurinţă. În afara perifericelor interne, procesoarele DSP trebuie să comunice şi cu dispozitive externe, precum canalele de comunicaţii, difuzoare, microfoane şi dispozitive de înregistrare şi/sau redare. Mai mult, procesoarele DSP trebuie să poată stoca date suplimentare sau programe în memoria externă, sau chiar să comunice cu alt procesor prin inermediul magistralelor externe sau a interconexiunilor. Procesoarele DSP solicită de asemenea o sursă externă de tensiune, precum şi un generator de ceas sau cristal oscilator pentru a alimenta şi respectiv a pilota funcţionarea procesorului. De obicei, într-un sistem DSP mai sunt necesare şi alte circuite şi dispozitive hardware.

Procesoare Numerice de Semnal - CURS

20

2.6.2 Configuraţii hardware
După ce un procesor DSP corespunzător aplicaţiei a fost selectat, iar hardware-ul extern a fost conectat la pinii de interfaţă ai procesorului, trebuie înscrise o serie de programe, numite firmware, pentru a iniţializa perifericele procesorului şi dispozitivele externe. Unele dintre cele mai importante configurări hardware includ următoarele: Setarea frecvenţei ceasului şi programarea PLL-ului intern pentru a pilota corect procesorul; Setarea software şi hardware a stărilor de aşteptare ale memoriei externe şi ale dispozitivelor I/O; Setarea frecvenţei de eşantionare, a ratei de transfer şi a mărimii buffer-elor de intrare şi de ieşire ale convertoarelor ADC şi/sau DAC; Setarea protocolului de comunicaţie la transferului DMA pentru a deplasa date în şi din memoria internă a procesorului fără intervenţia acestuia.

Procesoare Numerice de Semnal - CURS

21

2.6.3 Unelte hardware
Odată ce firmware-ul a fost corect programat, codul este legat şi descărcat în memoria internă a DSP-ului prin software-ul de încărcare (boot-loader). Firmware-ul este rulat înaintea rutinei principale a DSP-ului. Un set de unelte hardware este de obicei disponibil pentru a testa funcţionalitatea firmware-ului şi a software-ului. Majoritatea producătorilor de DSP-uri, ca şi unii distribuitori, au dezvoltat diferite platforme de dezvoltare, pentru a acoperi cât mai bine cerinţele utilizatorilor. Aceste unelte de dezvoltare au tipuri diferite, nivele de suport variate, precum şi un cost variabil, de la cel mai scump emulator in-circuit şi până la cel mai ieftin kit de start (DSK). Uneltele de dezvoltare asistă proiectantul în testarea algoritmilor DSP în timp real şi în realizarea prototipului pentru produsul final. De aceea, o arie cât mai largă de unelte hardware şi software, de chip-uri periferice I/O şi de memorii disponibile sunt elemente foarte importante în a decide care este cel mai bun procesor DSP pentru o anumită aplicaţie.

Procesoare Numerice de Semnal - CURS

22

2.6.3 Unelte hardware
Emulatorul
Emulatoarele grăbesc procesul de dezvoltare permiţând unui program DSP să fie rulat la viteza maximă într-un mediu de timp real. Deoarece emularea este efectuată în timp real utilizând chiar sistemul ţintă, erorile de hardware sau de timing pot fi identificate prin utilizarea unui analizor logic. Verificarea finală a validităţii programului este de a-l încărca în memoria program a procesorului şi de a-l executa pe suportul hardware disponibil. Pentru a determina rezultatele, folosind intrări de timp real, emulatoarele prevăd posibilitatea inserării unor puncte de oprire (breakpoints), în scopul opririi rulării programului şi examinării conţinutului registrelor şi a locaţiilor de memorie. Înainte ca un punct de oprire să fie atins, procesorul DSP rulează la întreaga sa viteză. Un emulator in-circuit permite ca hard-ul final să fie testat la întreaga viteză conectând procesorul la mediul în timp real al utilizatorului. Poate fi determinat numărul de cicluri dintre punctele de oprire, iar timig-ul hardware şi software al unui sistem poate fi şi el urmărit.

Procesoare Numerice de Semnal - CURS

23

2.6.3 Unelte hardware
Module de evaluare
Un modul de evaluare reprezintă o platformă de dezvoltare uşor de manipulat care dispune de o placă DSP, pe care se află şi alte chip-uri periferice, precum coder-decoder (CODEC) pentru interfaţa audio, suport de emulator JTAG (joint test action group) şi memorii. O placă de evaluare poate fi introdusă într-un calculator PC sau într-o staţie de lucru. Este inclus de asemenea şi un software integrat de dezvoltare, precum CCS, care permite utilizatorului să pornească codul de evaluare pe platforma ţintă şi să determine dacă sunt îndeplinite constrângerile de timp.

Procesoare Numerice de Semnal - CURS

24

2.6.3 Unelte hardware
Kitul de start (DSK)
Kitul de start este o versiune inferioară a modulului de evaluare, care este foarte economic pentru a realiza doar evaluarea rapidă a codului. El se poate conecta uşor la un calculator prin portul paralel, sau la emulator prin cablul JTAG. Totuşi, lipsa perifericelor şi a memoriilor pe kitul de start pot solicita utilizatorului să construiască plăci adiţionale de I/O şi de memorie pentru a compensa economia făcută şi a dispune (totuşi) de un sistem funcţional.

Procesoare Numerice de Semnal - CURS

25

2.7 Consideraţii asupra sistemului
Proiectarea sistemelor DSP constă în: • înţelegerea unei aplicaţii date, • dezvoltarea algoritmilor DSP, • implementarea algoritmilor prin software pe baza unui anumit procesor, • dezvoltarea hardware-ului, • integrarea soft-ului cu hard-ul şi în • analiza performanţei sistemului pentru asigurarea satisfacerii cerinţelor. Proiectarea unui sistem DSP utilizând unelte CAD şi de analiză conduce la o abordare mai eficientă în manipularea aplicaţiilor complexe. Factorii cei mai critici care determină timpul de execuţie a programului sunt rata de eşantionare şi complexitatea algoritmului. Aceşti factori impun restricţii asupra ratei maxime de eşantionare, care trebuie să fie cel puţin de două ori mai mare decât frecvenţa maximă a semnalului de intrare pentru a evita citirile false. Acest aspect trebuie avut în vedere când se stabileşte gradul de aplicabilitate a unui sistem DSP pentru o aplicaţie concretă.

Procesoare Numerice de Semnal - CURS

26

2.7.1 Alegerea tipului de procesor DSP
Procesoarele DSP urmăresc evoluţia microprocesoarelor în ce priveşte performanţa şi integrarea pe chip. În acelaşi timp, puterea consumată devine un factor important pentru dispozitivele şi aparatura portabilă. Proiectarea unui produs DSP este limitată de următoarele scopuri cheie ale proiectării: • costul produsului, • costul proiectării, • upgradabilitatea, • integrarea în sistem şi • puterea consumată. Aceste aspecte joacă un rol esenţial în alegerea unui anumit tip de procesor DSP.

Procesoare Numerice de Semnal - CURS

27

2.7.1 Alegerea tipului de procesor DSP
Alegerea unui procesor DSP care să corespundă unei aplicaţii date este de obicei o sarcină destul de complicată. Unii dintre factorii care ar putea influenţa alegerea sunt costul, performanţele, perspectiva de dezvoltare şi suportul de dezvoltare hardware şi software disponibil. Pornind de la formatul datelor, procesorul va fi unul în virgulă fixă sau în virgulă mobilă. Formatul datelor stabileşte abilitatea dispozitivului de a manipula semnale de precizii diferite, în domenii diverse şi cu un factor semnal-zgomot bun. Utilizarea procesoarelor în virgulă mobilă poate creşte domeniile dinamicii ale semnalelor şi ale coeficienţilor. Procesoarele în virgulă mobilă sunt de regulă mai scumpe decât cele în virgulă fixă, dar ele sunt mult mai potrivite pentru programarea de nivel înalt în C. Astfel, ele sunt mai uşor de utilizat şi permit o scurtare a timpului în care produsul final ajunge pe piaţă. Când se alege între un procesor în virgulă fixă şi unul în virgulă mobilă, uşurinţa utilizării şi timpul de dezvoltare a unei aplicaţii sunt adesea la fel de importante.

Procesoare Numerice de Semnal - CURS

28

2.7.1 Alegerea tipului de procesor DSP
Viteza de execuţie a unui algoritm DSP reprezintă de asemenea un criteriu important pentru alegerea unui anumit procesor. Când performanţa este cel mai important factor, algoritmul trebuie implementat prin cod optimizat pentru diferite procesoare, iar timpii de execuţie trebuie apoi comparaţi. Timpul pentru a realiza un anumit algoritm codificat în limbaj de asamblare optimizat poartă numele de benchmark. Un benchmark se poate utiliza pentru a furniza o măsură generală a performanţei unui algoritm pentru un anumit procesor. Alte aspecte ce trebuie considerate sunt mărimea memoriei (pe chip şi adresabilă în exterior) şi existenţa unor dispozitive periferice pe chip, precum interfeţe seriale şi paralele, timere şi capacitate de multiprocesare. În plus, dimensiunile, greutatea şi puterea consumată trebuie să fie cât mai mici. O constrângere importantă este dată de preţul sistemului. Ca şi în cazul microprocesoarelor de uz general, furnizorii secundari, suportul oferit de alte firme (third-party) şi respectarea standardelor industriale sunt alte aspecte care trebuie evaluate.

Procesoare Numerice de Semnal - CURS

29

2.7.2 Eşantionarea şi cuantificarea

Semnalul analogic este eşantionat şi cuantizat (codificat) pentru a fi utilizat într-un sistem digital. Eşantionarea este procesul de convertire a unui semnal continuu în timp într-unul discret (în timp), care încă posedă amplitudini continue la intervale de eşantionare discrete. Amplitudinile semnalelor discrete sunt apoi cuantificate prin valori digitale, pe baza unei lungimi (N) a cuvântului fixată. ADC realizează procesul de eşantionare şi cuantificare. Este important de amintit că numai semnalele digitale (nu şi cele discrete în timp) sunt utilizabile într-un sistem DSP.

Procesoare Numerice de Semnal - CURS

30

2.7.2 Eşantionarea şi cuantificarea
Perioada de eşantionare, T, este determinată de frecvenţa semnalului de intrare. Conform teoremei de eşantionare a lui Shannon, un semnal analogic cu frecvenţa în banda

f ≤ fM
poate fi reconstituit exact din valorile eşantionate dacă rata de eşantionare, fs este de două ori mai mare decât frecvenţa maximă, fM a semnalului de intrare. Adică:
fs ≥ 2 fM

(2.2)

Dacă teorema de eşantionare este încălcată, are loc un fenomen de abatere. Rata (frecvenţa) de eşantionare, în Hz, este legată de perioada de eşantionare T, în secunde, prin relaţia: 1 (2.3) fs = T
Rata de eşantionare este fixată de obicei de aplicaţie. De exemplu, un CD audio este eşantionat la 44,1 KHz, iar vocea în telecomunicaţii este eşantionată la 8 KHz. Semnalele discrete în timp presupun că un număr infinit de biţi sunt utilizaţi pentru reprezentarea valorilor digitale. În practică, doar un număr finit de biţi poate fi utilizat (de exemplu, 16 biţi în majoritatea procesoarelor în virgulă fixă).

Procesoare Numerice de Semnal - CURS

31

2.7.2 Eşantionarea şi cuantificarea
Cuantizarea este procesul prin care un eşantion discret în timp este reprezentat de cel mai apropiat nivel care corespunde la o scară întreagă. Acest proces introduce un zgomot de cuantificare nedorit, care reprezintă diferenţa dintre valoarea reală (discretă în timp) şi valoarea atribuită prin semnalul digital. Cu cât lungimea N a cuvântului folosit pentru reprezentarea eşantioanelor digitale este mai mare, cu atât este mai mic zgomotul de cuantificare. În general, raportul semnal - zgomot de cuantificare (SQNR) este dat prin: (2.4) SQNR = 6 N ( dB ) Orice acurateţe dorită poate fi atinsă prin simpla creştere a lungimii cuvântului, ceea ce conduce însă la creşterea costului.

Procesoare Numerice de Semnal - CURS

32

2.7.2 Eşantionarea şi cuantificarea
Viteza de procesare determină rata la care semnalul analogic poate fi eşantionat. Semnalele cu bandă limitată pot fi eşantionate dacă rata de eşantionare corespunde relaţiei (2.2). Totuşi, majoritatea aplicaţiilor reale implică o anumită rată de eşantionare cerută de semnalele analogice reale care pot avea lăţimi de bandă mai mari decât jumătatea frecvenţei de eşantionare specificată. De exemplu, rata de eşantionare în majoritatea sistemelor de telecomunicaţii este definită la 8 KHz, dar lăţimea benzii semnalelor vorbite poate fi până la 20 KHz, ceea ce e mult mai mult decât 4 KHz. Pentru a garanta că teorema de eşantionare este satisfăcută, se utilizează un filtru analogic trece-jos în scopul reducerii lăţimii benzii semnalului analogic înaintea convertorului AD. Chiar dacă semnalul de intrare are banda limitată sub jumătatea frecvenţei de eşantionare, filtrul (anti-aliasing filter) este totuşi utilizat pentru a reduce posibilitatea ca zgomotul din afara benzii să intre în banda de frecvenţe dorită.

Procesoare Numerice de Semnal - CURS

33

2.7.3 Conversia digital-analogică
Un semnal analogic poate fi refăcut fără distorsiuni pornind de la semnalul digital eşantionat în mod ideal cu ajutorul convertorului DA şi a filtrării trecejos. Filtrul pentru reconstrucţia ideală are un răspuns bun la jumătate din frecvenţa de eşantionare. Orice îndepărtare de caracteristicile filtrului ideal introduce o serie de distorsiuni spectrale. Proiectarea unui filtru de netezire este mai uşoară prin utilizarea tehnicii de supra-eşantionare. Filtrele cu condensator comutat sunt preferate în practică datorită frecvenţei lor de tăiere programabile şi a dimensiunii fizice reduse.

Procesoare Numerice de Semnal - CURS

34

2.7.4 Codare - decodare
Un codec include pe acelaşi chip filtrul anti-aliasing, ADC, DAC şi filtrul de reconstituire. Codec-urile s-au dezvoltat mai întâi în telecomunicaţii: ele sunt practic nişte convertoare de date seriale şi sunt deosebit de atractive în aplicaţiile de voce (audio, în general) pentru care porturile seriale există deja pe procesor. Schema bloc a unui codec:

Procesoare Numerice de Semnal - CURS

35

2.7.5 Optimizarea vitezei
Multe aplicaţii DSP necesită procesarea în timp real pe durate mari de timp. Pentru operaţiile în timp real, trebuie procesată o secvenţă de eşantioane de intrare pentru a produce eşantionul de ieşire corespunzător pe durata unui interval de eşantionare, deoarece datele nu pot fi stocate şi procesate ulterior pe o perioadă de timp mai lungă decât perioada de eşantionare. Procesorul trebuie să execute algoritmul destul de repede pentru a evita orice pierdere a datelor de intrare. Timpul de execuţie poate fi redus prin pre-procesarea unei cantităţi cât mai mari de informaţii şi stocarea acestor informaţii în memorie. De exemplu, o funcţie sinusoidală poate fi evaluată printr-o aproximare polinomială implementată într-un program care utilizează mai multe cicluri de ceas pentru a o executa. Totuşi, se poate pre-procesa o perioadă a formei sinusoidale, stoca aceste eşantioane în memorie şi genera funcţia sinusoidală utilizând o tehnică tabelară (lookup-table). În acest caz, viteza de execuţie este crescută pe seama utilizării mai intense a spaţiului de memorie.

Sign up to vote on this title
UsefulNot useful