Proiectarea Schemei Bloc a Unui Emitator

Capitolul I: Considerații tehnico-tactice

Apariția sistemelor de comutație și de transmisiuni digitale a deschis perspective considerabile pentru telecomunicații și informatică, deoarece acestea pot realiza un transfer rapid și sigur de informații diverse (voce, date, texte, imagini), răspunzând astfel cerințelor abonaților privind diversificarea serviciilor și asigurarea unei calități deosebite pentru acestea [15]. Acest lucru a avut un impact deosebit asupra structurilor militare, caracterizate de o organizare de tip sistem ierarhic ce îndeplinește funcții specifice de execuție, comandă, control, coordonare, ducând la securitatea intervalelor de timp dintre aceste operații și conferind prin aceasta o mobilitate sporită trupelor în susținerea acțiunilor de luptă.

În tehnica modernă de transmisiuni, un rol foarte important este acordat emițătorului. Acesta trebuie să îndeplinească niște cerințe foarte dure de lucru, cum ar fi: stabilitatea frecvenței de emisie, stabilitatea puterii de emisie, invarianța parametrilor emițătorului la variația caracteristicilor mediului și altele [16].

1.1. Importanța și utilizarea DSP

1.1.1. Începuturile DSP

Procesarea digitală de semnal se distinge de alte domenii din sfera științelor informatice datorită tipului unic de date folosit: semnale. În cele mai multe cazuri aceste semnale provin de la ceea ce percep senzorii din realitatea înconjurătoare: vibrații seismice, imagini vizuale, unde sonore, etc. DSP este formată din știință matematică, algoritmi și tehnici utilizate pentru a prelucra aceste semnale după ce au fost convertite în formă digitală [1].

Primele utilizări ale DSP au fost în anii 1960-1970 când au apărut computerele digitale. Computerele erau scumpe în acele vremuri, iar DSP a fost limitat numai la câteva aplicații importante. Primele eforturi au fost făcute în patru domenii: radar și sonar, cerute de securitatea națională; explorarea petrolieră, unde se făceau mulți bani; explorarea spațiului, unde datele erau foarte importante și irecuperabile; și aparatura medicală, care putea salva multe vieți. Revoluționarea calculatoarelor personale în anii 1980 și 1990 au determinat explozia DSP cu noi aplicații. La început motivat de nevoile guvernamentale și militare, DSP s-a îndreptat dintr-o dată către piața comercială. Oricine voia să facă bani rapid devenea vânzător de DSP. DSP a ajuns în viața cotidiană prin câteva produse cum ar fi: telefoanele mobile, compact discuri și poșta vocală electronică. Figura 1.1 arată câteva dintre aceste aplicații variate.

Comunicațiile spațiale

Medicină

Domeniul comercial

DSP Telefonie

Domeniul militar

Industrie

Știință

Figura 1.1: Unele din diversele aplicații ale DSP

Astăzi, DSP este o cerință de bază necesară oamenilor de știință și inginerilor în multe domenii. Ca o analogie, DSP poate fi comparat cu o altă revoluție tehnologică anterioară: electronica.

Așa cum arată figura 1.2, granițele dintre DSP și alte discipline tehnice nu sunt bine definite, ci mai degrabă întrepătrunse.

Figura 1.2: Întrepătrunderea dintre DSP și

alte științe inginerești și matematice

1.1.2. Telecomunicații

Telecomunicațiile se ocupă cu transferarea informației dintr-un loc în altul. Aceasta presupune multe forme de informații: conversații telefonice, semnale de televiziune, fișiere ale calculatoarelor și alte tipuri de date. DSP a revoluționat industria telecomunicațiilor în multe domenii: generarea și detectarea semnalelor de ton, deplasarea frecvenței în bandă, filtrare pentru eliminarea imperfecțiunilor de linie, etc. Vor fi trei lucruri specifice rețelelor telefonice discutate în acest subcapitol: multiplexarea, compresarea și controlul ecoului [1].

Multiplexarea

Există aproximativ un miliard de telefoane în întreaga lume. La apăsarea a câteva butoane, rețelele comutate permit oricărui terminal să fie conectat cu altul în numai câteva secunde. Din 1960, o conexiune între două telefoane presupune trecerea semnalelor vocale analogice prin comutatoare și amplificatoare. O conexiune cere o pereche de fire. În comparație, DSP convertește semnalele audio într-un șir de date digitale. Deoarece biții pot fi cu ușurință întrepătrunși și separați ulterior, pot fi transmise pe un singur canal mai multe conversații telefonice. În plus, avantajul financiar al transmisiei digitale este enorm. Firele și comutatoarele analogice sunt scumpe, în timp ce porțile logice sunt ieftine.

Compresia

Când un semnal vocal este digitizat cu 8000 eșantioane/secundă, majoritatea informației digitale este redundantă. Au fost elaborați foarte mulți algoritmi pentru conversia semnalelor vocale digitizate în șiruri de date care cer mai puțini biți/sec. Aceștia se numesc algoritmi de compresie a datelor. Pentru a reface semnalul în forma sa inițială, sunt folosiți algoritmi de decompresie adecvați. Acești algoritmi variază în funcție compresia obținută și de calitatea rezultată a sunetului. În general, reducerea ratei datelor de la 64 kbit/sec la 32 kbit/sec nu determină pierderea calității sunetului. Când este compresat la o rată a datelor de 8 kbit/sec, sunetul este evident afectat, dar suficient pentru rețelele telefonice la distanțe lungi. Cea mai mare compresie atinsă este de 2 kbit/sec, sunetul fiind foarte distorsionat, dar utilizabil pentru câteva aplicații de comunicații militare și submarine.

Controlul ecoului

Ecoul constituie o problemă serioasă în conexiunile telefonice la distanțe mari. Cu cât distanța este mai mare, ecoul devine tot mai evident și iritabil. Întârzierea poate fi de câteva sute de milisecunde pentru comunicațiile intercontinentale și este enervant. Procesarea digitală de semnal atacă acest tip de problemă măsurând semnalul reflectat și generând un semnal adecvat, numit antisemnal, pentru a anula ecoul. Această tehnică poate fi folosită de asemenea pentru a reduce zgomotul mediului înconjurător anulându-l prin generarea unui antizgomot digital.

1.1.3. Procesarea audio

Cele două simțuri principale ale omului sunt cel vizual și cel auditiv. În mod corespunzător, majoritatea DSP-urilor sunt legate de procesarea audio și video. DSP a făcut schimbări revoluționare atât în domeniul muzicii cât și în telecomunicații [1].

Muzica

Calea de la microfonul muzicianului către audiofili este foarte lungă. Reprezentarea digitală a datelor este importantă pentru a preveni degradarea lor în mod obișnuit asociată cu prelucrarea și stocarea analogică. Acest lucru este evident tuturor celor care au observat diferența dintre casetele audio și compact discuri. De regulă, o piesă muzicală este înregistrată într-un studio pe mai multe canale. În anumite cazuri, sunt înregistrate separat instrumentele și vocea cântăreților. Acest lucru se face pentru a da inginerului de sunet flexibilitate în crearea produsului final. Procesul complex de combinare într-un produs final se numește remixare. DSP poate furniza multe funcții importante în timpul remixării, cum ar fi: filtrare, adăugarea sau extragerea semnalelor, editarea semnalelor, etc.

Generarea vorbirii

Generarea și recunoașterea vorbirii sunt utilizate pentru comunicațiile între oameni și calculatoare. Acest lucru este foarte convenabil când ochii și mâinile fac altceva, cum ar fi: conducerea unei mașini, efectuarea unei operații, etc. Două metode sunt folosite pentru generarea vorbirii de către calculator: înregistrarea digitală și simularea traiectului vocal. În înregistrarea digitală, vocea unui vorbitor uman este digitizată și stocată, de obicei într-o formă compresată. În timpul redării, datele stocate sunt decompresate și reconvertite în semnal analogic. O întreagă oră de vorbire înregistrată cere numai aproximativ trei megaocteți de memorie. Aceasta este cea mai folosită metodă pentru generarea digitală a vorbirii în ziua de astăzi.

Simulatoarele traiectului vocal sunt mai complicate, încercând să reproducă mecanismele psihice prin care omul creează vorbirea.

Recunoașterea vorbirii

Recunoașterea automată a vorbirii umane este mult mai dificilă decât recunoașterea vorbirii. Recunoașterea vorbirii este un exemplu clasic de ceea ce creierul uman face cu ușurință, dar calculatoarele nu prea reușesc să facă.

DSP realizează în general problema recunoașterii vorbirii în doi pași: extragerea caracteristicii urmată de potrivirea caracteristicii. Fiecare cuvânt din semnalul audio de intrare este izolat și apoi analizat pentru a identifica tipul de excitație și frecvențele de rezonanță. Acești parametri sunt apoi comparați cu exemplele de cuvinte rostite anterior pentru a identifica cea mai bună potrivire. Deseori, aceste sisteme sunt limitate la numai câteva sute de cuvinte, pot accepta numai fraze cu pauze distincte între cuvinte și trebuie pregătite pentru fiecare vorbitor în parte.

1.1.4. Locația ecoului

O metodă obișnuită de a obține informații despre un obiect aflat la distanță este trimiterea unor unde către el. De exemplu, radarul lucrează prin transmiterea de pulsuri de unde radio și examinarea semnalului recepționat pentru a determina ecoul datorat eventual avionului. În sonar, undele sonore sunt transmise prin apă pentru a detecta submarinele și alte obiecte submersibile. Geofizicienii obțin informații despre pământ prin declanșarea unor explozii și ascultarea ecourilor diferitelor straturi de roci. Deși aceste aplicații au același suport, fiecare are propriile probleme și nevoi. Procesarea digitală de semnal a produs schimbări revoluționare în toate cele trei domenii [1].

Radar

Radar este un acronim pentru RAdio Detection And Raging (Detectarea radio și determinarea distanței). DSP a revoluționat radarul în trei domenii. În primul rând, DSP poate compresa pulsul după ce acesta este recepționat, furnizând o mai bună determinare a distanței fără a reduce viteza de calcul. În al doilea rând, DSP poate filtra semnalul recepționat pentru a reduce zgomotul. În al treilea rând, DSP permite selecția rapidă și generarea diferitelor forme și durate ale pulsurilor. Printre altele, acest lucru permite ca pulsul să fie optimizat pentru o anumită problemă de detecție. Însă cel mai important de reținut este faptul că multe din lucrurile de mai sus se fac la o rată de eșantionare comparabilă cu frecvența radio utilizată, până la o valoare de câțiva megaherți.

Sonar

Sonar este un acronim pentru SOund Navigation And Raging (Navigare pe bază de sunet și determinare a distanței). DSP a revoluționat sonarul în tot atâtea domenii cât și în cazul radarului: generarea impulsului, compresia acestuia și filtrarea semnalelor detectate. Pe de o parte, sonarul este mai simplu decât radarul datorită frecvențelor mai joase folosite. Pe de altă parte însă, sonarul este mai dificil decât radarul deoarece mediul de transmitere este mai puțin uniform și mai puțin stabil.

Reflexia seismologică

Încă de la începutul anilor 1920, geofizicienii au descoperit că structura pământului poate fi studiată cu ajutorul sunetului. Prospectorii produceau o explozie și înregistrau ecourile generate de stratificarea scoarței până la zece kilometri adâncime. Însă pământul are mai multe straturi, iar problema principală este că fiecare ecou ajuns la suprafață trece și prin toate celelalte straturi care sunt între suprafață și stratul de la care provine. Acest lucru determină ecouri suplimentare numite ecouri ale ecourilor. Aceste ecouri suplimentare pot face semnalul detectat foarte complicat și dificil de interpretat. Procesarea digitală de semnal a fost folosită pe scară largă în acest domeniu începând cu anii 1960 pentru a izola ecourile primare de cele secundare.

1.1.5. Procesarea video

Imaginile sunt semnale cu caracteristici speciale. În primul rând, ele sunt o măsură a spațiului (sau distanței), în timp ce majoritatea semnalelor sunt o măsură a timpului. În al doilea rând, conțin o mare cantitate de informație. De exemplu, mai mult de 10 megaocteți pot fi necesari pentru a stoca o secundă de semnal video de televiziune. Aceasta este de o mie de ori mai i recepționat pentru a determina ecoul datorat eventual avionului. În sonar, undele sonore sunt transmise prin apă pentru a detecta submarinele și alte obiecte submersibile. Geofizicienii obțin informații despre pământ prin declanșarea unor explozii și ascultarea ecourilor diferitelor straturi de roci. Deși aceste aplicații au același suport, fiecare are propriile probleme și nevoi. Procesarea digitală de semnal a produs schimbări revoluționare în toate cele trei domenii [1].

Radar

Radar este un acronim pentru RAdio Detection And Raging (Detectarea radio și determinarea distanței). DSP a revoluționat radarul în trei domenii. În primul rând, DSP poate compresa pulsul după ce acesta este recepționat, furnizând o mai bună determinare a distanței fără a reduce viteza de calcul. În al doilea rând, DSP poate filtra semnalul recepționat pentru a reduce zgomotul. În al treilea rând, DSP permite selecția rapidă și generarea diferitelor forme și durate ale pulsurilor. Printre altele, acest lucru permite ca pulsul să fie optimizat pentru o anumită problemă de detecție. Însă cel mai important de reținut este faptul că multe din lucrurile de mai sus se fac la o rată de eșantionare comparabilă cu frecvența radio utilizată, până la o valoare de câțiva megaherți.

Sonar

Sonar este un acronim pentru SOund Navigation And Raging (Navigare pe bază de sunet și determinare a distanței). DSP a revoluționat sonarul în tot atâtea domenii cât și în cazul radarului: generarea impulsului, compresia acestuia și filtrarea semnalelor detectate. Pe de o parte, sonarul este mai simplu decât radarul datorită frecvențelor mai joase folosite. Pe de altă parte însă, sonarul este mai dificil decât radarul deoarece mediul de transmitere este mai puțin uniform și mai puțin stabil.

Reflexia seismologică

Încă de la începutul anilor 1920, geofizicienii au descoperit că structura pământului poate fi studiată cu ajutorul sunetului. Prospectorii produceau o explozie și înregistrau ecourile generate de stratificarea scoarței până la zece kilometri adâncime. Însă pământul are mai multe straturi, iar problema principală este că fiecare ecou ajuns la suprafață trece și prin toate celelalte straturi care sunt între suprafață și stratul de la care provine. Acest lucru determină ecouri suplimentare numite ecouri ale ecourilor. Aceste ecouri suplimentare pot face semnalul detectat foarte complicat și dificil de interpretat. Procesarea digitală de semnal a fost folosită pe scară largă în acest domeniu începând cu anii 1960 pentru a izola ecourile primare de cele secundare.

