Procesor Numeric de Semnal. Sisteme Pentru Achizitia Si Prelucrarea Datelor

Memoriu justificativ

De ce utilizăm DSP-ul?

Trăim intr-o lume condusă de informații: științifice, financiare, medicale, sportive și de divertisment. În zilele noastre, informația, fie audio, video sau scrisă este manipulată printr-un mediu unic: tehnologia fără fir, tehnologia sateliților, prin cablu, sau bucle digitale de subscriere. Aceste tipuri de media au un lucru în comun, nevoia de a procesa informația digitală într-un timp cât mai scurt.

Încă de când primul TMS320 DSP a fost introdus, în 1982, Texas Instrumens a continuat să perfecționeze tehnologia digitală de prelucrare a semnalelor si aplicațiile în acest sens până când această familie de procesoare de semnal a devenit un standard în industrie.

Caracteristicile care fac un DSP atât de util sunt:

Operații de multiplicare-acumulare într-un singur ciclu

Viteza mare de lucru

Procesare în timp real, simulare și emulare

Flexibilitate

Crește performanțele sistemului

Preț de cost redus

Iată câteva alternative ale DSP-ului și comparațiile ale acestora cu procesorul de semnal:

1.FPGA(Field-Programmable Gate Arrays) are capabilitatea de a putea fi reconfigurată cu ajutorul unui sistem, ceea ce poate fi un mare avantaj pentru aplicațiile care necesită multiple dezvoltări, în timpi rezonabili. De asemenea oferă o mare performanță pentru operații specifice ale unor circuite logice. FPGA-urile sunt mai scumpe și au o mai mare disipare a puterii decât DSP-urile similare ca și funcționalitate. Chiar și atunci când FPGA-urile sunt alese pentru mai bune performanțe tehnologice, totuși se combină cu DSP-urile pentru a rezulta un preț de cost mai scăzut, o flexibilitate mai mare și o putere scăzută a sistemului

2.ASIC (Application-specific ICs) pot fi utilizate cu succes pentru a realiza funcții specifice. Nu sunt flexibile. Orice nouă versiune a unui produs presupune și o reproiectare. Pe de alta parte DSP-urile programabile pot fi updatate simplu, prin soft.

3.GPP (general-purpose microprocessors)este alegerea cea mai bună pentru îndeplinirea unei arii vaste de task-uri. În aplicații în care este necesară procesarea unor răspunsuri în timp real nu poate face față unui DSP. Acest tip de procesor este văzut, din ce în ce, ca un dinozaur al industriei.

Tehnologia DSP va continua la fel cum instrumentele digitale dedicate Internet-ului vor deveni mai mici, mai rapide și portabile.

It takes a digital signal and processes it to improve the signal. The improvement may be clearer sound, sharper images, or faster data. And that ability to improve signals is making new breakthroughs such as Internet music and broadband to the home possible.

These real-time processors make up the fastest-growing segment of the semiconductor market and are particularly well suited to handle the demands of processing information, whether as the engine of communications applications, by providing the processing platform for the convergence of the internet and wireless applications, or by enabling breakthroughs in medical imaging or performance audio.

CAPITOLUL I

UTILIZAREA SISTEMELOR CU PROCESOR ÎN CONDUCEREA PROCESELOR RAPIDE

I.1.Sisteme,sisteme de timp real.

Evoluția tehnologiei nu numai ca a contribuit la o considerabila diversificare a aplicatiilor,dar a determinat si extinderea atributelor sistemelor de control si conducere automata .Depasirea granițelor tradiționale in domeniu se datorează in egala măsura noilor abordări matematice ,modificărilor de structura ,metodelor de proiectare si elementelor componente utilizate .

In sens larg un sistem este definit ca o entitate in care exista interacțiuni si/sau interdependente intre elementele sau subsistemele componente (Un subsistem este o entitate compusa din mai multe elemente).Studiul proprietatilor acestor elemente precum si a interacțiunilor corespunzătoare, permite determinarea comportării ansamblului. Influentele (concretizate prin semnale ) care isi au originea in afara sistemului ,actioneaza asupra acestuia si nu sunt afectate de modificările care intervin in sistem ,sunt considerate intrări. Mărimile urmărite ,afectate de acțiunea intrărilor si de structura sistemului,constituie ieșirilor acestuia .Semnalele sau variabilele atașate sistemului pot fi: logice, multinivel ,discrete ,continue , stohastice sau fuzzy .

Sisteme continue

Sistemele continue (SC) pot descrise de ecuații algebrice ,obținându-se sisteme continue fară memorie ,sau ecuații diferențiale ,rezultând sisteme continue cu memorie.Schema bloc a unui sistem continuu cu m intrări si q ieșiri ,respective evoluția in timp a mărimilor sale de intrare ,ui si ieșire yj, sunt prezentate in figura 1.1 si 1.2 (Atât mărimile de comanda cat si mărimile perturbatoare sunt considerate mărimi de intrare).

In cazul sistemelor cu memorie ,introducerea mărimilor de stare ,permite descrierea unor fenomene de acumulare care au loc in proces.Daca se notează cu uRm vectorul mărimilor de intrare ,cu yRq vectorul mărimilor de ieșire si cu xRn vectorul mărimilor de stare ,modelul dinamic al sistemului este dat de relațiile :

x = f(x , u ,t)

y = g(x , t)

unde f si g sunt funcții continue (f: R x Rn x Rm Rn si g: R x Rn Rq )

Sisteme cu timp discret

Intr-un sistem cu eșantionare ,informația primita se prezintă sub forma de impulsuri ,care in general ,pot fi furnizate cu o perioada variabila .In aplicațiile curente eșantionarea este insa uniforma ,intervalul dintre doua impulsuri consecutive numit tact ,sau perioada de eșantionare (T) fiind constant.

Procesul de eșantionare poate fi reprezentat printr-o activitate fictiva,care transforma un semnal continuu intr-un tren de impulsuri modulate in amplitudine. Sistemele cu timp discret (STD) sau sisteme discrete rezulta de cele mai multe ori din discretizarea sistemelor continue. Apare astfel o conversie a semnalelor continue in semnale discrete pentru realizarea căreia sunt utilizate convertoare analog-numerice (CAN).Pentru transformarea semnalelor numerice in semnale analogice se utilizează convertoare numeric –analogice (CNA).

Estimarea funcția inițiale intre doua momente de eșantionare consecutive se poate realiza cu un explorator de ordin zero ,care menține valoarea testării precedente in cursul unei perioade de eșantionare este descrisa de :

x(k+1) = f [k, x(k), u(k)]

y(k) = g[x(k), u(k)]

kZ –mulțimea numerelor întregi .

Sistemele discrete descrise prin modelul de mai sus sunt sisteme discrete cu memorie, comportarea sistemelor discrete fără memorie fiind data de :

y(k)= f(u(k))

Uzual, controlul sistemelor discrete este realizat cu calculatoare ,automate programabile, DSP-uri etc., semnalul eșantionat fiind apoi cuantificat. În figura 1.4 sunt prezentate procesul de eșantionare si procesul de cuantificare a unui semnal analogic x(t).Sunt reprezentate 3 niveluri de cuantificare .Fiecărei valori eșantionate a semnalului analogic ii este atribuita valoarea inferioara a nivelului de cuantificare ,cea mai apropiata de valoarea reală a eșantionului. Cuantificarea apare in cadrul conversiei analog-numerice ,a celei numeric-analogice si in calculator, determinând o anumita pierdere a preciziei.

Sisteme cu evenimente discrete

Domeniul actual de cercetare, teoria sistemelor cu evenimente discrete se dezvoltă pe baza descoperirii unor principii fundamentale, care își găsesc utilitatea într-o gamă largă de aplicații. Sistemele cu evenimente discrete (SED)implică descrierea unor operații precum concurența, paralelismul sau sincronismul. SED de deosebesc în mod esențial de celelalte categorii de sisteme prin două caracteristici majore:

Comportarea lor dinamică este determinată de producerea (realizarea) unor evenimente și nu antrenată de timp, ca în cadrul altor categorii. În cazul sistemelor continue, acțiunile de control sunt permanente, continue în timp, iar în cazul sistemelor cu timp discret, au loc la momente bine precizate de timp. Evenimentele pot fi considerate apăsarea unui buton, extragerea unei piese dintr-un container, defectarea imprevizibilă a unui calculator, sau depășirea unei anumite valori a mărimii urmărite. Un eveniment nu are durată.

Cel puțin o parte a variabilelor care descriu sistemul, sunt cuantificate; un exemplu de astfel de variabile îl constituie descriptorii de stare ai unei resurse (activ, inactiv, sus, jos etc.).

O observație importantă o constituie faptul că, în funcție de scopul urmărit și de performanțele impuse, pentru un anumit proces pot fi luate în considerare modele aparținând oricăreia din categoriile de sisteme prezentate. Teoretic se consideră că trecerea de la o stare la alta este bruscă, deși, practic poate să dureze un interval de timp.

În consecință, sistemele cu evenimente discrete pot aproxima mai mult sau mai puțin exact, sistemele continue.

Sisteme de timp real

Un sistem de timp real este acela care își realizează funcțiile și răspunde la evenimente sincrone sau asincrone, interne și externe până la momente de timp care satisfac cerințele utilizatorilor.

În funcție de aplicații, caracterizarea uni sistem ca fiind de timp real depinde de mai mulți factori (parametri, algoritmi sau moduri de implementare) ce determină comportarea lui, printre care:

viteza de calcul a procesorului(sau procesoarelor), sau în general viteza sistemului de calcul;

algoritmi aleși pentru conducere;

performanțele sistemului de operare;

modul de implementare a algoritmilor de conducere;

cerințele temporale impuse ansamblului subsistem condus-sistem de conducere etc.

În general, calculatorul, trebuie să efectueze mai multe sarcini.

Fig. 1.5. Structura unui sistem de timp real

Se observă din, figură că este o structură în buclă închisă. De obicei senzorii sunt conectați la interfețe active, iar traductoarele la interfețe pasive.

I.1.2.Arhitectura calculatoarelor pentru procese de timp real

În fig. 1.6 se prezintă arhitectura calculatorului destinat aplicațiilor de timp real .

Fig.1.6 Schema bloc a unui procesor pentru procese de timp real

Caracteristic calculatoarelor pentru timp real este existența dispozitivelor de temporizare hardware.

I.1.3.Parametrii temporali ai secvențelor de răspuns

Se definesc următorii parametri:

tar-timpul de sosire

trd-timpul gata de execuție

tst-timpul de startare

tcm-timpul de terminare

tdd-timpul de răspuns

Twt-durata de așteptare Twt = trd – tar

Tex-durata de execuție Tex = tcm – tst

Tlx-durata timpului liber

Trs-durata timpului pentru răspuns

Tae-durata de timp consumată pentru execuție

Trp-durata rămasă pentru execuție Trp = tcm – tae

Tpr-durata de producere a evenimentului

Tdd-durata admisă până la terminarea taskului Tdd = tdd – tar

I.1.4.Tipuri de sisteme de timp real

Prin implementarea cerințelor temporale se obțin constrângeri temporale.Acestea sunt:

constrângeri hard de timp real

constrângeri soft de timp real

constrângeri ferme de timp real

În funcție de tipul de constrângeri care se cer și sunt respectate există:

sisteme de timp real hard

sisteme de timp real soft

sisteme de timp real ferme

Sistemele din prima categorie trebuie să răspundă la evenimente, obligatoriu, în intervale de timp impuse prin constrângere(adică nu depășesc timpul pentru răspuns), iar cele din cea de a doua categorie răspund cu o frecvență medie minimă dată.

I.2.Necesitatea trecerii la conducerea numerică a proceselor

Fidelitatea și precizia reglării analogice se poate dovedi insuficientă în anumite aplicații când se cer performanțe foarte ridicate (de ex. laminoare multicajă). De fapt un tahogenerator, chiar de bună calitate, utilizat intr-o plajă mare de viteze pierde din precizie și liniaritate la viteze mici. Deriva amplificatoarelor operaționale o antrenează pe aceea a parametrilor aserviți. Aducerea la scară și transmiterea pe cale analogică a semnalelor de referința este însoțită de derive și imprecizia elementelor analogice utilizate (potențiometre, A.O., impedanțe de scăpări ale cablajelor, etc.). În fine complexitatea realinde de mai mulți factori (parametri, algoritmi sau moduri de implementare) ce determină comportarea lui, printre care:

viteza de calcul a procesorului(sau procesoarelor), sau în general viteza sistemului de calcul;

algoritmi aleși pentru conducere;

performanțele sistemului de operare;

modul de implementare a algoritmilor de conducere;

cerințele temporale impuse ansamblului subsistem condus-sistem de conducere etc.

În general, calculatorul, trebuie să efectueze mai multe sarcini.

Fig. 1.5. Structura unui sistem de timp real

Se observă din, figură că este o structură în buclă închisă. De obicei senzorii sunt conectați la interfețe active, iar traductoarele la interfețe pasive.

I.1.2.Arhitectura calculatoarelor pentru procese de timp real

În fig. 1.6 se prezintă arhitectura calculatorului destinat aplicațiilor de timp real .

Fig.1.6 Schema bloc a unui procesor pentru procese de timp real

Caracteristic calculatoarelor pentru timp real este existența dispozitivelor de temporizare hardware.

I.1.3.Parametrii temporali ai secvențelor de răspuns

Se definesc următorii parametri:

tar-timpul de sosire

trd-timpul gata de execuție

tst-timpul de startare

tcm-timpul de terminare

tdd-timpul de răspuns

Twt-durata de așteptare Twt = trd – tar

Tex-durata de execuție Tex = tcm – tst

Tlx-durata timpului liber

Trs-durata timpului pentru răspuns

Tae-durata de timp consumată pentru execuție

Trp-durata rămasă pentru execuție Trp = tcm – tae

Tpr-durata de producere a evenimentului

Tdd-durata admisă până la terminarea taskului Tdd = tdd – tar

I.1.4.Tipuri de sisteme de timp real

Prin implementarea cerințelor temporale se obțin constrângeri temporale.Acestea sunt:

constrângeri hard de timp real

constrângeri soft de timp real

constrângeri ferme de timp real

În funcție de tipul de constrângeri care se cer și sunt respectate există:

sisteme de timp real hard

sisteme de timp real soft

sisteme de timp real ferme

Sistemele din prima categorie trebuie să răspundă la evenimente, obligatoriu, în intervale de timp impuse prin constrângere(adică nu depășesc timpul pentru răspuns), iar cele din cea de a doua categorie răspund cu o frecvență medie minimă dată.

I.2.Necesitatea trecerii la conducerea numerică a proceselor

Fidelitatea și precizia reglării analogice se poate dovedi insuficientă în anumite aplicații când se cer performanțe foarte ridicate (de ex. laminoare multicajă). De fapt un tahogenerator, chiar de bună calitate, utilizat intr-o plajă mare de viteze pierde din precizie și liniaritate la viteze mici. Deriva amplificatoarelor operaționale o antrenează pe aceea a parametrilor aserviți. Aducerea la scară și transmiterea pe cale analogică a semnalelor de referința este însoțită de derive și imprecizia elementelor analogice utilizate (potențiometre, A.O., impedanțe de scăpări ale cablajelor, etc.). În fine complexitatea realizării devine prohibitivă de îndată ce se părăsește domeniul regulatoarelor clasice (PID). Chiar și în aceste situații obținerea derivatei poate reprezenta o problemă iar derivata de ordin doi este practic imposibil de obținut pe cale analogica.

Un exemplu tipic îl constituie acționările de avansuri pentru mașini-unelte unde se cer performante dinamice si precizii ridicate. Până acum câțiva ani acest domeniu a fost rezervat exclusiv motoarelor de c.c. care erau singurele ce puteau fi controlate analogic cu performanțele impuse. Chiar și pentru acestea structura echipamentului era mult mai complexă, fiind necesare blocuri suplimentare pentru funcționarea în patru cadrane, compensarea efectelor date de regimul de curent întrerupt la viteze mici etc. În acționările de c.a. echipamentele analogice sunt utilizate pentru comanda la U/f = constant sau cu autopilotare.

