Cap 22

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Cap 22 as PDF for free.

More details

  • Words: 4,783
  • Pages: 12
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. Tot mai mulţi ingineri şi programatori utilizează limbajul C, care oferă un mediu structurat pentru scrierea codului. 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. Este adesea mai uşor a scrie un program în C astfel încât algoritmul să poată fi mai întâi testat off-line, folosind date simulate (sau digitizate). Aceste trăsături specifice fac din C un limbaj ideal pentru aplicaţiile DSP. Mulţi producători de procesoare DSP furnizează compilatoare C şi biblioteci de funcţii pentru a genera un cod foarte eficient. Scrierea codului în C are avantajul că aplicaţia poate fi portată pe alte procesoare mult mai uşor decât algoritmul scris numai în limbaj de asamblare. Pe măsură ce procesoarele DSP au devenit tot mai rapide şi cu structuri tot mai complicate, interesul pentru scrierea programelor numai în limbaj de asamblare a scăzut. 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. Utilizarea subrutinelor este o practică favorabilă în cazul programelor DSP; trebuie avută în vedere şi creşterea timpului de execuţie datorat apelurilor repetate la subrutine; pe de altă parte, neutilizarea subrutinelor atrage o necesitate mai mare de memorie program pentru realizarea secvenţelor repetitive. 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 Procesoare numerice de semnal - Cap.2

21

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. În general, cele mai multe "ştrangulări" ale execuţiei au loc doar în unele secţiuni ale codului DSP, de obicei în cadrul buclelor (în special în cazul buclelor interne) unui program. Aceste bucle pot ocupa doar 10% din cod, dar pot necesita 90% din timpul de execuţie. Cea mai bună strategie este de a scrie mai întâi întreg algoritmul în C, identificând punctele critice şi apoi rescrierea unui mic procent din cod în limbaj de asamblare. Deoarece compilatoarele C pentru DSP generează şi cod de asamblare intermediar pentru optimizare, porţiunile cu timp critic pot fi uşor identificate şi pot fi rescrise direct în limbaj de asamblare. O altă metodă este utilizarea unor biblioteci cu funcţii optimizate codificate în limbaj de asamblare şi puse la dispoziţie de producători. Aceste rutine de asamblare pot fi fie apelate ca nişte funcţii, fie intercalate în liniile de cod ale programului C. 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. 2.5.5 Unelte pentru dezvoltarea software Uneltele software pentru dezvoltarea de noi algoritmi DSP se îmbunătăţesc mereu, pe măsură ce creşte cererea pentru proiectarea unor noi aplicaţii DSP mai eficiente. Producătorii de procesoare DSP furnizează de regulă şi un set de unelte software pentru dezvoltarea unui cod eficient pentru anumite procesoare. Aşa cum se poate vedea în Fig.2.5, 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. Mai mult, 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.

22

Procesoare numerice de semnal - Cap.2

Fig.2.5 Schema bloc şi relaţiile dintre uneltele de dezvoltare 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. Cele mai multe compilatoare C pentru DSP permit programatorului să adauge instrucţiuni şi rutine optimizate de asamblare în programe C pentru a genera un cod eficient pentru secţiunile critice ale programului. De exemplu, filtrarea FIR definită de ecuaţia (2.1) poate fi calculată pe un procesor DSP prin utilizarea operaţiilor de multiplicare-acumulare în mod repetat. Efortul cerut programatorului pentru scrierea unui cod de asamblare eficient numai pentru filtrul FIR este mult mai mic decât efortul necesar scrierii întregului program în limbaj de asamblare. Mai mult, sunt disponibile biblioteci cu rutine optimizate în limbaj de asamblare pentru cele mai utilizate funcţii specifice procesării numerice a semnalelor. De exemplu, un set de rutine optimizate pentru limbaj de asamblare, precum filtrarea FIR, sunt disponibile în C5000 DSP Library (DSPLIB). Acest cod poate fi utilizat în cadrul programelor C fie în mod direct, fie cu modificări minore. 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 Procesoare numerice de semnal - Cap.2