1.1.5. Procesarea video

Imaginile sunt semnale cu caracteristici speciale. În primul rând, ele sunt o măsură a spațiului (sau distanței), în timp ce majoritatea semnalelor sunt o măsură a timpului. În al doilea rând, conțin o mare cantitate de informație. De exemplu, mai mult de 10 megaocteți pot fi necesari pentru a stoca o secundă de semnal video de televiziune. Aceasta este de o mie de ori mai mare decât o lungime similară a semnalului audio. În al treilea rând, aprecierea finală a calității este deseori o evaluare umană subiectivă, mai curând decât un criteriu obiectiv. Aceste caracteristici speciale au făcut din procesarea imaginilor un domeniu distinct al DSP [1].

În domeniul medical

În 1895, Wilhelm Conrad Röntgen a descoperit că razele X pot trece printr-un număr substanțial de materii. Medicina a fost revoluționată de posibilitatea de a privi în corpul oamenilor. În ciuda succesului evident, imaginea medicală dată de razele X a fost limitată de patru probleme înaintea apariției DSP. În primul rând, structurile interne ale organismului se situau de multe ori una în spatele celeilalte. În al doilea rând, nu este întotdeauna posibilă distincția între țesuturi similare. În al treilea rând, imaginile date de razele X arată anatomia, structura corpului, nu și fiziologia, ”funcționarea” lui. Imaginea cu raze X a unei persoane vii arată identic cu cea a unei persoane moarte. În al patrulea rând, expunerea la raze X poate cauza cancer, astfel că este necesar ca razele X să fie folosite rar și cu o justificare bine întemeiată.

În domeniul călătoriilor în spațiu

Uneori, trebuie aflate cât mai multe lucruri dintr-o imagine de o calitate nu prea bună. Acesta este frecvent cazul imaginilor luate de sateliți și vehicule de explorare spațială. DSP poate îmbunătăți calitatea imaginilor luate în condiții extrem de nefavorabile prin mai multe metode: ajustarea strălucirii și contrastului, detectarea limitelor între obiecte, reducerea zgomotului, ajustarea focalizării, etc.

Produsele comerciale

Cantitatea mare de informație conținută în imagini este o problemă pentru sistemele vândute în cantități mari publicului larg. Sistemele comerciale trebuie să fie ieftine și acest lucru nu este în concordanță cu memoriile mari și rata de transfer foarte mare folosite. Un răspuns la această dilemă este compresia imaginii. La fel ca în cazul semnalelor vocale, imaginile conțin o imensă cantitate de informație redundantă putând fi astfel rutate de algoritmi care reduc numărul de biți necesari pentru a le reprezenta.

1.2. Utilizarea DSP în stațiile radio

Pe măsură ce procesoarele digitale de semnal (DSP) au devenit tot mai rapide, iar conversia analog-digitală se poate realiza asupra unor semnale cu o frecvență tot mai mare, DSP-urile preiau sarcini suplimentare de prelucrare a semnalului de la circuite analogice tipice în realizarea stațiilor radio, atât în partea de emisie cât și în cea de recepție. Flexibilitatea realizării programabile a acestor funcții permite schimbări rapide ale tipului de modulație a semnalului (sisteme multimod), schimbări ce nu sunt posibile în varianta analogică. Această flexibilitate reprezintă un avantaj în aplicațiile militare, unde transmisiunile la diferite eșaloane și la diferite niveluri de conducere poate necesita diferite game de frecvențe radio, diferite tipuri de modulație, diferiți algoritmi de codare a semnalului vocal și diferite structuri de criptare.

Prelucrarea programabilă permite emularea mai multor stații radio militare existente, care au moduri de lucru cu forme de undă obișnuite, cum ar fi sistemele cu salt de frecvență care pot folosi module software de forme de unde predefinite, cu un set propriu de parametri definiți ca variabile. Forma de undă generată prin software poate fi un set standard, un set definit pentru o anume misiune sau chiar o formă de undă proprie, proiectată cu ajutorul modulelor software existente, pentru o anume misiune ce presupune operații speciale.

Armata are necesități de comunicație dintre cele mai variate, fapt pentru care există o întreagă diversitate de stații radio pentru realizarea legăturilor de comunicație necesare. Deși toate emițătoarele sau receptoarele radio specifice transmiterii de semnal vocal au anumite funcții în comun, există diferențe care împiedică interoperabilitatea între diferite tipuri de astfel de stații. Aceste diferențe privesc frecvența purtătoare, tehnica de modulație și structura formei de undă. Codificarea numerică a informației vocale complică și mai mult interoperabilitatea sistemelor de comunicație.

Pentru a nu diversifica prea mult aparatura radio militară, o stație radio modernă va conține procesoare numerice de semnal în banda de bază, în care sunt implementate funcțiile obișnuite, un emițător-receptor de radiofrecvență multibandă de mică putere, amplificatoare de radiofrecvență de mare putere și subsisteme pentru antenă.

Flexibilitatea este obținută prin furnizarea funcțiilor de procesare cerute într-un set de module de procesare. Modulele sunt interconectate printr-o magistrală de control. Această arhitectură multiprocesor permite ca funcțiile mai importante să fie organizate în orice secvență de procesare necesară, dictată de structura formei de undă.

Pentru realizarea tuturor funcțiilor, în versiunea actuală, sunt folosite DSP-uri de uz general, programabile, iar pentru funcții precum transformata Fourier sau filtrare adaptivă, care sunt prea complexe pentru o implementare eficientă în DSP-urile de uz general existente, sunt folosite procesoare dedicate aplicației și dispozitive logice programabile specifice. Prelucrarea semnalelor în vederea obținerii diferitelor tipuri de modulații, atât la emisie cât și la recepție, se bazează pe ideea că acestea sunt semnale de bandă îngustă, care pot fi reprezentate cu ajutorul înfășurătoarei complexe.

Capitolul II: Proiectarea schemei bloc a emițătorului

2.1. Reprezentarea semnalelor de bandă îngustă cu ajutorul anvelopei complexe

În sistemele de transmisiuni radio de bandă îngustă, semnalul de comunicație este un semnal cu bandă limitată obținut prin modularea unei purtătoare de către un semnal analogic sau digital de bandă îngustă. Având în vedere tendința actuală privind realizarea unor sisteme de legătură radio ce au la bază stații radio soft în care semnalul de comunicație se obține prin metode de procesare digitală, în procesul de modulație utilizându-se anvelopa complexă, acest paragraf face o scurtă referire despre modul de reprezentare a formelor de undă de bandă îngustă cu ajutorul acesteia [4].

O formă de undă în banda de bază se caracterizează printr-o densitate spectrală diferită de zero la frecvențe dispuse în vecinătatea originii (f=0) și neglijabilă în rest. O formă de undă de bandă îngustă are o densitate spectrală diferită de zero la anumite frecvențe, concentrate într-o bandă dispusă în jurul unei frecvențe fp>>0, denumită frecvență purtătoare, și neglijabilă în rest.

Pentru un sistem de legături radio, în general, sursa de informații prelucrează un semnal în banda de bază. Problema este de a construi un sistem care să transmită informația de la sursa de semnal m(t), la destinația dorită. Rezolvarea acestei probleme necesită generarea, de regulă, a unui semnal de bandă îngustă s(t), a cărui frecvență purtătoare fp trebuie astfel aleasă încât s(t) să se propage prin canalul de legătură. Acest semnal poartă denumirea de semnal modulat s(t), iar semnalul sursă din banda de bază, semnal modulator m(t).

Semnalul de bandă îngustă astfel obținut constituie semnal de excitație pentru un emițător, care trebuie să asigure toate condițiile necesare propagării semnalului către destinație.

Toate formele de undă de bandă îngustă, dacă acestea rezultă dintr-un semnal modulat, o interferență de semnale sau zgomote, pot fi reprezentate într-o formă convenabilă v(t), care poate fi utilizată pentru a indica formele de undă de bandă îngustă canonice. Prin urmare, v(t) poate reprezenta un semnal s(t)≡v(t), un zgomot n(t)≡v(t), semnal+zgomot filtrat r(t)=s(t)+n(t)=v(t) sau orice altă formă de undă de bandă îngustă.

Orice formă de undă de bandă îngustă poate fi reprezentată prin:

(2.1)

unde g(t) reprezintă anvelopa complexă a lui v(t), iar fp – frecvența purtătoare asociată, cu ωp=2πfp. Mai mult, există alte două forme echivalente de reprezentare:

(2.2)

și

(2.3)

unde:

(2.4)

Formele de undă g(t), x(t), y(t), R(t) și θ(t) sunt toate forme de undă în banda de bază și, cu excepția lui g(t), sunt toate forme de undă reale. R(t) este o formă de undă întotdeauna pozitivă.

Relațiile pun în evidență translatarea spectrului din banda de bază în jurul purtătoarei fp.

Orice formă de undă fizică (nu neapărat periodică) poate fi reprezentată pe întreg intervalul de timp prin intermediul unei serii Fourier complexe:

(2.5)

Deoarece formele de undă fizice sunt reale, c-n=cn*, astfel că, utilizând relația

,

rezultă:

(2.6)

În plus, având în vedere că v(t) este o formă de undă de bandă îngustă, coeficienții cn vor avea o valoare neglijabilă pentru n în vecinătatea lui zero și, în particular, c0=0. Introducând un parametru arbitrar fp, relația (2.6) devine:

(2.7)

rezultând, pe baza relației (2.1) că:

(2.8)

Deoarece v(t) reprezintă o formă de undă de bandă îngustă al cărui spectru este concentrat în jurul frecvenței f=fp, coeficienții seriei Fourier cn vor fi diferiți de zero numai într-o gamă pentru care . Prin urmare, din (2.8) rezultă că g(t) are spectrul concentrat în jurul lui f=0. Astfel, g(t) reprezintă o formă de undă din banda de bază și după cum rezultă din relația (2.8), va fi o funcție complexă de timp. Reprezentând anvelopa complexă în coordonate carteziene, prin intermediul a două funcții reale, vom avea:

unde x(t)=Re{g(t)}, iar y(t)=Im{g(t)}; x(t) se numește componenta modulatoare în fază asociată lui v(t), iar y(t), componenta modulatoare în cuadratură asociată lui v(t). În coordonate polare, g(t) se poate reprezenta prin R(t) și θ(t), sub forma din relația (2.2), legătura dintre reprezentarea în coordonate carteziene și în coordonate polare fiind determinată de relațiile (2.3) și (2.4). R(t) și θ(t) sunt forme de undă reale și, în plus, R(t) este întotdeauna pozitivă. R(t) se mai numește și modulația de amplitudine a lui v(t), iar θ(t) – modulația de fază a lui v(t).

De menționat că, dacă v(t) reprezintă o formă de undă deterministă, atunci x(t), y(t), R(t) și θ(t) vor fi, de asemenea, deterministe. Dacă v(t) reprezintă un proces aleatoriu, de exemplu un zgomot de bandă îngustă, atunci x(t), y(t), R(t) și θ(t) vor reprezenta procese aleatoare în banda de bază. Prin urmare, un zgomot de bandă îngustă, în general, poate fi considerat ca un proces cvasiarmonic, modulat atât în amplitudine R(t), cât și în fază θ(t), de componenta de zgomot. Utilitatea reprezentării formelor de undă cu ajutorul anvelopei complexe a fost astfel demonstrată. În sistemele de comunicații moderne, semnalul de bandă îngustă este adesea partiționat în două canale, unul pentru x(t), denumit canalul I (in phase) și unul pentru y(t), denumit canalul Q (quadrature-phase).

Trebuie subliniat că un anumit tip de modulație (MA, MF, BLU, etc.) poate fi generat folosind una din cele două forme canonice. Ambele forme realizează o procesare separată, convenabilă, în banda de bază și în radiofrecvență.

Tehnicile digitale sunt utilizate în special pentru realizarea procesării în banda de bază. În plus, dacă sunt utilizate circuite digitale de calcul, este de dorit ca tipul de modulație să se obțină selectând algoritmul soft corespunzător [4].

Majoritatea emițătoarelor realizate în prezent sunt variante speciale ale acestor forme canonice. Practic, operațiile în radiofrecvență sunt realizate pe anumite frecvențe radio joase, convenabil alese, urmate de o conversie pe frecvența de lucru.

Reprezentarea semnalelor modulate

După cum se definește în mod curent, modulația reprezintă procesul de codare a informației sursă m(t) (semnal modulator) într-un semnal de bandă îngustă s(t) (semnal modulat). Rezultă că semnalul modulat este numai o aplicație specială a reprezentării de bandă îngustă. Semnalul modulat este dat de:

(2.9)

unde ωp=2πfp, fp fiind frecvența purtătoare.

Anvelopa complexă este o funcție de semnalul modulator m(t), adică:

unde face o operație de prelucrare asupra lui m(t).

Funcția g[m] este dorită pentru că este ușor de implementat și oferă proprietățile spectrale dorite. În plus, la recepție este necesară funcția inversă m[g]. Inversa ar trebui să fie unică pentru o gamă de aplicații și să fie ușor de implementat. Prelucrarea trebuie să elimine cât mai mult zgomotul, astfel încât m(t) să fie cât mai puțin alterat [17].

Am ales pentru realizarea blocului de prelucrare a semnalului varianta cu coordonate carteziene, variantă care face mai ușoară implementarea ulterioară a celorlaltor blocuri.

Modurile de lucru ce sunt cerute în datele inițiale ale acestei lucrări sunt: CW/MCW (A1A, A1B, A2A, A2B); AM/AME (A3E, H2A, H2B, H2E); USB/LSB (R2A, R3E, J2A, J3E); ISB(B8E); FSK/AFSK (F1A, F1B); F6 (F7B). În continuare sunt prezentate funcțiile de prelucrare g(t) și corespondentele modulației în cuadratură x(t) și y(t) pentru a obține aceste moduri de lucru:

a) CW/MCW

a1) A1A și A1B

– bandă laterală dublă pe un singur canal conținând informație cuantizată sau numerică fără folosirea vreunei subpurtătoare, pentru telegrafie cu recepție auditivă (A1A) sau pentru telegrafie cu recepție automată (A1B).

unde

Atunci:

a2) A2A, A2B