Avantajele comenzii numerice pot fi definite astfel: nu are inconvenientele citate pentru comanda analogică și permite realizarea de funcții complexe sub formă compactă. Pentru precizie mare, măsurarea numerica este mai puțin costisitoare decât cea analogica. Transmiterea numerica a rezultatelor este mai sigură și păstrarea acestor rezultate pentru durate mari de timp este ușor de realizat. Dar aici proiectantul se lovește de inconvenientele comenzii numerice: necesitatea de a efectua calcule care nu pot fi realizate instantaneu, ceea ce creează întârzieri, precum și probleme specifice legate de cuantificare. Evoluția circuitelor VLSI a făcut ca si aceste probleme sa poată fi soluționate mai ales după apariția procesoarelor digitale de semnale (DSP). O comparație între cele doua modalități de reglare, analogică și digitală este prezentată în Tab. 1-1. Mult timp tehnica reglării analogice a fost cea care s-a impus deoarece era singura care asigura vitezele de răspuns pentru buclele de reglare. De asemeni economic era imposibil de utilizat un microcalculator sau regulator numeric pentru fiecare buclă. Limita de rapiditate pentru un sistem de acționare,spre exemplu, este fixată de posibilitățile elementelor de putere (eșantionare convertor, gradient de curent in motor limitat). Aceasta limită este finită și un timp de răspuns de 80-100 ms pentru o reglare de viteză constituie un minim posibil. Astăzi este posibil de obținut aceste performanțe intr-o manieră economică utilizând sisteme cu microprocesor sau DSP

Tab. Eroare! În document nu există text cu stilul precizat.-1 Caracteristici comparative ale sistemelor de comandă analogice și numerice

Comanda și reglarea numerică a acționărilor electrice permite ca ansamblul sistemului de automatizare să fie tratat în aceeași manieră prin microinformatică. Conversiile A/D – D/A costisitoare si surse de derive și imprecizie sunt reduse chiar suprimate. Se stabilește o unitate tehnologica de sus până jos în ansamblul sistemului de automatizare permițând conservarea aceluiași mod de reprezentare si tratare a informației, reducerea interfețelor și punerea în comun a cuploarelor de I/E.

I.3.Evoluția conceptului de conducere numerică

Din punct de vedere istoric conceptul de comandă numerică apare ca o etapă calitativ superioară în evoluția conceptelor de comandă după program și comandă cu copiere utilizate în automatizarea mașinilor-unelte. În acest context, comanda numerică a fost definită ca fiind un procedeu de comandă automată ce permite poziționarea sau ghidarea unui organ mobil în orice moment al mișcării în funcție de coordonatele lui, coordonate ce definesc gradele de libertate ale mobilului. Evoluția conceptului de conducere numerică nu poate fi privită doar prin prisma evoluției echipamentelor de comandă numerică (ECN) a mașinilor-unelte. Ea trebuie încadrată în evoluția de ansamblu a echipamentelor și conceptelor de automatizare care este prezentată în Fig. 1-2. Trecerea de la echipamentele de automatizare convenționale la cele realizate în tehnologie digitală (automat programabil, calculator de proces) marchează și trecerea de la conducerea locală a proceselor la conducerea centralizată. Convertirea mărimilor din proces în valori discrete, prelucrarea numerică a acestora și conversia rezultatelor în mărimi continue în vederea acționării elementelor de execuție poate reprezenta o altă definiție posibilă pentru comanda numerică.

Interacțiunea între procesele continue și cele de natură discretă a impus tratarea lor în ansamblu ca procese hibride (denumite de automatiști ca sisteme continue cu evenimente discrete). În aceeași direcție au evoluat și echipamentele, automatele programabile fiind dotate cu regulatoare numerice și sisteme de achiziție și conversie. Popularitatea căpătată de microcalculatoarele de tip PC a făcut ca acestea să se impună și în aplicațiile industriale sub denumirea de PC-uri Industriale (IPC). Acestea sunt arhitecturi de tip PC – în execuție corespunzătoare normativelor industriale – dotate cu interfețe specializate pentru conducerea proceselor. Apariția microcontrolerelor a făcut ca funcțiile de conducere la nivel local să fie transferate unor sisteme de comandă aflate în imediata apropiere a elementelor de execuție. Noile structuri au căpătat denumirea de controlere încorporate (Embedded Control System) și au marcat trecerea la conducerea distribuită.

Echipamentele de comandă ale acționărilor electrice au cunoscut aceleași etape evolutive (Fig. 1-3) dar necesitatea unei tratări sistemice face dificilă încadrarea acestora în modelele generale ale echipamentelor de automatizare.

Chiar dacă procesul reglat (motor-convertor) are o natură continuă constantele de timp asociate fac ca procedeele de implementare specifice calculatoarelor de proces să nu mai fie eficiente. Comanda convertorului se face cu impulsuri discrete dar frecvența de comutație face ca tehnicile de tip AP să nu poată fi utilizate.

În esență sistemele de reglare pentru acționările electrice au o structură în cascadă. Datorită restricțiilor impuse de funcționarea în timp real, tehnicile numerice au pătruns în structura de reglare de la buclele exterioare spre cele interioare. Un exemplu tipic îl constituie echipamentele de comandă numerică a mașinilor-unelte care implementează numeric bucla de poziție și, prin intermediul convertorului numeric-analogic transmit referința de viteză către echipamentul de acționare. Următorul pas evolutiv îl constituie implementarea numerică a regulatorului de viteză, în special în aplicații la care se cerea o mare stabilitate a vitezei în regim staționar. Această variantă mai este utilizată în acționările de mică putere unde controlul curentului se face la nivelul circuitului de generare a impusurilor de comandă. Controlul curentului a putut fi implementat numeric numai după introducerea microprocesoarelor puternice și mai ales a procesoarelor numerice de semnale (DSP).

CAPITOLUL II

PROCESOARE NUMERICE DE SEMNAL

II.1. Descrierea generală a unui procesor numeric de semnal(DSP)

Proiectate inițial pentru aplicații audio/video precum codări și recunoașteri de imagini procesoarele numerice de semnal (DSP) și-au găsit aplicabilitatea și în domeniul controlului proceselor rapide. Sistemele de comandă numerică bazate pe DSP-uri, sunt perfect adaptate controlului aplicațiilor de mare viteză Arhitectura de principiu a unui astfel de sistem este prezentată în figura 3.

Arhitectura de tip Harward, ce asigură căi separate pentru cod și date, permite procesări simultane de date și instrucțiuni facilitând utilizarea tehnicilor pipe-line.

Unitatea ALU a unui DSP este caracterizată de existența unui multiplicator hardware ceea ce permite efectuarea unei operații de tip MAC (Multiply and Accumulate) pe durata unui singur ciclu instrucțiune, aspect deosebit de important în implementarea algoritmilor de prelucrare a semnalelor. O îmbunătățire importantă adusă odată cu folosirea DSP-urilor este și existența unui set de instrucțiuni orientat spre tehnicile specifice procesării semnalelor. Astfel dimensiunea programului și timpul de calcul se reduc considerabil.

Arhitectura DSP-urilor a cunoscut modificări importante, de fapt perfecționări plus completări cu implementări de noi funcțiuni. Dacă spre exemplu primul procesor al firmei Texas Instruments, TMS320C10 conținea doar unitatea CPU, RAM pentru date, ROM pentru programe și porturi I/O, unul dintre ultimele procesoare în virgulă fixă venit în cadrul familiei, TMS320C54, conține unitatea CPU, RAM pentru date și pentru programe, ROM pentru programe, porturi I/O, ceas programabil, port serial full-duplex, opțiune pentru Boot ROM, posibilitate de a adresa un spațiu mai mare de memorie exterioară și altele. Adăugând la toate aceste aspecte și faptul că timpul pe ciclu instrucțiune a fost micșorat de la 160 ns la 25ns, ne putem da seama cât de largă este gama de procesoare de semnal disponibile la această oră. Facilitățile de control ale întreruperilor sunt destul de limitate în cazul procesoarelor DSP. În aceste condiții este necesar a se prevedea un hard suplimentar, care să poată permite programului. aplicației să depisteze rapid cine a cerut o întrerupere și să stabilească matricea priorității de tratare a întreruperilor, dacă este cazul.

II.2. Categorii de procesoare numerice

După arhitectură și modul de funcționare al unității de comandă procesoarele pot fi împărțite in categoriile CISC, RISC si DSP. n continuare vom încerca să comparăm cele trei arhitecturi amintite:

CISC – complex instruction set computer

Setul de instrucțiuni este implementat prin microcod permițând instrucțiuni foarte complexe.

Timpul de execuție depinde de comanda sau de secvența de microcod ce trebuie executată si necesită mai multe cicluri de ceas.

Se pot utiliza compilatoare dar in conducerea proceselor rapide acestea nu sunt foarte eficiente deoarece compilatorul nu poate exploata avantajul modurilor de adresare si al seturilor de instrucțiuni foarte complexe.

Se interfațează ușor cu periferice specifice aplicațiilor de conducere ca: temporizator, ceas de gardă, modulator PWM, UART, convertoare A/N și N/A, etc.

Microprocesoarele (CISC) sunt cele mai ieftine si mai flexibile procesoare dar și cele mai lente.

RISC – reduced instruction set computer

Arhitectură de tip load-store:

Operațiile de bază sunt efectuate între registre

Operațiile ce implică transfer cu memoria sunt efectuate după ce data a fost încărcată într-un registru

Incorporează structuri pipe-line care permit execuția câtorva instrucțiuni in paralel, conducând la reducerea semnificativă a timpilor de execuție (de regulă o instrucțiune pe ciclu de ceas). Structura pipe-line permite ca în același moment în procesor să se execute mai multe instrucțiuni aflate în faze diferite. Majoritatea sistemelor RISC sunt organizate pe 5 nivele, permițând execuția simultană a 5 instrucțiuni.

IF (Instruction Fetch) extrage instrucțiunea din memorie

ID (Instruction Decode) decodifică instrucțiunea extrasă anterior

EX efectuează operațiile asupra datelor și calculează adresele conform decodificării anterioare

MA (Memory Access) accesează data din memorie în cazul instrucțiunilor care implică transfer cu memoria

WB (Write Back) scrie rezultatul în memorie la adresa specificată

Foarte multe controlere RISC au adoptat arhitecturi de tip Harward având spații separate pentru adrese și date. În acest fel structura se reduce la 4 nivele, extragerea operanzilor fiind efectuată în paralel cu decodificarea instrucțiunii: IF, ID, EX, WB.

Au un set de instrucțiuni mic dar foarte eficient.

De regulă setul de instrucțiuni este codificat hard (prin PLA) pentru a optimiza timpul de execuție

Setul de instrucțiuni este ortogonal (format fix – modurile de adresare și tipurile de date sunt specificate independent pentru fiecare instrucțiune)

Tipurile de date și modurile de adresare alese pentru a genera ușor cod optimizat cu ajutorul compilatorului.

Pentru a nu corupe contextul pipe-line la execuția instrucțiunilor de ramificare foarte multe procesoare au instrucțiuni de salt necondiționat întârziate – adică întâi se execută instrucțiunea aflată după instrucțiunea de ramificare.

Posedă seturi mari de registre, comutabile, asigurând latență mică la întreruperi. Incorporează structuri hard, dedicate pentru implementarea facila a sistemelor de operare (UNIX sau similare).

Prețul circuitelor si al instrumentelor de dezvoltare, in special, le fac mai puțin accesibile.

DSP – digital signal processor

Setul de instrucțiuni codificat hard, optimizat pentru operații matematice si manipulări de șiruri de date.

Se executa o instrucțiune pe ciclu, în plus o instrucțiune poate defini câteva operații.

Exista compilatoare (C sau PL/M) dar programarea cea mai eficienta se face tot în limbaj de asamblare.

Au căi separate pentru date și program pentru creșterea vitezei. Multiplicatorul hard permite realizarea unei înmulțiri intr-un ciclu mașina.

Inițial procesoarele RISC sau DSP au fost utilizate pentru aplicații speciale Din punctul de vedere al integrării componentelor de sistem procesoarele pot fi considerate ca fiind de tip microprocesor sau microcontroler. Diferitele câmpuri de aplicații reclamă utilizarea unor procesoare diferite. În funcție de tipul de procesor se pot particulariza și arhitecturile tipice.

II.3. Familia TMS320

Prelucrarea numerică a semnalelor este unul din cele mai dinamice domenii ale electronicii atât din punct de vedere tehnologic cât și economic. După o statistică a firmei Forward Concept Co., pe piața cipurilor dedicate acestui domeniu lider mondial este Texas Instruments(57%)din vânzări.

În 1982, când TI lansa primul său procesor de semnal, TMS32010, era pionier în domeniu. Apoi a impus un ritm accelerat de evoluție a noii familii. Aceasta se datorează nu numai aplicării celor mai avansate arhitecturi și tehnologii, ci și suportului eficient și complex

creat și oferit pentru fiecare procesor DSP, care cuprinde: sisteme de dezvoltare hardware și software de înaltă calitate, asistență tehnică permanentă prin telefon sau direct la utilizator, buletine de informații, cărți și note de aplicații, un volum impresionant de cod sursă oferit gratuit.

Familia TMS320 a firmei Texas Instruments cuprinde procesoare numerice de semnal single-chip în virgulă fixă, pe 16 biți și în virgulă flotantă, pe 32 de biți.

TMS320 este un acronim pentru toată familia de DSP-uri a firmei Texas Instruments, familie care cuprinde patru categorii de produse, împărțite pe mai multe generații:

procesoare pe 16 biți în virgulă fixă: ’C1x, ’C2x, ’C2xx, ’C5x, ’C54x și ’C62x(32 biți);

procesoare pe 32 de biți în virgulă mobilă: ’C3x, ’C4x, ’C67x;

DSP multiprocesor ’C8x(cu 4 procesoare numerice de semnal și unul RISC);

Procesoare dedicate ’AVxxx.

Flexibilitatea funcțională și posibilitățile deosebite de calcul numeric fac din membrii familiei TMS320 alternative necostisitoare ale procesoarelor bit-slice sau ale celor VLSI fabricate la comandă. Această familie este ideală pentru o gamă largă de aplicații datorită următoarelor calități:

arhitectură paralelă avansată;

execuție de mare viteză;

set de instrucțiuni foarte flexibil;

flexibilitate funcțională;

cost eficient.

Toate generațiile familiei TMS320 au un grad superior de paralelizare a funcționării și seturi de instrucțiuni specializate pentru prelucrarea numerică a semnalului, oferind posibilitatea execuției de până la 50 MFLOP(milioane de operații flotante pe secundă) sau 275 MOPS(milioane de operații pe secundă) cu variantele monoprocesor și peste 2000 MOPS cu cel mai performant membru al familiei, multiprocesorul TMS320C80.

Optimizarea vitezei de funcționare a familiei TMS320 s-a obținut prin implementarea hardware a unor funcții implementate software sau microcod la alte familii de microprocesoare.

Fiecare generație de monoprocesoare a familiei TMS320 are un nucleu de unitate centrală și mai multe configurații de memorie și periferice integrate în cip, realizate astfel încât să poată să satisfacă o gamă cât mai largă de necesități performanță-preț.

Fiecare membru al familiei este însoțit de un larg evantai de instrumente de dezvoltare, de la seturi de evaluare până la sisteme hardware și software complexe ce cuprind: compilatoare optimizatoare pentru limbaje de nivel înalt, depanatoare la nivel de limbaj sursă(C sau asamblare), simulatoare, emulatoare, sisteme de operare în timp real și software de aplicație.