23

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 macrolibrary pentru a permite o abordare modulară a programării şi pentru a produce cod relocatabil pentru un linker software. Linker-ul Sarcina specifică linkerului este de a combina modulele de cod obiect generate separat şi fişierele asociate pentru a forma un singur modul legat în cod obiect. Linkerul 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 comandă a linkerului. 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 şi 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. Este posibilă dezvoltarea tuturor programelor DSP pentru un anumit procesor înaintea stabilirii şi cumpărării suportului hardware necesar. Semnalele din lumea reală pot fi înregistrate mai întâi în fişiere disc, iar ulterior, utilizate de un simulator ca date de test. Deşi datele de test pot verifica algoritmul, desfăşurarea în timp a acestuia sub toate condiţiile de intrare posibile nu pot fi testate pe un simulator. Este indicat să se proiecteze o serie de proceduri de test şi să se genereze seturile asociate de date de test în timpul etapei de dezvoltare a programului pentru a fi utilizate pe simulator. Deoarece simulatoarele execută 24

Procesoare numerice de semnal - Cap.2

programe DSP pe un calculator gazdă, viteza este mult mai mică decât dacă s-ar rula programul pe un procesor DSP real. Ar putea să dureze mai mult până când un program să ajungă la un punct de stop (breakpoint) într-un simulator pentru un algoritm complicat. Majoritatea procesoarelor DSP dispun de asemenea de depanatoare (debuggers) standard care se bazează pe proceduri standard de depanare. Totuşi, odată cu cererea tot mai mare pentru platforme de dezvoltare complete, care să dispună de cele mai avansate unelte, cum ar fi: 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., au părut unelte avansate, precum Code Composer Studio (CCS) al firmei Texas Instruments, care ajută utilizatorul în dezvoltarea mai rapidă a unui cod eficient. Code Composer Studio (CCS) CCS reprezintă 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. 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 run-time (în timpul rulării) şi poate detecta punctele slabe care nu ar fi putut fi detectate prin depanarea convenţională. CCS dispune acum şi de o unealtă prin care este legat cu MATLAB.

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 Procesoare numerice de semnal - Cap.2

25

configureze hard-ul cu soft-ul microprogramat (firmware) şi care se integrează în software-ul DSP pentru a forma un sistem DSP complet. 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 de asemenea 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, şi multe alte circuite şi dispozitive hardware mai sunt necesare într-un sistem DSP. 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: 1. Setarea frecvenţei ceasului şi programarea PLL-ului intern pentru a pilota corect procesorul; 2. Setarea software şi hardware a stărilor de aşteptare ale memoriei externe şi ale dispozitivelor I/O; 3. 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; 4. Setarea protocolului de comunicaţie la transferului DMA pentru a deplasa date în şi din memoria internă a procesorului fără intervenţia acestuia. 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). Firmware26

Procesoare numerice de semnal - Cap.2

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. Emulatorul 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 incircuit 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. 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. 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 coderdecoder (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. 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 Procesoare numerice de semnal - Cap.2

27

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 de un sistem funcţional.

2.7 Consideraţii asupra sistemului Distincţia obişnuită între proiectarea cu procesoare DSP programabile şi cea cu procesoare dedicate unei aplicaţii tinde să dispară datorită apariţiei soluţiilor DSP configurabile. Proiectanţii de sisteme DSP pot decide care parte a proiectului este mai potrivită abordării hardware. Codul care trebuie să menţină upgradabilitatea poate fi descărcat în RAM-ul on-chip, iar restul programului poate fi mascat în ROM-ul on-chip. În plus, acceleratoarele de algoritmi şi perifericele configurabile pot fi proiectate şi plasate pe acelaşi chip. Proiectarea sistemelor DSP constă în înţelegerea unei aplicaţii date, în dezvoltarea algoritmilor DSP, în implementarea algoritmilor prin software pe baza unui anumit procesor, în dezvoltarea hardware-ului, în 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ă. 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. 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 28

Procesoare numerice de semnal - Cap.2

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. 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. 2.7.2 Eşantionarea şi cuantificarea Multe aplicaţii DSP lucreză cu semnale analogice. După cum se poate observa în Fig.2.6, 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. Semnalele discrete în timp se utilizează doar pentru analiză şi proiectare.

Fig.2.6 Procesul de conversie analog-digitală Procesoare numerice de semnal - Cap.2

29

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ă:

f s ≥ 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: fs =

1 T

(2.3)

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ă). 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:

SQNR = 6 N