– bandă laterală dublă pe un singur canal conținând informație cuantizată sau numerică cu folosirea unei subpurtătoare modulate, pentru telegrafie cu recepție auditivă (A2A) sau pentru telegrafie cu recepție automată (A2B).

unde ml(t) este un semnal generat local de forma:

deci:

b) AM/AME

b1) A3E

– bandă laterală dublă pe un singur canal conținând informație analogică, pentru telefonie (MA-BLD)

b2) H2A, H2B

– bandă laterală unică cu purtătoare completă pe un singur canal conținând informație cuantizată sau numerică cu folosirea unei subpurtătoare modulate, pentru telegrafie cu recepție auditivă (H2A) sau pentru telegrafie cu recepție automată (H2B).

, unde semnul ”+” se ia pentru banda laterală superioară, iar semnul ”-” pentru cea inferioară și ml(t) este semnalul generat local identic cu cel de la A2A și A2B, fiind transformata Hilbert a acestuia. Rezultă, astfel, că:

b3) H2E

– bandă laterală unică cu purtătoare completă pe un singur canal conținând informație cuantizată sau numerică cu folosirea unei subpurtătoare modulate, pentru telefonie. (MA-BLU)

c) USB/LSB (bandă laterală superioară/bandă laterală inferioară)

c1) R2A

– bandă laterală unică cu purtătoare redusă (sau cu nivel variabil) pe un singur canal conținând informație cuantizată sau numerică cu folosirea unei subpurtătoare modulate, pentru telegrafie cu recepție auditivă.

c2) R3E

– bandă laterală unică cu purtătoare redusă (sau cu nivel variabil) pe un singur canal conținând informație analogică, pentru telefonie.

c3) J2A

– bandă laterală unică cu purtătoare suprimată pe un singur canal conținând informație cuantizată sau numerică cu folosirea unei subpurtăroare modulate pentru telegrafie cu recepție auditivă.

c4) J3E

– bandă laterală unică cu purtătoare suprimată pe un singur canal conținând informație analogică pentru telefonie. (BLU-MA-PS)

d) ISB

d1) B8E

– benzi laterale independente pentru două canale conținând informații analogice pentru telefonie.

e) FSK/AFSK

e1) F1A, F1B

– modulație în frecvență pe un singur canal conținând informație cuantizată sau numerică fără folosirea vreunei subpurtătoare pentru telegrafie cu recepție auditivă (F1A) sau pentru telegrafie cu recepție automată (F1B).

, unde Df reprezintă o deviație de frecvență constantă, iar m(t) este un semnal generat local de forma:

Rezultă:

f) F6

f1) F7B

– modulație în frecvență cu două sau mai multe canale conținând informație cuantizată sau numerică pentru telegrafie cu recepție automată.

, unde m(t) este un semnal generat local de forma:

cu n=, astfel, notând cele două canale cu C1 și, respectiv, C2, și notând cu 0 semnalul de pauză și cu 1 semnalul la contactul manipulatorului, frecvența semnalului m(t) va lua valori conform următorului tabel:

Rezultă:

2.2. Emițătorul generalizat

Un emițător generează semnalul modulat, cu frecvența purtătoare fp, de către semnalul modulator m(t). Am arătat anterior că un astfel de semnal modulat poate fi reprezentat sub forma:

sau, sub formele echivalente:

(2.10)

și (2.11)

unde anvelopa complexă

este o funcție de semnalul modulator m(t). Relațiile particulare de legătură între g(t) și m(t) pentru diferite tipuri de modulație au fost prezentate anterior. Pornind de la acest mod generalizat de abordare, putem obține un model de emițător universal, care poate fi adus la cel utilizat pentru un tip particular de modulație. Vom observa, de asemenea, că există modele echivalente care corespund unor diferite configurații de circuit și acestea pot fi utilizate pentru a produce același tip de semnal modulat la ieșirea sa. Este la latitudinea proiectantului de a alege o metodă de implementare care să minimizeze costurile pe baza noilor tipuri de circuite. Există două forme canonice pentru emițătorul generalizat, reprezentate prin ecuațiile (2.10) și (2.11). Ecuația (2.10) descrie un circuit de tip MA-MP, ca în figura 2.1 [17]:

Figura 2.1.

Așa cum am precizat și anterior, pentru a ușura implementarea ulterioară a celorlaltor blocuri, am ales pentru realizarea blocului de prelucrare a semnalului varianta cu coordonate carteziene.

Astfel, cea de a doua formă canonică de emițător generalizat utilizează procesarea pe baza componentelor în fază și în cuadratură (IQ) și are configurația de mai jos:

Figura 2.2.

Relațiile de determinare ale lui x(t) și y(t) pentru un anumit tip de modulație, în funcție de m(t) au fost prezentate, de asemenea, anterior, iar procesarea semnalului în banda de bază poate fi implementată prin utilizarea unui hard analogic sau a unui hard digital și softul necesar. Celelalte circuite ale formei canonice reprezintă circuite de radiofrecvență, prezentate în figura 2.2.

Circuitele de procesare în banda de bază generează R(t) și θ(t) sau x(t) și y(t) în funcție de m(t), conform celor prezentate anterior. Procesarea semnalului poate fi implementată fie utilizând circuite analogice neliniare, fie un calculator digital care încorporează algoritmi de generare a lui R și θ sau x și y și programele soft de control. În cazul utilizării unui calculator digital pentru procesare, avem nevoie de un convertor analog-numeric la intrare și două convertoare digital-analogice la ieșire așa cum se arată în figura următoare, în care procesarea semnalului se face cu un procesor digital de semnal:

Figura 2.3.

Având în vedere toate cele prezentate anterior, schema bloc a părții de prelucrare în banda de bază a emițătorului radio reconfigurabil prin software ce trebuie realizat arată în felul următor:

Figura 2.4.

Capitolul III: Alegerea soluției tehnice și prezentarea acesteia

3.1. Alegerea soluției tehnice

Pentru realizarea practică a temei propuse am ales procesorul ADSP-2181 produs de firma Analog Devices care este optimizat pentru procesarea digitală de semnal (Digital Signal Processing – DSP) și alte aplicații de procesare numerice de viteză mare. Am ales, de asemenea, de la firma Analog Devices un kit de dezvoltare numit ”EZ-KIT Lite” ce conține o placă de dezvoltare cu procesor ADSP-2181și echipamente anexe: dischete de instalare a softului, manuale și cablu de conectare RS-232. La alegerea acestei soluții am avut în vedere atât utilitatea plăcii de dezvoltare, cât și prețul acesteia, destul de scăzut în comparație cu altele folosind alte procesoare, probabil mai puternice.

EZ-KIT Lite se constituie ca o modalitate de investigare a puterii familiei de procesoare ADSP-2100, dar și ca o modalitate de dezvoltare a propriilor aplicații bazate pe procesoare de semnal de înaltă performanță. Placa de dezvoltare conține:

Procesor digital de semnal ADSP-2181 la 33MHz

Codec AD1847

Interfață RS-232

EPROM

2 butoane pentru utilizator

Stabilizator de tensiune

Conectori de expansiune

Jumperi configurabili

Placa poate rula de sine stătătoare sau poate fi conectată la portul RS-232 al unui calculator personal [19].

3.2. Descrierea ”EZ-KIT Lite”

3.2.1. Privire de ansamblu

Partea hardware constă într-un circuit imprimat pe o placă ce măsoară aproximativ 8,75 cm pe 13,75 cm. Asamblate pe această placă se află un procesor digital de semnal ADSP-2181, un EPROM, un codec AD1847, precum și diverși conectori și alte piese electronice. Placa este un sistem complet de procesare de semnal proiectată pentru a demonstra capacitățile procesorului de semnal ADSP-2181. Poate fi de asemenea folosită și ca platformă pentru a dezvolta noi aplicații pentru ADSP-2181 [19].

Placa arată în felul următor:

EZ-KIT Lite este un exemplu de implementare minimă a unui procesor ADSP-2181. EPROM-ul este conectat cu procesorul printr-un port DMA (Direct memory acces). Această interfață utilizează numai opt din 24 de linii de date pentru a transporta date (de la D8 la D15). Opt dintre liniile de date disponibile (de la D16 la D23) sunt utilizate pentru a furniza biți de adrese suplimentari. Pe această placă, soclul EPROM este proiectat să accepte memorii EPROM de la 256 kbiți până la 8 Mbiți (cea mai mare existentă la ora actuală). Jumperul JP1 furnizează un mod de a modifica funcționarea pinilor 3 și 30 ai soclului, în funcție de mărimea EPROM-ului. Procesorul este configurat să se inițializeze din EPROM când butonul de reset este eliberat.

Codecul AD1847 este conectat la procesor prin portul SPORT0. Acest port serial sincron de mare viteză transmite toată informația de date, de control și de stare între procesor și codec. Este posibilă dezactivarea codecului dacă acest port serial este folosit în alt scop. Semnalul de la conectorul P3 poate fi utilizat pentru dezactivarea codecului. Când acest semnal este trecut în starea ”jos”, codecul este dezactivat, iar semnalele sale sunt trecute în starea de înaltă impedanță.

Pinii de la portul SPORT1 sunt utilizați pentru comunicarea cu calculatorul personal prin interfața RS-232. Pinii ”Flag In” și ”Flag Out” transmit datele emise și recepționate. Datele recepționate merg de asemenea la IRQ1. Soft-ul furnizat simulează un UART (universal asynchronous receiver-transmiter – dispozitiv emisie-recepție asincron universal) pentru a furniza protocolul adecvat unei comunicații seriale, asincrone la o rată a datelor de 9600 biți pe secundă.

U1 este un dispozitiv logic ce conține șase inversoare. Două dintre acestea sunt utilizate în circuitul de la butonul de resetare, iar alte două în circuitul de la butonul de întrerupere. Un al cincilea inversor este utilizat pentru ledul roșu (D1), deoarece pinul FL1 nu poate furniza suficient curent pentru a-l comanda el în mod direct. Al șaselea inversor nu este utilizat.

Portul IDMA de pe procesor nu este folosit pe placa EZ-KIT Lite. Toate semnalele IDMA sunt disponibile pe conectorul P3.

3.2.2. Specificații

Procesorul: ADSP-2181 KS-133 ce lucrează la o frecvență de 33MHz.

Interfața analogică: Codec stereo AD1847

Intrări analogice: O pereche stereo de intrări cuplate de 2V curent alternativ pentru un nivel de intrare de linie

O pereche stereo de intrări cuplate de 20mV curent alternativ de la microfon

Ieșiri analogice: O pereche stereo de ieșiri cuplate de 1V

Alimentare: tensiune continuă între 8 și 10V la cel puțin 300mA

Condiții de mediu: – între 0º și 70º C

– o umiditate relativă între 10% și 90%

3.2.3. Conectori

J1 este o mufă jack stereo de 3,5mm. Aceasta este folosită pentru a introduce în placă semnale audio fie de la un microfon, fie de pe o linie.

J2 este de asemenea o mufă jack stereo de 3,5mm. Aceasta este utilizată pentru a scoate de pe placă semnale audio.

J3 este un conector mamă cu 9 pini utilizat pentru a comunica cu un calculator folosind semnale de tip RS-232 și protocoale seriale asincrone.

J4 este o mufă jack de 5,5mm cilindrică. Este folosită pentru puterea de alimentare a plăcii. Pinul din centru al jack-ului are un diametru de 2mm și trebuie conectat la partea negativă a sursei de putere. Evident, partea exterioară trebuie să fie pozitivă.

JP1 este un soclu pentru o mufă cu 8 pini. Poate fi folosit pentru configurarea plăcii pentru diverse mărimi ale EPROM-ului, altele decât EPROM-ul 27C010 de 1 Megabit (128Kocteți) livrat cu placa. Cei mai mulți utilizatori nu au nevoie de această particularitate.

JP2 este o mufă cu 6 pini. Este utilizată pentru a configura mufa de intrare J1 fie pentru intrare de la un microfon, fie de la o linie. Pinul din centru din fiecare grup de trei este conectat la unul din pinii de intrare Line 1 ai codecului AD1847. Jumperii (cunoscuți, de asemenea, și ca scurtcircuitări sau legături de scurtcircuitare) pot fi folosiți pentru a conecta acești pini fie la ieșirea amplificatorului pentru microfon, fie la ieșirea filtrului de intrare al liniei.

P1 este un conector cu 14 pini utilizat pentru conectarea la un emulator de tip ADSP2181 EZ-ICE®. Pinul 7 trebuie eliminat.

P2 și P3 sunt locuri lăsate pentru 50 de pini ai unor eventuali conectori cu scopul de a accesa semnalele procesorului, pentru extindere sau pentru testare.

U2 este un slot pentru EPROM. Așa cum este construită, placa va accepta un EPROM de tip 27C512 (64 kocteți) sau 27C010 (128 kocteți). Schimbând conexiunile la JP1, placa poate permite și alte tipuri de EPROM: 27C256 (32 kocteți), 27C020 (256 kocteți), 27C040 (512 kocteți) sau 27C080 (1 Moctet). Acest soclu este conectat la interfața memoriei de transfer mare a procesorului.

3.2.4. Comutatoare

S1 este comutatorul de resetare. Prin apăsarea acestui buton, procesorul ADSP-2181 și codecul AD1847 trec în starea de resetare hardware și rămân acolo până când butonul este eliberat.

S2 este comutatorul de întrerupere. Prin apăsarea acestui buton, procesorul primește o intrare de întrerupere IRQE.

3.2.5. Indicatori

D1 este un LED roșu care este controlat de ieșirea FL1 a procesorului. Softul poate controla starea acestui LED prin scrierea într-un registru intern.

D2 este un LED verde care este aprins oricând placa este alimentată.

3.2.6. Conectori de expansiune

Așa cum am spus și mai devreme, P2 și P3 sunt locuri lăsate pentru 50 de pini ai unor eventuali conectori cu scopul de a accesa semnalele procesorului, pentru extindere sau pentru testare. Numerotarea pinilor acestor conectori este astfel:

Semnalele disponibile pe acești pini sunt următoarele [19]:

P2 P2

Numărul pinului Semnalul Numărul pinului Semnalul

1 A0 2 A1

3 A2 4 A3

5 A4 6 A5

7 A6 8 A7

9 A8 10 A9

11 A10 12 A11

13 A12 14 A13

P2 P2

Numărul pinului Semnalul Numărul pinului Semnalul

15 D0 16 D1

17 D2 18 D3

19 D4 20 D5

21 D6 22 D7

23 D8 24 D9

25 D10 26 D11

27 D12 28 D13

29 D14 30 D15

31 D16 32 D17

33 D18 34 D19