II.4. Procesoare numerice de semnale în virgulă fixă TMS320C2x

II.4.1. Descriere

Familia TMS320 de procesoare numerice de semnale (16 sau 32 biți) combină într-un singur cip flexibilitatea specifică controlerelor de mare viteză cu puterea de calcul a unui procesor. DSP de înaltă performanță TMS320C2x, la fel cu circuitul TMS320C1x, este implementat printr-o arhitectură de tip Harvard, care maximizează puterea de procesare prin menținerea a 2 magistrale separate pentru cele 2 structuri de memorie, de programe și de date, pentru o execuție la viteza maximă. Instrucțiunile sunt realizate astfel încât să permită transferul de date între cele două spații. Extern, memoriile de date și programe sunt multiplexate pe aceeași magistrală, astfel încât să se asigure rangurile maxime pentru adrese pentru ambele spații în timp ce numărul pinilor circuitului este minim. Generația 'C2x a debutat cu TMS32020 în tehnologie NMOS care a fost perfecționat și trecut în tehnologie CMOS, noul produs fiind botezat TMS320C25 (vezi schema bloc simplificată din fig. 1. La o frecvența tipică de 40MHz procesorul are un ciclu de instrucțiune de 100 ns.

TMS320C26 are numai 256W ROM în care este implementat un încărcător de inițializare (Boot ROM), dar dispune de 1536W RAM Date/Program (B0, B1, B3) și 32 W RAM Date (B2).

Flexibilitatea ridicată a proiectării sistemului este asigurată prin 2 blocuri de memorie RAM pe circuit(în total 544 de cuvinte pe 16 biți), fiecare fiind configurabil fie ca memorie de program, fi ca memorie de date. Un spațiu de adresare pentru 64K-cuvinte de memorie de date(în afara circuitului) este inclus ca o facilitate pentru implementarea algoritmilor pentru DSP.

Programele până la 4K-cuvinte pot fi programate în memoria internă ROM. Restul de 64Kcuvinte de memorie program sunt situate extern.

TMS320C2x realizează operații aritmetice în complement față de 2 folosind ALU de 32 de biți și acumulatorul(ACC). ALU este o unitate aritmetică de uz general, care operează folosind cuvinte pe 16 biți preluate din memoria RAM de date sau derivate din instrucțiunile imediate sau folosind rezultatul pe 32 de biți al registrului multiplicator. Pe lângă instrucțiunile aritmetice uzuale, ALU poate realiza operații booleene, permițând manipulări de bit cerute de un controler de mare viteză. Acu mulatorul stochează rezultatul de la ieșirea ALU și este totodată a 2-a intrare în ALU.

Multiplicatorul realizează o înmulțire 16X16 biți în complement față de 2, cu rezultatul pe 32 de biți, într-un singur ciclu instrucțiune. Multiplicatorul este format din 3 elemente: registrul T(pe 16 biți, stochează temporar multiplicatorul), registrul P(pe 32 biți, stochează produsul) și aria de multiplicatoare. Valorile de înmulțit vin fie din memoria de date, fie din memoria program când se folosesc instrucțiunile MAC/MACD fie derivă imediat din instrucțiunea MPYK(multiply imediate).Multiplicatorul de mare viteză de pe circuit permite realizarea eficientă a operațiilor fundamentale ale procesării de semnal: convoluția, corelația și filtrarea.

Circuitul de deplasare și scalare a lui TMS320C2x are o intrare pe 16 biți legată la magistrala de date și o ieșire pe 32 de biți legată la ALU. El produce o rotire la stânga cu 0-16 poziții a datelor de intrare, după cum este programat prin instrucțiune.

Interfața pentru memoria locală a lui TMS320C2x este formată dintr-o magistrală de date paralelă pe 16 biți(D15-D0), o magistrală de adrese pe 16 biți(A15-A0), 3 pini pentru selecția memoriei de date sau de program, sau pentru selectarea spațiului de I/O(DS\, PS\, IS\), și alte semnale de control(/STRB, R/W\, READY).

Operațiile de control pot fi asistate în TMS320C2x de către un circuit timer intern pe 16 biți cu registre mapate în memorie, un numărător de repetări, 3 întreruperi externe mascabile pentru utilizator și întreruperi interne generate de operațiile portului serial sau de către timer.

Un port serial full-duplex realizează comunicarea directă cu circuitele seriale cum sunt: codecurile, covertoarele seriale A/D si alte circuite seriale. Cele două registre ale portului serial mapate în memorie (dat transmisie/recepție) pot opera atât în modul octet cât si modul cuvânt.

Comunicațiile seriale între procesoare pot fi folosite în aplicații de multiprocesare. TMS320C2x are posibilitatea de a aloca un spațiu global de memorie de date și de a comunica cu acest spațiu prin semnalele BR\ (bus request) și semnalul de control READY. Există un registru mapat în memorie pe 8 biți numit GREG(global memory allocation register) care indică modul de alocare al memoriei globale. Un alt procesor poate prelua controlul asupra memoriei externe a lui TMS320C2x trecându-l pe HOLD\ în low.

La TMS320C25 sunt disponibile 2 moduri de funcționare: modul asemănător lui TMS32020, în care execuția este suspendată cât timp HOLD\=L și modul DMA, în care TMS320C25 continuă să execute programul său, în timp ce se operează din memoria RAM sau ROM internă, mărindu-se astfel eficiența în aplicații cu prelucrare intensivă.

Descrierea semnalelor

TMS 320C25 (26) sunt încapsulate in capsule de material plastic cu 68 de terminale de tip PLCC (Plastic Leaded Chip Carrier) sau PGA (Pin Grid Area). Asignarea pinilor pentru capsula PLCC este prezentată în Fig. 2.

(semnal de: Z-înaltă impedanță, E-iesire, I-intrare)

Magistralele de adrese și de date

A15 … A0 : E, Z

Magistrala de adrese A15 MSB … A0 LSB. Este multiplexată pentru a adresa memoria externă de date/program sau porturile I/E . În modul HOLD liniile A15…A0 trec în înaltă impedanță

D15 … D0 : I/E, Z

Magistrala de date D15 MSB … D0 LSB. Este multiplexată pentru a transfera datele între TMS320C2x și memoria externă de date/program sau porturile I/E . Plasată în înaltă impedanță când nu se scot date în exterior, sau când este activat unul din semnalele /RS sau /HOLD .

Semnale pentru controlul transferului

/DS, /PS, /IS : E, Z

Semnale pentru selecția spațiilor de memorie date, program, respectiv porturi I/E. Sunt tot timpul în "high", nivelul "low" indicând selectarea unui anumit spațiu extern. .

READY : I

Semnal de intrare ce indică faptul că circuitul extern adresat este capabil pentru efectuarea unui transfer pe magistrală. Dacă dispozitivul extern nu este gata (READY = 0), TMS320C2x așteaptă un ciclu, apoi testează din nou semnalul READY. De asemenea READY indică acceptarea unui acces la magistrala unui dispozitiv extern după un semnal /BR.

R/W : E, Z

Semnal citire/scriere ce indică direcția transferului în cazul comunicației cu un dispozitiv extern. În mod normalul semnalul este în "high" (mod citire), nivelul "low" indicând o operație de scriere. În modul HOLD este plasat în înaltă impedanță.

/STRB : E, Z

Semnal de strob (validare. În mod normalul este în "high", nivelul "low" indicând un ciclu extern de magistrală. În modul HOLD este plasat în înaltă impedanță.

Semnale pentru sisteme multiprocesor

/BR: E

Semnal de cerere a magistralei. Este activat când TMS320C2x solicită accesul la un spațiu din memoria de date externă globală. Semnalul READY va fi activat de dispozitivul extern pentru a indica disponibilitatea memoriei globale de date și a magistralei externe pentru efectuarea transferului.

/HOLD: I

Intrare de oprire. Când semnal este activat TMS320C2x plasează liniile de adrese, date și control în înaltă impedanță.

/HOLDA: E

Semnal de confirmare oprire. Indică faptul că TMS320C2x a trecut în starea hold și dispozitivul extern poate accesa memoria externă locală a lui TMS320C2x.

/SYNC: I

Intrare de sincronizare. Permite sincronizarea ceasului a două sau mai multor circuite TMS320C2x. /SYNC este un semnal activ "low" și trebuie activat pe frontul crescător al CLKIN.

Semnale de întrerupere și alte semnale

/BIO: I

Intrare de control a salturilor prin program. Este interogat de instrucțiunile BIOZ. Dacă /BIO este "low" se execută saltul. Acest semnal trebuie să fie activ pe durata ciclului de extragere a instrucțiunii BIOZ când TMS320C2x solicită accesul la un spațiu din memoria de date externă globală. Semnalul READY va fi activat de dispozitivul extern pentru a indica disponibilitatea memoriei globale de date și a magistralei externe pentru efectuarea transferului.

/INT2, /INT1, /INT0: I

Intrări externe de întrerupere. Pot fi ierarhizate și mascate prin registrul de mascare a întreruperilor și bitul modului de întrerupere.

/IACK: E

Semnal de acceptare a întreruperilor. Ieșirea este validă numai pe durata cât CLKOUT1 este "low". Indică recepționarea unei întreruperi și faptul că programul se va ramifica la locația vectorului de întreruperi desemnat de A15…A0.

XF: E

Semnal de ieșire (bistabil de condiție) ce poate fi programat soft. Utilizat ca semnal de comunicație în sisteme multiprocesor sau ca linie de ieșire de uz general.

MP/MC: I

Intrare de selecție mod microprocesor/microcalculator.Când este trecut în "low" memoria ROM internă este plasată în harta memoriei în primii 4K de adrese (000…3FF). În mod microprocesor primii 4K de memorie program sunt mapați în memoria externă.

/MSC: E

Semnal terminare microstare. Este activat "low" și valid doar pe durata cât CLKOUT1 este "low" când TMS320C2x a terminat o operație cu memoria, de exemplu un ciclu de extragere cod operație sau un ciclu de citire/scriere din/în memora de date . /MSC poate fi utilizat pentru a genera o stare de așteptare (prin conectare la pinul READY) în cazul lucrului cu memorii lente.

/RS: I

Intrare de inițializare, activă "low". Determină TMS320C2x să termine execuția instrucțiunii în curs și forțează numărătorul de program în 0. Când este readus în starea "high" execuția începe de la locația zero a memoriei program. /RS afectează diverse registre și biți de stare.

Semnale de alimentare și semnale de ceas

Vcc: 4 pini de alimentare cu +5V conectați împreună în exterior

Vss: 3 pini de masă conectați împreună în exterior.

X1: E

Pinul de ieșire al oscilatorului intern utilizat pentru conectarea cristalului. Dacă nu se utilizează un cristal acest pin trebuie să rămână neconectat.

X2/CLKIN: I

Pinul de intrare al oscilatorului intern utilizat pentru conectarea cristalului. Dacă nu se utilizează un cristal la acest pin se conectează semnalul de ceas.

CLKOUT1: E

Semnal de ieșire ceas principal (master clock). Are frecvența ¼ din frecvența ceasului de intrare. Trece în "high" la începutul fazei 3 (Q3) și revine în "low" la începutul fazei 1 (Q1).

CLKOUT2: E

Semnal de ieșire ceas secundar. Trece în "high" la începutul fazei 2 (Q2) și revine în "low" la începutul fazei 4 (Q4).

Semnale pentru portul serial

CLKR: I

Intrare de ceas pentru recepție. Semnal de ceas extern pentru deplasarea datelor de la pinul DR (recepție date) în registrul de recepție al portului serial RSR. Trebuie sa fie prezent pe durata transferurilor prin portul serial.

CLKX: I

Intrare de ceas pentru transmisie. Semnal de ceas extern pentru deplasarea datelor de la registrul de transmisie al portului serial XSR la pinul DX (transmisie date) . Trebuie sa fie prezent pe durata transferurilor prin portul serial. în

DR: I

Intrare recepție date seriale. Utilizat recepția datelor în registrul de deplasare pentru recepție RSR.

DX: E, Z

Ieșire transmisie date seriale. Datele din registrul de deplasare pentru transmisie XSR sunt scoase la exterior prin intermediul pinului DX. Este plasat în înaltă impedanță când nu se efectuează transmisie.

FSR: I

Impuls de sincronizare cadru pentru recepție. Frontul căzător al FSR inițiază procesul de recepție începând transmiterea semnalului de ceas către RSR.

FSX: I/E

Impuls de sincronizare cadru pentru transmisie. Frontul căzător al FSX inițiază procesul de transmisie începând transmiterea semnalului de ceas către XSR. După reset, FSX este implicit un pin de intrare. Acest pin poate fi programat prin soft ca fiind o ieșire când bitul TXM din registrul de stare este pus pe "1".

II.4.2. Structura internă

Circuitele DSP implementează funcții pe care alte procesoare le realizează de obicei prin soft sau microcod : înmulțire, manevrare adrese, circuite de deplasare a datelor, toate aceste operații executându-se intr-un singur ciclu instrucțiune și de multe ori în paralel cu operațiile ALU. În figura este prezentată schema bloc funcțională a TMS320C26.

Fig.3 NOTĂ: Zonele umbrite indică magistrale

Arhitectura lui TMS320C2x este construită în jurul a 2 magistrale majore : magistrala de programe și magistrala de date.

Magistrala de program manipulează codul instrucțiunilor și operanzii imediați din memoria program.

Magistrala de date interconectează diferite elemente, cum ar fi: CALU(Central Arithmetic Logic Unit) și bancul registrelor auxiliare, la memoria de date RAM. Împreună, magistrala de programe și de date pot transporta datele de la memoria RAM de pe circuit sau de la memoria externă la multiplicator, într-un singur ciclu pentru operații de multiplicare/acumulare. TMS320Cx are un grad înalt de paralelism, adică în timp ce datele sunt prelucrate în CALU alte operații aritmetice pot fi de asemenea executate în ARAU(Auxiliary Register Arithmetic Unit). Un astfel de paralelism duce la un puternic set de operații aritmetice, logice și lucru la nivel de bit care pot fi implementate toate într-un ciclu mașină.

II.4.2.1.Unitatea Aritmetică și Logică Centrală – CALU

Conține un circuit de deplasare și scalare pe16 biți , un multiplicator paralel pe 16X16 biți, o ALU pe 32 de biți, un acumulator pe 32 biți(ACC) și circuite de deplasare suplimentare la ieșirile acumulatorului și multiplicatorului(SFL).

În implementarea unei instrucțiuni tipice a ALU, pașii care apar sunt următorii :

1)Data este adusă din RAM pe magistrala de date.

2)Data este trecută prin circuitul de deplasare în ALU, unde este executată operația aritmetică.

3)Rezultatul este transferat în acumulator.

O intrare în ALU este întotdeauna furnizată de acumulator, iar cealaltă intrare poate fi transferată de la registrul de produs PR al multiplicatorului, sau scalling shifter care este încărcat din memoria de date.

Circuitul de deplasare pe partea de ieșire, cu intrare pe 32 biți și ieșire pe 16 biți SFL(0-7), este utilizat pentru salvarea și scalarea ACCL sau ACCH.

Multiplicatorul este realizat din 3 elemente: registrul temporar TR, (16 bit) registrul produs PR (32 bit) și aria de multiplicatoare care efectuează înmulțirea intre conținutul TR si data provenită de pe magistrala de date. La ieșirea multiplicatorului este prevăzut un circuit de deplasare SFL-R(-6,0,1,4) care asigură scalarea rezultatului în funcție de modul de efectuare a produsului stabilit prin poziționarea biților PM din registrul de stare ST1.

II.4.2.2.Organizarea memoriei

Memoria de date. Cele544 cuvinte de memorie de date RAM sunt împărțite în 3 blocuri separate:

BLOCUL B0:256 cuvinte de memorie RAM, configurabile fie ca memorie de date, fie ca memorie de program, prin instrucțiuni prevăzute în acest scop.