( dB )

(2.4)

O valoare scăzută a lui N restricţionează şi domeniul dinamic. Orice acurateţe dorită poate fi atinsă prin simpla creştere a lungimii cuvântului, ceea ce conduce însă la creşterea costului. 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 ăţ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 este cu bandă limitată sub jumătatea frecvenţei de eşantionare, filtrul (anti-aliasing filter) este 30

Procesoare numerice de semnal - Cap.2

totuşi utilizat pentru a reduce posibilitatea zgomotului din afara benzii să intre în banda de frecvenţe dorită. În mod ideal, filtrul anti-aliasing ar trebui să aibă o magnitudine relativ largă şi un răspuns liniar pe toată lăţimea benzii semnalului şi să aibă o atenuare infinită deasupra jumătăţii frecvenţei de eşantionare. Unul dintre cele mai de s folosite filtre anti-aliasing este filtrul cu condensator comutat, din moment ce el poate fi implementat uşor pentru semiconductoare, iar lăţimea sa de bandă poate fi ajustată prin modificarea frecvenţei ceasului. O tehnică pentru diminuarea constrângerilor filtrelor anti-aliasing este supra-eşantionarea. Semnalul eşantionat la o rată înaltă este apoi filtrat de un filtru digital trece-jos şi sub-eşantionat la rata de eşantionare dorită. 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 trece-jos. Filtrul pentru reconstrucţia ideală are un răspuns cu magnitudine plată şi caracteristici de fază liniare în banda de trecere de curent continuu 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 mai uşoară prin utilizarea tehnicii de supra-eşantionare. Filtrele cu condensator comutat sunt preferate în implementare datorită frecvenţei lor de tăiere programabile şi a mărimii fizice. 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; astfel, ele sunt 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 este prezentată în Fig.2.7. Atât filtrul anti-aliasing, cât şi cel de reconstituire pot fi realizate utilizând un filtru cu condensator comutat pentru a diminua costul şi spaţiul ocupat. Aşa cum s-a spus anterior, filtrele cu condensator comutat oferă frecvenţe de tăiere programabile, făcându-le preferabile pentru aplicaţii care necesită schimbarea ratelor de eşantionare. Un cuantificator (cuantizor) uniform asigură spaţii identice între nivelele succesive pe întreg domeniul dinamic al semnalului. Totuşi, multe semnale analogice, precum vorbirea, au caracteristica că amplitudinile mici ale semnalului apar mult mai frecvent decât cele mari. Astfel, o abordare mai bună este să se utilizeze un cuantizor neliniar care comprimă semnalul folosind operarea logaritmică, urmat de un cuantizor uniform. În reconstrucţia semnalului, se utilizează operarea inversă pentru a extinde amplitudinea semnalului. Procesul combinat de compresieProcesoare numerice de semnal - Cap.2

31

extindere poartă numele de companding, iar cele mai utilizate standarde de companding sunt: legea µ, în America de Nord şi legea A, în Europa.

Fig.2.7 Schema bloc a unui codec Dacă se utilizează un codec compandor (cu compresie-extindere) după legea µ sau A, semnalul binar nu mai este legat în mod liniar de magnitudinea eşantionului. Pentru a realiza o procesare liniară a semnalului, trebuie realizat un proces de expandare în procesor pentru a restabili relaţia de liniaritate. În mod similar, procesul invers poate fi realizat asupra datelor de ieşire la codec pentru a obţine forma compandată aşteptată de dispozitivul de ieşire. Unele procesoare DSP, precum de exemplu C5000, suportă expandarea datelor de intrare şi compresia datelor de ieşire într-un hardware dedicat aflat sub controlul soft-ului. Dacă această facilitate nu este prezentă, companding-ul trebuie implementat prin software pe baza tehnicilor de potrivire a curbelor sau a tabelelor, care implică o procesare intensă ce trebuie avută în vedere atunci când se aleg convertoarele de date. 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 preprocesarea 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 preprocesa 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.

32

Procesoare numerice de semnal - Cap.2

Related Documents

Cap 22
November 2019 13
Cap 22 Eletricidade
November 2019 16
Fmp Cap. 22
May 2020 5
Soul Eater Cap 22
June 2020 1
Cap.1,2,3 - 22 Giu
July 2020 7