35 D20 36 D21

37 D22 38 D23

39 40

41 42

43 44

45 46

47 48

49 VCC 50 GND

P3 P3

Numărul pinului Semnalul Numărul pinului Semnalul

1 GND 2 IAD0

3 IAD1 4 IAD2

5 IAD3 6 IAD4

7 IAD5 8 IAD6

9 IAD7 10 IAD8

11 IAD9 12 IAD10

13 IAD11 14 IAD12

15 IAD13 16 IAD14

17 IAD15 18 GND

19 20 IAL

21 22

23 24 GND

25 PF0 26 PF1

27 PF2 28 PF3

29 PF4 30 PF5

31 PF6 32 PF7

33 FL0 34 FL1

35 FL2 36 CLKOUT

37 38

39 IRQL1 40

P3 P3

Numărul pinului Semnalul Numărul pinului Semnalul

41 42 PWDACK

43 44 TXD0

45 TFS0 46 RFS0

47 RXD0 48 SCK0

49 VCC 50 GND

Capitolul IV: Programarea sistemului

4.1. Privire generală

Acest capitol se dorește a fi necesar utilizatorilor care doresc să creeze propriile programe sau pachete de programe. Pașii prezentați mai jos pot servi ca ghid pentru crearea propriilor programe. De reținut totuși că stilul de programare este propriu și că acești pași pot fi urmăriți până la un anumit punct după care intervine originalitatea fiecărui programator. De asemenea acești pași sunt specifici procesorului ADSP-2181, dar pot diferi în funcție de placa pe care acesta este implementat. Toate comenzile care sunt prezentate mai jos trebuie date în mediul DOS când este afișat prompterul (C:\>). Dacă în fișierul ”autoexec.bat” a fost înregistrată calea directorului în care se află fișierele specifice programului de asamblare, așa cum este specificat în manualul EZ-KIT Lite, nu contează în ce director ne aflăm atunci când dăm aceste comenzi [6].

Pasul 1: Cerințele de sistem

Primul pas în dezvoltarea unui sistem DSP este determinarea caracteristicilor ce se impun pentru sistem. Aceste caracteristici depind de tipul algoritmilor ce vor fi implementați, de tipul semnalelor folosite și de tipul dispozitivelor ce se vor conecta la ieșirea și, respectiv, intrarea procesorului. De asemenea se face o evaluare a cerinței de memorie pentru memoria de date în funcție de fluxul de date de la intrare, precum și o estimare a cerinței de memorie pentru memoria de program în funcție algoritmul ce va fi implementat. Bineînțeles, deoarece în acest stadiu algoritmul nu a fost încă implementa, aceste cerințe sunt numai aproximări. Pentru realizarea cerințelor acestei lucrări, la intrarea sistemului va fi semnal vocal, iar pentru semnal vocal la intrare, ADSP-2181 are suficientă memorie. De asemenea, trebuie folosite la intrare un convertor analog/digital, iar la ieșire un convertor digital/analog. În soluția tehnică aleasă, avem un codec audio AD1847 conectat la portul serial 0 al procesorului. Codecul are frecvența maximă de eșantionare de 48 kHz, suficientă pentru semnalul vocal. Încă o problemă care se pune este capacitatea procesorului de a procesa datele în timp real. Acest lucru se realizează deoarece frecvența de ceas a procesorului ADSP-2181 este de 33 MHz, viteză mai mult decât suficientă.

Pasul 2: Proiectarea sistemului

O dată stabilite cerințele de sistem, următorul pas este proiectarea acestuia. În acest caz proiectarea nu mai este necesară, folosindu-se o placă de dezvoltare EZ-KIT Lite, produsă de firma Analog Devices, placă ce folosește un procesor ADSP-2181 și un codec AD1847 pentru a realiza conversiile A/D și D/A. Codecul este conectat la portul serial 0 (SPORT0) al procesorului. Memoria internă a procesorului ADSP-2181 (16 kocteți pentru memoria de program și 16 kocteți pentru memoria de date) este suficientă astfel că nu este conectată nici o memorie externă. Semnalele de la portul serial 1 (SPORT1) sunt utilizate pentru a comunica printr-o interfață RS-232.

Pasul 3: Fișierul de descriere a arhitecturii

Folosind instrumentele de dezvoltare ale familiei de procesoare ADSP-2100, sistemul hardware trebuie descris într-un fișier de descriere a arhitecturii. În acest caz, acest pas a fost deja făcut de către firma producătoare, Analog Devices. Un fișier denumit ”ADSP2181.ACH” (creat de System Builder) este inclus în soft-ul EZ-KIT Lite. Fișierul text arătat mai jos conține descrierea arhitecturii unui sistem ADSP-2181 tipic și este utilizat ca intrare pentru System Buider:

.system demo;

.adsp 2181;

.mmap0;

.seg/pm/ram/abs=0/code/data int_pm_lo[8192];

.seg/pm/ram/abs=8192/code/data int_pm_hi[8192];

.seg/dm/ram/abs=0/data int_dm_lo[8192];

.seg/dm/ram/abs=8192/data int_dm_hi[8160];

.endsys;

Primele trei linii ale fișierului definesc numele sistemului ca demo utilizând un ADSP-2181 cu caracteristica de butare din EPROM-ul său activată (pinul MMAP este pe ”jos”).

Memoria de program internă de 16 kocteți este descrisă ca două segmente de 8 kocteți care pot conține atât cuvinte de cod cât și date. Prima secțiune de 8 kocteți va fi întotdeauna internă procesorului ADSP-2181. A doua secțiune de 8 kocteți poate fi programată de o instrucțiune ADSP-2181 pentru a fi ori internă, ori externă. Descriind arhitectura ca având două secțiuni de memorie, este simplificat managementul memoriei pentru aplicații care pot utiliza memorii suplimentare externe. Memoria poate fi descrisă, de asemenea, ca o singură secțiune de 16 kocteți în loc de două secțiuni de 8 kocteți.

Memoria de date este descrisă ca având două secțiuni, asemenea memoriei de program. Cei 32 de octeți de la sfârșitul memoriei de date sunt rezervați pentru memoria regiștrilor de control din interiorul procesorului.

Acest fișier text (cu extensia .SYS) este utilizat ca intrare pentru System Builder pentru a crea un fișier cu extensia .ACH. Acest fișier este este utilizat de către Linker și de către Simulator pentru a semnaliza nepotrivirile între software și folosirea hardware-ului. Așa cum am mai spus, o dată cu soft-ul pentru EZ-KIT Lite este furnizat și un fișier de descriere a arhitecturii, ”ADSP2181.ACH”. Pentru definirea unei alte arhitecturi este necesară procurarea softului ”System Builder” care este furnizat în pachetul EZ-KIT Lite, împreună cu alte utilități soft și librării.

Pasul 4: Dezvoltarea softului

Odată ce partea hardware este determinată, se poate începe dezvoltarea softului. Mai întâi, se determină toate cerințele de memorie pentru variabile și matrici precum și întreruperile de care este nevoie pentru sistemul ADSP-2181. Orice componente hardware sau regiștri care trebuie inițializați trebuie de asemenea avute în vedere.

Un program se scrie prin introducerea de text (instrucțiuni ale limbajului de asamblare) într-un fișier care apoi trebuie procesat de către Assembler. Assembler-ul ”traduce” instrucțiunile de tip ușor de citit, algebrice, din fișierul sursă creat de utilizator într-un fișier obiect.

În continuare sunt prezentate câteva lucruri care trebuie știute, în mod obligatoriu, despre limbajul de asamblare al familiei de procesoare ADSP-2100. Sintaxa algebrică utilizează simbolul ’=’ pentru a reprezenta un transfer de date. De exemplu, instrucțiunea:

AX0 = MX0;

transferă date din registrul numit MX0 în registrul numit AX0. Simbolurile aritmetice deja familiare (+, -, *) sunt utilizate pentru a indica operații aritmetice. De exemplu, instrucțiunea:

AR = AX0 + AY0;

adună conținutul registrului AX0 cu cel al registrului AY0 și plasează suma în registrul AR.

Toate instrucțiunile se termină cu ’;’ și instrucțiunile se pot compune din mai multe ”clauze” separate prin ’,’.

Mai jos este un exemplu de instrucțiune multifuncție pentru procesoarele ADSP-21xx:

MR=MR+MX1*MY1(SU), MX1=DM(I0,M3), MY1=PM(I4,M5);

Prima ”clauză” a instrucțiunii (până la prima virgulă) este o operație de multiplicare și acumulare (MAC – multiply/accumulate). Conținutul regiștrilor de intrare MX1 și MY1 sunt înmulțite între ele, iar rezultatul este adăugat conținutului registrului de rezultat al multiplicării (multiply result – MR). A doua clauză încarcă registrul de intrare X din memoria de date (DM), iar a treia clauză încarcă registrul de intrare Y din memoria de program (PM). Regiștrii I sunt utilizați pentru a menține adresele, iar regiștrii M mențin valoarea utilizată pentru a modifica adresa după încărcare. Toate instrucțiunile pot fi executate într-un singur ciclu al procesorului. Majoritatea instrucțiunilor sunt, de asemenea, condiționale.

Declararea oricăror variabile, matrici sau constante la fel ca și specificarea oricăror porturi se fac la începutul programului utilizând cuvinte de cod ale limbajului de asamblare.

La resetarea sistemului, procesorul va începe executarea codului din locația 0 a memoriei de program. Programele realizate în această lucrare vor conține în locația 0 instrucțiunea: jump start. Aceasta este utilizată pentru a sări peste tabela vectorilor de întrerupere.

Când apare o întrerupere pe timpul operării procesorului, programul este redirecționat către locațiile precizate la întrerupere. Acest salt este executat automat de către hardware când este detectată o întrerupere.

Locațiile întreruperilor neutilizate trebuie ocupate cu instrucțiunea rti. Acest lucru se face pentru securitate. Dacă dintr-un anumit motiv, memoria de program întâmpină probleme sau fluxul programului se ”pierde” în tabela vectorilor de întrerupere, reîntoarcerea din instrucțiunea de întrerupere (rti) va reface fluxul programului.

Pasul 5: Rularea Assembler-ului

După terminarea creării fișierului text care conține programul în limbaj de asamblare, trebuie rulat Assmbler-ul cu următoarea comandă:

asm21 my_prog -2181

În acest exemplu, fișierul text presupus creat este ”my_prog.dsp”. Instrucțiunea -2181, ce funcționează ca un comutator, comandă asemblerului să accepte instrucțiuni specifice ADSP-2181. Asemblerul crează fișierul sau fișierele obiect adecvate. Există mai multe comutatoare ale asemblerului care pot fi folosite opțional pentru a realiza funcții ca de exemplu crearea de fișiere, probleme de sensibilitate la caractere și denumirea fișierelor obiect.

Dacă este tastată comanda asm21 urmată de un Enter (fără folosirea argumentelor), pe ecran apar dispuse sintaxa corectă a comenzii, precum și o listă cu toate comutatoarele. Asemblerul crează un fișier obiect cu extensia .obj. Exemplul de mai sus crează fișierul my_prog.obj.

Pasul 6: Rularea Linker-ului

Linker-ul crează un fișier executabil din modulul obiect creat de asembler. Următorul exemplu crează un fișier denumit demo.exe:

ld21 my_prog -a adsp2181 -e demo

Fișierul de descriere a arhitecturii adsp2181.ach este specificat de către comutatorul –a, iar numele fișierului executabil este precizat ca demo.exe de către comutatorul –e. Există mai multe astfel de comutatoare. Tastând comanda ld21 urmată de Enter (fără argumente), pe ecran apar dispuse sintaxa corectă a comenzii, precum și o listă cu toate comutatoarele.

Pasul 7: Rularea Simulatorului

Simulatorul permite rularea programului creat într-un mediu de simulare pentru a testa softul fără utilizarea părții hard a sistemului. Pasul de simulare este util pentru a verifica o dată în plus corectitudinea softului înainte de rularea sa pe partea hardware.

De multe ori apar probleme după încărcarea softului în hardware, dar se observă că acesta nu funcționează. Fără verificarea funcționării programului pe simulator, nu se poate trage o concluzie referitoare la cauza care a produs eșecul, și anume dacă aceasta este de natură soft sau hard. Dacă însă un program este verificat pe simulator și nu apar probleme, iar o dată încărcat în partea hard nu funcționează, înseamnă că vina eșecului aparține cel mai probabil părții hard. Simulatorul este utilizat prin următoarea comandă:

sim2181 -a adsp2181 -e demo

Această comandă pornește simulatorul procesorului ADSP-2181, simulând programul demo.exe pe hardul descris în fișierul de descriere a arhitecturii adsp2181.ach. Dacă simulatorul nu găsește unul dintre aceste fișiere, trebuie verificat fișierul autoexec.bat și în cadrul acestuia dacă este setată bine calea în care se găsesc fișierele de mai sus sau se poate specifica în cadrul comenzii calea, astfel:

sim2181 -a c:\adi_dsp\21xx\lib\adsp2181 -e demo

Pasul 8: Utilizarea plăcii EZ-KIT Lite ADSP-2181

Placa EZ-KIT Lite are un EPROM în care se află codul pentru ADSP-2181. Când placa este pornită (sau resetată), codul este transferat automat din EPROM în memoria internă a procesorului. Codul livrat împreună cu EZ-KIT Lite include un program de monitorizare care permite procesorului să comunice cu interfața RS-232. Codul rulează un autotest și apoi trimite un semnal audio către conectorul audio de la ieșire. La acesta trebuie atașate boxe amplificate.

O dată instalat soft-ul plăcii în calculator, poate fi rulat programul în Windows. Apoi este posibilă încărcarea în placă a fișierului executabil creat de către Linker. Programul poate fi de asemenea încărcat într-un EPROM, iar acesta introdus în soclul de pe placă astfel încât placa poate funcționa de sine stătătoare, fără a mai fi nevoie de comunicația cu un calculatorul prin portul serial RS-232.

Pasul 9: Rezolvarea eventualelor probleme hard

În general, dacă placa EZ-KIT Lite nu funcționează corect cu programele furnizate, atunci este probabil o problemă cu conexiunile de alimentare, cu conexiunea prin RS-232 sau o problemă în legătură cu componentele de pe placă. În general utilizatorul trebuie să se asigure că toate conexiunile sunt ferme și că tensiunea de alimentare este în intervalul impus, 8-10 V tensiune continuă. De asemenea trebuie să se asigure că EPROM-ul este bine așezat în soclu sau că pe placă nu sunt alte obiecte care să determine crearea unui scurtcircuit.