BLOCURILE B1,B2:288 cuvinte; sunt întotdeauna memorie de date.

Memoria de program .Poate fi constituită din memoria RAM de pe circuit, ROM sau memorii externe de program de mare viteză care se folosesc la viteza integrală, fără stări de așteptare. Ca o alternativă ieftină, prin READY se poate asigura adaptarea TMS320C2x la memoriile mai lente și mai ieftine(memorii externe). Este disponibil un spațiu adresabil de memorie de 64 Kcuvinte.

Fig.5 Memoria de date de pe circuit

II.4.2.2.1. Harta memoriei

TMS320C2x suportă 3 spații separate de adrese de memorie:

-pentru memoria program

-pentru memoria de date

-pentru periferice I/O

Aceste spații se disting în exterior prin semnalele PS, DS, IS(selectare program, date și I/O).

La TMS320C25, memoria de program ROM de pe circuit este localizată în cele mai puțin semnificative 4Kcuvinte de memorie program, când sunt selectate de MP//MC=0.Când MP//MC=1, cele mai de jos 4Kcuvinte ale memoriei program sunt externe.

Memoria externă este adresată prin magistrale unice de adrese și de date care multiplexează magistralele celor două spații de memorie.

Organizarea memoriei este prezentată în fig. 6.

Obs. acest mod de lucru cu blocuri de memorie comutabile este specific la toate procesoarele TMS 320 .

II.4.2.3. Registele

Registrele mapate în memorie pot fi accesate în aceeași manieră ca orice altă locație de memorie cu excepția instrucțiunilor de transfer bloc de date (BLKD)

Registrele auxiliare.TMS320C2x conține un banc de 8 registre auxiliare (AR0 – AR7) utilizate pentru adresarea indirectă a memoriei sau pentru stocarea temporară a datelor. In instrucțiunile cu adresare indirectă ARP (Pointerul Registrului Auxiliar – pe 3 biți) indică care din registrele auxiliare va furniza adresa variabilei accesate. AR0 – AR7 și ARP pot fi încărcate fie din memoria de date, fie printru-un operand imediat definit în instrucțiune. Registrele auxiliare (AR0 – AR7) sunt conectate la ARAU (Unitatea Aritmetică a Registrelor Auxiliare) care permite autoindexarea registrului auxiliar curent în timp ce este adresată o locație a memoriei de date. Indexarea se poate face fie cu 1 fie cu conținutul AR0. Ca rezultat accesarea tabelelor de date se poate face fără intervenția CALU pentru manipularea adreselor.

Pe lângă operațiile de calcul a adreselor ARAU poate fi utilizată și ca o unitate aritmetică de uz general care implementează operații aritmetice cu numere pe 16 biți fără semn. De asemenea se pot efectua salturi condiționate prin compararea registrului curent, indicat de ARP cu AR0 (instrucțiunea BANZ).

II.4.3. Moduri de adresare

TMS320C2x poate adresa 64KW memorie program și 64KW memorie date. Magistrala de Adrese memorie Date (DAB), pe 16 biți, poate adresa memoria într-unul din următoarele moduri:

Prin magistrala de adresare directă (DRB) utilizând modul de adresare directă (de ex. ADD 10h)

Prin magistrala bancului de registre auxiliare (AFB) utilizând modul de adresare indirectă (de ex. ADD *)

Operanzii mai pot fi adresați de către conținutul numărătorului de program în modul de adresare imediată.

În modul de adresare directă cei 9 biți ai pointer-ului de pagină memorie (DP) indică unadin cele 512 pagini de memorie, fiecarea pagină având128 cuvinte. Adresa pe magistrala de adrese directe (DRB) se formează concatenând cei 9 biți ai DP cu cei 7 biți de adresă directă din instrucțiune (dma).

În modul de adresare indirectă, registrul auxiliar curent (AR), selectat de pointerul registrelor auxiliare (ARP), adresează memoria de date prin magistrala bancului de registre auxiliare (AFB). Pe durata in care registrul auxiliar selectat furnizează adresa datei de memorie și data este manipulată de CALU, conținutul AR poate fi manipulat prin ARAU.

Când se utilizează un operand imediat, acesta este conținut fie in cuvântul instrucțiunii insăși sau, in cazul operanzilor imediați pe 16 biți, in cuvântul ce urmează după codul instrucțiunii.

Registrele de stare ST0 și ST1 conțin starea diverselor condiții și moduri.Registrele de stare pot fi salvate în memorie sau incărcate din memorie

II.4.4 Controlul sistemului

Controlul de sistem al procesorului TMS320C2x este asigurat de numărătorul de program(PC), stiva, conexiunile hard, semnalul reset extern,întreruperi, timer și un numărător de repetări. În figura urmatoare se prezintă schema funcțională :

Fig.8 Numărătorul de program, stiva și circuitele anexe

II.4.4.1.Funcționarea magistralei pipeline

Pipelining-ul instrucțiunilor constă din secvențierea de operații ale magistralei externe care apar în cursul execuției instrucțiunii.În timpul oricărui ciclu dat două sau trei instrucțiuni pot fi active la un moment dat, fiecare în diverse stadii de execuție, rezultând în două respectiv trei nivele de pipeline pentru TMS320C20 și TMS320C25.

Fig.9 Funcționarea magistralei pipeline cu trei nivele(TMS320C25)

Mai multe instrucțiuni sunt executate în același număr de perioade, indiferent dacă sunt executate din memoria internă ROM, RAM sau în memoria de program externă.

II.4.5.Întreruperile

TMS320CX are trei intrări de întreruperi (/INT2 …/INT0) la care pot fi conectate dispozitivele externe. Întreruperile interne pot fi generate de portul serial (RINT și XINT), de temporizatorul intern (TINT) și de prin instrucțiunea de întrerupere soft (TRAP). Sistemul de întreruperi este vectorizat, ca răspuns la o cerere de întrerupere fiind generat un apel la o adresă din memoria program. Localizarea vectorilor se întrerupere și nivele de prioritate asociate sunt prezentate în TAB. 1. Când apare o întrerupere aceasta este memorată într-unul din cei 6 biți ai registrului indicatorilor de întreruperi IFR. Acest registru poate fi înscris de întreruperile externe /INT(2-0) și de întreruperile interne RINT, XINT și TINT. Fiecare întrerupere este memorată în IFR până când este achitată și ștearsă automat de semnalul /IACK sau de /RS. Nu sunt prevăzute instrucțiuni pentru citirea sau înscrierea IFR.

Pentru mascarea întreruperilor TMS320C2x are un registru de mascare a întreruperilor (IMR) mapat în memorie

Un bit 1 într-una din pozițiile 5…0 validează întreruperea corespunzătoare (dacă INTM=0). IMR poate fi atât înscris cât și citit.

II.4.6.Portul serial

Portul serial este full-duplex și asigură comunicarea cu dispozitivele seriale externe(codec, convertoare A/D seriale). Poate fi folosit la intercomunicarea între procesoare în aplicațiile multiprocesor.Atât recepția cât și transmisia sunt dublu bufferate la TMS320C25, asigurându-se un flux continuu de biți.Portul serial are două registre: DXR ce păstrează datele ce vor fi transmise și DDR ce păstrează datele recepționate, la adresele 0000h respectiv la 0001h. Oprerațiile de transmisie și recepție sunt implementate separat.Datele de pe liniile DX și DR sunt recepționate sau trimise în XSR sau RSR, pe fronturile CLKX sau CLKR.Pentru a începe o nouă transmisie,conținutul registrului DXR este transferat în XSR, iar după ce au fost recepționați toți biții,conținutul lui RSR este transferat în în DRR(la TMS320C25).

CAPITOLUL III

SISTEME PENTRU ACHIZIȚIA ȘI PRELUCRAREA DATELOR

III.1 Considerații generale

Procesul de transformare a tensiunilor sau curenților electrici, ce constituie ieșirile traductoarelor, în informație numerică cu destinație bine definită se numește achiziție de date.

Sistemele de achiziție de date SAD sunt dispozitive complexe care au una sau mai multe din următoarele facilități: achiziția a unuia sau mai multor semnale analogice în vederea conversiei analog numerice, generarea de semnale de test continue sau variabile, generarea de comenzi numerice, achiziția de intrări numerice, generarea de semnale numerice de frecvență și/sau factor de umplere variabil, măsurarea de semnale numerice de frecvență și/sau factor de umplere variabil.

Există mai multe criterii de clasificare pentru SAD-uri, dintre care amintim: după modul de realizare, după condițiile de mediu în care lucrează, după numărul de canale analogice, etc.

Modul cel mai uzual de realizare al SAD-urilor este sub formă discretă. Sistemul de achiziție de date se realizează sub formă de modul prevăzut cu doi conectori: la un conector are acces utilizatorul, celălalt conector permite cuplarea modulului direct pe magistralele unui calculator. Datorită progresului tehnologic în domeniul circuitelor integrate, sistemele de achiziție de date se pot realiza și în unul sau două circuite integrate.

a. După condițiile de mediu în care lucrează, SAD-urile se clasifică în:

SAD-urile destinate să funcționeze în medii favorabile sau de laborator (sunt de mare precizie și cu un raport semnal/zgomot ridicat);

SAD-urile destinate să funcționeze în medii grele (medii industriale, instalații militare, etc.), aceste sisteme de achiziție de date având o precizie mai scăzută, dar putând funcționa într-un domeniu extins de variație a parametrilor de mediu (temperatură, umiditate, etc.), fiind protejate contra perturbațiilor electromagnetice și prevăzute cu circuite redundante.

b. Din punct de vedere al numărului de canale analogice, sistemele de achiziție de date pot fi cu unul sau mai multe canale. La măsurări cu traductoare, o importanță deosebită o au SAD-urile cu mai multe canale analogice (multicanal). La rândul lor, SAD-urile multicanal diferă între ele prin modul cum este realizată multiplexarea (la nivelul ieșirilor numerice, la nivelul ieșirilor circuitelor de eșantionare și memorare, la nivelul intrărilor circuitelor de eșantionare și memorare, la nivelul semnalelor de intrare). Sistemele de achiziție de date multicanal cu multiplexarea la nivelul semnalelor de intrare oferă performanțe dintre cele mai slabe din punct de vedere al vitezei de lucru. Aceste SAD-uri au însă avantajul simplității și al unui preț de cost mai redus.

Componența unui sistem de achiziție de date este prezentată prin schema bloc pentru un astfel de sistem, cuplat la un calculator personal (Fig. 1).

Fig. 1 Schema bloc a unui sistem de achiziție de date

Pentru preluarea datelor, sistemul de achiziție de date trebuie conectat cu un calculator sau o rețea de calculatoare, existând mai multe moduri de interfațare pentru SAD-uri.

Dacă frecvența de achiziție a datelor este mai mare decât frecvența de transfer, sistemul de achiziție de date trebuie să aibă în componență o memorie locală pe lângă blocurile de preluare și generare a semnalelor.

Un sistem de achiziție de date poate avea în componență pe lângă blocuri pentru preluarea și generarea semnalelor analogice și blocuri pentru transferul de semnale numerice.

II.2 Arhitecturi de sisteme de achiziție și distribuție a datelor

II.2.1.Interfațã pentru citirea semnalelor logice de intrare

În cazul semnalizãrilor (diagnozã, contacte ale limitatoarelor de capãt de cursã ale mecanismelor de poziționare etc) se utilizeazã porturi de intrãri numerice. Ele permit transferarea informației exterioare în cuvinte de date binare, utilizabile prin program de cãtre sistemul numeric (memorare, testarea stãrii unor anumite semnale și luarea unor decizii corespunzãtoare etc). În cazul unui defect, se poate testa, prin analiza unor semnale de diagnozã, care este defectul și se emite comanda corespunzãtoare (de ex. întreruperea alimentãrii).

III.2.2.Interfațã pentru furnizarea semnalelor logice spre proces

În cazul comenzilor de tip bipozițional, deci pentru mãrimi binare, se utilizeazã porturi de ieșiri numerice. Acestea vor permite transferarea informației din cuvintele de date binare ale calculatorului cãtre exterior, determinând comanda unor elemente de amplificare binare ale schemei (relee).

III.2.3.Interfațã pentru citirea semnalelor analogice de intrare

În principiu, conducerea unui proces cu o singurã intrare și o singurã ieșire (SISO) poate fi realizatã cu o structurã numericã având un canal de intrare analogicã și un canal de ieșire analogicã. Pentru un proces cu mai multe intrãri și mai multe ieșiri analogice (MIMO) – mai multe bucle de reglare – arhitectura devine mai complexã. Soluțiile variazã în funcție de performanțele impuse sistemului de conducere și de dinamica procesului.

O primã soluție ar fi utilizarea unei structuri multiprocesor, fiecãrei bucle de reglare fiindu-i asociat câte un procesor specializat, care sã realizeze conversiile, prelucrãrile și comenzile specifice buclei (conducere distribuitã).

Dacã însã condițiile de lucru sunt mai relaxate se poate adopta o arhitecturã de tip conducere centralizatã, structura numericã urmând sã fie conectatã succesiv, dupã o ordine bine definitã și, în general, cu vitezã mare, la fiecare canal de mãsurã. Acest lucru se realizeazã prin intermediul unui multiplexor (MUX- comutator electronic). În același timp, toate rezultatele furnizate de calculator, în mod secvențial, pe aceeași ieșire (magistralã), trebuie dirijate spre utilizatori printr-un demultiplexor (DMUX).

Pentru conversia analog-numericã a unui numãr mare de semnale analogice se pot folosi douã metode:

– multiplexarea semnalelor analogice;

– multiplexarea semnalelor numerice.

Multiplexarea semnalelor analogice

Fig.4.2. Schema bloc a interfeței analogice de intrare cu MUX analogic

MUX analogic

Selectarea unui semnal de intrare analogic, care sã fie transmis la CAN, se face prin adresarea de cãtre P a multiplexorului MUX. Principalul element al MUX analogic este elementul de comutare și poate fi realizat în una din variantele:

– relee obișnuite;

– relee reed (contacte în vid, într-o fiolã de sticlã, comandate magnetic);

– relee cu mercur;

– comutație staticã cu elemente semiconductoare.

Primele trei variante, utilizând elemente electromecanice conduc, în general, la investiții inițiale reduse, compensate însã de costuri ridicate de exploatare, fiabilitate scãzutã, duratã de funcționare serios limitatã. Ultima variantã are dezavantajul de-a produce mãrimi reziduale, datorate funcționãrii neideale a elementului de comutație în starea închis/deschis (curenți, tensiuni, rezistențe, capacitãți) precum și decalibrãrii canalului, datoratã fenomenului de îmbãtrânire a componentelor.

Obs: Deoarece circuitul de E&M se aflã dupã MUX, nu este posibilã mãsurarea simultanã a douã sau mai multe mãrimi (semnale). Pe de altã parte, viteza de mãsurare este destul de redusã dacã numãrul de canale crește.

Pentru a putea citi simultan douã sau mai multe mãrimi se poate plasa câte un circuit de E&M pe fiecare canal, la intrarea MUX.

Fig.4.3. Schema bloc a interfeței analogice de intrare cu MUX analogic

și circuit de E&M pentru fiecare canal

Conversia analog-numericã și citirea datelor pe fiecare canal se poate face la momente diferite.

Deoarece CAN trebuie sã fie de precizie mare, având de regulã 8, 10, 12 biți la ieșire, acestea sunt relativ complexe ș au un cost ridicat. De aceea, în practicã, se folosește foarte mult metoda multiplexãrii analogice. Totuși, pentru mãsurarea datelor, când fenomenele din proces variazã rapid, utilizarea unui singur CAN nu mai dã satisfacție. Este necesarã utilizarea mai multor CAN, relativ mai lente și mai ieftine, pentru fiecare canal în parte.

Multiplexarea semnalelor numerice

Fig.4.4.Schema bloc a interfeței analogice de intrare cu MUX numeric

