Sunteți pe pagina 1din 35

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

MATLAB este un limbaj pentru calcul de mare


performanţă care este utilizat frecvent în domeniul
Uneltele software de bază includ DSP pentru proiectarea algoritmilor şi pentru
un compilator C, un asamblor şi analiză.
un linker.
MATLAB pune la dispoziţie un mediu de lucru
Pentru validarea unui algoritm pentru manipularea variabilelor şi a datelor I/O şi
se poate utiliza fie un simulator pentru afişare, dar şi pentru dezvoltarea aplicaţiilor.
software, fie un emulator El include biblioteci matematice şi DSP de bază şi
hardware. 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 run-
time (î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
fs = (2.3)
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:
SQNR = 6 N ( dB ) (2.4)
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 trece-
jos.
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.

S-ar putea să vă placă și

  • Aplicatii DSP
    Aplicatii DSP
    Document12 pagini
    Aplicatii DSP
    Corpaci Petrica
    Încă nu există evaluări
  • Cap 44
    Cap 44
    Document14 pagini
    Cap 44
    api-3725868
    Încă nu există evaluări
  • Cap 41
    Cap 41
    Document12 pagini
    Cap 41
    api-3725868
    Încă nu există evaluări
  • Cap 43
    Cap 43
    Document10 pagini
    Cap 43
    api-3725868
    Încă nu există evaluări
  • Cap 42
    Cap 42
    Document18 pagini
    Cap 42
    api-3725868
    Încă nu există evaluări
  • Cap 5
    Cap 5
    Document12 pagini
    Cap 5
    api-3725868
    100% (1)
  • Cuprins
    Cuprins
    Document4 pagini
    Cuprins
    api-3725868
    Încă nu există evaluări
  • Cap 4
    Cap 4
    Document10 pagini
    Cap 4
    api-3725868
    100% (1)
  • Cap 2
    Cap 2
    Document10 pagini
    Cap 2
    Maria Botnari
    Încă nu există evaluări
  • Pns c9
    Pns c9
    Document25 pagini
    Pns c9
    api-3725868
    Încă nu există evaluări
  • Cap 22
    Cap 22
    Document12 pagini
    Cap 22
    api-3725868
    Încă nu există evaluări
  • Cap 1
    Cap 1
    Document5 pagini
    Cap 1
    api-3725868
    50% (2)
  • Cap 21
    Cap 21
    Document10 pagini
    Cap 21
    api-3725868
    100% (1)
  • PNS C7
    PNS C7
    Document25 pagini
    PNS C7
    api-3725868
    100% (1)
  • PNS C11
    PNS C11
    Document26 pagini
    PNS C11
    api-3725868
    100% (1)
  • Pns c8
    Pns c8
    Document23 pagini
    Pns c8
    api-3725868
    Încă nu există evaluări
  • Pns c5
    Pns c5
    Document38 pagini
    Pns c5
    api-3725868
    Încă nu există evaluări
  • Pns c4
    Pns c4
    Document16 pagini
    Pns c4
    api-3725868
    Încă nu există evaluări
  • PNS C11
    PNS C11
    Document26 pagini
    PNS C11
    api-3725868
    100% (1)
  • Pns c6
    Pns c6
    Document30 pagini
    Pns c6
    api-3725868
    Încă nu există evaluări
  • Pns c3
    Pns c3
    Document35 pagini
    Pns c3
    api-3725868
    Încă nu există evaluări
  • Pns c10
    Pns c10
    Document28 pagini
    Pns c10
    api-3725868
    Încă nu există evaluări
  • PNS C2
    PNS C2
    Document28 pagini
    PNS C2
    api-3725868
    100% (1)
  • PNS C1
    PNS C1
    Document37 pagini
    PNS C1
    api-3725868
    100% (3)
  • PNS C7
    PNS C7
    Document25 pagini
    PNS C7
    api-3725868
    100% (1)
  • Pns c5
    Pns c5
    Document38 pagini
    Pns c5
    api-3725868
    Încă nu există evaluări
  • Pns c8
    Pns c8
    Document23 pagini
    Pns c8
    api-3725868
    Încă nu există evaluări
  • Pns c9
    Pns c9
    Document25 pagini
    Pns c9
    api-3725868
    Încă nu există evaluări
  • Pns c6
    Pns c6
    Document30 pagini
    Pns c6
    api-3725868
    Încă nu există evaluări
  • Pns c4
    Pns c4
    Document16 pagini
    Pns c4
    api-3725868
    Încă nu există evaluări