De obicei, dacă soft-ul dezvoltat de un utilizator nu funcționează, acesta trebuie simulat pentru a determina problema [6].

4.2. Unitățile de calcul

4.2.1. Unitatea aritmetică și logică

Unitatea aritmetică și logică (ALU) furnizează un set standard de funcții aritmetice și logice. Funcțiile aritmetice sunt: adunare, scădere, negare, incrementare, decrementare și valoare absolută (modul). Funcțiile logice sunt AND (și), OR (sau), XOR (sau exclusiv) și NOT (nu) [6].

4.2.1.1. Diagrama bloc a unității aritmetice și logice

Diagrama bloc a unității aritmetice și logice este arătată în figura 3.1 de mai jos.

Figura 3.1

ALU lucrează pe 16 biți și are două porturi de intrare pe 16 biți, X și Y, și un port de ieșire , R. ALU acceptă semnal de intrare purtător (CI – carry-in) care este bitul din registrul de stare aritmetică al procesorului (ASTAT). ALU generează șase semnale de stare: starea de zero (AZ), starea negativă (AN), starea purtătoarei (AC), starea de supraîncărcare (AV), starea semnului intrării X (AS) și starea câtului (AQ). Toate semnalele de stare aritmetice sunt duse în registrul de stare aritmetică (ASTAT) la sfârșitul ciclului.

Portul de intrare X al ALU poate accepta date din două surse: din registrul AX sau din bus-ul rezultat (R). Bus-ul R conectează regiștrii de ieșire ai tuturor unităților de calcul, permițându-le să poate fi folosiți în mod direct ca intrări. Registrul AX este dedicat portului de intrare X și este format din doi regiștri, AX0 și AX1. Acești regiștrii AX pot fi atât citiți cât și scriși din bus-ul DMD. Setul de instrucțiuni permite, de asemenea, ca citirea acestor regiștrii să se facă din bus-ul PMD, dar în acest caz nu există o conexiune directă; această operație utilizează unitatea de schimb DMD-PMD. Ieșirile registrului AX au două porți astfel încât un registru poate fi atât intrare pentru ALU cât și, în același timp, poate comanda bus-ul DMD.

Portul de intrare Y poate, de asemenea, accepta date din două surse: din registrul AY sau din registrul de feed-back al ALU (AF). Registrul AY este dedicat portului de intrare Y și este format din doi regiștri, AY0 și AY1. Acești regiștrii pot fi citiți și scriși din bus-ul DMD și pot fi numai scriși din bus-ul PMD. Setul de instrucțiuni permite, de asemenea, citirea acestor regiștri din bus-ul PMD, dar în acest caz nu există o conexiune directă; această operație utilizează unitatea de schimb DMD-PMD. Ieșirile registrului AY au tot două porți astfel încât un registru poate fi atât intrare pentru ALU cât și, în același timp, poate comanda bus-ul DMD.

Ieșirea unității aritmetice și logice este încărcată fie în registrul de feed-back al ALU (AF), fie în registrul rezultat al ALU (AR). Registrul AF este un registru intern al ALU care permite rezultatului acesteia să fie folosit în mod direct ca intrare pentru ALU pe portul Y. Registrul AR poate controla atât bus-ul DMD cât și bus-ul R. De asemenea poate fi încărcat în mod direct din bus-ul DMD. Ca și mai sus, setul de instrucțiuni permite citirea acestor regiștri din bus-ul PMD, dar în acest caz nu există o conexiune directă; această operație utilizează unitatea de schimb DMD-PMD.

Orice registru asociat cu ALU poate fi atât citit cât și scris pe durata aceluiași ciclu. Regiștrii sunt citiți la începutul unui ciclu și sunt scriși la sfârșitul acestuia astfel că citirea unui registru înseamnă de fapt citirea valorii care a fost scrisă în ciclul anterior. O nouă valoare scrisă într-un registru nu poate fi citită mai devreme de ciclul ulterior scrierii.

ALU conține un set de regiștri duplicat al regiștrilor inițiali, existând astfel două seturi de regiștri AR, AF, AX și AY. La un moment dat este accesibil numai un set de regiștri. Setul suplimentar poate fi activat pentru mărirea vitezei de prelucrare necesară, eventual, într-un anumit context. O nouă operație, cum ar fi o rutină de întrerupere, poate fi executată fără a fi nevoie de memorarea stării curente a regiștrilor, ci prin folosirea celui de-al doilea set de regiștri, identici cu primii.

Selectarea setului de regiștri primar sau secundar se face prin bitul 0 al registrului de stare al modului de procesare (MSTAT). Dacă acest bit este 0, atunci este selectat primul set; dacă este 1, atunci este selectat setul secundar.

4.2.1.2. Funcțiile standard

Funcțiile standard ale unității aritmetice și logice sunt listate mai jos:

R=X+Y Adună operanzii X și Y

R=X+Y+CI Adună operanzii X și Y și bitul purtătoarei de intrare

R=X-Y Scade operandul Y din X

R=X-Y+CI-1 Scade operandul Y din X cu ”împrumut”

R=Y-X Scade operandul X din Y

R=Y-X+CI-1 Scade operandul X din Y cu ”împrumut”

R=-X Neagă operandul X (complement față de doi)

R=-Y Neagă operandul Y (complement față de doi)

R=Y+1 Incrementează operandul Y

R=Y-1 Decrementează operandul Y

R=PASS X ”Trece” operandul X pentru a nu-l modifica

R=PASS Y ”Trece” operandul Y pentru a nu-l modifica

R=0 (PASS 0) Șterge rezultatul făcându-l zero

R=ABS X Valoarea absolută pentru operandul X

R=X AND Y Operația ”și” logic pentru operanzii X și Y

R=X OR Y Operația ”sau” logic pentru operanzii X și Y

R=X XOR Y Operația ”sau exclusiv” logic pentru operanzii X și Y

R=NOT X Operația ”nu” logic pentru operandul X (complement față de unu)

R=NOT Y Operația ”nu” logic pentru operandul Y (complement față de unu)

4.2.1.3. Regiștrii de intrare/ieșire ai ALU

Mai jos sunt prezentate sursele regiștrilor de intrare și destinațiile regiștrilor de ieșire ai unității aritmetice și logice:

– surse pentru portul de intrare X: AX0, AX1

AR

MR0, MR1, MR2

SR0, SR1

– surse pentru portul de intrare Y: AY0, AY1

AF

– destinații pentru portul de ieșire R: AR

AF

MR0 , MR1 și MR2 sunt regiștrii pentru rezultatul operației de multiplicare-acumulare; SR0 și SR1 sunt regiștrii pentru rezultatul operației de shiftare (deplasare).

4.2.1.4. Capacitatea de multiprecizie

Operațiile multiprecizie sunt suportate în ALU datorită bitului de stare al semnalului purtătoare de intrare și al purtătoarei ALU (AC). Semnalul purtătoare de intrare este bitul de stare al AC care a fost generat de către operația executată anterior de către ALU. Operația ”adunare cu purtătoarea” (+C) are scopul de a aduna părțile superioare ale numerelor mari. Operația ”scădere cu împrumut” (C-1 este efectiv un ”împrumut”) are scopul de a scădea porțiunile superioare ale numerelor mari.

4.2.1.5. Modul de saturare al ALU

Registrul AR are un mod de satuare al operării în complement față de doi care îl setează în mod automat la valoarea sa maximă negativă sau pozitivă dacă rezultatul ALU determină saturația datorită supraîncărcării sau descărcării (overflow sau underflow). Această caracteristică este activată prin setarea bitului 3 al registrului de stare al modului (MSTAT). Când este activată, valoarea încărcată în AR în timpul unei operații a ALU depinde de starea supraîncărcării și de starea purtătoarei generată de ALU în acel ciclu. Următorul tabel prezintă sintetizat conținutul AR când modul saturare este activat:

Operarea modului de saturare al ALU este diferit de capacitatea de saturare a unității de multiplicare/acumulare, care este activată numai în cadrul unei instrucțiuni de către sintaxa acelei instrucțiuni. Pentru ALU, activarea modului de saturare înseamnă că toate operațiile ulterioare sunt procesate în acest fel.

Când este utilizat modul de saturare al ALU, numai registrul AR intră în saturație.

4.2.1.6. Modul de blocare al stării de saturare a ALU

Modul de blocare al stării de saturare a ALU, activat de către setarea bitului 2 din registrul de stare al modului (MSTAT), determină bitul AV să rămână în ”blocat” o data ce este setat, chiar dacă operațiile ulterioare ale ALU nu generează supraîncărcare. În acest mod, bitul AV poate fi șters numai scriind un zero în mod direct din busul DMD.

4.2.1.7. Împărțirea

ALU permite împărțirea. Funcția de împărțire se îndeplinește cu circuite de deplasare suplimentare care nu apar în figura 3.1. Împărțirea (divizarea) se realizează prin două primitive speciale de divizare. Acestea sunt utilizate pentru a implementa un algoritm de divizare condițional fără memorie de tip adunare-scădere. Împărțirea poate ține cont de semn sau nu, de aceea spunem că este împărțire cu semn sau fără semn; totuși, dividendul (deîmpărțitul) și divizorul (împărțitorul) trebuie să fie de același tip.

Împărțirea cu precizie simplă a unui dividend de 32 de biți la un divizor de 16 biți conduce la un cât de 16 biți rezultat în urma a 16 cicluri. Pot fi calculate de asemenea câturi cu precizie mai mare sau mai mică. Divizorul poate fi memorat în AX0, AX1 sau oricare dintre regiștrii R. Partea superioară a unui dividend cu semn poate începe fie în AY1, fie în AF. Partea superioară a unui dividend fără semn trebuie să fie în AF. Partea inferioară a oricărui dividend trebuie să fie în AY0. La sfârșitul operației de divizare, câtul va fi în AY0.

Prima din cele două instrucțiuni primitive ”divide-sign” (DIVS) este executată la începutul divizării când sunt împărțite numere cu semn. Această operație calculează bitul de semn al câtului executând un sau exclusiv biților de semn ai dividendului și divizorului. Registrul AY0 este deplasat cu o poziție astfel încât bitul de semn este mutat în poziția bitului cel mai puțin semnificativ (LSB). Semnul calculat este de asemenea încărcat în bitul AQ al registrului de stare aritmetică. Bitul cel mai semnificativ (MSB) al lui AY0 trece în poziția LSB a lui AF, și cei 15 biți superiori ai lui AF sunt încărcați cu cei 15 biți inferiori ai lui R din ALU care pur și simplu trece valoarea de la intrarea Y la ieșirea R. Efectul este deplasarea către stânga a perechii de regiștrii AF-AY0 și mutarea semnului câtului în poziția LSB. Operația DIVS este ilustrată în figura 3.2:

Figura 3.2

Când sunt divizate numere fără semn, nu este utilizată operația DIVS. În schimb, bitul AQ din registrul de stare aritmetică (ASTAT) trebuie inițializat pe zero manual prin ștergere. Bitul AQ indică operațiilor ulterioare că acel cât rezultat trebuie considerat pozitiv.

Cea de a doua primitivă de divizare este instrucțiunea ”divide-quotient” (DIVQ) care generează câte un bit al câtului și este executată în mod repetat pentru a obține și restul de biți ai câtului. Pentru împărțirile fără semn cu precizie simplă, instrucțiunea DIVQ este executată de 16 ori pentru a produce 16 biți ai câtului. Pentru împărțirile cu semn și cu precizie simplă, instrucțiunea DIVQ este executată de 15 ori după ce a fost calculat semnul cu instrucțiunea DIVS. Instrucțiunea DIVQ deplasează spre stânga registrul AY0 cu un bit astfel încât noul bit al câtului să poată fi mutat în poziția LSB. Starea bitului AQ generat de câtre operația anterioară determină ALU să calculeze restul temporar. Dacă AQ=1, ALU adaugă divizorul restului temporar în AF. Dacă AQ=0, ALU scade divizorul din restul temporar în AF. Ieșirea R a ALU este încărcată în AF la fel ca la operația DIVS. Bitul AQ este calculat cu ”sau exclusiv” între MSB-ul divizorului și MSB-ul ieșirii ALU, iar bitul câtului este această valoare inversată. Bitul câtului este încărcat în LSB-ul registrului AY0 care, așa cum am spus mai devreme este deplasat către stânga cu un bit. Operația DIVQ este ilustrată în figura 3.3:

Figura 3.3

Formatul câtului pentru orice reprezentare numerică poate fi determinată de către dividend și divizor. Fie NL numărul biților din stânga virgulei ai dividendului, NR numărul biților din dreapta virgulei, de asemenea ai dividendului, iar DL și DR numărul biților din stânga, respectiv dreapta, ai divizorului, atunci câtul are NL-DL+1 biți în stânga virgulei și NR-DR-1 biți în dreapta virgulei.

E posibil să fie necesare anumite modificări ale formatului pentru a garanta validitatea câtului. De exemplu, dacă ambii operanzi au semn și sunt fracționari (dividendul în format 1.31 și divizorul în format 1.15), rezultatul este fracționar (în format 1.15) și de aceea dividendul trebuie să fie mai mic decât divizorul pentru un rezultat valid.

Pentru a diviza două numere întregi (dividendul în format 32.0 și divizorul în format 16.0) și pentru a obține un rezultat întreg (în format 16.0), trebuie deplasat dividendul cu un bit către stânga (în format 31.1) înainte de divizare.

Astfel:

Dividendul: BBBBB.BBBBBBBBBBBBBBBBBBBBBBBBBBB (5.27)

NL biți NR biți

Divizorul: BB.BBBBBBBBBBBBBB (2.14)

DL biți DR biți

Câtul: BBBB.BBBBBBBBBBBB (4.12)

NL-DL+1 biți NR-DR-1 biți

Algoritmul determină suprasaturarea dacă rezultatul nu poate fi reprezentat într-un format așa cum este calculat mai sus sau dacă divizorul este zero sau mai mic decât dividendul în amplitudine [6].

4.2.1.8. Starea ALU

Mai jos sunt definiți biții de stare ai ALU din registrul ASTAT:

Abreviere Denumire Definiție

AZ Zero Operația logică NOR (sau negat) pentru toți biții din registrul rezultat al ALU. ”Adevărat” dacă ieșirea ALU este negativă.

AN Negativ Bitul de semn al rezultatului ALU. ”Adevărat” dacă ieșirea ALU este negativă.

AV Saturare Operația logică XOR (sau exclusiv) pentru ieșirile purtătoarei a celor mai semnificative două etaje ale adunării. ”Adevărat” dacă ALU este saturată.