Fiecare CAN este precedat de un circuit de E&M. Ieșirile numerice ale CAN sunt multiplexate cu ajutorul unui multiplexor numeric.

Deși montajul este complex și scump, frecvența de achiziție crește, dacã se eșantioneazã secvențial cele n canale.

Moduri de control al transferului de informații

La un sistem cu P pot fi utilizate mai multe metode de interfațare a sistemului intrãrilor analogice. Metodele utilizate sunt caracterizate de funcționarea în întreruperi (transfer concurent) sau prin interogare (transfer programat).

Schemele cu declanșare și așteptare (polling)- sunt caracterizate de faptul cã CPU declanșeazã conversia (AdrMUX, comandã E&M, STARTCONV) la fiecare moment de eșantionare și testeazã linia EOC (End Of Conversion), ce furnizeazã informații referitoare la terminarea conversiei. La detectarea terminãrii conversiei se citește registrul de ieșire al convertorului (R), registru ce conține valoarea convertitã.

Corelarea (sincronizarea) vitezei de lucru se poate realiza și prin intermediul semnalului WAIT/READY.

Procesorul intrã în starea de așteptare (WAIT MODE), prin bascularea unui bistabil de cãtre semnalul Start conversie și în starea de execuție (RUN MODE) prin rebascularea acestuia de semnalul EOC, când operația de conversie s-a terminat.

Dacã timpul de conversie este foarte mic, P poate trata canalul de conversie ca o celulã de memorare, operația de citire a datelor efectuându-se direct, fãrã timpi de așteptare.

Schemele ce utilizeazã sistemul de întreruperi se bazeazã pe faptul cã CPU declanșeazã conversia, executã alte sarcini, și la momentul terminãrii acesteia primește un semnal de întrerupere generat de semnalul EOC. Ca urmare a întreruperii primite, se executã o subrutinã de tratare a întreruperii, în cadrul cãreia se citește valoarea numericã a semnalului convertit.

III.2.4. Interfațã pentru furnizarea semnalelor analogice spre proces.

Aceste module realizeazã legãtura între douã subsisteme: subsistemul continuu (procesul condus) și subsistemul ce opereazã cu informația discretizatã (subsistemul numeric)

Reconstituirea semnalului analogic

Ieșirea din calculatorul de proces este un semnal discretizat în timp, reprezentat printr-un tren de funcții impuls. Pentru durata foarte micã a unui impuls energia nu poate fi suficientã pentru intervenția asupra procesului. Din aceste motive semnalul discretizat trebuie transformat într-un semnal de duratã mai mare în timp.

În principiu, reconstituirea unui semnal continuu dintr-un șir de numere u(kT) poate fi consideratã ca o extrapolare bazatã pe informațiile anterioare u((k-1)T), u((k-2)T) …..u(0T). În acest caz trebuie sã se estimeze valoarea semnalului între douã momente consecutive de eșantionare, kT și (k+1)T, pornind de la valorile precedente. Pentru refacerea semnalului continuu, plecând de la eșantioane uk=u(kT) se folosesc extrapolatoare.

Cea mai uzualã funcție de extrapolare a valorii , și mai comod de implementat, în intervalul t[kT,(k+1)T) este polinomul Taylor de ordin arbitrar, n:

unde .

Pentru calculul unei diferențe de ordin n sunt necesare (n+1) eșantioane imediat anterioare intervalului de timp pe care se realizeazã extrapolarea. Estimarea cât mai corectã a semnalului reconstituit de cãtre extrapolator impune folosirea a cât mai multor eșantioane (sau a mai multor termeni din seria de puteri). Pe de altã parte însã, folosirea unui extrapolator de ordin ridicat presupune un element fizic mai complex, mai costisitor și acceptarea reținerii pe timp mai îndelungat a eșantioanelor precedente intervalului considerat. De aceea, în practicã, din seria de puteri se rețin cel mult primii doi termeni (extrapolatoare de ordin zero sau unu).

Extrapolatorul de ordin zero (EOZ)

Reținând primul termen al polinomului (în t), deci n=0, rezultã

Prin folosirea extrapolatorului de ordin zero mãrimea extrapolatã, aplicatã la intrarea pãrții fixate continue, are urmãtorul aspect:

Fig.4.5.Semnal numeric extrapolat cu ajutorul unui extrapolator de ordin zero

Cu toate cã semnalul este reconstituit cu o anumitã eroare, dacã perioada de eșantionare este aleasã corespunzãtor aceastã eroare este acceptabilã.

Extrapolatorul de ordin unu(EOU)

Pentru n=1, rezultã

Pentru valori T, ce se aleg adecvat, valoarea derivatei u’(kT) poate fi aproximatã cu:

, obținând

Fig.4.6.Semnal numeric extrapolat cu ajutorul unui extrapolator de ordin unu

Reconstituirea semnalului se realizeazã așadar dupã eșantionul u(k) de la începutul intervalului considerat dar și dupã tendința de variație sesizatã de cele douã eșantioane imediat anterioare acelui interval de timp.

În mod uzual se utilizeazã extrapolatorul de ordin zero(EOZ). Operatorul de menținere (memorare) se realizeazã fizic fie cu ajutorul unei memorii analogice (E&M), în cazul utilizãrii unui singur CNA pentru mai multe canale, fie cu ajutorul CNA, prin intermediul registrului propriu de zãvorâre (latch), când este utilizat singur pentru un canal.

Alegerea uneia dintre aceste douã variante depinde de perioada dintre douã reactualizãri (T) și de precizia de conversie impusã. Astfel, pentru intervale de timp reduse între douã adresari și pentru o precizie medie de conversie, se poate alege metoda memorãrii sub formã analogicã.

Structuri de ieșiri analogice multicanal

Fig.4.7.Schema bloc a interfeței analogice de ieșire cu DMUX analogic

Schema conține un singur CNA, utilizat în comun de cãtre toate canalele de ieșire. CPU transmite adresa canalului cãruia îi este destinatã comanda, precum și valoarea numericã a comenzii, care este înscrisã în registrul R. DMUX analogic conecteazã ieșirea CNA la canalul specificat. Memoriile analogice (condensator și amplificator operațional -tip repetor) servesc la memorarea ieșirii CNA.

Aceastã structurã are avantajul folosirii unui singur CNA (ceea ce poate conduce la un preț redus) și dezavantajul demultiplexãrii și memorãrii de semnale analogice (care pot adesea anula beneficiile oferite de un CNA unic).

Fig.4.8. Schema bloc a interfeței analogice de ieșire cu DMUX numeric

Cea de-a doua structurã utilizeazã câte un CNA pe fiecare canal în parte. În aceastã situație, DMUX opereazã cu semnale numerice, valoarea numericã fiind introdusã în registrul corespunzãtor canalului cãruia îi este destinatã comanda.

III.3.Prelucrarea semnalelor de la proces

III.3.1.Tipuri de semnale

Un semnal continuu în timp, sau pe scurt, semnal continuu este un semnal definit pe un domeniu continuu în timp. Un astfel de semnal poate lua fie valori continue, fie un numãr de valori distincte. Un semnal continuu care ia valori continue se numește semnal continuu analogic (fig.3.1.a). Un semnal continuu care poate lua numai un numãr finit de valori distincte se numește semnal continuu cuantificat (fig.3.1.b).

Fig.3.1.Tipuri de semnale a) continuu necuantificat (analogic); b) continuu cuantificat;

Din punct de vedere matematic, semnalele continue (analogice sau cuantificate) sunt funcții de variabilã realã cu valori fie într-o submulțime din R (semnal analogic), fie într-o mulțime cu un numãr finit de elemente (semnal cuantificat).

– semnal continuu analogic: f:RR tR ; f(t) R

– semnal continuu cuantificat: f:RZ tR ; f(t) Z

Un semnal discret în timp, sau pe scurt, un semnal discret este un semnal definit pe un domeniu discret de timp. Un astfel de semnal poate lua fie valori continue, fie un numãr finit de valori discrete.

Un semnal discret care ia valori continue se numește semnal eșantionat (fig.3.2.a).

Un semnal discret care ia valori cuantificate se numește semnal numeric (fig.3.2.b).

Fig.3.2.Tipuri de semnale a)discret eșantionat (necuantificat); b) discret cuantificat (numeric)

Din punct de vedere matematic, semnalele discrete (eșantionate sau numerice) sunt funcții de variabilã întreagã cu valori fie într-o submulțime din R (semnal eșantionat), fie într-o mulțime cu numãr finit de elemente (semnal numeric).

– semnal discret eșantionat: f:ZR kZ ; f(k) R

– semnal discret numeric: f:ZZ kZ ; f(k) Z

Procedeul prin care dintr-un semnal analogic se obține un semnal cuantificat se numește cuantificare, iar valorile în numãr finit, rezultate în urma cuantificãrii se numesc valori cuantificate.

Procedeul prin care dintr-un semnal analogic se obține un semnal eșantionat se numește eșantionare.

În practica inginereascã semnalele numerice se obțin uzual din semnale analogice prin eșantionare și cuantificare, ordinea de aplicare a celor douã operații rãmânând la latitudinea proiectantului de sistem.

Ca limbaj, trebuie remarcat faptul cã, deși semnalele numerice constituie o submulțime a semnalelor discrete, în unele texte, prin “semnale discrete” se referã semnalele numerice.

Aceastã situație se explicã prin aceea cã în realizãrile practice eșantionarea este în general însoțitã și de cuantificare, deci semnalele discrete rezultate sunt semnale numerice.

III.3.2. Cuantificarea semnalelor

Prin cuantificarea unui semnal, mulțimea valorilor funcției ce definește semnalul respectiv este transformatã dintr-o mulțime continuã (uzual, un interval) într-o mulțime cu numãr finit de elemente.

Pornind de la posibilitãțile concrete de reprezentare digitalã, conversia numericã a unei valori continue nu poate fi decât o aproximare, deoarece semnalul analogic poate sã aibã o infinitate de valori, în timp ce numerele care vor reprezenta aceste valori fac parte dintr-o mulțime finitã, care are un numãr de elemente dependent de precizia impusã.

În aplicații, se utilizeazã game standardizate pentru valorile semnalelor ce urmeazã a fi cuantificate (de exemplu, tensiuni bipolare [-5V,5V], [-10V,10V], tensiuni unipolare [0V,5V], [0V,10V],etc.). Dacã se noteazã prin [v,V] gama continuã de valori acceptate ca intrare într-un cuantificator cu n poziții binare, cuantificarea reprezintã, din punct de vedere matematic, surjecția de la mulțimea [v,V] la mulțimea {0,1,..,2n-1}.

În practicã se urmãrește realizarea unei cuantificãri uniforme, care în cazul unei game de valori [v,V], utilizând n poziții binare, se caracterizeazã prin nivelul de cuantificare (pas de cuantificare în amplitudine):

Pentru o gamã unipolarã [0,V] (adicã v=0) funcția care realizeazã cuantificarea uniformã

f:[0,V]{0,1,…2n-1}

se definește prin:

Folosind transformarea:

xi=iq, i=0…2n-1

se observã cã orice valoare x[0,V] se va aproxima prin rotunjire cu valoarea xi.

Eroarea de rotunjire va satisface, în modul, inegalitatea:

|e|(1/2)q,

pentru orice x[0,V-(1/2)q], adicã pentru toatã gama [0,V] cu excepția intervalului [V-(1/2)q,V].

Exemplu: Cuantificator cu 2 poziții binare în gama [0,10V]:

Nivelul de cuantificare este :

iar caracteristica de cuatificare este:

Valorile întregi rezultate din cuantificare (00,01,10,11), exprimate ulterior în virgulã flotantã, sunt: x1=0, x2=2.5, x3=5, x4=7.5. (x=i q)

Eroarea ce se va introduce prin rotunjire pentru x[0,8.75] este de modul maxim 1.25=(1/2)q.

Fig.3.3. Caracteristica de cuantificare prin rotunjire a unui semnal în gama [0V,10V] folosind n=2 poziții binare

Se constatã cã valoarea maximã a erorii introduse prin cuantificare, urmatã de transformarea în virgulã mobilã, este datã de numãrul de poziții binare n utilizat:

Însã eroarea absolutã nu caracterizeazã complet calitatea unei aproximãri. Pentru o valoare oarecare x[0,V-(1/2)q] eroarea relativã e satisface relația:

Prin aceasta se constatã cã în aplicații trebuie urmãrit ca amplitudinea semnalului ce trebuie cuantificat |x|, sã fie în general sensibil mai mare decât nivelul de cuantificare q.

Obs: Impunând o anumitã precizie sistemului de reglare se poate determina tipul convertorului folosit (numãrul de poziții binare)

Convertoarele analog-numerice (CAN) standardizate utilizeazã uzual cuvinte cu n=8, 10 sau 12 biți. Converoarele cu n16 biți se folosesc numai în aplicații ce necesitã o precizie deosebitã.

Pentru gama unipolarã [0,10V] eroarea relativã de cuantificare este :

pentru n=8 , e=0.05% (n=10), respectiv e=0.01% (n=12).

Prin cuantificare (rotunjire) se pierde informație, erorile de cuantificare acționând ca un zgomot perturbator (zgomot de cuantificare).

De regulã, traductoarele industriale uzuale fac parte din diferite clase de precizie (1%, 1.5%, 2.5%, 5%).

Concluzie: Ținând cont de sensibilitatea traductoarelor și de ponderile zgomotelor externe care afecteazã procesul, în procesul de analizã și sintezã a sistemelor de conducere industriale zgomotele de cuantificare pot fi neglijate.

III.3.3. Eșantionarea semnalelor

Eșantionarea constã în extragerea din semnalul continuu a valorii corespunzãtoare unor momente discrete de timp. Intervalul dintre douã eșantioane poartã numele de perioadã de eșantionare.

Existã mai multe moduri de eșantionare a semnalelor:

a). Eșantionarea prin modulare în amplitudine a trenului de impulsurilor de cãtre semnalul de eșantionat. Acest tren de impulsuri poate avea o perioadã constantã (eșantionare clasicã) sau variabilã;

Fig.3.4.Eșantionarea prin modularea impulsurilor în amplitudine

b). Eșantionare prin modulare în lãțime a impulsurilor. Lãțimea eșantionului este proporționalã cu valoarea absolutã a semnalului, amplitudinea fiind constantã.

Fig.3.5.Eșantionare prin modularea impulsurilor în lãțime

c). Eșantionare prin modulare în frecvențã a impulsurilor. Frecvența eșantioanelor este, în acest caz, proporționalã cu amplitudinea semnalului.

Fig.3.6.Eșantionare prin modularea impulsurilor în frecvențã

d). Eșantionarea prin modulare în fazã a impulsurilor. În comparație cu un semnal de referințã, eșantioanele sunt defazate în avans sau în întârziere în funcție de semnul semnalului de eșantionat, valoarea acestui defazaj fiind direct proporționalã cu amplitudinea semnalului.

Fig.3.7.Eșantionare prin modularea impulsurilor în fazã

Obs. Un element de eșantionare prin modularea în amplitudine a impulsurilor este în esențã un element liniar, deoarece semnalele de intrare și de ieșire ale elementului de eșantionare se supun principiului suprapunerii efectelor, spre deosebire de celelalte tipuri, care sunt considerate elemente neliniare.

III.3.4. Circuite de conversie a semnalelor

Sistemul de reglare numeric trebuie sã achiziționeze și sã livreze date de la și respectiv cãtre partea fixatã (procesul industrial condus), care este un sistem continuu. Calculatorul prelucreazã numai semnale numerice. Pentru a se putea utiliza semnalele din proces, acestea trebuie supuse unor prelucrãri (eșantionare, cuantificare), realizate cu ajutorul convertoarelor analog-numerice (CAN). În același timp, pentru a putea utiliza informațiile furnizate de cãtre calculator, este necesarã transformarea acestor rezultate într-un semnal direct utilizabil de cãtre sistemul comandat. Aceste semnale vor putea fi obținute cu ajutorul convertoarelor numeric-analogice (CNA).