AC Purtătoare Ieșirea purtătoare a celui mai semnificativ etaj.

AS Semn Bitul de semn al portului de intrare X al ALU. Afectat numai de instrucțiunea ABS.

AQ Câtul Bitul ”cât” generat numai de instrucțiunile DIVS și DIVQ.

4.2.2. Unitatea de multiplicare/acumulare (MAC)

Unitatea de multiplicare/acumulare permite multiplicarea cu viteză ridicată, multiplicarea cu adăugare cumulativă, multiplicarea cu scădere cumulativă, și funcții de saturare și trecere-pe-zero. O funcție de feedback permite unor părți din ieșirea acumulatorului să fie direct utilizate ca unul dintre termenii multiplicării în ciclul următor [6].

4.2.2.1. Diagrama bloc a MAC

Figura 3.4 de pe pagina următoare arată diagrama bloc a unității de multiplicare/acumulare.

Multiplicatorul are două porturi de intrare pe 16 biți, X și Y, și un port de ieșire produs pe 32 biți, P. Produsul pe 32 biți este trecut printr-un bloc de adăugare/scădere pe 40 de biți care adaugă sau scade noul produs la sau din conținutul registrului rezultat al multiplicării (MR), sau trece noul produs direct în MR. Registrul MR este pe 40 de biți. În cele ce urmează, lucrarea se va referi la întregul registru MR. Acesta, însă, este format din trei regiștri mai mici: MR0 și MR1 care au câte 16 biți și MR2 care are 8 biți.

Figura 3.4

Blocul de adăugare/scădere este mai mare de 32 de biți pentru a permite supraîncărcări temporare într-o serie de operații de multiplicare/acumulare. Bitul de stare al supraîncărcării multiplicării (MV) este setat când acumulatorul a depășit limita celor 32 de biți, adică, atunci când există biți semnificativi (fără cei de semn) în primii nouă biți ai registrului MR.

Regiștrii de intrare/ieșire ai MAC sunt similari celor ai ALU.

Portul de intrare X poate accepta date fie din registrul MX fie din orice alt registru de pe bus-ul rezultat (R). Bus-ul R conectează regiștrii de ieșire ai tuturor unităților de calcul, permițându-le să poate fi folosiți în mod direct ca operanzi de intrare. Există doi regiștri în registrul MX: MX0 și MX1. Acești regiștrii pot fi atât citiți cât și scriși din bus-ul DMD. Ieșirile registrului MX au două porți astfel încât un registru poate furniza intrare multiplicatorului, și în același timp ce poate comanda bus-ul DMD.

Portul de intrare Y poate, de asemenea, accepta date din două surse: din registrul MY sau din registrul MF. Registrul MY este format din doi regiștri: MY0 și MY1; acești regiștrii pot fi citiți și scriși din bus-ul DMD și pot fi numai scriși din bus-ul PMD. Setul de instrucțiuni permite, de asemenea, citirea acestor regiștri din bus-ul PMD, dar în acest caz nu există o conexiune directă; această operație utilizează unitatea de schimb DMD-PMD. Ieșirile registrului MY au tot două porți astfel încât un registru poate fi atât intrare pentru multiplicator cât și, în același timp, poate comanda bus-ul DMD.

Ieșirea unității de multiplicare/acumulare este încărcată fie în registrul MF, fie în registrul MR. Registrul MF este un registru de feed-back care permite biților 16-31 ai rezultatului să fie utilizați direct ca multiplicator pe intrarea Y într-un ciclu ulterior. Registrul de adăugare/scădere pe 40 de biți (MR) este divizat în trei secțiuni: MR2, MR1 și MR0. Fiecare dintre acești regiștri poate fi încărcat în mod direct din bus-ul DMD și considerat ca ieșire pentru bus-ul DMD sau pentru bus-ul R.

Orice registru asociat cu MAC poate fi atât citit cât și scris pe durata aceluiași ciclu. Regiștrii sunt citiți la începutul unui ciclu și sunt scriși la sfârșitul acestuia astfel că citirea unui registru înseamnă de fapt citirea valorii care a fost scrisă în ciclul anterior. O nouă valoare scrisă într-un registru nu poate fi citită mai devreme de ciclul ulterior scrierii.

Ca și ALU, MAC conține un set de regiștri duplicat al regiștrilor inițiali, existând astfel două seturi de regiștri MR, MF, MX și MY. La un moment dat este accesibil numai un set de regiștri. Setul suplimentar poate fi activat pentru mărirea vitezei de prelucrare necesară, eventual, într-un anumit context. O nouă operație, cum ar fi o rutină de întrerupere, poate fi executată fără a fi nevoie de memorarea stării curente a regiștrilor, ci prin folosirea celui de-al doilea set de regiștri, identici cu primii.

Selectarea setului de regiștri primar sau secundar se face prin bitul 0 al registrului de stare al modului de procesare (MSTAT). Dacă acest bit este 0, atunci este selectat primul set; dacă este 1, atunci este selectat setul secundar.

4.2.2.2. Funcțiile standard

Funcțiile pe care le realizează unitatea de multiplicare/acumulare sunt:

X*Y Multiplică operanzii X și Y

MR+X*Y Multiplică operanzii X și Y și adaugă rezultatul la conținutul registrului MR

MR-X*Y Multiplică operanzii X și Y și scade rezultatul din conținutul registrului MR

0 Face ca rezultatul (MR) să fie zero (șterge).

Familia de procesoare ADSP-2100 furnizează două moduri pentru funcția standard de multiplicare/acumulare: modul fracționar pentru numere fracționare (1.15) și modul întreg pentru numere întregi (16.0).

În modul fracționar, ieșirea P pe 32 de biți are un format ajustat, adică, este extinsă pentru semn și deplasată cu un bit către stânga înainte de a fi adăugată la MR. De exemplu, de la bitul 31 din P până la bitul 32 din MR (care este bitul 0 din MR2) și de la bitul 0 din P până la bitul 1 din MR (care este bitul 1 din MR0). În LSB-ul este scris zero. Formatul rezultatului multiplicării fracționare este arătat în figura 3.5:

Figura 3.5

În modul întreg, registrul pe 32 de biți P nu este deplasat înainte de a fi adăugat la MR. Figura 3.6 arată formatul rezultatului multiplicării întregi:

Figura 3.6

Modul este selectat de către bitul patru registrul de stare a modului (MSTAT). Dacă acest bit este 1, este selectat modul întreg. Altfel, este selectat modul fracționar.

4.2.2.3. Formatele de intrare

Pentru a permite multiplicări multiprecizie, MAC acceptă intrări X și Y reprezentate în orice combinație de formate în complement față de doi cu semn sau fără semn.

Intrarea X Intrarea Y

cu semn cu semn

fără semn cu semn

cu semn fără semn

fără semn fără semn

Formatele de intrare sunt specificate ca părți ale instrucțiunii. Acestea pot fi selectate în mod dinamic de fiecare dată când este utilizat multiplicatorul.

Primul mod (cu semn x cu semn) este utilizat când sunt multiplicate două numere cu simplă precizie și cu semn sau cele două porțiuni superioare a două numere cu multiprecizie și cu semn.

Modurile al doilea (fără semn x cu semn) și al treilea (cu semn x fără semn) sunt utilizate când sunt multiplicate cele două porțiuni superioare a două numere cu multiprecizie unul cu semn și altul fără semn sau când sunt multiplicate două numere cu precizie simplă, unul cu semn și celălalt fără semn.

Cel de-al patrulea mod (fără semn x fără semn) este utilizat când sunt multiplicate două numere cu simplă precizie și fără semn sau porțiunile nesuperioare a două numere cu multiprecizie și cu semn.

4.2.2.4. Regiștrii de intrare/ieșire ai MAC

Sursele pentru intrarea și ieșirea MAC sunt:

– surse pentru portul de intrare X: MX0, MX1

MR

MR0, MR1, MR2

SR0, SR1

– surse pentru portul de intrare Y: MY0, MY1

MF

– destinații pentru portul de ieșire R: MR (MR2, MR1, MR0)

MF

4.2.2.5. Operarea registrului MR

Așa cum s-a mai spus mai devreme și cum s-a arătat în cadrul diagramei bloc, registrul MR este divizat în trei secțiuni: MR0 (biții 0-15), MR1 (biții 16-31) și MR2 (biții 32-39). Fiecare dintre acești regiștri poate fi încărcat din bus-ul DMD și pus la ieșire prin bus-ul R sau bus-ul DMD.

Registrul MR2 pe 8 biți este asociat celor mai puțin importanți 8 biți de pe aceste bus-uri. Când MR2 este pus la ieșire în bus-ul DMD sau în bus-ul R, este extins pentru semn pentru a forma o valoare pe 16 biți. MR1 are, de asemenea, o capacitate automată de a se extinde pentru semn. Când MR1 este încărcat din bus-ul DMD, fiecare bit din MR2 va fi setat la bitul de semn (MSB) al MR1, astfel încât MR2 apare ca o extensie a lui MR1. Pentru a încărca registrul MR2 cu o altă valoare decât cea a semnului lui MR1, MR2 trebuie încărcat după ce a fost încărcat MR1. Pe de altă parte, încărcarea lui MR0 nu afectează pe MR1 și nici pe MR2; nu apare nici o extensie pentru semn la încărcarea MR0.

4.2.2.6. Saturarea și supraîncărcarea MAC

Blocul de adăugare/scădere generează un semnal de stare a supraîncărcării (MV) care este încărcat în registrul de stare aritmetică al procesorului (ASTAT) de fiecare dată când este executată o operație a MAC. Bitul MV este setat când rezultatul acumulării, interpretat ca număr în complement față de doi, depășește limita celor 32 de biți (MR1/MR2). Adică, MV este setat dacă cei nouă biți superiori ai lui MR nu sunt toți unu sau toți zero.

Registrul MR are o caracteristică de saturare care setează MR la valoarea maximă pozitivă sau negativă dacă apare o suprasaturare sau o descărcare (overflow sau underflow). Operația de saturare depinde de bitul de stare a saturării (MV) din registrul de stare aritmetică al procesorului (ASTAT) și de bitul din poziția MSB a registrului MR2. Următorul tabel rezumă operația de saturare a MR:

MV MSB al MR2 Conținutul MR după saturare

0 0 sau 1 nici o schimbare

1 0 00000000 0111111111111111 1111111111111111 – pozitiv

1 1 11111111 1000000000000000 0000000000000000 – negativ

Saturarea în MAC este o instrucțiune mai degrabă decât un mod de lucru așa cum este în ALU. Instrucțiunea de saturare are scopul de a fi folosită la completarea unui șir de multiplicări/acumulări astfel încât saturări intermediare să nu determine saturarea acumulatorului.

Supraîncărcarea mai sus de cel mai semnificativ bit al lui MR2 nu ar trebui permisă niciodată. Adevăratul semn de bit al rezultatului ar fi pierdut fără posibilitatea de refacere și saturarea poate să determine o valoare incorectă. Totuși, pentru a atinge acest stadiu este nevoie de mai mult de 255 de saturări de tip MV.

4.2.2.7. Modul de rotunjire (aproximare)

Acumulatorul are capacitatea de a rotunji rezultatul R pe 40 de biți la limita dintre 15 și 16. Rotunjirea poate fi specificată ca parte a instrucțiunii de cod. Ieșirea rotunjită este dusă către MR sau MF. Când are loc rotunjirea, iar ca ieșire este registrul MF, conținutul acestuia reprezintă rezultatul rotunjit pe 16 biți. În mod similar, când MR este selectat ca ieșire, MR1 conține rezultatul rotunjit pe 16 biți; efectul de rotunjire în MR1 îl afectează si pe MR2 astfel că MR1 și MR2 reprezintă rezultatul rotunjit pe 24 de biți [6].

4.2.3. Unitatea de deplasare

Unitatea de deplasare furnizează un set complet de funcții de deplasare pentru intrări de 16 biți, rezultând ieșiri pe 32 de biți. Acestea includ, deplasare (shiftare) aritmetică, logică și normalizarea. De asemenea, calculează derivarea unui exponent sau derivarea exponentului uni întreg bloc de numere. Aceste funcții de bază pot fi combinate pentru a implementa eficient orice grad de control al formatelor numerice, incluzând și reprezentarea în virgulă mobilă completă [6].

4.2.3.1. Diagrama bloc a unității de deplasare (shifter)

Figura 3.7 arată o diagramă bloc a sihfterului. Acesta poate fi divizat în următoarele componente: matricea de deplasare, operația logică OR/PASS (SAU/TRECE), detectorul de exponent și blocul de comparare logică a exponentului.

Figura 3.7

Matricea de deplasare este un modul de deplasare de dimensiune 16×32. Acceptă intrare pe 16 biți și o poate plasa oriunde în câmpul de ieșire pe 32 de biți, într-un singur ciclu. Astfel apar 49 de posibilități de plasare în câmpul de 32 de biți. Plasarea celor 16 biți de intrare este determinată de un cod de control (C) și de un semnal de referință HI/LO.

Matricea de deplasare și operațiile logice asociate ei sunt încercuite de un set de regiștri. Registrul de intrare al shifterului (SI) furnizează intrare pentru matricea de deplasare și pentru detectorul de exponent. Registrul SI este pe 16 biți și poate fi citit și scris din bus-ul DMD. Matricea de deplasare și detectorul de exponent primesc de asemenea ca intrări pe AR, SR sau MR prin bus-ul R. Registrul rezultat al deplasării (SR) este pe 32 de biți și este împărțit în două secțiuni pe 16 biți: SR0 și SR1. Regiștrii SR0 și SR1 pot fi încărcați din bus-ul DMD și puși la ieșire fie prin bus-ul DMD, fie prin bus-ul R. Registrul SR este întors la blocul logic OR/PASS pentru a permite operații de deplasare cu dublă precizie.

Registrul SE (”shifter-exponent” – exponentul deplasării) are 8 biți și menține exponentul pe durata operațiilor de normalizare și denormalizare. Registrul SE poate fi încărcat și citit din ultimii 8 biți ai bus-ului DMD. Are o valoare în complement față de doi, de format 8.0.

Registrul SB (”shifter-block” – blocul de deplasare) este important în domeniul operațiilor în virgulă mobilă. SB are 5 biți și menține cea mai recentă valoare a exponentului blocului. Registrul SB poate fi încărcat și citit din ultimii 5 biți ai bus-ului DMD. Are o valoare în complement față de doi, de format 5.0.