III.3.4.1. Conversia A/N

Fig.3.9. detaliazã operațiile care se desfãșoarã la achiziția datelor.

Fig.3.9. Procesarea semnalelor în conversia A/N

Traductorul (încorporat în blocul PF) convertește informațiile despre evoluția unei variabile fizice de naturã oarecare într-un semnal electric analogic continuu.

Filtrare

Problema conversiei analog-numerice este deosebit de complexã atunci când semnalul de intrare este supus unor zgomote, ceea ce impune utilizarea unui filtru F. Banda de trecere a filtrelor trebuie astfel aleasã încât sã permitã trecerea nealteratã a semnalelor utile și atenuarea semnalelor parazite, fapt pentru care în situațiile obișnuite filtre pasive de tip trece-jos (FTJ) sunt suficiente. În situațiile delicate, la canalele puternic perturbate, se pot utiliza filtre active.

Eșantionare și memorare

Elementul de eșantionare și memorare reprezintã o memorie analogicã ce pãstreazã valoarea semnalului de intrare la momentul eșantionãrii. Acest semnal trebuie sã fie stabil pe durata conversiei analog-numerice. Principial, circuitul de eșantionare și memorare este constituit dintr-un comutator asociat cu un condensator.

Fig.3.10. Regimuri de funcționare ale unui circuit de eșantionare-memorare

Atunci când comutatorul este închis, tensiunea la bornele condensatorului urmãrește tensiunea de intrare, iar când comutatorul este deschis, condensatorul C pãstreazã (memoreazã) tensiunea pentru a putea fi utilizatã de convertor.

Obs:1. Dacã semnalul convertit are variații lente circuitul de E&M poate sã lipseascã.

2. Pe timpul eșantionãrii este necesarã încãrcarea rapidã a condensatorului (tînc mic). Pe timpul memorãrii este necesar ca semnalul memorat sã nu se altereze prea repede (precizie mare). În general, circuitele de E&M rapide sunt puțin precise iar circuitele lente au o precizie bunã. Situația criticã este atunci când se cere atât vitezã mare de eșantionare cât și precizie bunã. În general, fenomenele rapide nu necesitã o precizie deosebitã; de aceea în regim tranzitoriu viteza circuitului de E&M este parametrul esențial, ceea ce înseamnã timpi mici de achiziție. Pentru fenomene mai puțin rapide se aleg circuite de E&M cu performanțe satisfãcãtoare de vitezã, dar de precizie mare.

Fig.3.11. Eșantionarea și memorarea semnalelor

Neglijându-se timpul de încãrcare a condensatorului, în fig.3.11 se prezintã semnalele de intrare și ieșire ale unui astfel de circuit de-a lungul mai multor perioade de eșantionare. Se constatã cã circuitul de E&M transformã semnalul analogic de la intrare (de formã oarecare) într-un semnal analogic constant pe porțiuni (semnal sau funcție scarã).

Circuitul de conversie analog-numeric transformã un semnal analogic într-un semnal numeric, transformare care implicã atât operația de eșantionare cât și operația de cuantificare. În fig.3.12 se prezintã un circuit de conversie A/N cu aproximații succesive.

Fig.3.12. Schema de principiu a unui circuit de conversie A/N cu aproximații succesive

Un astfel de circuit utilizeazã un circuit de conversie N/A. Circuitul de conversie N/A transformã conținutul registrului de aproximații succesive (RAS) într-un semnal analogic ce se comparã cu semnalul analogic de intrare a circuitului de conversie A/N. La primul pas, RAS, care are n poziții binare, este setat cu o valoare egalã cu jumãtatea valorii maxime, poziționând bitul cel mai semnificativ (bn-1) pe 1 și restul pe 0, situație în care convertorul N/A genereazã jumãtate din tensiunea de referințã, Vref. Comparatorul decide dacã acest bit rãmâne 1 sau trebuie resetat. La al doilea pas, se poziționeazã pe 1 urmãtorul bit ca semnificație al RAS (bn-2), generându-se (încã) un sfert dintensiunea Vref, și comparatorul decide dacã acesta rãmâne 1 sau trebuie resetat. Dupã n comparații, RAS conține în reprezentare binarã rezultatul conversiei, valoarea fiecãruia din cei n biți fiind decisã la câte un puls de comandã.

Obs: Acuratețea (precizia) semnalului numeric rezultat depinde de numãrul de biți ai RAS și convertorului N/A utilizați în codificarea binarã.

Frecvența de eșantionare este limitatã de viteza de rãspuns a comparatorului, timpul de conversie al CNA și de întârzierile de propagare în circuitul digital.

tCAN = n (tcomp +tCNA+tRAS)

III.3.4.2. Conversia N/A

Circuitul de conversie N/A transformã semnalul numeric din registrul REG într-un semnal continuu cuantificat. Dacã semnalul numeric ce urmeazã a fi convertit este reprezentat pe n poziții binare, atunci circuitul de conversie N/A este un semnal continuu ce poate lua 2n valori distincte.

Fig.3.13.Schema de principiu a unui circuit de conversie N/A pe 4 biți cu rezistențe ponderate

În fig.3.13 se prezintã schema simplificatã a unui circuit de conversie N/A cu rezistențe ponderate, având n=4 poziții binare.

Rezistențele de intrare ale amplificatorului operațional sunt ponderate dupã puterile lui 2. Biții b0,…,b3, corespunzãtori semnalului numeric, comandã comutatoarele astfel: pentru valoarea 1, rezistența aferentã este conectatã la -Vref, iar pentru valoarea 0, rezistența aferentã este conectatã la masã (acționarea comutatoarelor desfãșurându-se în paralel). Valoarea semnalului de ieșire este:

Principalul dezavantaj al acestui tip de circuite de conversie N/A îl constituie necesitatea utilizãrii unor rezistențe cu valori cât mai precise într-un domeniu foarte larg, ce variazã de la R la 2n-1R. Acest inconvenient dispare în cazul circuitelor de conversie N/A cu rețele R/2R.

III.4. Module de achiziție de date

Firmele specializate realizează o varietate largă de module folosite în achiziția, prelucrarea și controlul mărimilor, care se pot conecta pe magistrala de extensie a calculatorului (ISA, EISA, MCA, PCI). În general, se întâlnesc:

module de intrare-ieșire de uz general (I/E analogice, I/E numerice);

– module de intrare-ieșire numerice (procesarea numerică primară se realizează pe modul);

module de ieșire analogice.

Aceste module, realizate de regulă pe o singură placă imprimată multistrat (cartelă), sunt destinate achiziției de date multicanal a mărimilor analogice și/sau numerice. Dacă pentru achiziția datelor numerice problemele sunt relativ simple, la achiziția mărimilor analogice se pun probleme mai complexe, legate atât de condiționarea precisă a semnalelor (amplificare, filtrare), cât și de multiplexarea lor. După modul în care aceste funcții sunt realizate în structura sistemului de achiziție, se disting următoarele categorii:

Module de achiziție asincrone: care permit culegerea de semnale pe mai multe

canale (în general, de la 4 la 64 de canale ), utilizând un multiplexor analogic, un singur circuit de eșantionare-memorare și un singur CAN.

Module de achiziție sincrone, care permit achiziția de eșantioane simultan de

pe mai multe canale și care pot fi :

cu multiplexarea analogică a ieșirilor circuitelor de eșantionare-memorare;

cu multiplexarea numerică a ieșirilor convertoarelor analog-numerice.

O categorie specială o reprezintă modulele de achiziție cu DSP (Digital Signal Processor). Modulele cu DSP sunt cu achiziție sincronă, cu multiplexor analogic, sau, mai adesea, cu multiplexor numeric. Procesoarele numerice de semnal sunt utilizate în structura sistemelor de achiziție doar pentru aplicații speciale, care necesită procesarea numerică a semnalelor cu o viteză mare (exemple: încercarea la vibrații a diferitelor echipamente, analiza vocală, măsurări de distorsiuni, etc.). În același timp, prezența DSP-ului crește prețul modulului de achiziție.

Placa realizează achiziția în regim asincron. Semnalele analogice de intrare introduse la conectorul de intrare-ieșire sunt multiplexate analogic, aplicate succesiv la amplificatorul programabil AP și apoi convertite în cod numeric de 12 biți. Convertorul analog-numeric este de tipul cu aproximații succesive. Memoria tampon FIFO permite stocarea unui volum de date (512 eșantioane) pe timp scurt, pentru a fi transmise la calculator când magistrala devine disponibilă. Prin interfața de magistrală BUS-IF se derulează transferul de date de la modul spre calculator și transferul de date și semnale de control de la calculator spre modul.

Prin semnalele de control calculatorul impune modulului de achiziție: frecvența de eșantionare a semnalelor de intrare, adresa canalului ce urmează a fi achiziționat, amplificarea concretă pentru canalul selectat, declanșarea procedurii de eșantionare-memorare-conversie A/N, etc.

Magistrala de date și control este o magistrală slave. Modulul nu dispune de alimentare proprie, ci preia tensiunile de pe magistrala ISA a calculatorului.

Transferul de date de la modul la calculator se poate derula în regim de întrerupere (IRQ-Interrupt Request) a activității procesorului sau în regim DMA (Direct Memory Access), când transferul are loc sub supravegherea controlerului DMA al calculatorului, iar procesorul continuă în paralel derularea sarcinilor curente.

Fig.2.3. Schema-bloc a unui sistem multifuncțional de achiziție-distribuție de date

CAPITOLUL IV

Considerații privind implementarea prelucrării numerice a semnalelor

Prelucrarea numericã a semnalelor a devenit o tehnologie din momentul în care a rezolvat mai bine o arie foarte largã de aplicații folosind soluții tehnice specifice. Dintre aceste soluții un loc aparte îl ocupã procesoarele numerice de semnal (DSP- Digital Signal Processor) – circuite integrate pe scarã largã cu utilizare generalã sau dedicatã unei aplicații.

În multe aplicații, algoritmii de prelucrare numericã a semnalelor sunt implementați sub forma unor programe pe calculatoare de uz general. Însã, în acest caz, aplicațiile fie cã nu se desfãșoarã în timp real, fie cã sunt caracterizate de debite mici de date prelucrate. Când flexibilitatea unui calculator de uz general nu este necesarã sau nu este bine exploatatã se poate lua în considerare o soluție hardware, dedicatã aplicației, în care procesorul de semnal poate conține și subsistemul de achiziție a datelor și circuitele de interfațare cu un calculator și/sau dispozitive de afișare. În acest caz proiectantul se aflã adesea în fața unor alternative competitive, cum ar fi:

alegerea între aritmetica în virgulã fixã și cea în virgulã mobilã;

implementarea pe un procesor de uz general sau sub forma unui circuit VLSI dedicat aplicației.

VI.1.Reprezentarea informației numerice în sistemele de calcul

În sistemele numerice informația se reprezintã sub douã forme:

virgulã fixã (forma naturalã).

virgulã mobilã (forma normalã);

Reprezentarea în virgulã fixã este preferatã în sistemele numerice datorita în principal simplitãții bibliotecii aritmetice în virgulã fixã, efortului de calcul mai redus, constând în timpi de calcul inferiori celor care apar la reprezentarea în virgulã mobilã, consum mai mic de memorie etc.

Un numãr, N, are urmãtoarea reprezentare în virgulã fixã:

unde: p 16 (16, 24,32) -cuvântul alocat pentru reprezentare;

bp-1 bitul de semn;

B – fixeazã poziția virgulei:

i) B=p-1 – numãr fracționar |N|1);

ii) 0<B<p-1 – numãr zecimal în mãrime și semn;

iii) B=0 – numãr întreg.

Reprezentarea i) este foarte mult utilizatã, având avantajul vitezei de calcul mult sporite. Principalul inconvenient îl reprezintã posibilitatea apariției depãșirilor de calcul, la operațiile de adunare sau scãdere (nu și la înmulțiri). Aceasta va necesita scalarea mãrimilor ce intervin în calcule și testarea, dacã nu este absolut sigur, a depãșirilor, pentru utilizarea, prin limitare, a unor valori extreme, maximale sau minimale.

Reprezentarea iii) este asemãnãtoare, ca precizie și vitezã de calcul cu metoda anterioarã. Principala deosebire constã în faptul cã posibilitatea de apariție a depãșirilor, la efectuarea calculelor, este mai mare, și mai ales la înmulțiri. De aceea, problemele de scalare trebuie rezolvate mai atent.

Duratele tipice ale unei operații de înmulțire vor fi în jur de 500 s la un microprocesor de 8 biți (implementare prin software) și doar de 25 s la un procesor de 16 biți.

Reprezentarea în virgulã mobilã este cea mai precisã abordare. Numerele sunt reprezentate uzual pe 4 octeți, din care 3 octeți pentru mantisã (un bit de semn) și 1 octet pentru exponent (1 bit de semn).

Plaja de valori astfel obținutã este extrem de mare, iar efectuarea calculelor se poate face cu mare precizie și fãrã problema obișnuitã la celelalte reprezentãri, cea a depãșirii capacitãții de reprezentare. Principalul inconvenient în acest caz este dat de durata calculelor. În esențã, înmulțirile reprezintã operațiile cele mai lungi. Performanțele ce se obțin depind de soluția aleasã:

– utilizarea procesoarelor uzuale de 8 biți (Z80,I8080), care nu au în setul de instrucțiuni înmulțiri, trebuind sã le efectueze prin operații succesive de adunare (software), asigurã un timp de calcul de 2ms/înmulțire;

– utilizarea procesoarelor de 16 biți, având în setul de instrucțiuni înmulțirea, asigurã vitezã de calcul superioarã;

– utilizarea de procesoare aritmetice (coprocesoare) asociate procesoarelor pe 16 biți asigurã o vitezã de calcul mult sporitã (25 s/înmulțire);

– utilizarea procesoarelor dedicate de prelucrare a semnalelor (DSP), avânt unitatea aritmeticã în virgulã fixã, nu asigurã performanțe mult superioare cazului precedent;

– utilizarea procesoarelor dedicate de prelucrare a semnalelor (DSP), avânt unitatea aritmeticã în virgulã mobilã, asigurã evident cele mai bune performanțe.

În concluzie, adoptarea tipului de reprezentare a informației numerice va depinde de precizia doritã, de viteza de calcul necesarã și de raportul optim cost/performanțe.

Deși cele mai multe concepte privind aplicațiile sunt comune și pentru sistemele bazate pe microprocesoare, în cazul utilizãrii circuitelor DSP apar probleme speciale datorate procesului de prelucrare paralelã a datelor și varietãții deosebite a tehnicilor de întreruperi și a modurilor de tratare a acestora.

IV.2Transforata Fourier discretã (TFD)

TF convertește informația din domeniul timp în domeniul frecvență constituind un important instrument analitic in diverse domenii cum ar fi: acustica, optica, seismologie, telecomunicații, prelucrarea semnalelor audio și prelucrarea imaginilor. Transformata Fourier Discretă (TFD sau DFT – eng.) este omoloaga TF în domeniul sistemelor discrete în timp.

Transformata Fourier Rapidă (FFT)este de fapt o metodă optimizată din punctul de vedere a efortului de calcul a TFD și constituie unul din cele mai importante instrumente utilizate în aplicațiile de prelucrare numerică a semnalelor. Datorită formei sale bine structurate FFT este utilizat și pentru evaluarea performantelor circuitelor DSP. Transformata Fourier rapidã reprezintã însã numai un algoritm pentru calculul transformatei Fourier discrete si nu o transformatã separatã.

Transformata Fourier în timp discret (TFTD), este un instrument teoretic de studiu (neputând sã fie implementatã pe un sistem numeric de prelucrare), aceasta datoritã faptului cã este o functie continuã iar variabila ia o infinitate de valori în intervalul de definitie..