De ori câte ori regiștrii SB și SE sunt puși la ieșire pe bus-ul DMD, ei sunt extinși după semn pentru a forma o valoare pe 16 biți.

Orice registru dintre SI, SE sau SB poate fi atât citit cât și scris pe durata aceluiași ciclu. Regiștrii sunt citiți la începutul unui ciclu și sunt scriși la sfârșitul acestuia astfel că citirea unui registru înseamnă de fapt citirea valorii care a fost scrisă în ciclul anterior. O nouă valoare scrisă într-un registru nu poate fi citită mai devreme de ciclul ulterior scrierii.

Shifter-ul conține un set de regiștri duplicat al regiștrilor inițiali, existând astfel două seturi de regiștri SE, SB, SI, SR1 și SR0. La un moment dat este accesibil numai un set de regiștri. Setul suplimentar poate fi activat pentru mărirea vitezei de prelucrare necesară, eventual, într-un anumit context. O nouă operație, cum ar fi o rutină de întrerupere, poate fi executată fără a fi nevoie de memorarea stării curente a regiștrilor, ci prin folosirea celui de-al doilea set de regiștri, identici cu primii.

Selectarea setului de regiștri primar sau secundar se face prin bitul 0 al registrului de stare al modului de procesare (MSTAT). Dacă acest bit este 0, atunci este selectat primul set; dacă este 1, atunci este selectat setul secundar.

Shiftarea (deplasarea) intrării este determinată de către un cod de control (C) și de către un semnal de referință HI/LO. Codul de control este o valoare cu semn pe 8 biți care indică direcția de shiftare și numărul de locuri cu care trebuie deplasată intrarea. Un cod pozitiv indică o deplasare către stânga (shiftare în sens crescăror), iar un cod negativ indică o deplasare către dreapta (shiftare în sens descrescător). Codul de control poate apărea din trei surse: conținutul registrului exponentului deplasării (SE), conținutul lui SE negat sau o valoare imediată dată de instrucțiune.

Semnalul HI/LO determină punctul de referință pentru shiftare. În starea HI, toate deplasările se fac folosind ca referință SR1 (jumătatea superioară a câmpului de ieșire), iar în starea LO, ca referință este SR0 (jumătatea inferioară). Caracteristica de referință HI/LO este utilă când sunt shiftate valori de 32 de biți deoarece permite ambelor jumătăți ale numărului să fie deplasate cu același cod de control. Semnalul de referință HI/LO poate fi selectat ori de câte ori se face o shiftare.

Shiftarea umple, în câmpul de ieșire, orice bit din dreapta valorii de intrare cu zerouri, iar biții din stânga sunt umpluți cu bitul de extensie (X). Acest bit de extensie poate proveni din trei surse în funcție de instrucțiunea ce trebuie prelucrată. Cele trei surse sunt bitul din poziția MSB a intrării, bitul AC din registrul de stare aritmetică (ASTAT) sau zero.

Tabelul din figura 3.8 arată matricea de deplasare la ieșire ca funcție de codul de control și de semnalul HI/LO.

Figura 3.8

Operația logică OR/PASS permite secțiunilor deplasate ale unui număr de multiprecizie să fie combinate. În anumite instrucțiuni de deplasare, ieșirea shiftată poate fi prelucrată cu operația logică OR (SAU) cu conținutul registrului SR; această operație, care pare în instrucțiune sub forma [SR OR], se execută înainte de a apărea în matricea de deplasare. Când nu este folosită opțiunea [SR OR] în instrucțiune, ieșirea matricei de deplasare este numai trecută și încărcată nemodificată în registrul rezultatului deplasării (SR).

Detectorul de exponent prelucrează un exponent pentru a obține valoarea de intrare a shifterului. Detectorul de exponent operează în trei moduri în funcție de care diferă modul în care este interpretată valoarea de intrare:

În starea HI, intrarea este interpretată ca un număr cu simplă precizie sau ca partea superioară a unui număr cu dublă precizie. Detectorul de exponent determină numărul biților de semn și produce un cod care indică numărul de locuri cu care trebuie shiftată intrarea către stânga pentru a elimina toți biții de semn în afară de unul dintre aceștia;

În starea HI extins (HIX), intrarea este interpretată ca rezultatul unei adunări sau scăderi efectuată în unitatea aritmetică și logică care este posibil sa fi determinat saturare. De aceea, detectorul de exponent ia în considerare starea de saturare aritmetică (AV). Dacă AV este setat, atunci la ieșire este dus un exponent cu valoarea +1 pentru a indica faptul că este nevoie de încă un bit în mantisa normalizată (bitul purtător al ALU); dacă AV nu este setat, atunci funcțiile HI extins sunt identice cu cele ale stării HI. Când se execută o funcție asupra exponentului în stările HI sau HI extins, detectorul de exponent scoate de asemenea la ieșire un bit de semn al deplasării (SS) care este încărcat în registrul de stare aritmetică (ASTAT). Bitul de semn este același cu cel din poziția MSB a intrării, cu excepția cazului când este setat AV în modul HI extins. În acest caz, bitul din poziția MSB este inversat.

În starea LO, intrarea este interpretată ca partea inferioară a unui număr cu dublă precizie. Detectorul de exponent interpretează bitul SS din registrul ASTAT ca bitul de semn al numărului. Registrul SE este încărcat cu ieșirea detectorului de exponent numai dacă SE conține valoarea -15. Acest lucru apare numai când jumătatea superioară – care trebuie procesată înainte – conține toți biții de semn. Detectorul de exponent este oprit de către valoarea -16 pentru a arăta faptul că intrarea este de fapt partea inferioară a unei valori pe 32 de biți. Tabelul din figura 3.9 arată caracteristicile detectorului de exponent pentru toate cele trei moduri.

Operația logică de comparare a exponentului este utilizată pentru a găsi cea mai mare valoare a exponentului într-o matrice de valori ale intrării. Blocul de comparare logică a exponentului lucrează împreună cu detectorul de exponent. Comparatorul compară valoarea exponentului obținută de detectorul de exponent cu valoarea înregistrată în registrul SB și schimbă valoarea în acest registru numai dacă noua valoare este mai mare decât cea înregistrată în registrul SB.

Figura 3.9

4.2.3.2. Funcțiile unității de deplasare

Unitatea de deplasare execută următoarele funcții (în paranteze sunt arătate instrucțiunile corespunzătoare):

Deplasare (shiftare) aritmetică (ASHIFT)

Deplasare logică (LSHIFT)

Normalizare (NORM)

Derivarea exponentului (EXP)

Ajustarea exponentului (EXPADJ)

Aceste instrucțiuni de bază ale shifterului pot fi utilizate într-o varietate de moduri, în funcție de cerințele aritmetice [6].

4.2.3.3. Regiștrii de intrare/ieșire ai unității de deplasare

Sursele și destinațiile pentru regiștrii de intrare, respectiv ieșire, sunt:

– surse pentru intrarea shifterului: SI

AR

MR0, MR1, MR2

SR0, SR1

– destinații pentru ieșirea shifterului: SR (SR0, SR1)

4.3. Metode de programare

Metodele de programare a unui sistem bazat pe procesarea digitală de semnal depind de fiecare programator în parte, iar o prezentare generală a acestor metode ar fi un lucru mult prea intuitiv și poate lipsit de aplicabilitate. De aceea, în cele ce urmează vor fi prezentate numai lucruri specifice acestei lucrări și, de asemenea, specifice soluției tehnice aleasă. O operație extrem de importantă în elaborarea pachetului de programe ce însoțește această lucrare este filtrarea semnalului vocal în banda de bază (0,3-3,4 kHz). Prelucrarea eșantioanelor se bazează pe formulele prezentate în Capitolul II, din care se distinge o altă operație foarte importantă și necesară, și anume, calculul transformatei Hilbert. În cadrul acestei secțiuni vor fi prezentate metoda de filtrare și metoda de calcul a transformatei Hilbert, urmând ca implementările formulelor din Capitolul II să fie prezentate în acea secțiune a lucrării în care vor fi listate programele realizate.

4.3.1. Filtrarea

Evoluția tehnicii și tehnologiei în electronică a permis realizarea practică a unor funcțiuni de sistem sub formă digitală echivalente celor obținute anterior cu tehnica analogică.

Filtrajul digital (numeric) este un procedeu de procesare a semnalelor digitale (numerice).

Filtrul digital este un sistem discret caracterizat printr-un algoritm numeric de calcul cu ajutorul căruia un semnal eșantionat (discretizat) sau o succesiune de numere – reprezentând semnalul de intrare, se transformă într-o altă succesiune de numere, care exprimă semnalul de ieșire. Algoritmul de calcul poate să reprezinte un proces de filtrare de tip trece jos, trece sus, trece bandă sau oprește bandă, o operație de integrare sau diferențiere, etc [14].

Filtrarea digitală (numerică) oferă o serie de avantaje în raport cu filtrarea analogică, astfel:

stabilitate, deoarece performanțele filtrului digital nu sunt afectate de temperatură sau de îmbătrânirea componentelor ca în cazul filtrelor analogice, eliminându-se astfel, practic, necesitatea unor reglaje periodice;

flexibilitatea, deoarece răspunsul filtrului digital poate fi modificat prin modificarea algoritmului de calcul, care poate fi făcută adaptat cu forma semnalelor ce trebuie procesate;

siguranță în funcționare, modularitate și economicitate, deoarece, utilizând pentru implementarea filtrelor digitale tehnologiile de integrare pe scară largă este posibilă obținerea unor soluții de dimensiuni foarte mici, cu consum energetic redus și la un preț scăzut.

După felul răspunsului la impulsul unitate, filtrele digitale sunt de două tipuri:

filtre cu răspuns de durată infinită la impulsul unitate, IIR (infinite impulse response);

filtre cu răspuns de durată finită la impulsul unitate, FIR (finite impulse response).

Filtrele FIR sunt specifice domeniului în timp discret și nu pot fi obținute prin transpunerea filtrelor analogice. În plus, posibilitatea de a avea o fază liniară cu frecvența este utilă în numeroase aplicații. Pentru aceste filtre, denumite de obicei nerecursive, după maniera de implementare, funcția de transfer se exprimă prin următoarea relație:

(4.1)

în care h[n] desemnează răspunsul pondere (finit) al filtrului [14].

Pentru realizarea unui filtru trece bandă, în această lucrare soluția aleasă a fost realizarea unui filtru FIR ai cărui coeficienți au fost calculați în mediul de programare Matlab 5.3, pe baza funcției ’fir1’.

Funcția ’fir1’ este, din punct de vedere al mediului Matlab, o metodă de proiectare a unui filtrului cu răspuns finit la impulsul unitate, ce utilizează metoda ferestrelor.

O comandă de tipul ”B=FIR1(N,Wn)” proiectează un filtru FIR de ordinul N și determină coeficienții acestuia prin vectorul B de lungime N+1. Frecvența de tăiere Wn trebuie să fie de tipul 0<Wn<1, cu 1 corespunzând frecvenței de eșantionare pe jumătate. Filtrul B este real și are o fază liniară, și chiar coeficienți simetrici, adică: B(k)=B(N+2-k), k=1,2,…,N+1

Dacă Wn este un vector cu două elemente, Wn=[W1,W2], funcția ’fir1’ furnizează un filtru trece bandă de ordinul N cu banda de trecere: W1<W<W2. Programul realizat în mediul de programare Matlab 5.3 este afișat în Anexa A a acestei lucrări. Acesta conține, de asemenea, o secvență ce realizează transformarea coeficienților rezultați din baza numerică 10 (zecimal) în baza numerică 16 (hexa).

Ordinul filtrului a fost ales 256, iar coeficienții rezultați sunt arătați în figura 3.10.

Figura 3.10

În figura 3.11 este afișată caracteristica filtrului. Se observă faptul că aceasta are o pantă destul de abruptă datorită numărului mare de coeficienți, 256. Coeficienții rezultați în hexa au fost introduși în programul ’filtru.dsp’ care realizează filtrarea unui semnal în banda de bază 300-3400 Hz. Acest program este afișat în Anexa B a acestei lucrări.

Figura 3.11

4.3.2. Transformarea Hilbert

Transformata Hilbert este un operator cunoscut în studiul semnalelor analogice, îndeosebi în legătură cu semnalul analitic, a cărui transformată Fourier este nulă pe axa frecvențelor negative. De asemenea, transformata Hilbert este utilă pentru caracterizarea semnalelor cauzale la care părțile reală și imaginară nu sunt independente [13].

Fie x[n] o secvență cauzală, stabilă, cu părțile pară xp[n] și impară xi[n]:

x[n]=xp[n]+xi[n] (4.2)

Se cunosc relațiile:

(4.3)

(4.4)

Aceste relații sunt adevărate și pentru semnale care nu sunt cauzale. În cazul semnalelor cauzale însă, este suficient să se cunoască una din părți, xp[n] sau xi[n], pentru ca semnalul x[n] să se poată reconstitui. Această posibilitate este ilustrată pe exemplul din figura 3.12.

Figura 3.12

Ca o consecință a cauzalității, x[n]=0 la n<0, prin urmare x[-n]=0 la n>0 și așa cum rezultă din figură, primele două secvențe nu se suprapun decât în n=0.

Prin urmare:

(4.5)

(4.6)

Presupunând că semnalul cauzal este stabil (ca și secvențele din figura 3.12), rezultă că x[n] admite o transformată Fourier cu părțile reală și imaginară:

(4.7)

Dacă x[n] este un semnal real, rezultă:

(4.8a)

(4.8b)

În concluzie, transformata Fourier a unei secvențe cauzale, stabile și reale este complet determinată de una din părțile sale [13].

Legătura între părți dată de transformata Hilbert

Se poate exprima analitic X(ejω) prin XRe(ejω). În relația (4.5), ultimul termen reprezintă x(0). Rezultă de aici:

(4.9)

Transformata Fourier a relației de mai sus este:

(4.10)

Rezultă expresia pentru partea imaginară în funcție de partea reală:

(4.11)

Similar, se obține:

(4.12)

Relațiile de mai sus reprezintă perechea de transformate Hilbert:

(4.13a)

(4.13b)

care ilustrează dependența părților spectrului unei secvențe cauzale, reale.

Transformatorul Hilbert

Se introduce funcția:

(4.14)

cu ajutorul căreia putem scrie:

(4.15)

sau, în mod invers:

(4.16)

Ținând seama de (4.14):

(4.17)