Pentru a putea face un studiu în frecventã utilizând un sistem numeric de prelucrare este necesar sã discretizãm variabila continuã . Discretizând pe un interval în N puncte se obtine transformata Fourier discretã în timp si frecventã, numitã pe scurt transformata Fourier discretã (TFD/DFT).

Implicând lucru cu un numãr finit de esantioane, atât în domeniul timpului cât si în cel al frecventei, transformata Fourier discretã se preteazã la o evaluare directã prin metode numerice, prin utilizarea sistemelor numerice de calcul. Fiind calculabilã, aceastã transformatã reprezintã chintesenta prelucrãrilor numerice ale semnalelor, permitând astfel relansarea teoriei moderne a prelucrãrilor numerice de semnal.

Fie semnalul discret periodic de perioadã T, esantionat cu perioada de esantionare Te (fig.1), si descris în domeniul timp prin N esantioane într-o perioadã.

Fig.1

Folosind metoda dreptunghiului în avans, integrala transformatei Fourier directã (7) se poate calcula pe cale numericã.

(1)

Determinarea intervalului de discretizare în frecventã

Potrivit teoremei esantionãrii (Shannon) perioada de esantionare, Te, trebuie sã fie cel mult jumãtate din cea mai micã perioadã a armonicii din cadrul semnalului x(t).

(2)

Deoarece perioada de esantionare este fixatã (si consideratã a fi aleasã optim pentru a surprinde dinamicile esentiale ale semnalului analizat) se poate stabili valoarea minimã a perioadei reprezentabilã în model sau echivalent valoarea maximã a frecventei (pulsatiei) raportate la perioada de esantionare.

(3)

Pe de altã parte considerând cã perioada maximã reprezentabilã este întregul interval de observare (Tmax=NTe) se poate determina frecventa (pulsatia) minimã din semnalul x(t).

(4)

Aceastã pulsatie este de fapt pulsatia fundamentalã a modelului, celelalte armonici fiind pulsatii multiple ale fundamentalei.

(5)

Cum si pulsatia maximã reprezintã un multiplu al pulsatiei fundamentale atunci se poate deduce indicele maxim imax=p.

(6)

În acest caz transformata Fourier discretã a semnalului esantionat x(kT), obtinutã prin discretizarea relatiei (1),are urmãtoarea formã:

(7)

unde k=0, 1,2,…p.

Pentru un semnal descris în domeniul timp prin N esantioane într-o perioadã, în domeniul frecventã spectrul va contine de asemenea N esantioane într-o perioadã.

Dupã cum rezultã din relatia (7) transformata Fourier discretã, corespunzãtoare unei valori a frecventei (k0), este un numãr complex si prin urmare poate fi exprimatã prin intermediul coordonatelor polare:

(8)

unde:

(9)

Cele N valori ale functiei , din domeniul frecventã, permit reconstituirea completã a celor N valori ale semnalului x(kT) din domeniul timp.

O observatie fundamentalã care se poate deduce constã în faptul cã este o functie periodicã (indusã de exponentiala complexã) si cã dacã se continuã evaluarea transformatei, pentru valori k mai mari decât N se va obtine aceeasi functie:

(10)

În concluzie, când valoarea k depãseste domeniul de definitie, N, valoarea obtinutã este redundantã, fiind egalã cu una obtinutã în cadrul domeniului.

Dacã semnalul prelucrat x(nT) este real se observã cã intervalul de definitie pentru transformata Fourier directã se poate restrânge la jumãtate, numai N/2 esantioane fiind independente.

Astfel, spectrul semnalelor reale este simetric (fig.2):

(11)

Se constatã cã spectrul complet de amplitudine al unui semnal esantionat pe intervalul T=NTe se poate reprezenta într-un interval simetric fatã de abscisã prin N valori (N/2 fiind redundante).

Fig.2

Prin discretizarea relatiei:

(12)

se obtine inversa transformatei Fourier discretã, obtinându-se operatorul:

(13)

Obs: Calculul unei transformate Fourier pentru un semnal având N valori în secventã implicã N2 operatii de înmultire si sumare cu numere complexe, determinând o crestere rapidã a timpului de calcul la cresterea numãrului de esantioane N.

Exploatând anumite proprietãti de simetrie ale exponentialei complexe, în anul 1965 J.W.Cooley si J.W.Tukey au elaborat un algoritm de calcul al transformatei discrete Fourier atunci când N este o putere a lui 2. Acest algoritm a permis o reducere a numãrului de operatii de la N2 la Nlog2N permitânud-se astfel o micsorare considerabilã a timpului de calcul. Algoritmii care permit accelerarea calculului transformatei Fourier discrete sunt cunoscuti sub numele de transformãri Fourier rapide (TFR/FFT).

IV.3. Analizoare spectrale. Analizoare spectrale de tip Fourier

Spre deosebire de analiza armonicã, ce permite explorarea unui semnal numai armonicã cu armonicã, analiza spectralã permite o vedere panoramicã a semnalului în domeniul frecventã (A1,A2,A3,…..An), de unde si superioritatea acesteia din urmã. Astfel, distorsiometrul permite aprecierea continutului global de armonici dintr-un semnal iar analizorul de armonici permite localizarea si mãsurarea (în amplitudine, frecventã, eventual si fazã) a armonicilor, însã ambele lucreazã corect numai în ipoteza stabilitãtii frecventei (fundamentalã) semnalului investigat, pe durata mãsurãrii.

În practicã însã sunt necesare mãsurãri si la frecvente variabile sau chiar aleatoare (zgomote, tranzitii), mãsurãri imposibil de efectuat cu distorsiometrul sau cu analizorul de armonici. Acest neajuns este compensat de analizorul spectral.

Interesul deosebit pentru analiza spectralã constã în posibilitãtile noi de mãsurare si investigare pe care le oferã printre care se amintesc:

vizualizarea compozitiei spectrale a unui semnal;

identificarea interferentelor si a zgomotelor dintr-un semnal util, pe baza configuratiilor spectrale ale acestora;

supravegherea emisiilor radio;

analiza zgomotelor acustice (la utilaje mecanice, masini etc);

studiul vibratiilor si socurilor (constructii de masini etc);

analiza diverselor semnale din biomedicinã si geologie (semnale complexe si foarte mici);

analiza vocii umane, al cãrei spectru individualizeazã mai precis decât amprenta unui deget.

În esentã, analizorul spectral este în domeniul frecventã ceea ce este osciloscopul în domeniul timp, fiecare din acestea având avantaje specifice: mãsurãrile în amplitudine si frecventã se fac mai usor si sunt mai concludente cu analizorul spectral, în timp ce mãsurarea de intervale de timp (si de mãrimi legate de acestea) si de fazã se fac mai usor cu osciloscopul.

Dupã modul cum exploreazã spectrul analizoarele spectrale pot fi:

seriale (armonicã dupã armonicã);

în timp real (toate armonicile simultan).

Ca si analizoarele de armonici, analizoarele spectrale seriale au la bazã un voltmetru selectiv la care, însã, acordul se face automat, iar afisarea se face pe tub catodic. Principalul neajuns al analizorului serial constã tocmai în explorarea serialã a armonicilor din spectrul semnalului analizat, ceea ce reclamã ca semnalul sã fie repetitiv si stationar pe timpul mãsurãrii acestuia (fractiuni de secundã). De aceea, astfel de analizoare nu pot fi utilizate la mãsurarea fenomenelor tranzitorii sau a semnalelor singulare (cele provenite de la descãrcãrile atmosferice, de exemplu). De asemenea, acest tip de analizor nu este potrivit pentru semnale cu variatii rapide si evolutie aleatoare, cum este, de exemplu, vocea umanã.

Aceste neajunsuri încearcã sã le compenseze analizoarele de timp real. A face o mãsurare în timp real înseamnã a mãsura parametrul unui fenomen instantaneu, chiar în momentul evolutiei acestuia. Teoretic, un analizor de timp real trebuie sã furnizeze instantaneu întregul spectru de componente (frecvente) continute în semnalul de analizat. Dupã felul cum furnizeazã acest “instantaneu de frecvente”, analizoarele spectrale de timp real pot fi:

cu filtre în paralel;

pe principiul calculului componentelor spectrale.

Schema de principiu a unui analizor în timp real cu filtre paralele este prezentatã în fig.1 Acesta are câte un canal de explorare care contine un filtru trece -bandã (FTB) si un detector pãtratic (DP) pentru fiecare armonicã de explorat. Toate aceste canale (30-50 la numãr) fiind legate în paralel, fac posibilã extragerea simultanã a celor n armonici, adicã mãsurarea acestora în timp real. Cele n filtre trece-bandã trebuie sã aibã benzile de trecere cât mai apropiate pentru a nu lãsa zone neexplorate din spectrul semnalului analizat.

Principalele dezavantaje ale acestui tip de analizor spectral sunt:

la rezolutie acceptabilã nu poate explora decât benzi înguste, deoarece pentru benzi mai largi numãrul de FTB devine mare;

timpul de mãsurã, determinat de timpul de stabilire a semnalului în filtru, este mare (2s), perioadã în care nu mai poate fi garantatã stationaritatea semnalului analizat.

Fig.1

Analizoare spectrale de tip Fourier

Operatorul matematic ce permite trecerea unui semnal din domeniul timp în domeniul frecventã si invers este transformata Fourier. Transformata Fourier directã ce calculeazã componentele unui semnal pe axa frecventelor este datã de relatia:

(1)

iar transformata inversã este definitã:

(2)

Existenta unui algoritm de calcul rapid pentru evaluarea transformatei Fourier discrete (TFD) face atrãgãtoare ideea utilizãrii acesteia în aproximarea transformatei Fourier a semnalelor analogice. TFD este avantajoasã mai ales pentru semnalele analogice de joasã frecventã unde analizoarele de spectru analogice sunt scumpe si imprecise. În plus, la sistemele numerice stabilitatea în timp este garantatã iar precizia mult mai usor de controlat.

Aceste analizoare spectrale s-au impus definitiv mai ales dupã aparitia procesoarelor de semnal specializate pe algoritmul TFR, algoritm cunoscut si sub denumirea FFT (Fast Fourier Transform). Acest tip de analizoare au denumiri de catalog ca: ”FFT Spectrum Analyzer”, “Digital Spectrum Analyzer”, “Fourier Analyzer”.

Schema de principiu a unui analizor Fourier este prezentatã în fig.2.

Fig.2

Acesta este compus dintr-un circuit de conditionare (divizor/amplificator de tensiune), circuit de esantionare-memorare si un convertor analog-numeric. Din semnalul discretizat se calculeazã spectrul de amplitudini (de putere) al semnalului u(t) cu ajutorul unui procesor de semnal (Digital Signal Processor – DSP), pe baza algoritmului TFR. Durata de procesare este de aproximativ 1s, ceea ce permite ca semnalul sã fie analizat în timp real fãrã o memorare prealabilã (în scop de stationarizare), deoarece durata de prelevare a portiunii de semnal pentru analizã este de ordinul ms (tipic 50 ms). Un astfel de analizor spectral permite deci o mai mare vitezã lucru, precizie bunã precum si integrabilitate completã în sisteme de mãsurã (IEEE 488) conduse de calculator.

CAPITOLUL V.

SISTEM DE DEZVOLTARE CU PROCESOR TMS320C26

IV.1. Schema bloc și vedere asupra plăcii de dezvoltare

Este prezentată în anexă.

Placa este prevazută cu un procesor de semnal TMS320C26, un circuit de interfață analogică TLC32040C-AIC, conector pentru alimentarea de la o sursa de 5V, conectori pentru intrarea analogică respectiv ieșirea analogică si conectorul pentru portul serial prin care circuitul este legat la portul serial al PC-ului.

Fig.1 Vedere asupra placii de dezvoltare cu TMS320C26

V.2.Circuite de interfață analogică – TLC32040C – AIC

TLC32040C este un sistem de I/E complet analog-digital și digital-analogic realizat pe un singur cip CMOS. Dispozitivul încorporează un filtru de intrare – anti-aliasing trece bandă cu capacități comutate , un convertor AD cu o rezoluție de 14 biți, un port serial cu 4 moduri de funcționare compatibile cu sistemele microprocesor, un convertor D/A pe 14 biți, și un filtru de ieșire pentru reconstrucția semnalului trece-jos cu capacități comutate

Conexiunile externe ale circuitului sunt prezentate în Fig. 1.

Descrierea semnalelor:

VCC+ Tensiunea de alimentare pozitivă pentru secțiunea analogică (+5V)

VCC- Tensiunea de alimentare negativă pentru secțiunea analogică (-5V)

ANLG GND Masa analogică

VDD Tensiunea de alimentare pentru secțiunea digitală (+5V)

DGTL GND Masa digitală

IN+ , IN – Intrările (inversoare și neinversoare) ale amplificatorului analogic de intrare

AUX IN+ , AUX IN – Intrările (inversoare și neinversoare) ale amplificatorului analogic auxiliar de intrare

OUT+ , OUT – Ieșirile (inversoare și neinversoare) ale amplificatorului analogic de ieșire

MASTR CLK(Master Clock) – pe baza lui se generează toate semnalele care controlează funcționarea AIC, ceasul registrelor de deplasare, semnalul de ceas pentru filtrele cu capacități comutate și pentru temporizările A/D și D/A. Frecvențele acestor semnale sunt submultipli ai MASTR CLK fixate in secțiunea interna de configurare a tempoului.

SHIFT CLK Este obținut prin divizarea MASTR CLK cu 4 și este utilizat ca semnal de ceas pentru transmiterea seriala a datelor între AIC și procesorul master.

DR Este utilizat pentru a transmite biții de ieșire de la convertorul A/D al AIC spre portul serial al procesorului gazdă.

DX Este utilizat pentru a recepționa biții de intrare pentru convertorul D/A și informațiile de tempo și control de la portul serial al procesorului gazdă.

/EODR End Of Data Receive

/EODX End Of Data Transmit

/FSR Frame Sincronization Receive

WORD/BYTE Stabilește modul de transfer pe 16/8 biți.

/RESET Inițializează registrele constantelor de timp și registrul de comandă. După un impuls negativ la intrarea RESET AIC este inițializat pentru o rată de conversie de 8KHz, la un semnal MASTR CLK de 5,184MHz, registrele de ajustare a ratei de conversie TA', RA' sun inițializate cu 1 iar biții registrului de control sun fixați: d7 =1, d6 = 1, d5 = 1, d4 = 0, d3 = 0, d2 = 1.

Descrierea circuitului

Schema bloc este prezentată în Fig.2.

Secțiunea de intrări analogice are două seturi de intrări. În mod normal sunt utilizate intrările IN+, IN- dar dacă este necesară și o a 2.a intrare se pot utiliza AUX IN+, AUX IN- .Fiecare din cele două intrări poate funcționa în mod diferențial sau unipolar. Amplificarea pentru cele două intrări poate fi programată ca fiind 1, 2 sau 4.

Filtrul trece-bandă poate fi selectat sau bypass-at prin control soft. Frecvența de ceas pentru bancul de capacități comutate trebuie să fie 288KHz pentru a asigura banda de trecere 300Hz – 3,4KHz. In cazul alteor frecvențe funcția de transfer va trebui scalată cu raportul între frecvența reală și 288KHz.

La ieșirea convertorului D/A este prevăzut un amplificator de putere care permite comanda unor sarcini de impedanță mică atât în mod unipolar (300Ω) cât și bipolar (600Ω).

Filtrul trece-jos de la iesire asigură o o frecvență superioară de 3,4KHz în cazul unei frecvențe de ceas de 288KHz..

Circuitul poate funcționa în mod sincron sau asincron.

În mod asincron semnalele de ceas pentru filtre sunt generate independent pe baza MASTR CLK iar ratele de conversie A/D și D/A sunt controlate independent.