Pe baza relațiilor (4.15), (4.16) și (4.17), care dau legătura între transformatele Fourier ale părților reală și imaginară, rezultă că una din aceste părți poate fi produsă din cealaltă trecând-o prin sistemul liniar și invariant în timp care are funcția de sistem (4.14). Sistemul definit prin H(ejω) dat de (4.14) se numește transformator Hilbert ideal.

Transformatorul Hilbert introduce un defazaj constant de 90º asupra secvenței de intrare fără a modifica valoarea amplitudinilor: este deci un defazor ideal. Funcția pondere h[n] a transformatorului Hilbert ideal se obține aplicând relației (4.14) o transformare Fourier inversă [13]:

(4.18)

Se găsește:

(4.19)

Pe baza relației de mai sus, a fost elaborat programul pentru transformarea Hilbert. Cu ajutorul mediului de programare Matlab 5.3 și al relației (4.19) au fost determinați coeficienții unui transformator Hilbert, coeficienți transformați apoi din bază zecimală în bază hexazecimală și utilizați în programarea sistemului. O problemă destul de importantă este valoarea lui n. Pentru a rezolva această problemă, programul din fișierul ’trh.m’ implementează funcția pentru 256 de coeficienți, urmând ca ulterior aceștia să fie reduși. Cei 256 de coeficienți sunt ilustrați în figura 3.13:

Figura 3.13

Se observă că acești coeficienți scad foarte mult pe măsură ce n este mai mare, deci este posibil ca punând anumite condiții să obținem un anumit număr de coeficienți, mai mic de 256, dar care să determine o funcționare cu o eroare extrem de mică. Pentru a reduce numărul de coeficienți, s-a calculat energia semnalului din figura 3.13 și s-a pus condiția să se găsească numărul de coeficienți care să determine un semnal cu energia egală cu mai mult de 99% din energia semnalului cu 256 de coeficienți. Programul final este afișat în Anexa C, iar coeficienții determinați de acesta sunt afișați în figura 3.14. Numărul de coeficienți rezultați este de 63, suficienți pentru a îndeplini condițiile impuse.

Figura 3.14

Coeficienții rezultați în hexa au fost introduși în programul ’trh.dsp’ care realizează transformata Hilbert a unui semnal, astfel că la ieșirea sistemului, pe un canal vom avea semnalul nemodificat, iar pe cel de al doilea canal vom avea transformata Hilbert a semnalului. Acest program este afișat în Anexa D a acestei lucrări.

Capitolul V: Utilizarea programelor realizate

Pentru exemplificarea practică a celor precizate în această lucrare a fost creat un pachet de programe. Pe lângă cele deja prezentate în capitolul anterior, au mai fost realizate programe pentru:

modulația în amplitudine a unui semnal (A3E), program ce este afișat în Anexa E și care conține atât filtrarea în banda de bază cât și modulația în amplitudine;

modulația în amplitudine cu bandă laterală unică a unui semnal (H2E), cu transmiterea completă a purtătoarei, program care este afișat în Anexa F;

prelucrarea a două canale și transmiterea a două benzi laterale independente (B8E), program afișat în Anexa G;

modulația în amplitudine cu bandă laterală unică a unui semnal (R3E), cu purtătoare redusă, program care este afișat în Anexa H;

modulația în amplitudine cu bandă laterală unică și purtătoarea suprimată (J3E), program ce este prezentat în Anexa I.

Cele cinci programe se află fiecare în câte un fișier cu extensia ’.dsp’, denumite: maf.dsp, mablu.dsp, b8e.dsp, r3e.dsp și, respectiv, j3e.dsp. Pentru fiecare în parte au fost date comenzile precizate în Capitolul IV, în ceea ce privește rularea assembler-ului și a linker-ului. Astfel, au rezultat cinci fișiere cu aceleași nume ca mai sus, dar cu extensia ’.exe’.

Acestea pot fi încărcate în procesorul de semnal. În cele ce urmează va fi descrisă această modalitate de încărcare în procesor.

Descrierea softului EZ-KIT Lite și utilizarea acestuia

O dată cu placa de dezvoltare EZ-KIT Lite a fost livrat și un soft, realizat de asemenea de firma Analog Devices, denumit ”Program Gazdă al EZ-KIT Lite”. Cu ajutorul acestuia pot fi încărcate în procesor programele realizate. Acest soft este un program bazat pe mediul Windows ce se încadrează în convențiile ce privesc ”Interfețele Grafice tip Utilizator pentru Windows”. La inițializarea acestui soft apare ecranul arătat în figura 5.1, în care sunt afișate programele demonstrative ce pot fi rulate, programe ce au fost distribuite de către Analog Devices împreună cu softul principal.

Este de reținut că trebuie setat portul serial pe care este făcută conexiunea calculatorului cu placa de dezvoltare. Astfel, la selectarea opțiunii ”Settings” din meniul ”Options” apare ecranul care este arătat în figura 5.2 și se poate selecta portul.

Figura 5.1

Figura 5.2

Pentru a încărca programele realizate în procesor, se selectează din meniul ”Loading” opțiunea ”Download User Programs and GO”. Apare astfel fereastra arătată în figura 5.3 de unde se poate selecta programul dorit, program ce trebuie să aibă extensia ’.exe’.

Figura 5.3

Foarte important este faptul că înainte de încărcarea vreunui program realizat de utilizator sau pe timpul rulării unui program demonstrativ realizat de Analog Devices, placa realizează o simulare a comunicației UART (universal asynchronous receiver-transmiter) astfel că placa poate primi comenzi de la calculator prin cablul RS-232. La încărcarea unui program realizat de utilizator, comunicația cu calculatorul se pierde, deoarece firma Analog Devices nu a precizat în documentație modul de simulare a comunicației seriale, iar realizarea acesteia nu a făcut obiectul acestui proiect. După încărcarea programului utilizator, softul dă mesajul afișat în figura 5.4, iar placa poate funcționa de sine stătătoare, fără a mai fi conectată în mod obligatoriu la un calculator. Pentru a reface legătura cu calculatorul și pentru a putea încărca alte programe utilizator, se apasă butonul reset. În acest moment procesorul boot-ează din EPROM, iar dacă la ieșire sunt conectate boxe amplificate, ar trebui să se audă în acestea un mesaj de întâmpinare.

Figura 5.4

Capitolul VI: Calculul estimativ al fiabilității

Fiabilitatea unui produs (sistem) se definește ca fiind capacitatea acestuia de a își îndeplini funcțiile la parametrii proiectați pe o durată de timp stabilită și în condiții de exploatare date [2].

În continuare se va determina fiabilitatea previzională (proiectată) a traseului de prelucrare digitală din emițătorul reconfigurabil printr-o abordare sistematică a problemei. De menționat este faptul că firma Analog Devices nu furnizează informațiile necesare unui astfel de calcul, de aceea în acest capitol calculele vor fi principiale și fără rezultate numerice.

Este cunoscut faptul că un sistem se definește ca fiind un ansamblu de elemente aflate în interacțiune. Având în vedere acest aspect se va determina fiabilitatea sistemului considerat pe baza indicatorilor de fiabilitate ai elementelor componente ale sistemului.

Conform celor prezentate în capitolul 2, precum și în capitolul 3, partea de procesare în banda de bază a emițătorului este formată din următoarele blocuri:

procesorul digital de semnal ADSP 2181KS-133;

bloc de filtrare trece-jos;

codec AD1847;

interfață RS-232;

EPROM;

stabilizator de tensiune.

Din punct de vedere al teoriei fiabilității, considerând că defectele au un caracter independent, traseul de prelucrare digitală se poate reprezenta cu o schemă de tip serie conform figurii 6.1, formată din cele șase elemente enumerate mai sus, deoarece defectarea unuia din cele șase blocuri duce inevitabil la nefuncționarea traseului:

Figura 6.1

Se obține, în aceste condiții, expresia fiabilității sistemului serie din figura 6.1 dată de relația [2]:

(6.1)

unde:

– probabilitatea de bună funcționare (fiabilitatea) a traseului de prelucrare digitală;

– probabilitatea de bună funcționare (fiabilitatea) a blocului de filtrare trece-jos;

– probabilitatea de bună funcționare (fiabilitatea) a blocului de conversie A/D și D/A (codecul AD1847);

– probabilitatea de bună funcționare (fiabilitatea) a procesorului de semnal ADSP2181;

– probabilitatea de bună funcționare (fiabilitatea) a stabilizatorului de tensiune;

– probabilitatea de bună funcționare (fiabilitatea) a memoriei EPROM;

– probabilitatea de bună funcționare (fiabilitatea) a interfeței seriale RS-232.

Admițând că probabilitatea de bună funcționare a sistemului definită de relația (6.1) are o distribuție de tip exponențial, aproximare considerată bună în cazul modelării probabilității de bună funcționare a sistemelor la care defectele sunt instantanee și datorate modificării bruște ale condițiilor de sarcină sau de mediu ambiant, se obține:

(6.2)

unde:

– rata defectării blocului i din schema din figura 6.1;

– rata defectării sistemului serie.

Conform relației (6.2), pentru a calcula rata defectării sistemului trebuie calculate anterior ratele de defectare ale elementelor componente ale sistemului. Pentru fiecare din cele șase blocuri componente ale traseului de prelucrare digitală se adoptă tot modelul de tip serie pentru calculul fiabilității fiecărui bloc și corespunzător rezultă valorile pentru rata de defectare a fiecărui bloc din cele șase date de relația (6.3) :

(6.3)

unde:

– rata defectării componentei j a blocului i.

Rata de defectare a componentei j a blocului i, se poate determina, în cazul în care se dețin datele necesare, și din cunoașterea MTBF (timpul mediu de bună funcționare) pe baza relației [3]:

(6.4)

Din păcate, cum am mai spus, firma Analog Devices nu furnizează astfel de date, de aceea calculul efectiv al fiabilității nu a putut fi efectuat. Conform unor recomandări întâlnite deseori în cadrul unor sisteme ce folosesc procesoare de semnal, timpul mediu de bună funcționare (MTBF) al acestora este de peste 500.000 de ore, ceea ce corespunde unei fiabilități foarte bune.

Capitolul VII: Concluzii și propuneri

Având în vedere evoluția explozivă a tehnicii militare cât și civile din domeniul telecomunicațiilor și informaticii, aplicabilitatea sistemelor ce folosesc procesarea digitală de semnal este evidentă, acestea putând realiza un transfer rapid și sigur de informații diverse (voce, date, texte, imagini), răspunzând astfel cerințelor abonaților privind diversificarea serviciilor și asigurarea unei calități deosebite pentru acestea.

Placa de dezvoltare EZ KIT Lite realizată de firma Analog Devices poate fi foarte utilă în studiul procesării digitale de semnal, dar și în crearea unor aplicații, în dezvoltarea unor programe proprii, suplimentare celor furnizate de către firma producătoare. Mai mult, pinii de expansiune sunt un mod foarte util pentru extinderea utilizării plăcii de dezvoltare, pentru introducerea acesteia într-un sistem mai complex.

Procesorul de semnal ADSP 2181 are o frecvență de 33Mhz ceea ce oferă o viteză destul de mare de procesare a datelor. În cadrul acestei lucrări, s-a văzut utilitatea vitezei de procesare prin implementarea fără dificultate filtrelor FIR cu 256 de coeficienți, precum și, în același timp în unele programe, a transformatei Hilbert cu 63 de coeficienți.

Pe măsură ce calculele ce trebuie executate de către procesor pot fi mai laborioase, ”munca” acestuia poate fi mult ușurată prin diverse metode cum ar fi:

folosirea unor tehnici de programare care să elimine calculele inutile;

memorarea anumitor coeficienți ce rămân constanți pe parcursul execuției programului astfel încât procesorul să nu mai fie nevoit să-i calculeze;

așa zisa folosire dinamică a memoriei, adică utilizarea zonelor de memorie care au fost utilizate anterior, iar ceea ce este stocat în ele nu mai este necesar, astfel că refolosind acele zone procesorul să evite supraîncărcarea.

De asemenea, în cazul unor sisteme mai complexe, ce presupun un mare volum de date ce trebuie procesate două dintre soluții ar fi utilizarea unor memorii externe sau folosirea tehnicii multiprocesor, tehnică ce se află în plină dezvoltare și care va constitui, probabil, următorul pas în dezvoltarea procesării digitale de semnal.

Capitolul VIII: Bibliografie

[1] Steven W. Smith – The Scientist and Engineer’s Guide to Digital Signal Processing – second edition – California Technical Publishing, San Diego, California;

[2] Geber T. –Fiabilitatea și mentenabilitatea sistemelor de calcul – Ed. Tehnică, București 1987;

[3] Băjenescu Titu – Fiabilitatea componentelor electronice – Ed. Tehnică, București 1996;

[4] Bălan C. – Tehnica transmisiunilor radio – partea a III-a, Ed. Academiei Militare, București 1989;

[5] Mărgărit L. – Microprocesoare și circuite VLSI – Ed. Academiei Tehnice Militare, București 1999;

[6] ANALOG DEVICES – ADSP-2100 Family User’s Manual – third edition, 1995;

[7] ANALOG DEVICES – ADSP-2181 – Reference Material, 1998;

[8] ANALOG DEVICES – ADSP-2100 Family DSP Aplications, vol 1, 1998;

[9] ANALOG DEVICES – ADSP-2100 Family Assembler Manual, 1991;

[10] ANALOG DEVICES – AD1847 Stereo Codec – Reference Manual, 1998;

[11] Muscă Gh. – Programare în limbaj de asamblare – Ed. Teora, București 1999;

[12] Andrei Ion – Instalații militare de transmisiuni – Transmisiuni radio – vol. 1 – Ed. Academiei Militare, București 1983;

[13] Adelaida Mateescu, Silviu Ciochină, Neculai Dumitru, Alexandru Șerbănescu, Lucian Stanciu – Prelucrarea numerică a semnalelor – Ed. Tehnică, București 1997;

[14] André Quinquis, Alexandru Șerbănescu, Emanuel Rădoi – Semnale și sisteme. Aplicații în Matlab – Ed. Academiei Tehnice Militare, București 1998;

[15] Tatiana Rădulescu – Telecomunicații – Ed. Teora, București 1998;

[16] Gilbert Held – Comunicații de date – Ed. Teora, București 1998;

[17] Scărlătescu M. – Emițătoare Radio, Volumul I – Ed. Academiei Tehnice Militare, București 1997;

[18] Scărlătescu M. – Emițătoare Radio, Volumul II – Ed. Academiei Tehnice Militare, București 1997;

[19] ANALOG DEVICES – EZ-KIT Lite User’s Manual, 1998.

Similar Posts