În mod sincron secțiunile A/D și D/A lucrează cu aceeași rată de conversie iar ambele filtre utilizează același semnal de ceas.

Portul serial are patru moduri posibile de funcționare rezultând din starea pinului BYTE/WORD și modul sincron asincron. Întrucât în aplicațiile cu TMS320C26 interesează modul de lucru pe 16 biți vom prezenta numai diagramele de timp pentru modurile de lucru WORD sincron sau asincron (Fig. 3).

Bucla de test este o facilitate ce permite testarea prin soft a circuitului prin conectarea interna a ieșirii analogice la intrarea analogică

Configurarea internă a tempoului

Este asigurată de două grupe de numărătoare TX, RX, fiecare fiind prevăzută cu câte două numărătoare de 6 biți A și B cu registrele aferente constantelor, prin care se realizează divizarea semnalului MASTR CLK pentru obținerea semnalelor de conversie.

Astfel se obțin semnalele de ceas pentru registrele de deplasare:

Frecvență SHIFT CLK = Frecvență MASTR CLK / 4

Filtrele cu capacitate comutată (SCF):

Frecvență Ceas SCF = Frecvență MASTR CLK / ( 2* Conținut Numărător A)

Circuitele de converse

Frecvență Conversie = Frecvență MASTR CLK / ( 2* Conținut Numărător B)

Formatul cuvintelor transmise pe interfața serială

Schema bloc a logicii de generare a tempoului este prezentată în fig. 4.

V.3.Interfețe seriale Porturile seriale la calculatoare personale.

Interfețele seriale sunt realizate cu circuite programabile specializate de tip transmițător/receptor serial asincron (UART – Universal Asyncronous Receiver Transmitter) sau de tip sincron (USART–Universal Syncronous/Asyncronous Receiver Transmitter). Schema bloc este prezentată in figura următoare.

Blocurile componente comunică intre ele prin magistrala internă, conectată printr-un tampon bidirecțional la magistrala de date externă. Microprocesorul are rolul de master in dialogul cu interfața serială, furnizând semnalele de comandă necesare sincronizării schimbului de date in format paralel. Momentele in care este necesar acest schimb de date sunt marcate de activarea semnalelor de întrerupere la transmisie și la recepție, furnizate microprocesorului de către interfața serială. De cealaltă parte a interfeței, cea a liniei de comunicație serială, este prevăzut un bloc de control, necesar pentru sincronizarea transferului de date cu modemul (dispozitivul care oferă interfața cu mediu fizic de comunicație), precum si un canal duplex, transmițător receptor a cărui structura internă este prezentată în fig. alăturată.

Transmițătorul are un registru tampon de transmisie în care microprocesorul înscrie data la activarea semnalelor corespunzătoare de selecție si de înscriere(C/D = 0 și /WR=0). Data este transferată automat intr-un registru de deplasare paralel/serie, imediat ce acesta a terminat transmisia datei anterioare. Ieșirea serie a acestui registru constituie linia de transmisie serială a datelor (TxD). În funcție de modul de lucru asincron sau sincron logica de comandă a transmisiei adaugă la biții de date biți de control și sincronizare. Semnalul de tact care determină deplasarea biților cu o poziție in registrul paralel/serie poate fi /TxC sau un semnal obținut prin divizarea acestuia (de obicei cu 16 sau 64). Semnalul /TxC poate fi primit din interiorul sistemului sau de la modem. Programarea transmițătorului constă in înscrierea de către UCP în registrele logicii de comandă a unor cuvinte de control prin care se stabilesc caracteristicile funcționale și modul de operare al circuitului. Unitatea centrală poate primi informații despre starea transmițătorului prin liniile TxRDY și TxE. Astfel TxRDY devine activ la vidarea registrului tampon de transmisie, când unitatea centrala poate înscrie un nou caracter. TxE este activat atunci când și registrul de deplasare paralel/serie este gol, deci efectiv nu mai sunt caractere de transmis. Aceste informații ajung la unitatea centrală prin întreruperi generate de liniile TxRDY și respectiv TxE, sau prin citirea cuvântului de stare a canalului.

Receptorul conține un registru de deplasare serie/paralel în care sunt introduși biții caracterelor recepționați in mod serial pe linia RxD. Citirea liniei RxD și deplasarea cu un rang in registrul serie/paralel au loc la momente bine stabilite marcate de semnalul de tact /RxC sau de un semnal obținut prin divizarea cu 16 sau 64 a lui /RxC. De îndată ce in registru de deplasare s-au recepționat numărul de biți necesari pentru formarea unui cuvânt de date, acesta este transferat in mod paralel in registrul tampon de recepție. Linia RxRDY furnizează întrerupere dacă în registrul tampon există o dată nepreluată. Programarea receptorului se face prin înscrierea cuvintelor de comandă și control în registrele logicii de comandă a recepției.

Porturile de comunicație serială la calculatoarele de tip PC-AT

Calculatoarele compatibile PC-AT dispun de un sistem de comunicație serială construit in jurul unui circuit INTEL8251 sau mai evoluat (I82510 I82C450 16C450). De regulă calculatoarele PC-AT dispun de două porturi seriale denumite generic COM1 si COM2. (Sist. de operare MS-DOS permite implementarea a până la 4 porturi seriale COM3, COM4)

Pentru a simplifica programarea porturilor seriale registrele de comandă și cele de stare ale circuitelor de interfață pot fi accesate de utilizator prin operații de intrare/ieșire pe porturi de 8 biți plasate la adrese standard:

Adresa Registrul Operație DLAB

XF8 Registrul tampon transmisie date -TX WR 0

XF8 Registrul tampon recepție date -RX RD 0

XF8 Partea low a generatorului de Baud -LBG WR 1

XF9 Partea high a generatorului Baud -HBG WR 1

XF9 Registrul de validare întreruperi -IER RD/WR 0

XFA Registrul de identificare întreruperi -IIR RD/WR x

XFB Registrul de control al liniei -LCR RD/WR x

XFC Registrul de control Modem -MCR RD/WR x

XFD Registrul de stare al liniei -LSR RD/WR x

XFE Registrul de stare Modem -MSR RD/WR x

COM1: X=3 COM2: X=2

Se constată ca la adresele XF8, XF9 sunt plasate mai multe registre dar, care nu sunt folosite niciodată simultan. Controlul accesului la aceste registre se face prin intermediul bitului LCR.7 și prin operația ce se execută.

Registrele TX si RX sunt registrele tampon de date ce vor conține ultimul cuvânt de date transmis respectiv recepționat.Registrele LBG si HBG sunt folosite pentru a programa viteza de transmisie in Baud. Acestea vor fi înscrise o singura data la programarea circuitului si apoi nu vor mai fi accesate. Pentru accesul lor se va programa in "1" bitul 7 din LCR iar apoi acesta va fi înscris din nou cu "0".

Constanta de divizare = F. osc. / (Baud rate * 16)

De regula F. osc. =1.8432 MHz (sau 3.072MHz)

De ex pt baud rate 9600 Ct. divizare = 12 (HBG=0x00, LBG=0x0C)

Registrul LCR este cel prin care se comanda efectiv funcționarea portului serial:

7 6 5 4 3 2 1 0

DLAB BREAK Stik EVEN PEN STB L1 L0

7-Divisor Latch Access Bit 1 LBG, HBG 0 TX, IER

6 – BREAK forțare 0 pe transmisie (întrerupere legătura)

5 – complementare bit de paritate (de regula 0)

4 – tip paritate 0 – paritate pară ODD 1 – paritate impară EVEN

3 – validare control paritate (de regulă 0 – fără control paritate)

2 Număr de biți de stop = STB + 1

1, 0 Lungimea cuvântului de date = L1L0 + 5

Registrul LSR indică starea portului

7 6 5 4 3 2 1 0

0 TEMPTY TX BI FE PE OE DR

7 – 0 întotdeauna

6 – Complet liber pentru transmisie ( Bufferul de transmisie si registrul paralel serie goale)

5 – Poate primi un caracter de transmis (Bufferul de transmisie gol) – șters la înscrierea TX

4 – Linia de intrare a fost forțata in 0 (BREAK)

3 – Eroare de încadrare (nu s-a recepționat corect bitul de stop)

2 – Eroare de paritate

1 – Eroare de sincronizare

0 – Data disponibilă în registrul de recepție date – bitul este șters la citirea RX

Serial (PC 9) 9 PIN D-SUB MALE at the Computer.

Pin Name Dir Description

1 CD ← Carrier Detect

2 RXD ← Receive Data

3 TXD → Transmit Data

4 DTR → Data Terminal Ready

5 GND – System Ground

6 DSR ← Data Set Ready

7 RTS → Request to Send

8 CTS ← Clear to Send

9 RI ← Ring Indicator

Serial (PC 25) 25 PIN D-SUB MALE at the computer.

Pin Name Dir Description

1 SHIELD – Shield Ground

2 TXD → Transmit Data

3 RXD ← Receive Data

4 RTS → Request to Send

5 CTS ← Clear to Send

6 DSR ← Data Set Ready

7 GND – System Ground

8 CD ← Carrier Detect

9 …19 n/c –

20 DTR → Data Terminal Ready

21 n/c –

22 RI ← Ring Indicator

23 … 25 n/c –

V.4. Descrierea DSK Debuger

Este ușor de utilizat si are facilitați de afișare a conținutului regiștrilor și a sursei programului fie din limbajul de asamblare fie dintr-un limbaj evoluat precum TurboC.Debugerul poate încărca si executa operații pas cu pas sau fixate cu ajutorul întreruperilor. Se pot introduce comenzi la prompterul afișat în josul ferestrei.

V..5.Progam sub C de monitorizare a semnalului analogic de intrare.

/************************************************

TMS320C26 DSK INTERFATA OSCILOSCOP

************************************************/

#include <math.h>

#include <float.h>

#include <dos.h>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <graphics.h>

#include <bios.h>

#include "dsk_drv2.h"

int port_no, baud;

int buf_0[512],buf_1[512]; // Pastrez datele anterioare

unsigned int ENTRY;

void rcv_buf(int,int *);

void vline(int,int,int,int);

void init_graphics(void);

int check_key(void);

void out_TEXT(void);

void load_HSPEC(void);

void setup_vals(void);

void main(void)

{

int *ptr0, *ptr1, *tmp0, *tmp1, *tmpx;

int x, y1,y2, yold1, yold2;

baud = 6;

port_no = 0x3f8; // implicit COM1

clrscr();

cmdline();

load_HSPEC();

init_graphics();

tmp0 = buf_0; tmp1 = buf_1;

ptr0 = tmp0;

yold1 = 128;

for(x=0;x<256;x+=2)

{

y1 = 128 – (*ptr0++ >> 6);

line(x,yold1,x+1,y1);

yold1 = y1;

}

setcolor(15);

for(;;)

{

ptr0 = tmp0; ptr1 = tmp1;

yold1 = 128 – (*ptr1 >> 6); yold2 = 128 – (*ptr0 >> 6);

for(x=0;x<256;x+=2)

{

y1 = 128 – (*ptr0 >> 6);

line(x,yold1,x+1,y1);

yold1 = y1; // sterg linia veche

ptr0++;

y2 = 128 – (*ptr1 >> 6);

line(x,yold2,x+1,y2); // afisez linia noua

yold2 = y2;

ptr1++;

}

tmpx = tmp0; tmp0 = tmp1; tmp1 = tmpx; // Comut pointerii

if(kbhit())

check_key();

rcv_buf(port_no,tmp1); // receptionez datele in buffer, 0=sync

}

}

void synch(char ON)

{

char color;

static char LAST_ON;

if(ON == LAST_ON) return;

LAST_ON = ON;

color = getcolor();

setwritemode(0);

if(ON)

{

setfillstyle(SOLID_FILL,LIGHTRED);

setcolor(LIGHTRED);

}

else

{

setfillstyle(SOLID_FILL,BLACK);

setcolor(BLACK);

}

pieslice(10,10,0,360,4);

setcolor(RED);

circle(10,10,4);

setwritemode(1);

setcolor(color);

}

#define DSK_RET 8

void rcv_buf(int port_no,int *ptr)

{

int loop = 500;

char c;

for(;;)

{

delay(1);

c = inportb(port_no + 5) & 0x1; // Astept un cuvant de la DSK

if(c == 1) break;

if(loop < 1)

{

synch(0);

break;

}

loop–;

}

if(c) synch(1);

if(c==0) // daca a aparut timeout …

{ // fortez DSK synch: setez INT2

cxmit(SYNCH,port_no); //

cxmit(SYNCH,port_no); //

}

if(c)

c = Bcrcv(port_no);

Bread_data(0x400,128,ptr); // Citire bloc RECV.

if(*ptr & 0x3) // si revenire in mod comanda

synch(0);

cxmit(DSK_RET,port_no); // Transmit revenire din comanda

}

int check_key(void)

{

int key;

key = bioskey(0) & 0xFF00;

switch(key)

{

case 0x5000: return (1); // Scad Trigger Level (Sageata JOS)

case 0x4800: return (2); // Cresc Trigger Level (Sageata SUS)

case 0x1300: load_HSPEC(); // Reset

init_graphics();

break;

case 0x1000: closegraph(); exit(0); // Gata

default : return (0); // Return SYNCH

}

setup_vals(); // reafisez valorile de setup

setviewport(140,20,390,254,1); // Stabilesv fereastra pentru afisare

setwritemode(1); // liniile afisate sunt desenate cu XOR

setcolor(15); // gri stralucitor

return(0);

}

void load_HSPEC(void)

{

int x;

closegraph();

for(x=0;x<256;x++)

buf_0[x] = 0;

load_file(0,""); // Boot DSK_COMM.DSK (Nucleu de baza I/E )

ENTRY = load_file(2,"OS26.DSK");

execute(ENTRY);

}

void setup_vals(void)

{

setwritemode(0); // valorile sunt scrise direct

setviewport(80,120,130,140,1); // Stabilesc fereastra in care

clearviewport(); // afisez valorile de setup

setviewport(0,20,600,320,1); //

setcolor(11); // Bleo stralucitor

outtextxy(70,5 ," SYNCH"); //

outtextxy(70,80,"(Q)uit "); //

outtextxy(70,90,"(R)eincarca"); //

outtextxy(138,240," ");

outtextxy(138,250," SCALA TIMP ");

outtextxy(400,75 ,"VOLTI");

}

void init_graphics(void)

{

int gdriver = EGA, gmode = EGAHI, errorcode, Y, X;

// int gdriver = DETECT, gmode, errorcode;

// registerbgidriver(EGAVGA_driver);

initgraph(&gdriver, &gmode, ""); // daca e posibl intra in mod EGA

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Eroare grafica: %s\n", grapherrormsg(errorcode));

printf("Apasa orice tasta pentru oprire:");

getch();

exit(1);

}

clearviewport(); //

setup_vals(); // afisez setup

setviewport(140,20,390,254,1); // Stabilesv fereastra pentru afisare

setcolor(2); // reticulul este verde

for(Y=0;Y<=234;Y+=26) line(0,Y,250,Y); // desenez reticul

for(X=0;X<=250;X+=25) line(X,0,X,234); //

setwritemode(1); // liniile afisate sunt desenate cu XOR

setcolor(15); // gri stralucitor

}

void cmdline(void)

{

int i;

char *ptr,*eptr;

port_no = 0x3f8; // implicit COM1

for(i=_argc-1;i>0;i–)

{

ptr = strupr(_argv[i]);

while(*ptr != 0) // scanez fiecare sir

{

switch(*ptr)

{

case 'C': while(*ptr != 0)

{

if(*ptr == '1'){port_no = 0x3f8; break;}

if(*ptr == '2'){port_no = 0x2f8; break;}

ptr++;

}

break;

case 'B': ptr++;

baud = 115200 / strtol(ptr,&eptr,0);

break;

case 'H':

case '?': usage();

break;

default: break;

}

ptr++;

}

Similar Posts