+ All Categories
Home > Documents > PNS curs-pag-1-81din100

PNS curs-pag-1-81din100

Date post: 29-Jun-2015
Category:
Upload: bogdan-popa
View: 322 times
Download: 5 times
Share this document with a friend
81
TRIP NISTOR DANIEL PROCESORUL DIGITAL DE SEMNAL TMS320C50 Editura Universităţii din Oradea 2004
Transcript
Page 1: PNS curs-pag-1-81din100

TRIP NISTOR DANIEL

PROCESORUL DIGITAL DE SEMNALTMS320C50

Editura Universităţii din Oradea2004

Page 2: PNS curs-pag-1-81din100

Referenţi ştiinţifici:Prof.univ.dr. Bondor Károly, Universitatea din Oradea

Prof.univ.dr.ing. Gordan Cornelia, Universitatea din Oradea

EdCe

Descrierea CIP a Bibliotecii Naţionale a RomânieiTRIP, NISTOR DANIEL Procesorul digital de semnal TMS320C50 / NistorDaniel Trip. - Oradea : Editura Universităţii din Oradea,2004 Bibliogr. ISBN 973-613-680-9

004.383.3004.031.43

2

itura Universităţii din Oradea este acreditată de Consiliul Naţional alrcetării Ştiinţifice din Învăţământul Superior (CNCSIS).

Page 3: PNS curs-pag-1-81din100

3

Prefaţă

Utilizarea în momentul de faţă a procesoarelor digitale de semnal

într-o serie de aplicaţii tehnice şi ştiinţifice de vârf, face din studiul acestor

dispozitive electronice o disciplină de specialitate, aflată într-o continuă

transformare. Procesoarele digitale de semnal oferă un mijloc modern de

prelucrare digitală în timp real a semnalelor.

Lucrarea "Procesorul digital de semnal TMS320C50" se adresează în

principal studenţilor de la specializarea Electronică aplicată din cadrul

Facultăţii de Electrotehnică şi Informatică a Universităţii din Oradea.

Materialul prezentat în lucrare acoperă partea din cursul "Procesoare

numerice de semnal" referitoare la procesoarele în virgulă fixă. Lucrarea

vine în sprijinul studenţilor şi în cadrul orelor de laborator, unde la fiecare

lucrare se studiază algoritmi sau aplicaţii ale procesoarelor digitale de

semnal în virgulă fixă cu ajutorul plăcii de dezvoltare TMS320C5X DSP

Starter Kit.

Având în vedere importanţei acestui domeniu, lucrarea poate fi

studiată de studenţii de la alte specializări tehnice care doresc să îşi

însuşească noţiunile de bază privind mijloacele moderne de prelucrare

digitală a semnalelor dar şi de inginerii care doresc să obţină o

documentare rapidă.

Expunerea informaţiilor din volumul de faţă se face gradual, începând

de la enumerarea principalelor necesităţi practice de utilizare a

procesoarelor digitale de semnal, prezentând apoi arhitectura internă a

procesorului în virgulă fixă TMS320C50 şi modul lor specific de funcţionare

în tehnică "pipe line", iar în ultima parte a lucrării se prezintă o serie de

Page 4: PNS curs-pag-1-81din100

4

aspecte practice folosite la implementarea unor algoritmi specifici utilizaţi în

prelucrarea digitală a semnalelor.

Mulţumesc pe această cale domnului Prof.univ.dr. Bondor Károly şi

doamnei Prof.univ.dr.ing. Gordan Cornelia pentru ajutorul acordat, care în

calitate de referenţi, prin observaţii şi sugestii valoroase, au impus lucrării

de faţă un caracter ştiinţific şi academic.

Oradea, 2004 Autorul

Page 5: PNS curs-pag-1-81din100

5

CUPRINS

Prefaţă 3Cuprins 51.Introducere 7

1.1. Tehnicile de prelucrare digitală a semnalelor 81.2. Arhitectura procesoarelor de semnal 91.3. Sisteme de numerotaţie în virgulă fixă 11

2. Unitatea centrală de prelucrare a procesorului digitalde semnal TMS320C50 132.1. Circuite de scalare 142.2. Multiplicatorul 172.3. Unitatea logică paralelă 192.4. Regiştrii de stare şi control 192.5. Sistemul de întreruperi 22

3. Configurarea şi adresarea memoriei la procesorul desemnal TMS320C50 263.1. Configurarea memoriei 263.2. Adresarea memoriei program 303.3. Modurile de adresare ale operanzilor 353.4. Funcţionarea procesoarelor de semnal

TMS320C50 în tehnică “pipe-line” 404. Circuite periferice 43

4.1. Circuitul de temporizare 434.2. Porturile seriale ale procesorului de semnal

TMS320C50 464.2.1. Portul serial standard 464.2.2. Registrul de stare şi control al portului serial 494.2.3. Modurile de funcţionare ale portului serial 52

4.3. Porturi de intrare-ieşire 555. Noţiuni de utilizare a procesorului TMS320C50 58

5.1. Reprezentarea numerelor pentru procesoareledigitale de semnal în virgulă fixă 58

5.2. Operaţii aritmetice realizate cu procesorul digitalîn virgulă fixă TMS320C50 62

5.3. Transformata Fourier rapidă 655.4. Filtre digitale 70

Anexă 80Bibliografie 99

Page 6: PNS curs-pag-1-81din100

6

Page 7: PNS curs-pag-1-81din100

7

1. Introducere

Tehnologia digitală cunoaşte în prezent progrese impresionante.

Prelucrarea numerică a semnalelor a fost unul dintre catalizatorii aflaţi în

spatele progresului tehnologiei digitale iar sistemele digitale de prelucrare a

semnalelor se bucură de aceeaşi apreciere într-un număr mare de aplicaţii.

Succese ale prelucrării digitale a semnalelor sunt înregistrate

permanent în diferite domenii. Nevoia de putere de prelucrare digitală a

semnalelor creşte continuu, determinând dezvoltarea sistemelor folosite în

acest scop. Preţul sistemelor integrate specializate pentru prelucrarea

semnalelor este scăzut în prezent, comparabil cu cel al microprocesoarelor

şi cel al microcontrolerelor.

Datorită microelectronicii, ca parte activă la această evoluţie, s-a

ajuns la ora actuală la unităţi de prelucrare digitală a semnalelor, care

conţin într-un chip diferite tipuri de memorie, circuite periferice de uz

general şi specializate, fiind create astfel toate premisele de proiectare şi

implementare de noi produse.

Procesoarele digitale de semnal sunt sisteme digitale de prelucrare

a semnalelor capabile să execute un număr remarcabil de instrucţiuni în

unitatea de timp. Beneficiind de o arhitectură de tip Harvard, în comparaţie

cu cea clasică a microprocesoarelor, procesoarele digitale de semnal sunt

capabile să execute o instrucţiune într-un singur ciclu maşină, pretându-se

la aplicaţiile în timp real.

Dintre domeniile în care procesoarele digitale de semnal îşi găsesc

aplicaţii se remarcă următoarele:

- telecomunicaţii: modem-uri, compresie de date, securizare de date, filtrare

digitală, telefonie celulară;

Page 8: PNS curs-pag-1-81din100

8

- produse de larg consum: receptoare radio şi TV digitale, sintetizatoare

muzicale;

- automobile: controlul adaptiv al funcţionării automobilului, frâne anti-

derapaj, navigaţie, GPS (sistem de poziţionare);

- control: controloare de harddisk, controloare de imprimantă, robotică;

- instrumentaţie: generare de funcţii, recunoaşterea formelor, analizoare de

spectru;

- electronică medicală: aparatură electronică complexă, prelucrarea

imaginilor de la echografe şi tomografe;

- electronică de putere şi acţionări electrice, etc.

1.1. Tehnicile de prelucrare digitală a semnalelor

Cu mult timp în urmă, prelucrarea semnalelor se realiza cu ajutorul

circuitelor analogice. Apariţia microprocesoarele a permis prelucrarea

digitală a semnalelor. Tehnicile de prelucrare digitală a semnalelor sunt

fundamentale în ceea ce priveşte manipularea semnalelor analogice din

mediul înconjurător. Când aceste semnale sunt prelucrate de către sistemul

de prelucrare digital, metodele de prelucrare analogice trebuie să fie

transformate pentru realizarea implementării digitale - 5.4.

Semnalele din mediul înconjurător au o natură analogică. Pentru a

putea fi prelucrate de sistemele digitale, semnalele analogice sunt

eşantionate şi apoi cuantizate într-un convertor analog-digital, obţinându-se

în urma conversiilor date reprezentate sub formă binară. Datele sub formă

binară sunt prelucrate apoi de sistemele digitale de prelucrare cu ajutorul

unor algoritmi optimizaţi pentru a îndeplini o anumită sarcină într-un timp

cât mai scurt. Rezultatul prelucrării digitale este convertit apoi în formă

Page 9: PNS curs-pag-1-81din100

9

analogică. În figura 1.1 este prezentată schema bloc a unui sistem digital

de prelucrare a semnalelor.

Fig.1.1 Schema bloc a unui sistem de prelucrare digitală a semnalelor

Procesoarele digitale de semnal sunt realizate pentru a funcţiona

conform principiului amintit mai sus, fiind capabile să execute instrucţiuni

foarte complexe într-un singur ciclu maşină.

1.2. Arhitectura procesoarelor de semnal

Pentru microprocesoarele de uz general se foloseşte ca bază

arhitectura von Neuman. Acest tip de arhitectură - figura 1.2 - are

dezavantajul că datele şi instrucţiunile accesate de către unitatea centrală

folosesc aceeaşi magistrală de date, motiv pentru care într-un ciclu maşină

poate să fie citită fie un operand fie o instrucţiune.

Fig.1.2 Arhitectura unui microprocesor de uz general

Page 10: PNS curs-pag-1-81din100

10

Datele respectiv instrucţiunile, ajung la unitatea aritmetică şi logică

prin intermediul magistralei de date (MD). Selectarea unei locaţii din

memoria aferentă microprocesorului se realizează cu ajutorul magistralei

de adrese. Pe magistrala da control sunt transmise informaţii cu privire la

selectarea memoriei sau a porturilor de intrare-ieşire dar şi informaţii privind

sensul de transfer a datelor.

Datorită faptului că la prelucrarea digitală a semnalelor este necesar

accesul la date (operanzi) respectiv instrucţiuni, într-un interval de timp cât

mai scurt, pentru procesoarele digitale de semnal s-a adoptat arhitectura

Harvard modificată - figura 1.3.

Fig.1.3 Arhitectura unui procesor digital de semnal

După cum se poate contata din figura 1.3 procesorul digital de

semnal dispune de magistrale separate pentru adresarea memoriei de

program (MAMP) şi adresare a memoriei de date (MAMD). Transferul de

date între memoria de program/memoria de date şi unitatea aritmetică şi

logică centrală se realizează tot pe magistrale separate: magistrala de date

a memoriei program (MDMP) respectiv magistrala de date a memoriei de

date (MDMD). Sensul transferului de date este asigurat prin intermediul

semnalelor de pe magistrala de control. În figura 1.3 este indicat cu linie

Page 11: PNS curs-pag-1-81din100

11

întreruptă faptul că este posibilă realizarea transferurilor de date între

memoria program şi memoria de date a procesorului digital de semnal.

Existenţa unor magistrale separate pentru adresarea memoriei

program respectiv adresarea memoriei de date cât şi magistrale de acces

la date separat, facilitează accesul la un operand şi la o instrucţiune într-un

singur ciclu maşină.

Pentru memoria şi porturile I/O externe, procesorul digital de semnal

are o funcţionare asemănătoare cu cea a microprocesoarelor de uz

general, deoarece datele şi instrucţiunile ajung la unitatea aritmetică şi

logică centrală doar prin intermediul unei singure magistrale de date. Lucrul

cu echipamentele periferice încetineşte funcţionarea procesorului digital de

semnal.

1.3. Sistemul de numerotaţie în virgulă fixă

Semnalele analogice au o multitudine de forme şi sunt continue în

domeniul timp dar mijloacele lor de prelucrare digitală şi rezoluţia oferită

sunt limitate. Calculul digital are o precizie finită, rezultând doar o

aproximaţie a parametrilor prelucraţi. Procesoarele digitale de semnal au o

arhitectură internă care oferă o anumită precizie pentru reprezentarea

numerelor finite. În momentul actual se produc două tipuri de procesoare

digitale de semnal - în virgulă fixă şi virgulă mobilă - oferind fiecare în parte

o precizie a reprezentărilor numerice. Procesoarele în virgulă fixă sunt

caracterizate de o precizie limitată în comparaţie cu cea a procesoarelor în

virgulă mobilă. Cu toate acestea arhitecturile procesoarelor în virgulă fixă

sunt mai economice în comparaţie cu cele ale procesoarelor în virgulă

mobilă iar folosirea lor se pretează în aplicaţiile în care timpul de prelucrare

este scăzut.

Page 12: PNS curs-pag-1-81din100

12

Aritmetica care foloseşte numere cu o lungime finită este o aritmetică

cu precizie fixă sau limitată. Ambele formate în virgulă fixă şi în virgulă

mobilă sunt considerate de lungime finită.

Aritmetica în virgulă fixă este definită de formatul Q. De exemplu,

pentru procesorul de semnal TMS320C50 în virgulă fixă, formatul

Q15 (1.15) este un format des folosit la reprezentarea binară a datelor. Cel

mai semnificativ bit al reprezentării este bitul de semn urmat de un punct

imaginar, după care urmează o fracţie reprezentată pe 15 biţi. Numărul în

format Q15 are un domeniu zecimal cuprins între -1 şi 0.9(9) sau în

reprezentare hexazecimală între 8000(0)h şi 7FFF(F)h. Fracţia în format

Q15 poate fi exprimată într-o formă compactă conform următoarei relaţii:N

Nbbbbq −−− ++++−= 2...222 22

11

00 , (1.1)

unde N = 15.

Adunarea şi scăderea folosind reprezentarea numerelor în format

Q15 se realizează uşor folosind un sumator digital.

Operaţia de înmulţire presupune o înţelegere specială. Când sunt

înmulţite două numere reprezentate pe 16 biţi, rezultatul obţinut este

reprezentat pe 32 de biţi. Un produs a două numere reprezentate în

formatul Q15 (1.15) este un număr în formatul Q30 (2.30) cu doi biţi de

semn şi 30 de biţi reprezentând partea frecţionară. Datorită faptului că al

doilea bit de semn este redundant, rezultatul înmulţirii a două numere în

format Q15 trebuie deplasat la stânga cu un bit. După deplasarea la stânga

cu un bit, produsul este reprezentat în format Q31 (1.31). Rezultatul final va

fi dat de către cei 16 biţi mai semnificativi ai produsului deoarece, în marea

majoritate a cazurilor, operanzii procesoarelor numerice de semnal

TMS320C50 sunt formaţi din 16 biţi.

Page 13: PNS curs-pag-1-81din100

13

2. Unitatea centrală de prelucrare a procesorului digitalde semnal TMS320C50

Unitatea centrală de prelucrare este circuitul de bază al procesorului

digital de semnal fiind responsabil de scalarea operanzilor şi a numeroase

operaţii aritmetice şi logice. Principalele facilităţi de care dispune unitatea

centrală de prelucrare a procesoarelor TMS320C50 sunt:

- realizarea majorităţii instrucţiunilor aritmetice şi logice doar într-un singur

ciclu maşină;

- realizarea operaţiei de înmulţire cu operanzi (cu sau fără semn);

- arhitectură optimizată în vederea execuţiei de instrucţiuni "înmulţeşte şi

adună" specifice algoritmilor de prelucrare digitală a semnalelor;

- pre-scalarea, scalarea respectiv post-scalarea operanzilor, existenţa în

plus a unui registru acumulator tampon care este folosit în diferite

instrucţiuni aritmetice şi logice;

- operarea în tehnică "pipe-line", etc.

Pentru realizarea facilităţilor menţionate mai sus, procesoarele de

semnal TMS320C50 dispun în principal de următoarele circuite:

- o unitate aritmetică şi logică;

- un acumulator şi un acumulator tampon (buffer) de 32 biţi;

- un circuit de multiplicare a doi operanzi (reprezentaţi cu sau fără semn) de

câte 16 biţi;

- un registru de 32 biţi în care se obţine rezultatul operaţiei de înmulţire;

- o unitate logică paralelă.

Schema bloc a unităţii centrale de prelucrare a unui procesor digital

de semnal în virgulă fixă TMS320C50 este prezentată în figura 2.1.

Modul de operare precum şi starea unităţii centrale de prelucrare este

reflectat în regiştrii de stare şi control, regiştri care se află plasaţi în

memoria de date.

Page 14: PNS curs-pag-1-81din100

14

Fig.2.1 Schema bloc a unităţii centrale de prelucrare

2.1. Circuitele de scalare

În figura 2.1, se observă că unitatea centrală de prelucrare a proce-

soarelor TMS320C50 este prevăzută cu trei circuite de scalare: circuitul de

prescalare, P-scaler-ul şi circuitul de post scalare. Cunoaşterea acestor

circuite este importantă datorită facilităţilor pe care le oferă: operaţii

aritmetice cu precizie extinsă, evitarea depăşirilor, etc.

Circuitul de prescalare conectat la intrarea unităţii aritmetice şi logice

- ALU(32) - efectuează o deplasare a biţilor unui operand la stânga cu

maxim 16 biţi. Numărul de locaţii cu care biţii unui operand sunt deplasaţi

spre stânga sunt conţinuţi fie în registrul TREG1 dar cel mai adesea chiar

în mnemonica unor instrucţiuni prevăzute cu această posibilitate, după cum

este indicat în exemplul următor:

Page 15: PNS curs-pag-1-81din100

15

m .set 7 ; constantei m i se atribuie valoarea 7

; 00000007h

.data ; urmează o secţiune în fişierul sursă în

; care se rezervă o locaţie de memorie

; pentru constanta m

.word m

.text ; urmează o secţiune ce conţine instruc-

; ţiuni

LDP #m ; se selectează pagina de memorie în

; care este memorată constanta m,

; urmând o adresare directă

LACC m, 2 ; constanta m este încărcată în ACC

; fiind în prealabil deplasată la dreapta

; cu doi biţi (se specifică chiar în codul

; instrucţiunii) 0000001Ch

În final, se observă că în registrul acumulator ACC, operandul are

valoarea 28 sau că s-a realizat o înmulţire a constantei m cu 22 = 4. Dacă

ultima instrucţiune ar fi fost:

LACC m, 0

atunci în acumulator s-ar fi încărcat numărul 7, neexistând deplasarea cu

nici un bit a operandului spre dreapta.

Circuitul P-scaler este folosit pentru a scala rezultatul obţinut cu

ajutorul multiplicatorului a doi operanzi de câte 16 biţi - figura 2.1. Scalarea

rezultatului obţinut în urma operaţiei de înmulţire se realizează în funcţie de

conţinutul câmpului de doi biţi PM din cadrul registrului de stare ST1. Astfel,

există patru posibilităţi de scalare, conform următorului tabel. Conţinutul

Page 16: PNS curs-pag-1-81din100

16

câmpului de biţi PM poate fi încărcat cu instrucţiunea SPM 0 ÷ 3,

instrucţiune ce trebuie să preceadă operaţia de înmulţire.

Tabel 2.1

PM Deplasare

00 rezultatul din registrul PREG(32)

rămâne neschimbat (fără depla-

sare)

01 rezultatul înmulţirii este deplasat

cu un bit la stânga

10 rezultatul înmulţirii este deplasat

cu 4 biţi la stânga

11 rezultatul înmulţirii este deplasat

la dreapta cu 6 biţi

Circuitul de post-scalare este folosit pentru scalări numerice în diferite

scopuri, dar poate să asigure deplasări de maximum 7 biţi spre stânga a

operanzilor din registrul acumulator, după cum se poate observa şi din

exemplul următor.

LDP #n ; se selectează pagina de memorie în

; care este memorată variabila n

LACC #5 ; 00000005h --> ACC

SACL n, 1 ; cei 16 biţi mai puţin semnificativi ai

; acumulatorului sunt deplasaţi cu un

; un bit la stânga înainte ca aceştia să

; fie salvaţi în locaţia de memorie core-

; spunzătoare unei variabile n

; 000Ah --> (n)

Page 17: PNS curs-pag-1-81din100

17

2.2. Multiplicatorul

Multiplicatorul - figura 2.1 - are rolul de a realiza înmulţirea a doi

operanzi de câte 16 biţi iar rezultatul operaţiei este de 32 biţi. Operanzii

sunt interpretaţi ca numere cu semn, în cod complement lui doi. Există o

instrucţiune de înmulţire, MPYU, care consideră operanzii ca fiind numere

întregi fără semn, reprezentaţi în cod binar natural.

După cum se poate observa din figura 2.1, multiplicatorul primeşte

operanzii pe două căi: magistrala de date a memoriei program respectiv din

registrul TREG0 ( în cazul în care bitul TRM, conţinut de registrul PMST al

procesorului, este resetat, atunci conţinutul regiştrilor TREG1 şi TREG2

este identic cu cel al registrului TREG0, pentru a putea păstra

compatibilitatea cu procesoarele digitale de semnal TMS320C25).

Rezultatul operaţiei de înmulţire este stocat în registrul PREG(32), existând

posibilitatea realizării de scalări în funcţie de conţinutul câmpului de doi biţi

PM (vezi tabelul 2.1), conţinut în registrul de stare ST1. Încărcarea

registrului TREG0 se poate face cu instrucţiunea dedicată LT. Instrucţiunile

LTA, LTD, LTP şi LTS, pe lângă încărcarea registrului TREG0,

realizează în plus şi alte operaţii în acelaşi ciclu maşină. Pentru operaţiile

care realizează o operaţie de ridicare la pătrat, SQRA şi SQRS, operandul

provine doar din registrul TREG0.

Pentru procesoarele digitale de semnal sunt specifice instrucţiuni de

tipul înmulţeşte şi adună. Unul dintre exemple îl constituie instrucţiunea

MAC. Această instrucţiune realizează următoarele acţiuni: adună la

conţinutul acumulatorului conţinutul scalat (în funcţie de biţii PM) al

registrului PREG iar rezultatul rămâne stocat în acumulator, încarcă

registrul PREG0 cu un operand din memoria de date (fie prin adresare

directă fie prin adresare indirectă), iar în final, înmulţeşte conţinutul

Page 18: PNS curs-pag-1-81din100

18

registrului TREG0 cu un operand conţinut la o anumită locaţie din memoria

program indicată în codul instrucţiunii.

Instrucţiunea MACD, pe lângă operaţiile realizate de instrucţiunea MAC,

realizează în plus şi o deplasare a operandului din memoria de date la o

adresă imediat superioară. Astfel, dacă variabila m se află în locaţia de

memorie cu adresa adr, după efectuarea instrucţiunii MACD, variabila m se

va găsi la adresa adr+1.

Funcţionarea unităţii aritmetice şi logice este determinată şi de starea

a doi biţi: SXM (ST1.10 - bitul 10 din registrul ST1) şi OVM (ST0.11).

Bitul SXM determină modul de interpretarea a datelor de către

unitatea aritmetică şi logică precum şi circuitul de multiplicare. Astfel, dacă

bitul SXM este setat, cel mai semnificativ bit al unei date este bitul de semn

iar datele sunt reprezentate în cod complement faţă de doi. Dacă bitul SXM

este resetat, datele sunt considerate ca fiind numere naturale.

Tratarea depăşirilor de către unitatea aritmetică şi logică centrală se

realizează în funcţie de starea bitului OVM. Dacă bitul OVM este setat,

atunci în urma unei semnalizări de depăşire a conţinutului registrului

ACC(32), de către fanionul OV (ST0.12), registrul ACC(32) va fi încărcat fie

cu valoarea 7FFFFFFFH (valoarea pozitivă cea mai mare) fie cu valoarea

80000000H (valoarea negativă cea mai mică), în funcţie de sensul

depăşirii. Observaţie: Depăşirea se referă la faptul că rezultatul unei

operaţii aritmetice care are ca destinaţie registrul acumulator se reprezintă

pe un număr mai mare de 32 de biţi. Se observă că acest mod de lucru

introduce la apariţia depăşirilor limitarea superioară respectiv inferioară a

rezultatelor. Dacă bitul OVM nu este setat în "1" logic, în acumulator se va

Page 19: PNS curs-pag-1-81din100

19

păstra valoarea obţinută în urma operaţiei care a determinat depăşirea.

Este demn de remarcat faptul că operaţiile logice nu pot să producă

depăşire.

La semnalizarea depăşirilor de către fanionul OV se poate face o

ramificaţie a programului la o subrutină care rezolvă problema depăşirilor,

efectuându-se în principal scalări, după cum s-a menţionat secţiunea 2.1.

2.3. Unitatea logică paralelă

Unitatea logică paralelă este parte a unităţii centrale de prelucrare a

procesorului - figura 2.1 - şi este folosită cu precădere la setarea, resetarea

şi testarea unor câmpuri de biţi a oricărei locaţii de memorie de date,

implicit şi a regiştrilor de stare şi control a căror conţinut va fi descris în

subcapitolul 2.4. Unitatea logică paralelă (PLU) se poate utiliza

independent de ALU(32) respectiv de circuitul de multiplicare. Pe una dintre

cele două intrări ale PLU(32) se aplică datele provenite din memoria de

date prin intermediul magistralei de date a memoriei de date iar pe cea

de-a doua intrare, operandul este selectat fie din registrul de manipulare

dinamică de bit DBMR(16) fie dintr-o locaţie din memoria program. În urma

efectuării unei operaţii de tip citeşte, modifică sau scrie, rezultatul este

depus în locaţia de memorie din care provine primul operand specificat în

codul instrucţiunii. Bitul de test TC (ST1.11) este setat ori de câte ori

rezultatul operaţiilor logice efectuate de PLU este zero. Instrucţiunea BIT

care realizează teste la nivel de bit este executată tot de PLU(32).

2.4. Regiştrii de stare şi control

Procesoarele digitale de semnal TMS320C50 folosesc, pentru

păstrarea unor informaţii referitoare la starea şi modurile lor de lucru, patru

Page 20: PNS curs-pag-1-81din100

20

regiştri de stare şi control: ST0, ST1, PMST, CBCR. În primii doi regiştri

este păstrată starea pentru diferite condiţii, precum şi modurile de lucru

compatibile cu cele ale generaţiilor de procesoare digitale de semnal

anterioare (TMS320C25). În regiştrii PMST şi CBCR sunt conţinute

informaţii de stare şi control ale procesorului. Există în setul de instrucţiuni

al procesoarelor TMS320C5X instrucţiuni, care pe durata execuţiei ţin cont

de valorile unor biţi din regiştrii de stare şi control. De exemplu,

instrucţiunile de salt condiţionat încarcă în registrul PC(16) o adresă la care

se face ramificarea unui program doar dacă sunt îndeplinite condiţiile

impuse de utilizator. Aceste condiţii pot să depindă chiar de valoarea unor

biţi din regiştrii de stare şi control. Biţii de control: C, CNF, HM, INTM,

OVM, TC, SXM, XF din regiştrii ST0 şi ST1 pot fi setaţi sau resetaţi cu

ajutorul instrucţiunilor SETC respectiv CLRC. Pentru a modifica valoarea

unor biţi de stare şi control, a căror valoare nu poate fi reactualizată cu

instrucţiunile SETC respectiv CLRC, este nevoie de efectuarea unor

operaţii auxiliare: salvarea conţinutului registrului de stare într-o locaţie de

memorie temporară, reactualizarea conţinutului locaţiei de memorie

temporară prin intermediul unor operaţii logice şi în final, reîncărcarea în

registrul de stare şi control a conţinutului locaţiei de memorie temporară.

Conţinutul regiştrilor de stare şi control este următorul:

- Registrul ST0

DP - indicator pentru pagina de memorie de date curentă;

INTM - validează sau invalidează întreruperile nemascabile (mai puţin

RESET);

Page 21: PNS curs-pag-1-81din100

21

OVM - determină modul de lucru la apariţia unei depăşiri;

OV - indică depăşirea capacităţii acumulatorului;

ARP - indicatorul regiştrilor auxiliari.

- Registrul ST1

PM - determină modul de deplasare al conţinutului registrului PREG(32);

XF - indică valoarea logică la pinul XF al procesorului;

HM - indică modul Hold de operare;

SXM - indică modul de lucru cu extensia bitului de semn;

TC - bit de test şi control;

C - bitul de transport;

ARB - registru tampon de trei biţi pentru ARP.

- Registrul PMST

BRAF - folosit de instrucţiunile de repetare;

TRM - validează utilizarea mai multor regiştri temporari;

NDX - validează registrul index auxiliar;

Page 22: PNS curs-pag-1-81din100

22

MP/MC - 0 - memoria ROM este integrată cipului iar dacă este 1 memoria

de tip ROM este externă;

RAM - 1/0 - memoria RAM a cipului este cartată în / în afara memoriei

program;

OVLY - 1 - memoria RAM a cipului este cartată în memoria de date;

IPTR - indică locul în pagina de memorie 0 unde se află vectorii de

întrerupere.

- Rgistrul CBCR

CAR1 - indică registru auxiliar care este folosit pentru registrul circular 1;

CENB1 - validează registrul circular 1 (0 - după RESET);

CAR2 - indică registru auxiliar care este folosit pentru registrul circular 2;

CENB2 - validează registrul circular 2 (0 - după RESET).

2.5. Sistemul de întreruperi

Sistemul de întreruperi asigură sincronizarea activităţii unităţii

centrale cu evenimente externe. Procesorul de semnal TMS320C50

dispune de întreruperi hardware şi software. Întreruperile hardwarare sunt

mascabile de către utilizator sau nemascabile. Fiecare din cele 16

întreruperi mascabile au o prioritate bine precizată. Întreruperea

nemascabilă care determină resetarea procesorului, aducându-l într-o stare

bine determinată, are prioritatea cea mai mare. Prin proiectare, procesorul

TMS320C50 foloseşte doar 9 din cele 16 întreruperi mascabile, restul fiind

Page 23: PNS curs-pag-1-81din100

23

invalidate. Cererile de întrerupere provin de la porturile seriale, de la

circuitul temporizator, de la anumiţi pini ai procesorului, sau sunt generate

chiar prin program.

Strâns legat de sistemul de întreruperi este şi noţiunea de vector de

întrerupere. Un vector de întrerupere este, în esenţă, o locaţie din memoria

program, ce conţine o instrucţiune care produce ramificarea unui program,

în cazul în care unitatea centrală de prelucrare recunoaşte şi acceptă o

anumită cerere de întrerupere.

Pentru procesoarele digitale de semnal TMS320C50, locaţia din

memoria program la care se găseşte un vector de întrerupere este

determinată de conţinutul câmpului de 5 biţi IPTR(PMST.15-11), cei mai

semnificativi biţi ai registrului de control PMST(16), precum şi de nivelul de

prioritate desemnat fiecărei întreruperi. Conţinutul câmpului de biţi IPTR

indică un multiplu de 2k cuvinte de memorie program la începutul căruia

vor fi plasaţi vectorii de întrerupere indicaţi în tabelul 2.2.

Tabelul 2.2

Întrerupere Locaţie Prioritate Descriere

/ RESET 0 1 Semnal de reset (nemascabil)

/ INT1 2 3 Întrerupere externă

/ INT2 4 4 Întrerupere externă

/ INT3 6 5 Întrerupere externă

TINT 8 6 Întrerupere generată de circuitul de

temporizare intern

RINT 10 7 Întrerupere generată de portul serial

de recepţie

XINT 12 8 Întrerupere generată de portul serial

de transmisie

TRNT 14 9 Întrerupere generată de portul serial

Page 24: PNS curs-pag-1-81din100

24

de recepţie TDM

TXNT 16 10 Întrerupere generată de portul serial

de transmisie TDM

/ INT4 18 11 Întrerupere externă

TRAP 34 Instrucţiunea TRAP

/ NMI 36 2 Întrerupere nemascabilă

Din tabelul 2.2 se observă foarte uşor că pentru fiecare vector de

întrerupere se alocă câte două locaţii succesive de memorie program. În

prima locaţie este memorată de regulă o instrucţiune de salt la o anumită

subrutină de deservire a întreruperii. Subrutina corespunzătoare unei

întreruperi începe la adresa specificată în a doua locaţie de memorie a

vectorului de întrerupere.

Procesoarele de semnal TMS320C50 dispun de doi regiştri speciali

folosiţi pentru lucrul cu întreruperile: registrul de semnalizare a unei cereri

de întrerupere IFR(16) şi un registru de mascare a întreruperilor IMR(16).

Pentru o parte din întreruperile menţionate în tabelul 2.2, în registrul IFR

este rezervat câte un bit (fanion). Acest fanion va trece în "1" logic ori de

câte ori apare o cerere de întrerupere.

Conţinutul registrului IFR poate să fie citit sau modificat. O întrerupere

este anulată dacă fanionul corespunzător întreruperii din registrul IFR este

setat în "1" logic, prin program, în urma iniţializării procesorului sau în

momentul în care procesorul acceptă şi execută cererea de întrerupere.

Deşi cererile de întrerupere sunt memorate în registrul IFR, acestea

pot să fie executate doar dacă biţii corespunzători întreruperilor din registrul

IMR sunt setaţi în "1" logic. Astfel, registrul IMR acţionează ca o "mască"

Page 25: PNS curs-pag-1-81din100

25

asupra registrului IFR. Doar întreruperile /RESET şi /INT nu pot să fie

mascate. La fel ca şi în cazul registrului IFR, registrul IMR poate să fie citit

sau modificat prin program. Adresarea regiştrilor IFR şi IMR este identică

cu cea a regiştrilor cu funcţii speciale mapaţi în pagina 0 a memoriei de

date.

Este demn de remarcat faptul că procesoarele de semnal

TMS320C50 dispun de un bit de validare/invalidare generală a cererilor de

întrerupere. Este vorba de INTM (ST0.9) care în cazul în care este setat în

"1" logic invalidează cererile de întrerupere memorate în registrul IFR. Bitul

INTM poate fi setat sau resetat cu ajutorul instrucţiunilor SETC INTM

respectiv CLRC INTM.

Înainte de executarea unei secvenţe de program care deserveşte o

cerere de întrerupere, procesorul salvează starea unor regiştri interni.

Ultima instrucţiune a rutinelor care tratează cererile de întrerupere este

RETI sau RETE. Instrucţiunea RETI restaurează contextul în care se afla

programul principal chiar înainte de execuţia subrutinei de întrerupere,

adică, conţinutul unor regiştri interni vor conţine aceeaşi informaţie pe care

au avut-o înainte de deservirea întreruperilor. Regiştrii a căror conţinut se

salvează la executarea unei rutine de întrerupere în regiştri stivă tampon cu

un singur nivel sunt: ACC(32), ACCB(32), PREG(32), regiştrii de stare şi

control, mai puţin bitul XF (ST1.4).

Page 26: PNS curs-pag-1-81din100

26

3. Configurarea şi adresarea memoriei la procesorulde semnal TMS320C50

O etapă importantă în programarea procesorului digital de semnal

TMS320C50 este aceea de configurare a memoriei sale interne.

Configurarea memoriei, realizată prin setarea unor biţi special desemnaţi în

acest scop, trebuie să fie premergătoare rulării programului principal de

către procesor. Configurarea memoriei este necesară pentru o mai bună

organizarea a datelor memorate. Din punctul de vedere al configurării

memoriei interne, procesorul TMS320C50 este foarte flexibil. Odată ce

memoria procesorului a fost configurată, procesorul permite o serie de

moduri de adresare a fiecărei locaţii de memorie.

3.1. Configurarea memoriei

Procesorul digital de semnal TMS320C50 permite adresarea unui

spaţiu mare de memorie dar, memoria conţinută în structura sa internă este

limitată. Astfel, procesorul dispune de 2k cuvinte (16 biţi) de memorie de tip

ROM, 9k cuvinte (16 biţi) de memorie RAM cu singur acces şi 1056 cuvinte

de memorie RAM cu dublu acces.

Memoria de tip ROM aparţine memoriei program internă a

procesorului, începând de la adresa 0h şi include o secvenţă de testare a

procesorului, precum şi de configurare la pornire (boot code).

Memoria de tip RAM cu singur acces poate fi configurată de către

utilizator ca memorie de program şi / sau memorie de date între adresa

800h şi 2C00h în funcţie de modul de setare al biţilor “CNF”, “RAM” şi

“OVLY” din regiştrii de stare şi control ai procesorului. Aceste setări se fac

evident înaintea rulării aplicaţiilor. Citirea respectiv scrierea unei date din /

Page 27: PNS curs-pag-1-81din100

27

în memoria RAM cu singur acces se realizează într-un ciclu maşină. O

locaţie din memoria de tip RAM cu dublu acces poate fi citită respectiv

înscrisă simultan, într-un singur ciclu maşină. Cele 1056 de cuvinte (16 biţi)

de memorie cu acces dublu sunt împărţite în trei blocuri:

- blocul B0 conţine 512 cuvinte la adresele: 100h – 2FFh din memoria de

date sau la adresele 0FE00h – 0FFFFh în memoria program;

- blocul B1 conţine 512 cuvinte la adresele 0300h – 04FFh în memoria

internă de date;

- blocul B2 cuprinde 32 cuvinte la adresele 60h – 7Fh în memoria internă

de date a procesorului digital de semnal.

Dintre principalele avantaje ale utilizării memoriei interne a

procesorului faţă de folosirea unei memorii externe, se pot menţiona

următoarele:

- acces mai rapid la date / instrucţiuni;

- preţ mai mic al sistemului de prelucrare digitală;

- structură simplificată a sistemului de prelucrare (de exemplu lipsa logicii

externe de decodificare);

- consum redus de energie, etc.

Utilizarea memoriei externe are avantajul stocării unor programe

mari şi prelucrării unui număr foarte mare de date. Pentru unele aplicaţii

clasice: filtrări cu filtre cu răspuns finit la impuls (FIR), filtrări cu filtre cu

răspuns infinit la impuls (IIR), analiză spectrală, convoluţii, etc.,

dimensiunea memoriei RAM cu singur acces este suficientă.

Fig. 3.1 Regiştrii şi biţii pentru configurarea memoriei

Page 28: PNS curs-pag-1-81din100

28

În tabelul 3.1 se indică modul de configurare a memoriei procesorului

în funcţie de setarea biţilor indicaţi în Fig.3.1.

Registrul de stare ST1(16 biţi) poate fi înscris cu ajutorul instrucţiunii

LST şi poate fi citit cu instrucţiunea SST, deoarece acest registru nu este

plasat în pagina zero a memoriei de date. Asupra registrului PMST (16 biţi)

se pot efectua operaţii logice în vederea setării biţilor pe care îi conţine,

deoarece acest registru se poate plasa în pagina zero a memoriei de date.

Biţii din regiştrii ST1 şi PMST pot fi setaţi sau resetaţi cu ajutorul

instrucţiunilor SETC respectiv CLRC.

În figura 3.2 se prezintă modul de organizare al memoriei în cadrul

procesorului digital de semnal TMS320C50.

Fig.3.2 Organizarea memoriei

Page 29: PNS curs-pag-1-81din100

29

Tabel 3.1 Configurarea memoriei (MD - memoria de date, MP - memoria program)DARAM (intern)

CNF RAM MP/MC OVLY ROM SARAM(intern) B0 B1 B2

MD(externă)

MP(externă)

0 0 0 00000h-07FFh

invalidat 100h-2FFh(MD)

300h-4FFh(MD)

60h-7Fh(MD)

0800h -FFFFh

0800h-FFFFh

0 0 0 10000h-0700h

0800h-2BFFh(MD)

100h-2FFh(MD)

300h-4FFh(MD)

60h-7Fh(MD)

2C00h -FFFFh

0800h-FFFFh

0 0 1 0invalida

tinvalidat 100h-

2FFh(MD)

300h-4FFh(MD)

60h-7Fh(MD)

0800h -FFFFh

0000h-FFFFh

0 0 1 1invalida

t0800h-2BFFh(MD)

100h-2FFh(MD)

300h-4FFh(MD)

60h-7Fh(MD)

2C00h-FFFFh

0000h-FFFFh

0 1 0 00000h-07FFh

0800h-2BFFh(MD)

100h-2FFh(MD)

300h-4FFh(MD)

60h-7Fh(MD)

0800h -FFFFh

2C00h-FFFFh

0 1 0 10000h-07FFh

800h-2BFFh

(MP), (MD)

100h-2FFh(MD)

300h-4FFh(MD)

60h-7Fh(MD)

2C00h -FFFFh

2C00h-FFFFh

0 1 1 0invalida

t800h-2BFFh(MP)

100h-2FFh(MD)

300h-4FFh(MD)

60h-7Fh(MD)

0800h -FFFFh

0h-07FFh2C00h-ffffh

0 1 1 1invalida

t800h-2BFFh

(MP), (MD)

100h-2FFh(MD)

300h-4FFh(MD)

60h-7Fh(MD)

2C00h -FFFFh

0h-07FFh2C00h-ffffh

1 0 0 00000h-07FFh

invalid FE00h-FFFFh(MP)

300h-4FFh(MD)

60h-7Fh(MD)

0800h -FFFFh

0800h -FDFFh

1 0 0 10000h-07FFh

0800h-2BFFh(MD)

FE00h-FFFFh(MP)

300h-4FFh(MD)

60h-7Fh(MD)

2C00h -FFFFh

0800h -FDFFh

1 0 1 0invalida

tinvalidat FE00h-

FFFFh(MP)

300h-4FFh(MD)

60h-7Fh(MD)

0800h -FFFFh

0h-FDFFh

1 0 1 1invalida

t0800h-2BFFh(MD)

FE00h-FFFFh(MP)

300h-4FFh(MD)

60h-7Fh(MD)

2C00h -FFFFh

0h-FDFFh

1 1 0 00000h-07FFh

0800h-2BFFh(MP)

FE00h-FFFFh(MP)

300h-4FFh(MD)

60h-7Fh(MD)

0800h -FFFFh

2C00h-FDFFh

1 1 0 10000h -07FFh

800h-2BFFh

(MP), (MD)

FE00h-FFFFh(MP)

300h-4FFh(MD)

60h-7Fh(MD)

2C00h -FFFFh

2C00h-FDFFh

1 1 1 0invalida

t0800h-2BFFh(MP)

FE00h-FFFFh(MP)

300h-4FFh(MD)

60h-7Fh(MD)

0800h -FFFFh

0h-07FFh2C00h -FDFFh

1 1 1 1invalida

t800h-2BFFh

(MP), (MD)

FE00h-FFFFh(MP)

300h-4FFh(MD)

60h-7Fh(MD)

2C00h -FFFFh

0h-07FFh2C00h -FDFFh

Page 30: PNS curs-pag-1-81din100

30

Din cele prezentate mai sus, figura 3.2, se poate observa că există

situaţii în care memoria RAM internă (9 k cuvinte) este folosită atât pentru

memoria program cât şi pentru memoria de date, folosindu-se acelaşi

spaţiu de adresare.

3.2. Adresarea memoriei program

Memoria program este folosită pentru stocarea unor rutine de calcul

pentru o aplicaţie dată dar poate fi folosită şi pentru stocarea unor date cu

valori implicite. Adresarea unei locaţii a memoriei program poate fi

înţeleasă uşor dacă se urmăreşte figura 3.3.

Fig.3.3 Schema de principiu pentru adresarea unei locaţii de memorie program

Din figura 3.3 se poate observa că o adresă pentru memoria

program provine de la registrul PC (numărător de program de 16 biţi) prin

intermediul magistralei de adrese a memoriei program. Ca rezultat, pe

magistrala de date a memoriei program este plasat conţinutul locaţiei de

memorie a cărei adresă a fost indicată de PC. În figură se mai observă un

circuit de organizare a memoriei program şi un circuit de adresare care are

rolul de a furniza registrului PC adresa locaţiei de memorie care urmează a

fi adresată (utilizată).

Page 31: PNS curs-pag-1-81din100

31

În figura 3.4 se prezintă o detaliere a circuitelor cu ajutorul cărora se

realizează adresarea memoriei program.

Fig.3.4 Adresarea memoriei program

În figura 3.4, registrul PC este numărătorul de program şi are rolul

de a indica adresa instrucţiunii curente. Conţinutul registrului PC poate fi

stocat într-o stivă cu opt locaţii de memorie în cazul utilizării unor

instrucţiuni de tip CALL (apel de subrutină). După executarea subrutinei de

program apelate cu ajutorul instrucţiunii de tip CALL, ultima adresă

memorată în stivă se reîncarcă în registrul PC.

Registrul BMAR este plasat în mod normal în pagina 0 a memoriei

de date la adresa 1Fh şi este folosit în cazul instrucţiunilor care realizează

mutări de blocuri de date.

Registrul BRCR este şi el plasat în pagina 0 a memoriei de date la

adresa 09h, având rolul de indicator al numărului de repetări a unui bloc de

instrucţiuni, a cărui adresă de început este conţinută în registrul PASR, iar

adresa sa de sfârşit este conţinută în registrul PAER. Regiştrii PASR şi

PAER se găsesc tot în pagina 0 a memoriei de date la adresele 0Ah

respectiv 0Bh. Bitul BRAF din registrul PMST (bitul 0) indică în starea

setată executarea repetată a unui bloc de instrucţiuni. După ce conţinutul

Page 32: PNS curs-pag-1-81din100

32

BRCR devine zero, bitul BRAF trece în zero logic. Repetarea unui bloc de

instrucţiuni se realizează cu ajutorul instrucţiunii RPTB.

Câmpul de 5 biţi IPTR ai registrului PMST (biţii 11-15) indică la care

multiplu de 2k cuvinte de memorie program sunt plasaţi vectorii de

întrerupere ai procesorului de semnal TMS320C50. Biţii CNF din registrul

ST1 (bitul 12), RAM şi MP/MC din PMST (bitul 4 respectiv bitul 3) sunt

folosiţi la configurarea memoriei.

De la registrul PC(16) sunt generate efectiv adresele pentru

memoria program atunci când sunt accesate instrucţiuni sau operanzi

imediaţi. După citirea unei instrucţiuni din memoria program, conţinutul

numărătorului de program este incrementat automat cu o unitate,

realizându-se astfel adresarea instrucţiunii următoare. Există şi situaţii în

care conţinutul PC, după citirea unei instrucţiuni, se încarcă cu o valoare

impusă de utilizator prin program, alta decât cea obţinută prin simpla

incrementare, cum ar fi:

- executarea unor instrucţiuni de salt la o anumită adresă sau apel de

subrutină;

- acceptarea unei întreruperi de către unitatea centrală a procesorului ;

- repetarea unui bloc de instrucţiuni;

- reîncărcarea din stivă a unei adrese după deservirea unei întreruperi

sau a unei subrutine;

- citirea sau scrierea unor tabele în memorie;

- la citirea celui de-al doilea operand necesar unor instrucţiuni ce pot

realiza o operaţie de înmulţire şi o operaţie de adunare (MAC, MACD,

etc.).

Adresele generate de către numărătorul de program PC pot fi

“vizibile” şi în exteriorul procesorului, în vederea depanării unor programe,

cu ajutorul opţiunii “vizibilitate adrese”, prin setarea bitului AVIS din registrul

Page 33: PNS curs-pag-1-81din100

33

PMST (PMST.7). Nefolosirea acestei opţiuni determină scăderea

consumului de energie şi a zgomotului generat de către procesor.

În mod normal conţinutul registrului PC este incrementat cu câte o

unitate atunci când programul este executat secvenţial. La apariţia unei

instrucţiuni de ramificare a programului (de exemplu: B adresa_nouă),

registrul PC este încărcat cu "adresa_nouă". În cazul apelării unei

subrutine, conţinutul registrului PC (adresa_curentă) este incrementat cu

doi şi apoi memorat pe vârful stivei. După revenirea din subrutină, registrul

PC se încarcă cu ultima valoare salvată în stivă. Tratarea întreruperilor se

realizează în mod similar, cu precizarea că se salvează conţinutul mai

multor regiştri înainte de executarea rutinei care deserveşte întreruperea.

Pentru instrucţiunile de ramificare condiţionată a programului, saltul la

o nouă adresă din memoria program are loc doar dacă condiţia/condiţiile

specificate în instrucţiune sunt îndeplinite. Neîndeplinirea acestor condiţii

determină executarea instrucţiunii ce urmează celei de salt condiţionat.

Procesoarele de semnal TMS320C50 admit şi întoarcerile condiţionate din

subrutină. În tabelul 3.2 sunt prezentate condiţiile care pot să determine

modificarea registrului PC.

Tabelul 3.2

Operand Condiţie Descriere

EQ ACC = 0 Conţinutul acumulatorului este egal cu 0

NEQ ACC ≠ 0 Conţinutul acumulatorului este diferit de zero

LT ACC < 0 Conţinutul acumulatorului este mai mic decât

zero

LEQ ACC ≤ 0 Conţinutul acumulatorului este mai mic sau

egal cu zero

GT ACC > 0 Conţinutul acumulatorului este mai mare

decât zero

Page 34: PNS curs-pag-1-81din100

34

GEQ ACC ≥ 0 Conţinutul acumulatorului este mai mare sau

egal cu zero

C C = 1 Bitul Carry al acumulatorului este setat

NC C = 0 Bitul Carry al acumulatorului este resetat

OV OV = 1 Apariţia unei depăşiri a ACC

NOV OV = 0 Nu s-a detectat depăşirea ACC

BIO BIO = 0 Semnalul de la pinul BIO are nivel logic zero

TC TC = 1 Bitul de test/control este setat

NTC TC = 0 Bitul de test/control este resetat

Dacă o instrucţiunea de ramificare a programului conţine mai multe

condiţii, saltul la noua adresă are loc dacă toate condiţiile sunt îndeplinite.

In caz contrar, conţinutul registrului PC indică instrucţiunea imediat

următoare celei de salt condiţionat.

În exemplul următor este indicată o secvenţă de program care

realizează un salt condiţionat.

ZAP

CLRC SXM

LACC #10

adr1 SUB #1

adr2 BCND adr1, NEQ

SETC SXM

...

Conţinutul acumulatorului este decrementat cu o unitate până în momentul

în care acesta ajunge la zero. Se realizează saltul la adresa adr1 atât timp

cât conţinutul acumulatorului nu este egal cu zero. După îndeplinirea

condiţiei, procesorul execută următoarea instrucţiune, SETC SXM.

Page 35: PNS curs-pag-1-81din100

35

3.3. Modurile de adresare ale operanzilor

Pentru executarea instrucţiunilor este necesară adesea accesarea

de operanzi. Operanzii reprezintă constante predefinite de programator sau

variabile. Operanzii pot să se găsească plasaţi în memoria de date, în

memoria program sau chiar în codul unor instrucţiuni.

Procesoarele digitale de semnal TMS320C50 admit următoarele

moduri de adresare a operanzilor: adresarea imediată, adresarea directă,

adresarea indirectă, adresarea regiştrilor dedicaţi, adresarea regiştrilor

mapaţi în memoria de date şi adresarea circulară.

A. Adresarea imediatăÎn cazul adresării imediate, operandul se găseşte înscris chiar în

codul unei instrucţiuni, după cum se poate observa din figura 3.5.

Fig.3.5 Exemplu de adresare imediată

Adresarea imediată poate să fie de două feluri: adresare imediată

scurtă şi adresare imediată lungă. Pentru adresarea imediată scurtă, codul

instrucţiunii este reprezentat împreună cu operandul pe 16 biţi – fig.3.5.

Pentru adresarea imediată lungă, codul instrucţiunii ce conţine operandul

este format din două cuvinte de 16 biţi. De remarcat faptul că acelaşi tip de

Page 36: PNS curs-pag-1-81din100

36

instrucţiune poate fi folosit, în funcţie de modul de scriere al instrucţiunii, în

unul sau mai multe moduri de adresare.

Observaţie: Cu ajutorul instrucţiunii ADRK #k se adună constanta k la

conţinutul registrului auxiliar curent.

B. Adresarea directăProcesoarele de semnal din familia TMS320C5X admit modul de

adresare directă a operanzilor aflaţi în memoria de date. În acest caz, se

consideră că memoria de date se poate împărţi în 512 părţi (pagini).

Fiecare “pagină” din memoria de date conţine 128 de locaţii de memorie

consecutive.

Prin adresarea directă, se specifică de fapt, pentru un operand

adresat, pagina de memorie şi locaţia de memorie din cadrul paginii în care

acesta se află.

Pagina de memorie în care se găseşte operandul se poate specifica

cu instrucţiunea LDP în modul următor:

LDP #k ;

unde 0 ≤ k ≤ 511.

Constanta “k”, reprezentată pe 9 biţi, este încărcată în câmpul DP

(9biţi) din registrul ST0. După specificarea paginii “k”, locaţia de memorie

folosită de operand se specifică în cadrul unei instrucţiuni următoare,

conform următorului exemplu:

ADD dma ; 0 ≤ dma ≤ 127

Page 37: PNS curs-pag-1-81din100

37

unde “dma” reprezintă adresa unei locaţii de memorie din cadrul paginii “k”

în care se află operandul. Această adresă se codifică pe 7 biţi şi este

conţinută în codul instrucţiunii ADD - figura 3.6 - (instrucţiunea ADD

realizează o operaţie de adunare a operandului specificat prin adresarea

directă la conţinutul registrului acumulator).

Fig.3.6 Adresarea directă a operanzilor

Prin concatenarea câmpului DP (9 biţi) din registrul ST0, folosiţi

pentru indicarea unei anumite pagini din memoria de date, cu cei 7 biţi din

cadrul unei instrucţiuni care indică adresa locaţiei de memorie din cadrul

unei pagini, folosită de operand, se obţine o adresă efectivă de 16 biţi. Cu

ajutorul acestui mod de adresare se pot accesa un număr de 65536 locaţii

de memorie.

C. Adresarea indirectăProcesoarele digitale de semnal TMS320C50 dispun de opt regiştri

auxiliari şi o unitate aritmetică care îi deserveşte, în scopul adresării

indirecte a operanzilor. Denumirea de adresare indirectă provine de la

faptul că adresa efectivă a unei locaţii de memorie este dată de conţinutul

unuia din cei opt regiştri auxiliari.

Page 38: PNS curs-pag-1-81din100

38

Registru auxiliar folosit la adresarea indirectă este selectat în funcţie

de conţinutul unui registru indicator de registru auxiliar ARP (3 biţi)

- figura 3.7.

Fig.3.7 Circuitul pentru realizarea adresării indirecte

Datorită faptului că fiecare registru auxiliar conţine 16 biţi, rezultă că

prin adresarea indirectă se poate accesa oricare locaţie de memorie de 64k

cuvinte. Selectarea unui registru auxiliar pentru realizarea unei adresări

indirecte se poate face în mai multe moduri. Astfel, ARP se poate încărca

cu un număr cuprins între 0 şi 7 folosind instrucţiunea:

MAR *, ARi ;

unde 0 ≤ i ≤ 7 iar ARi indică registrul auxiliar care urmează a fi folosit la

următoarea adresare indirectă. Recunoaşterea registrului auxiliar ARi după

denumirea sa este posibilă dacă la începutul codului sursă se include şi

directiva de asamblare ".mmregs" prin care regiştrilor cu funcţiuni speciale li

se atribuie o denumire simbolică. Instrucţiunea MAR nu realizează nici o

Page 39: PNS curs-pag-1-81din100

39

operaţie ci doar actualizează conţinutul registrului ARP. Simbolul " * " este

specific adresării indirecte, reprezentând registrul auxiliar curent.

Un alt mod de încărcare a registrului ARP, des utilizat, este şi acela

în care actualizarea are loc automat după executarea unor instrucţiuni

specifice, după cum se menţionează şi în exemplul următor:

ADD #10h, 5, AR3

Cu ajutorul acestei instrucţiuni, constanta 10h este deplasată la

stânga cu 5 biţi şi apoi adunată la conţinutul acumulatorului, rezultatul fiind

păstrat în acumulator. După efectuarea adunării, registrul ARP este

încărcat cu 3, motiv pentru care conţinutul registrului auxiliar AR3 este

folosit la realizarea următoarei adresări indirecte.

Regiştrii auxiliari se încarcă de regulă cu ajutorul instrucţiunii LAR.

Conţinutul lor mai poate fi modificat şi cu instrucţiunile ADRK (adună o

constantă la conţinutul unui registru auxiliar) şi SBRK (scade o anumită

valoare din conţinutul unui registr auxiliar).

Operaţiile care se pot realiza cu conţinutul regiştrilor auxiliari se

efectuează cu ajutorul unei unităţi aritmetice dedicate (ARAU). ARAU poate

realiza incrementări sau decrementări cu o unitate a conţinutului regiştrilor

auxiliari sau chiar cu un anumit număr, dar poate realiza şi operaţii cu

inversare de bit, folosite în special în cazul analizelor de spectru a

semnalelor prelucrate.

În instrucţiunile scrise în limbaj de asamblare pentru procesoarele

TMS320C50 se folosesc următoarele simboluri a căror semnificaţie este

indicată în continuare:

* ; acest simbol indică faptul că conţinutul registrul auxiliar curent

este folosit ca adresă a memoriei de date; după adresarea locaţiei de

memorie, conţinutul registrului auxiliar curent rămâne nemodificat;

Page 40: PNS curs-pag-1-81din100

40

*+ ; conţinutul registrului auxiliar curent este folosit ca adresă a

unei locaţii de memorie de date iar după adresare, conţinutul registrului

auxiliar folosit este incrementat cu o unitate;

*– ; conţinutul registrului auxiliar curent este folosit ca adresă a

unei locaţii de memorie de date iar după adresare, conţinutul registrului

auxiliar folosit este decrementat cu o unitate;

*0+ ; conţinutul registrului auxiliar curent este folosit ca adresă a

unei locaţii de memorie de date iar după adresare, la conţinutul registrului

auxiliar folosit se adună conţinutul registrului INDX (16 biţi);

*0– ; conţinutul registrului auxiliar curent este folosit ca adresă a

unei locaţii de memorie de date iar după adresare, din conţinutul registrului

auxiliar folosit se scade conţinutul registrului INDX (16 biţi);

*BR0+ ; conţinutului registrului auxiliar curent i se adaugă conţinutul

registrului INDX cu inversare de bit - tabelul 5.1;

*BR0– ; din conţinutul registrului auxiliar curent se scade conţinutul

registrului INDX cu inversare de bit - tabelul 5.1.

3.4. Funcţionare procesoarelor de semnal TMS320C50în tehnică "pipe-line"

Pentru executarea unei instrucţiuni sunt necesare în general patru

faze: aducerea instrucţiunii din memoria program a procesorului,

decodarea instrucţiunii, aducerea operandului asociat instrucţiunii din

memoria de date sau program şi în final executarea instrucţiunii. La

microprocesoarele de uz general, cele patru faze menţionate se execută

secvenţial în timp, adică, la un moment dat microprocesoarele execută

doar o singură fază a unei instrucţiuni. Acest lucru este dezavantajos şi are

ca principal efect nedorit scăderea timpului de execuţie a instrucţiunilor.

Page 41: PNS curs-pag-1-81din100

41

La procesoarele digitale de semnal acest mod de lucru este înlocuit

cu un anumit paralelism în ceea ce priveşte efectuarea operaţiilor. Pentru

fiecare fază există un anumit circuit care este responsabil de realizarea

unei singure faze a instrucţiunii. Din acest motiv, la procesoarele de semnal

se poate spune că la un moment dat se află în desfăşurare patru

instrucţiuni aflate în faze diferite, având ca efect final, executarea unei

instrucţiuni într-un singur ciclu maşină. Acest mod de lucru mai este

cunoscut şi sub denumirea de tehnică "pipe-line" şi are ca principal scop

creşterea semnificativă a vitezei de procesare a datelor. Tehnica "pipe-line"

poate fi înţeleasă mai uşor dacă se urmăreşte figura 3.8.

Fig.3.8 Modul de lucru în tehnică “pipe-line”.

Din figura de mai sus se observă că pe durata primului ciclu maşină

se aduce din memoria program instrucţiunea N. Pe durata următorului ciclu

maşină se aduce din memoria program instrucţiunea N+1 şi se decodifică

instrucţiunea N. Pe durata celui de-al treilea ciclu maşină, se aduce din

memoria program instrucţiunea N+2, se decodifică instrucţiunea N+1 şi se

accesează operandul aferent instrucţiunii N. În momentul în care se

execută efectiv instrucţiunea N, din memoria program este adusă

instrucţiunea N+3, se decodifică instrucţiunea N+2 şi se accesează

operandul folosit de instrucţiunea N+1. După secvenţa descrisă, la fiecare

Page 42: PNS curs-pag-1-81din100

42

nou ciclu maşină se execută câte o instrucţiune, datorită paralelismului care

există în efectuarea fiecărei faze.

Realizarea celor patru faze necesare efectuării unei instrucţiuni este

“transparentă” pentru utilizator cu excepţia cazurilor când la un moment dat

două instrucţiuni aflate în faze diferite apelează aceleaşi resurse hardware

ale procesorului.

În această situaţie apare un conflict la utilizarea resurselor interne,

conflict ce trebuie să fie evitat prin metode specifice, deoarece în caz

contrar se obţin rezultate eronate. Cazurile care pot să producă erori

datorită modului de lucru “pipe-line” sunt: accesul la registrele cartate în

memorie pentru reactualizare şi comenzile de configurare ale memoriei.

Dacă se înscrie o valoare la adresele de memorie unde sunt cartaţi regiştrii

procesorului, cu ajutorul instrucţiunilor SAMM, LMMR, SACL sau SPKL,

atunci registrul a cărui conţinut a fost modificat nu poate să fie utilizat

pentru generare de adrese în modul indirect de adresare. Dacă se

utilizează instrucţiunile amintite mai sus pentru încărcarea cu o nouă

valoare a unui registru cartat în memorie atunci accesul efectiv la acel

registru se face doar în faza de execuţie (faza a 4 a). Aceasta înseamnă că

putem utiliza noua valoare înscrisă într-un registru cartat doar după încă

două cicluri de instrucţiune. Se recomandă ca în acest interval de timp

procesorul să execute o instrucţiune care nu foloseşte valoarea înscrisă în

regiştrii cartaţi (de exemplu pentru generarea unei adrese) sau să execute

pentru fiecare ciclu instrucţiunea NOP.

Page 43: PNS curs-pag-1-81din100

43

4. Circuitele periferice

Pentru a creşte performanţele, flexibilitatea şi aplicaţiile procesoarelor de

semnal TMS320C50, acestea au fost prevăzute intern cu o serie de circuite

auxiliare (periferice). Dintre circuitele periferice mai semnificative se pot

aminti: circuitul de temporizare, porturile seriale şi porturile de intrare-ieşire,

a căror structură şi funcţionare sunt descrise în cadrul acestui capitol.

4.1. Circuitul de temporizare

Procesoarele digitale de semnal TMS320C50 sunt prevăzute cu un

circuit de temporizare care are principala funcţie de a genera, periodic,

semnale de întrerupere către unitatea centrală a procesorului. Schema bloc

a circuitului de temporizare este indicată în figura 4.1.

Fig.4.1 Schema bloc a circuitului de temporizare

Circuitul de temporizare are la bază un numărător de 16 biţi şi un pre-

scaler de 4 biţi. Semnalul care decrementează conţinutul prescalerului este

Page 44: PNS curs-pag-1-81din100

44

CLKOUT1 cu o frecvenţă egală cu jumătatea din cea a cristalului de cuarţ

conectat între pinii X1 şi X2/CLKIN ai procesorului TMS320C50. Conţinutul

registrului TIM este identic cu cel al numărătorului iar conţinutul pre-

scalerului este identic cu cel al unui câmp de 4 biţi PSC conţinuţi în registrul

de control TCR al circuitului de temporizare.

Funcţionarea circuitului de temporizare este posibilă dacă bitul de

stop TSS şi bitul de reset TRB ai temporizatorului sunt în "0" logic, caz în

care semnalul de tact CLKOUT1 ajunge la pre-scaler. În momentul în care

conţinutul pre-scalerului este zero, logica de comandă determină reîncărca-

rea pre-scalerului cu conţinutul unui câmp de patru biţi TDDR din registrul

TCR, prin intermediul câmpului de biţi PSC menţionat mai sus. Tot în

momentul anulării conţinutului pre-scalerului, conţinutul numărătorului este

decrementat cu o unitate. După ce şi conţinutul numărătorului devine zero,

logica de comandă determină transferul conţinutului registrului PRD în

numărător prin intermediul registrului TIM, generându-se totodată un

semnal de întrerupere TINT pentru unitatea centrală a procesorului digital

de semnal. Semnalul de întrerupere mai este disponibil la pinul TOUT al

procesorului, putând fi folosit în diferite aplicaţii.

Structura registrului de control a circuitului de temporizare este

următoarea:- Registrul de control al circuitului de temporizare(TCR)

Semnificaţia biţilor din registrul TCR este indicată în continuare:

- TDDR - un câmp de 4 biţi este încărcat în prescaler prin intermediul PSC;

biţii din TDDR pot fi înscrişi sau citiţi;

Page 45: PNS curs-pag-1-81din100

45

- TSS - acest bitul este responsabil de pornirea şi oprirea circuitului de

temporizare, permiţând sau blocând accesul semnalului CLKOUT1 la pre-

scaler; dacă bitul TSS este în "1" logic temporizatorul este oprit iar dacă

acesta este în "0" logic, temporizatorul este pornit;

- PSC - câmpul de biţi PSC reflectă conţinutul pre-scalerului, putând să fie

doar citiţi; pe durata funcţionării circuitului de temporizare conţinutul PSC şi

TIM se modifică periodic, în timp ce conţinutul PDR şi TDDR rămâne

neschimbat până la o nouă reîncărcare a lor;

- TRB - bitul de reset al circuitului de temporizare; în "0" logic, TRB deter-

mină reîncărcarea în numărător a conţinutului registrului PRD şi a pre-

scalerului cu conţinutul lui TDDR; în "1" logic, bitul TRB nu influenţează

funcţionarea temporizatorului;

Rolul biţilor SOFT şi FREE este precizat la descrierea registrului de control

SPC al portului serial.

Datorită modului de funcţionare prezentat mai sus, semnalul TINT

este generat periodic iar frecvenţa apariţiei acestui semnal poate fi

determinată cu ajutorul relaţiei:

( )( )111

1 ++=

PRDTDDRTf

CLKOUTTINT . (4.1)

Frecvenţa maxină a semnalului TINT se obţine în cazul în care

conţinutul TDDR şi PRD este zero, adică

1max

1

CLKOUTTINT Tf = . (4.2)

Regiştrii TIM, PRD şi TCR sunt plasaţi în pagina 0 a memoriei de

date la adresele 024H, 025H respectiv 026H.

Page 46: PNS curs-pag-1-81din100

46

4.2. Porturile seriale ale procesorului de semnal TMS320C50

Procesorul digital de semnal TMS320C50 dispune de două tipuri de

porturi seriale care realizează comunicaţia serială de date.

Unul dintre cele două porturi seriale, portul serial standard (PS_S),

asigură legătura între procesor şi alte dispozitive electronice compatibile

(circuite de codare seriale, convertoare analog-digitale seriale, etc.) în mod

bidirecţional, full duplex.

Al doilea port serial al procesorului, multiplexat cu diviziune în timp

PS_TDM, este folosit pentru comunicaţia între mai multe procesoare

digitale de semnal, în cazul realizării unei prelucrări de date în sisteme

multiprocesor. Printr-o setare corespunzătoare, portul PS_TDM poate să

lucreze la fel ca un PS_S. Cele două porturi seriale permit recepţia

respectiv transmiterea de date în mod continuu sau în salve (eng. burst) în

pachete de 8 sau 16 biţi.

În această lucrare se descrie doar principiul de funcţionare al PS_S

modul său de programare. Descrierea detaliată a porturilor seriale şi a

modurilor sale de funcţionare se găseşte în [16].

4.2.1. Portul serial standard

Schema bloc a portului serial standard este indicată în figura 4.2.

Regiştrii de câte 16 biţi care sunt folosiţi pentru realizarea comunicaţiilor

seriale prin intermediul portului serial standard sunt:

- XSR - registrul de deplasare a datelor transmise preia datele de la

registrul DXR în mod paralel şi le transmite la pinul DX în mod serial;

- DXR - registrul de transmitere date reţine datele care urmează a fi

transmise de la magistrala de date după care le transmite registrului XSR;

Page 47: PNS curs-pag-1-81din100

47

registrul DXR se află plasat la adresa 021H în pagina 0 a memoriei de

date;

Fig.4.2 Schema bloc a portului serial standard al TMS320C50

- RSR - registrul de deplasare a datelor recepţionate preia datele de la

pinul DR în mod serial şi apoi le transferă registrului DRR în mod paralel;

- DRR - registrul de recepţionare date reţine datele furnizate de către

registrul RSR şi realizează apoi transferul lor spre magistrala de date;

registrul DRR se găseşte la adresa 020H în pagina zero a memoriei de

date;

- SPC - registrul de control al portului serial conţine biţii de stare şi control

ai portului serial; SPC se găseşte la adresa 022H în pagina 0 a memoriei

de date.

Programatorul are acces prin program doar la regiştrii DXR, DRR şi

SPC ai portului serial.

La transferul automat al datelor din registrul DXR în XSR şi a celor

din registrul RSR în registrul DRR este generat un semnal de întrerupere

XINT respectiv RINT către logica centrală a procesorului, care în funcţie de

Page 48: PNS curs-pag-1-81din100

48

modul de lucru cu întreruperi poate să accepte transmiterea respectiv

recepţia de date prin portul serial.

Pentru realizarea sincronizării la transmiterea şi recepţionarea datelor

se mai folosesc, conform figurii 4.2, următoarele semnale disponibile la pinii

asociaţi:

- FSX - semnalul cadru de sincronizare la transmitere care are rolul de a

iniţializa transferul efectiv de date, semnal care se generează automat la

începutul unui pachet de date;

- CLKX - semnalul de tact de transmitere impune ritmul de transfer al

datelor la nivel de bit;

- FSR - semnalul cadru de sincronizare la recepţie cu rolul de a iniţializa

recepţia datelor, prezenţa sa fiind necesară înaintea preluării unui pachet

de date de la pinul DR;

- CLKR - semnalul de tact de recepţie impune ritmul de preluare a datelor

la nivel de bit.

În figura 4.3 se prezintă un exemplu de interconectare a două

procesoare digitale de semnal prin intermediul unui port serial.

Datele care se doresc a fi transmise se încarcă prin program în

registrul DXR. În momentul în care o dată este înscrisă în DXR, aceasta va

fi transferată registrului XSR doar dacă data anterioară a fost complet

transmisă în mod serial spre pinul DX. La transferul unei date din registrul

DXR în registrul XSR, bitul de stare XRDY din registrul SPC trece din "0" în

"1" logic. Această tranziţie generează un semnal de întrerupere XINT,

semnal care indică faptul că în DXR se poate înscrie o nouă dată.

Pentru a evita "alterarea" datelor transmise, se indică înscrierea unei

noi date în DXR doar după realizarea transferului conţinutului DXR în XSR,

altfel data anterioară din DXR se pierde prin suprascriere.

Page 49: PNS curs-pag-1-81din100

49

Fig.4.3 Interconectarea a două DSP prin intermediul portului serial

La recepţie, datele care sosesc la pinul DR sunt deplasate serial în

registrul RSR, la nivel de bit, în ritmul semnalului de tact CLKR. Când data

recepţionată este complet încărcată în registrul RSR, aceasta se transferă

în mod automat registrului DRR de unde poate apoi fi citită prin program.

La transferul unei date din registrul RSR în registrul DRR, bitul de stare

RRDY din registrul SPC suferă o tranziţie de la "0" la "1" logic. Schimbarea

stării acestui bit determină generarea unui semnal de întrerupere RINT,

indicând faptul că data recepţionată poate fi folosită de program.

4.2.2. Registrul de stare şi control al portului serial

Controlul asupra portului serial se realizează prin intermediul registru-

lui de stare şi control (SPC) care conţine 16 biţi. Semnificaţia biţilor SPC

este indicată în continuare:

- bitul FREE se foloseşte în combinaţie cu bitul SOFT determinând

împreună modul în care funcţionează generatorul care furnizează semnale

de tact portului serial în momentul în care apare un punct de întrerupere

datorat unei întreruperi soft-ware; dacă bitul FREE este setat în "1" logic

atunci semnalele de tact se generează chiar dacă apare întreruperea soft-

ware; dacă bitul FREE este resetat, bitul SOFT este în "1" logic şi

transmisia unei date este în plină desfăşurare atunci generarea semnalelor

Page 50: PNS curs-pag-1-81din100

50

de tact este oprită imediat ce apare întreruperea soft-ware iar dacă bitul

SOFT este în "0", generarea semnalelor încetează doar după transmiterea

completă a datei transmisă în momentul în care survine întreruperea;

- Registrul de control al portului serial

- RSRFULL - indică prin "1" logic dacă registrul RSR conţine o dată iar data

din registrul DRR nu a fost citită de la ultimul transfer al conţinutului

registrului RSR în registrul DRR; în această situaţie secţiunea de recepţie a

portului serial aşteaptă citirea datei din registrul DRR dar între timp datele

sosite la pinul DR nu sunt luate în considerare sau sunt pierdute;

- /XSREMPTY - acest bit indică prin "0" logic dacă din registrul XSR data a

fost transmisă iar în registrul DXR nu a fost încărcată o nouă dată de la

ultimul transfer al conţinutului registrului DXR în registrul XSR;

- XRDY - acest bit indică printr-o tranziţie din "0" în "1" logic că registrul

DXR a fost încărcat în registrul XSR iar DXR poate fi încărcat cu o nouă

dată ce urmează a fi transmisă; în urma acestui transfer se mai generează

şi o întrerupere XINT;

- RRDY - bitul indică printr-o tranziţie din "0" în "1" logic că registrul RSR a

fost încărcat în registrul DRR şi că data din registrul DRR poate fi citită; în

momentul schimbării valorii acestui bit se generează o întrerupere RINT;

- IN1 - indică nivelul semnalului la pinul CLKX;

- IN0 - indică nivelul semnalului la pinul CLKR;

Page 51: PNS curs-pag-1-81din100

51

- /RRST - resetarea acestui bit atrage după sine resetarea secţiunii de

recepţie a portului serial şi încetarea funcţionării acestuia precum şi

resetarea biţilor RSRFULL şi RRDY; setarea în "1" logic permite funcţio-

narea părţii de recepţie a portului serial;

- /XRST - la resetarea pinului funcţionarea părţii de transmisie a portului

serial încetează, bitul XSREMPTY devine "0", bitul XRDY devine "1" şi se

mai generează o întrerupere XINT; dacă bitul este adus în "1" logic

secţiunea de transmisie a portului serial intră în funcţiune;

- TXM - este folosit la configurarea pinului FSX ca intrare sau ieşire dacă

TXM este în "0" respectiv "1" logic; semnalul FSX (sincronizare cadru) este

generat la transferul fiecare transfer al datelor din registrul DXR în XSR

fiind sincron cu semnalul de tact CLKX;

- MCM - indică sursa pentru semnalul CLKX; dacă MCM este în "1" logic,

semnalul CLKX se ia de la pinul CLKX iar dacă MCM este resetat,

semnalul CLKX are frecvenţa egală cu un sfert din cea a semnalului

generat intern de procesor CLKOUT1;

- FSM - acest bit indică modul de realizare a transmisiilor/recepţiilor de date

însoţite sau nu de semnalul de sincronizare de cadru; dacă FSM este setat,

la pinii FSX/FSR se transmite un impuls înaintea fiecărei date transmise;

dacă FSM este resetat, impulsul de sincronizare de cadru este folosit doar

pentru iniţializarea transmiterii/recepţiei continue a unei secvenţe de date;

- FO - bitul indică formatul datelor care trec prin portul serial; dacă FO este

setat atunci datele sunt reprezentate pe 8 biţi iar dacă FO este resetat

datele sunt reprezentate pe 16 biţi;

- DLB - acest pin permite în cazul este setat să realizeze o legătură internă

digitală între semnalele DR şi DX precum şi între FSR şi FSX (de exemplu

pentru testarea portului serial);

- RES - bit rezervat şi se află în "0" logic.

Page 52: PNS curs-pag-1-81din100

52

Nivelul logic al fiecărui bit al registrului SPC, după resetare, este dată

în [16]. Se recomandă ca setarea biţilor să se realizeze prin program şi să

nu se folosească valorile implicite ale fiecărui bit după resetarea

procesorului digital de semnal.

4.2.3. Modurile de funcţionare ale portului serial

Portul serial standard al procesorului digital de semnal poate să

funcţioneze cu comunicaţie în "salve" (engl. burst) sau cu comunicaţie con-

tinuă. Pentru modul de funcţionare în salve fiecare cuvânt de date este

precedat/urmat de un impuls de sincronizare de cadru FSX/FSR. Pentru

modul de funcţionare cu comunicaţie continuă este folosit doar un singur

impuls FSX/FSR care să iniţieze comunicaţia.

A. Modul de transmitere în "salve".Transmiterea în acest mod de funcţionare se poate urmări cu ajutorul

diagramelor de semnal prezentate în figura 4.4.

Fig.4.4 Diagrame de semnal pentru transmitere în salve

Transferul unei date începe în momentul în care, prin program, registrul

DXR este încărcat. În momentul transferării conţinutului registrului DXR în

registrul XSR se generează un impuls de întrerupere XINT iar datele, la

Page 53: PNS curs-pag-1-81din100

53

nivel de bit, încep să fie transmise spre pinul de ieşire DX. Un cuvânt de

date trebuie să fie încărcat în DXR doar după transmiterea completă a

datei anterioare din registrul XSR, adică atunci când XRDY este în "1"

logic.

B. Modul de recepţie în salve.Pentru acest mod de funcţionare, recepţia datelor poate fi urmărită cu

ajutorul diagramelor de semnal din figura 4.5.

Fig.4.5 Diagrame de semnal pentru recepţia în salve

Fiecare cuvânt de date este precedat de un semnal de sincronizare de

cadru FSR. După recepţionarea unei date în registrul RSR, prin intermediul

pinului de intrare DR, aceasta este transferată în registrul DRR. În urma

transferului se generează un semnal de întrerupere RINT. În momentul

apariţiei semnalului RINT, data conţinută în registrul DRR poate fi citită prin

program.

C. Modul de transmitere continuu.Pentru acest mod de funcţionare se folosesc formele de undă prezen-

tate în figura 4.6.

Page 54: PNS curs-pag-1-81din100

54

Fig.4.6 Diagrame de semnal pentru transmiterea continuă a datelor

În acest caz, transmiterea unei serii de date la frecvenţa maximă de

lucru este iniţiată de generarea unui semnal FSX. Semnalul FSX apare în

momentul transferului unei date din registrul DXR în registrul XSR. Deşi

semnalul FSX este generat doar la începutul transmiterii unei serii de date,

semnalul XINT se va genera imediat ce registrul XSR poate prelua o nouă

dată. Acest mod de lucru impune încărcarea ritmică a registrului DXR cu

date deoarece o întârziere duce la întreruperea modului de transmitere

continuă. După o astfel de întrerupere, datele care urmează să fie

transmise vor fi precedate din nou de un semnal FSX.

D. Modul de recepţie continuuÎn cazul recepţiei continue de date se folosesc următoarele diagrame

temporale care pun în evidenţă acţiunile care au loc pentru acest mod de

funcţionare, conform figura 4.7.

Datele care sosesc la pinul DR sunt precedate de un semnal cadru

de sincronizare la recepţie FSR. După ce o dată este recepţionată în

registrul RSR, aceasta este transferată registrului DRR. În momentul

transferului se generează un semnal de întrerupere RINT. Deşi datele sunt

precedate doar de un singur impuls de sincronizare de cadru la recepţie,

Page 55: PNS curs-pag-1-81din100

55

generarea întreruperilor XINT are loc după recepţionarea fiecărei date în

parte.

Fig.4.7 Diagrame de semnal pentru recepţia continuă a datelor

4.3. Porturi de intrare-ieşire

Procesoarele digitale de semnal TMS320C50 au un spaţiu de 64k de

adrese care pot fi folosite la selectarea unor echipamente periferice cu

comunicaţie pe port paralel. Magistrala de adrese este disponibilă pentru

selectarea directă sau indirectă (prin decodare) a unor periferice care fac

schimbul de date cu procesorul de semnal prin intermediul magistralei de

date. Pentru accesarea echipamentelor periferice sunt folosite instrucţiunile

IN respectiv OUT. Pentru selectarea perifericelor, procesoarele de semnal

generează semnale de citire /RD, scriere /WE şi de iniţializare a unei

operaţii de schimb de date cu echipamentele periferice /IS.

În continuare este exemplificat modul în care procesorul digital

TMS320C50 preia date de la un circuit periferic. Circuitul integrat ADS7811

este un convertor analog-digital, realizat în tehnologie CMOS, admite o

frecvenţă de eşantionare de 250kHz, un timp de conversie de 3,5µs, intrare

analogică asimetrică pe care se poate aplica o tensiune cuprinsă între

+2,5V şi -2,5V, iar rezultatele conversiei sunt reprezentate pe 16 biţi în cod

complement lui doi, conform tabelului 4.1.

Page 56: PNS curs-pag-1-81din100

56

Tabelul 4.1

Ieşire digitalăCod complement a lui doi

Descriere Intrareanalogică

Cod binar Cod hexazecimalDomeniu maxim ± 2,5 VLSB 76 µV

Domeniu pozitiv 2,499924 V 0111 1111 1111 1111 7FFF2,5V – 1 LSB

0 V 0000 0000 0000 0000 0000

− LSB – 76 µV 1111 1111 1111 1111 FFFFDomeniu negativ – 2,5 V 1000 0000 0000 0000 8000

Modul de conectare al convertorului analog-digital la procesorul de

semnal este indicat în figura 4.8. Citirea unei date de la convertorul analog-

digital se realizează în acest caz cu ajutorul instrucţiunii IN.

La executarea instrucţiunii IN, semnalul /IS generat de procesor are

nivel logic zero. Selectarea convertorului analog-digital se realizează cu

ajutorul unui decodificator care are ca intrare semnalele /IS şi cele

provenite pe liniile de adrese A0-A2.

Porţile logice sunt folosite pentru logica de comandă a convertorului,

care pe durata conversiei folosesc semnalul /BUSY. Datele pot fi

transferate procesorului de semnal imediat după apariţia frontului crescător

al semnalului /BUSY. Între convertor şi procesor se conectează un etaj

tampon. Datele sunt accesibile la ieşirea circuitului tampon în momentul

apariţiei semnalului /RD generat de către procesor.

Page 57: PNS curs-pag-1-81din100

57

Fig.4.8 Circuit de interfaţare cu convertorul analog-digital ADS7811

După cum se observă în figura 4.8, folosirea unor circuite de

decodificare permite extinderea spaţiului de adresare pentru echipamente

periferice.

Page 58: PNS curs-pag-1-81din100

58

5. Noţiuni de utilizarea a procesorului TMS320C50

În cadrul acestui capitol sunt prezentate modurile de reprezentare a

datelor în procesorul de semnal TMS320C50, observaţii referitoare la

efectuarea operaţiilor aritmetice de bază precum şi câteva din aplicaţiile

clasice ale procesoarelor de semnal.

5.1. Reprezentarea numerelor pentru procesoareledigitale de semnal în virgulă fixă

Datorită posibilităţilor de realizare fizică, reprezentarea numerelor în

sistemul binar, bazat pe două cifre, 0 şi 1, este folosită în cazul

dispozitivelor electronice digitale. Cele două cifre sunt asociate la câte un

nivel de tensiune, nivel care depinde de tipul şi tehnologia de realizare a

dispozitivelor electronice digitale.

Valoarea unui număr natural N se obţine cu ajutorul relaţiei

următoare:

∑=

=n

k

kkbN

02 , (5.1)

unde coeficienţii { }1,0=kb . Secvenţa de variabile binare bnbn-1...b2b1b0 este

reprezentarea în cod binar natural a numărului N. În secvenţa de variabile

binare, bn cel mai semnificativ bit (MSB) iar b0 se numeşte cel mai puţin

semnificativ bit (LSB). În procesoarele digitale de semnal TMS320C50,

numerele întregi pozitive sunt reprezentate pe 16 biţi (n = 15). Rezultatele

unor operaţii realizate de aceste procesoare de semnal sunt reprezentate

fie pe 16 biţi fie pe 32 de biţi. În acest sens, procesoarele mai sus amintite

sunt prevăzute cu un acumulator, un registru acumulator tampon şi un

registru de produs de 32 de biţi.

Page 59: PNS curs-pag-1-81din100

59

Acumulatorul este alcătuit la rândul său din două registre de câte 16

biţi - ACCH(16) şi ACCL(16). Cu ajutorul a 16 biţi se pot reprezenta numere

cuprinse între 0 şi (2n - 1) adică între 0 şi 65535. Dacă are loc o deplasare

la stânga cu un bit ak -> ak+1 şi a0 = 0 atunci numărul N a fost înmulţit cu doi

iar noul număr este reprezentat pe n+1 biţi.

La reprezentarea binară a numerelor întregi cu semn, bitul cel mai

semnificativ al secvenţei binare reprezintă semnul numărului. Dacă

valoarea bitului de semn este zero atunci numărul este pozitiv iar dacă

valoarea bitului de semn este 1 atunci numărul este negativ.

Pornind de la acest mod de codificare pentru numerele întregi

pozitive, codificare cunoscută şi sub denumirea de cod complement lui doi,

valoarea numărului codificat se obţine cu ajutorul relaţiei:

∑−

=

+−=1

022

n

k

kk

nn bbZ (5.2)

În relaţia (5.2), bitul bn determină semnul numărului (bitul bn se mai

numeşte bit de semn), având şi ponderea cea mai mare. Cu ajutorul a 16

biţi, dintre care cel mai semnificativ de semn, se pot reprezenta numere

cuprinse între -2n-1 şi (2n-1 - 1) adică între -32768 şi 32767.

Codificarea numerelor întregi negative în cod complement lui doi se

face în modul următor: se reprezintă valoarea absolută a numărului negativ

în cod binar natural, se determină complementul reprezentării binare şi în

final se adaugă 1. De exemplu, pentru reprezentarea numărului -9 în cod

complement lui doi pe 8 biţi, avem următorii paşi:

a. se reprezintă în cod binar natural numărul 9

00001001

b. se inversează fiecare bit al reprezentării binare a numărului 9

11110110

Page 60: PNS curs-pag-1-81din100

60

c. la reprezentarea inversată (complement a lui 1) se adună 1

11110111

Dacă se realizează în binar adunarea lui -9 cu numărul 7 se obţine:

11110111+

00000111-----------------------

11111110 adică chiar reprezentarea lui -2 în cod complement lui doi.

Numerele cu semn sunt însumate în acelaşi fel ca şi în cazul

numerelor fără semn. Singura diferenţă constă în modul de interpretare a

acestor numere. Această ultimă observaţie are şi un interes practic,

deoarece pentru însumarea numerelor, în reprezentare cu semn sau fără

semn se foloseşte acelaşi circuit sumator. Conversia numerelor negative în

echivalentul lor pozitiv, se realizează în mod identic: se inversează la nivel

de bit secvenţa corespunzătoare reprezentării unui număr negativ cu semn

şi apoi se adună 1.

Procesoarele digitale de semnal TMS320C50 admit efectuarea unor

operaţii aritmetice asupra numerelor negative reprezentate în cod binar

complement lui doi. Cum majoritatea datelor în procesoarele de semnal

TMS320C50 sunt reprezentate pe 16 biţi, la încărcarea lor în registre de

capacitate mai mare, de exemplu de 32 de biţi, apare o problemă, şi

anume, cei mai semnificativi 16 biţi ai registrelor de 32 de biţi rămân în 0

logic, lucru ce generează o gravă eroare. În cazul în care se încarcă un

număr negativ reprezentat pe 16 biţi într-un registru de 32 de biţi, cel mai

semnificativ bit al registrului de 32 de biţi fiind în 0 logic, ar însemna că s-a

încărcat un număr pozitiv şi nu unul negativ. Acest tip de eroare este

evitată în mod elegant de către procesor. Procesorul dispune de un mod de

lucru cu extensia bitului de semn, care poate fi selectat prin setarea bitului

SXM (ST1.10) din registrul de stare şi control ST1. Modul de operare cu

extensia bitului de semn are ca efect, după încărcarea unui număr

Page 61: PNS curs-pag-1-81din100

61

reprezentat pe 16 biţi în cod complement lui doi într-un registru de 32 de

biţi (de exemplu registrul acumulator), setarea tuturor celor mai

semnificativi 16 biţi cu valoarea bitului de semn a numărului reprezentat pe

16 biţi. Dacă bitul SXM este în 0 logic, numerele vor fi interpretate ca fiind

reprezentate în cod binar natural.

Valoarea unui număr fracţionar subunitar fără semn se obţine cu

ajutorul relaţiei următoare:

∑=

−=n

k

kkbN

12 , (5.3)

unde coeficienţii { }1,0=kb . De data aceasta, bitul b1 are ponderea cea mai

mare, fiind cel mai semnificativ bit al secvenţei b1b2...bn-1bn care reprezintă

codul binar asociat unui număr fracţionar subunitar fără semn. Precizia

numărului fracţionar este dată de fracţia 2-n. Domeniul de valori care pot să

fie reprezentate în acest mod este (2-n, 1-2-n).

Numerele fracţionare subunitare cu semn pot să fie reprezentate cu

ajutorul relaţiei următoare:

( ) ∑=

−+−=n

k

kkbbN

1

00 221 . (5.4)

Şi de această dată, cel mai semnificativ bit al reprezentării este bitul de

semn. Domeniul de valori care pot să fie reprezentate cu (5.4) este

(-1, 1-2-n). În procesoarele digitale de semnal în virgulă fixă, pentru

reprezentarea numerelor fracţionare subunitare se foloseşte formatul Qn.

Acest format indică numărul "n" de biţi din dreapta bitului de semn. Astfel,

pentru numere fracţionare subunitare reprezentate pe 16 biţi, avem

formatul Q15.

Reprezentarea numerelor sub formă fracţionară subunitară prezintă

unele avantaje. Înmulţirea a două numere subunitare are ca rezultat tot un

număr subunitar, motiv pentru care în urma operaţiilor de înmulţire nu pot

Page 62: PNS curs-pag-1-81din100

62

să apară depăşiri. Însumarea a două numere subunitare nu este

întotdeauna un număr subunitar, fapt ce poate determina o depăşire a

conţinutului registrului în care se obţine rezultatul. Aceste depăşiri pot să fie

evitate printr-o prescalare corespunzătoare a datelor care urmează a fi

prelucrate.

5.2. Operaţii aritmetice realizate cu procesoruldigital în virgulă fixă TMS320C50

Operaţia de înmulţire este realizată cu ajutorul unui circuit special

destinat acestui scop iar rezultatul înmulţirii este plasat într-un registru de

produs (PREG). Datele în procesorul digital de semnal TMS320C50 sunt

reprezentate pe 16 biţi. Rezultatul înmulţirii a două numere reprezentate pe

16 biţi este un număr care este reprezentat pe 32 biţi. Din acest motiv,

registrul de PREG conţine 32 biţi.

La înmulţirea a două numere, din care cel puţin unu este cu semn,

procesorul trebuie setat în modul de lucru cu extensia bitului de semn. Se

realizează obligatoriu extensia bitului de semn la fiecare produs parţial.

Pentru a exemplifica acest lucru se înmulţeşte numărul -3 (1101 cod

complement lui doi) cu 3 (0011). Cum ambele numere sunt reprezentate pe

câte 4 biţi, rezultatul înmulţirii este o secvenţă binară de 8 biţi.

1101 X0011

--------------- 11111101 <- extensia bitului de semn

1111101 <- extensia bitului de semn ------------------ 11110111 -> -9

În cazul în care se realizează înmulţirea a două numere fracţionare în

format Q15 se obţine un număr fracţionar în format Q30. Datorită faptului

că numerele fracţionare în format Q15 sunt reprezentate pe 16 biţi (bitul de

Page 63: PNS curs-pag-1-81din100

63

semn fiind cel mai semnificativ), rezultatul operaţiei de înmulţire care se

obţine este reprezentat pe 32 de biţi. Cei mai semnificativi doi biţi ai

rezultatului sunt biţi de semn dintre care unul este redundant. În

procesoarele digitale de semnal TMS320C50, eliminarea unui bit de semn

redundant se realizează automat în urma operaţiei de înmulţire, printr-o

deplasare la stânga a rezultatului cu o poziţie şi adăugarea unui bit de

valoare zero, bit ce devine cel mai puţin semnificativ bit al rezultatului.

Deplasarea automată a rezultatului obţinut în urma înmulţirii se face în

urma încărcării în registrul PM (product mode) de 2 biţi a valorii 01b.

Câmpul de doi biţi PM se află în registrul de stare şi control ST1.

Instrucţiunea cu care se setează deplasamentul corespunzător registrului

PREG(32) este SPM.

În exemplul următor se prezintă înmulţirea a două numere fracţionare

cu semn în format Q3. Rezultatul înmulţirii este în format Q6 dar datorită

faptului că pentru reprezentarea numerelor sunt necesari 4 biţi, rezultatul

final este o secvenţă binară de 8 biţi, cei mai semnificativi doi biţi fiind biţii

de semn.

-0,5 1101 X 0,5 0100 ---------------

00000000 0000000 111100 ---------------- 11.110000 <- rezultatul înmulţirii este deplasat la stânga cu o poziţie

pentru a elimina un bit de semn --------------- 1.1100000 <- se iau în considerare doar cei mai semnificativi 4 biţi

conform reprezentării iniţiale a numerelor fracţionare

1110 -> -0,25

Luând în considerare doar cei mai semnificativi 4 biţi ai rezultatului

înmulţirii, se constată apariţia unei erori de trunchiere.

Page 64: PNS curs-pag-1-81din100

64

Operaţia de adunare a numerelor reprezentate în cod complement lui

doi a fost folosită la însumarea produselor parţiale din exemplele

menţionate mai sus. Problema care apare în urma operaţiei de adunare

este aceea că rezultatul obţinut poate să fie reprezentat pe un număr mai

mare de biţi decât numerele care se adună. De exemplu:

9 1001+7 0111 -----------16 10000 <- se iau în considerare cei mai puţin semnificativi 4 biţi

Se constată că rezultatul adunării este reprezentat pe un număr mai

mare de biţi. În acest caz operaţia de adunare a determinat o depăşire şi

implicit un rezultat incorect. Programatorii trebuie să ţină cont de acest

lucru şi să pre-scaleze operanzii înaintea unei operaţii de adunare în aşa

fel încât apariţia depăşirilor să nu fie posibilă. Este cunoscut faptul că prin

scalare se pierde o anumită cantitate de informaţie.

In urma unor operaţii de adunare, unitatea aritmetică a procesorului

digital de semnal TMS320C50 poate să furnizeze un rezultat care să

depăşească capacitatea acumulatorului. Depăşirea capacităţii acumula-

torului este semnalizată în mod automat prin setarea bitului OV(ST0.12).

Procesorul de semnal tratează depăşirile care apar în urma unei

operaţii de adunare în două moduri, în funcţie de starea bitului OVM

(ST0.11). Astfel, dacă bitul OVM (modul de lucru la depăşire) este setat în

"1" logic, la apariţia unei depăşiri în acumulator se păstrează doar valoarea

maximă sau minimă care poate să fie reprezentată pe cei 32 de biţi de care

dispune acumulatorul, în funcţie de sensul depăşirii. Bitului OV nu îşi

schimbă valoarea până în momentul în care acest lucru nu se realizează cu

instrucţiunea LST sau SETC/CLRC, se foloseşte un salt condiţionat de

acest bit sau se acceptă o cerere de întrerupere. În cazul în care bitul OVM

nu este setat, la apariţia unei depăşiri, în acumulator se vor reţine cei mai

puţin semnificativi 32 de biţi ai rezultatului.

Page 65: PNS curs-pag-1-81din100

65

5.3. Transformata Fourier rapidă

În cazul în care se doreşte determinarea spectrului unui semnal

discret în timp se utilizează transformata Fourier discretă. Transformata

Fourier discretă este dată de relaţia următoare:

[ ] [ ]nxekXN

n

knNj

∑−

=

−=

1

0

, (5.5)

unde x[n] reprezintă semnalul discret în timp iar X[k] reprezintă

componentele spectrului secvenţei x[n].

Dacă se face notaţia Nj

N eWπ2

−= , relaţia (1) poate fi scrisă mai simplu

în modul următor:

[ ] ][1

0nxWkX

N

n

knN∑

=

= . (5.6)

Termenul Nj

N eWπ2

−= , numit şi factor de fază, poate fi reprezentat în

planul complex pe un cerc cu raza unitate, cu centrul în origine, după cum

este indicat în figura 5.1, pentru N = 4 respectiv N = 8.

Fig.5.1 Reprezentarea grafică a factorului de fază

În cazul în care N = 4 (pentru a obţine o reprezentare cât mai exactă, în

situaţii reale N este de ordinul sutelor), factorul de fază este egal cu:

Page 66: PNS curs-pag-1-81din100

66

jjeWj

N −=−+−==−

)2

sin()2

cos(42 πππ

, (5.7)

iar secvenţa (5.6) devine:

[ ]

]3[]2[)1(]1[)(]0[]1[)(

...]1[)(]0[)(][)(][

)1(

101

0

xjxxjxNxj

xjxjnxjnxWkX

kkkNk

kkknN

n

knN

+−+−+=−−+

+−+−=−==

−⋅

⋅⋅−

=∑ (5.8)

Valorile secvenţei X[k] pentru transformata Fourier discretă (DFT) în patru

puncte se mai pot scrie în mod următorul:

)3()2()1()0(]0[ xxxxX +++= (5.9)

)3()2()1()0(]1[ jxxjxxX +−−= (5.10)

)3()2()1()0(]2[ xxxxX −+−= (5.11)

)3()2()1()0(]3[ jxxjxxX −−+= (5.12)

Din (5.9), (5.10), (5.11) şi (5.12) se observă că secvenţa X[k] se obţine în

urma unor operaţii cu numere complexe. Determinarea directă a secvenţei

(5.8) presupune realizarea a N2 operaţii de înmulţire şi adunare. Pentru

reducerea semnificativă a numărului necesar de operaţii necesare calculării

unei DFT s-au dezvoltat algoritmi care oferă acelaşi rezultat dar după un

număr mai mic de operaţii. Un astfel de algoritm este FFT (transformata

Fourier rapidă) care descompune un DFT în N puncte într-un DFT în N/2

puncte, apoi un DFT în N/4 puncte etc. Se ajunge la un moment dat, dacă

N este o putere a lui doi, la un DFT în două puncte, numit şi "fluture".

Împărţirea DFT în N puncte în două secvenţe de N/2 puncte se mai

numeşte decimare în timp. Prima secvenţă va conţine eşantioanele pare

ale semnalului de intrare iar cea de-a doua secvenţă conţine eşantioanele

impare. Acest lucru se poate constata şi din diagrama prezentată în figura

5.2. Prin aplicarea algoritmului FFT la determinarea componentelor

spectrale X[k] sunt necesare doar N + 2(N/2)2 operaţii de înmulţire şi

adunare [6], [9], etc. Din diagrama prezentată în figura 5.2 se observă că

Page 67: PNS curs-pag-1-81din100

67

cele patru eşantioane ale semnalului de la intrare nu sunt folosite în

ordinea eşantionării lor ci sunt plasate în memoria de date a procesorului

de semnal în mod diferit.

Fig.5.2 FFT în patru puncte

Modul de ordonare a datelor achiziţionate este specific algoritmului

FFT şi este cunoscut ca inversare a biţilor care dau numărul de ordine al

unui eşantion după cum este indicat în tabelul următor.

Tabel.5.1

Indexeşantion

Reprezentareaindexului în CBN

Reprezentareacu bit inversat

Indexinversat

0 00 00 0

1 01 10 2

2 10 01 1

3 11 11 3

Procesoarele digitale de semnal TMS320C50 facilitează inversarea

de bit a indexului eşantioanelor semnalului achiziţionat fără a fi necesară

păstrarea temporară a datelor care necesită spaţiu de memorie

suplimentar. Pentru schimbarea indexului datelor de prelucrat, ca fază

premergătoare calculului FFT, există mai multe posibilităţi, dintre care se

exemplifică în continuare următoarele două.

Page 68: PNS curs-pag-1-81din100

68

A. .dataadr1 .word 0, 0, 0, 0, 0, 0, 0, 0 ; se rezervă spaţiu de

; memorie pentru dateadri .word 0, 0, 0, 0, 0, 0, 0, 0 ; se rezervă spaţiu pentru

; datele achiziţionate a căror; ordine este inversată cfm.; algoritmului FFT

cont .word 7 ; se iniţializează o locaţie de mem.; în care se stochează un contor; pentru un algoritm de calcul FFT; în 8 puncte

.ps 0a00h ; la adresa 0a00h începe o sec-; ţiune de program

.entry ; intrarea în programul principal; se face la adresa 0a00h

.mmregs ; regiştri cu funcţii speciale sunt; mapaţi la începutul paginii 0 a; memoriei de date

; aici se inserează o rutină de iniţializare a procesorului şi a interfeţei; analogice TLC32040 pentru TMS320C5X DSP Starter Kit - [2], [14].

CLRC INTM ; se validează întreruperilewait: NOP ; se aşteaptă o cerere de

NOP ; întrerupereB wait.text

rec: SETC SXM ; după acceptarea unei întreruperi; survenite după recepţia unei date; sunt invalidate toate întreruperile; mascabile

LDP #0 ; se încarcă registrul APR cu 0LAMM DRR ; se încarcă în acumulator conţinu-

; tul registrului DRR (recepţie date; aflat în pag. 0 a mem. de date

LAR AR2, #adr1 ; datele achiziţionate se stochează; în ordinea sosirii, în locaţii succe-; sive începând cu adresa adr1

MAR *, AR2SACL *+LDP #contLACC contSUB #1 ; contorul este decrementat cu o

; unitateSACL cont

Page 69: PNS curs-pag-1-81din100

69

BCND inv, EQ ; dacă cele 8 eşantioane aufost

; stocate în memoria de date,; urmează schimbarea ordinii lor; în vederea realizării FFT

RETEinv: SETC INTM ; se invalidează întreruperile

LACC #7LDP #contSACL cont ; se încarcă în locaţia cont 7LAR AR3, #adri ; ordinea eşantioanelor este

; schimbată pentru calculul FFT; noua ordonare se face în mem.; de date de la adresa adri

LAR AR0, #4 ; se încarcă AR0 cu 4; registrul AR0 este folosit pentru; adresarea indirectă

; (se consideră că bitul PMST.2 este resetat, caz în care (INDX) = (AR0))LAR AR2, #adr1

loop: MAR *, AR2LACC *BR0+, AR3 ; se încarcă în ACC data a cărei

; adresă este se obţine prin; însumarea conţinutului reg. AR2; cu cel al reg. INDX şi se salvează

SACL *+ ; în memoria de date la începând; cu adresa adri

LACC contSUB #1SACL contBCND wait, EQB loop

B. .dataadri .word 0, 0, 0, 0, 0, 0, 0, 0 ; se alocă spaţiu pentru date

.ps 0a00h ; la adresa 0a00h începe o sec-; ţiune de program

.entry ; intrarea în programul principal; se face la adresa 0a00h

.mmregs ; regiştri cu funcţii speciale sunt; mapaţi la începutul paginii 0 a; memoriei de date

; aici se inserează o rutină de iniţializare a procesorului şi a interfeţei

Page 70: PNS curs-pag-1-81din100

70

; analogice TLC32040 pentru TMS320C5X DSP Starter Kit - [2], [14].LACC #4LDP #0SAMM INDX ; registrul INDX este încărcat cu 4LAR AR2, #adriMAR *, AR2RPT #7IN *BR0+, PA0 ; datele preluate de la portul PA0

; vor fi stocate începând de la; adresa adri cu un index inversat; conform algoritmului FFT

B start_fft

5.4. Filtre digitale

Filtrele digitale sau impus în ultimul timp datorită următoarelor

considerente:

- existenţa unor sisteme de dezvoltare bazate pe procesoare digitale de

semnal la preţuri din ce în ce mai mici, ce oferă posibilitatea implementării

unor algoritmi complecşi de calcul, ceea ce determină obţinerea unor

caracteristici în domeniul frecvenţă apropiate de cele ale filtrelor ideale,

caracteristici greu de realizat cu ajutorul unor filtre analogice;

- se elimină dezavantajul filtrelor analogice datorat fenomenului de

îmbătrânire în timp a componentelor folosite şi cel al gabaritului mare în

cazul filtrării unor semnale de joasă frecvenţă;

- pentru diferite tipuri de filtre digitale se poate folosi acelaşi sistem digital

de prelucrare a semnalelor;

- reglarea unor parametri ai filtrului se realizează uşor prin modificarea

softului corespunzător.

Transformarea unui filtru analogic în filtru digital se realizează în

modul următor. Pentru exemplificare se foloseşte un filtru RC trece jos -

figura 5.3.a.

Page 71: PNS curs-pag-1-81din100

71

Fig.5.3.Tensiunea u2 de la ieşirea filtrului este dată de relaţia următoare:

( ) ( ) ( )dttduRCtutu 2

12 −= . (5.13)

Dacă tensiunile u1 şi u2 sunt eşantionate cu o perioadă T, atunci valoarea

tensiunii u2 la momentul t = nT este dată de relaţia:

[ ] [ ] [ ] ( )[ ]T

TnunTuRCnTunTu 12212

−−−= , (5.14)

cu condiţia ca perioada de eşantionare T să fie suficient de mică.

Din relaţia (5.14) rezultă

[ ] [ ] ( )[ ]Tnu

TRCTRC

nTu

TRCnTu 1

11

1212 −

+−

+= , (5.15)

sau dacă facem notaţiile

TRCa

+=

1

10 şi

TRCTRC

b+

=1

1 atunci relaţia (5.15)

devine

[ ] [ ] ( )[ ]TnubnTuanTu 121102 −−= . (5.16)

Pentru relaţia (5.16) se poate realiza structura din figura 5.3.b. În relaţia

(5.16) se observă că răspunsul filtrului în timp discret depinde de tensiunea

Page 72: PNS curs-pag-1-81din100

72

de intrare în momentul t = nT dar şi de răspunsul filtrului la momentul

anterior t = (n-1)T. Acest lucru indică faptul că în structura corespunzătoare

filtrului digital există un element care introduce o întârziere TD asupra

semnalului u2. Din punct de vedere al realizării practice, este necesară

memorarea ultimului eşantion al tensiunii de la ieşirea filtrului până în

momentul apariţiei unui nou eşantion, după un interval de timp T, la intrarea

filtrului.

Procesoarele digitale de semnal oferă posibilitatea efectuării în timp

real a unor operaţii mult mai complexe decât cele indicate în relaţia (5.16).

În momentul de faţă se folosesc în mod curent mai multe tipuri de

filtre digitale dintre care se remarcă filtrele digitale cu răspuns finit la impuls

(FIR) şi filtrele cu răspuns infinit la impuls (IIR).

A. Filtrele cu răspuns finit la impuls (FIR)

Relaţia care descrie funcţionarea unui filtru de tip FIR este

următoarea:

[ ] [ ]∑=

−=M

kk knxany

0, (5.17)

unde ak reprezintă coeficienţii filtrului. Pornind de la relaţia (5.17) se poate

determina o structură echivalentă pentru filtrele de tip FIR - figura 5.4. Cu

ajutorul acestei structuri se pun în evidenţă operaţiile care trebuie să fie

executate de către procesorul digital de semnal în vederea filtrării.

În structura din figura 5.4 se observă că pentru obţinerea unui eşantion la

ieşirea filtrului digital este nevoie de realizarea unei linii de întârziere a

eşantioanelor aplicate la intrarea filtrului. Astfel, pentru a obţine un eşantion

de ieşire y[n] sunt necesare ultimele M eşantioane ale semnalului x[n] care

este filtrat.

Page 73: PNS curs-pag-1-81din100

73

Fig.5.4 Structura echivalentă unui filtru FIR

O altă observaţie importantă este aceea că în algoritmul de calcul al

FIR se găsesc o serie de operaţii de tipul înmulţeşte şi adună, operaţie care

este de altfel specifică prelucrării digitale de semnal. Procesorul digital de

semnal TMS320C50 pune la dispoziţia programatorilor mai multe

instrucţiuni puternice, capabile să efectueze operaţii de înmulţire, adunare

şi deplasare a datelor în memoria de date.

Ţinând cont de observaţiile făcute anterior se prezintă în continuare o rutină

de calcul folosită pentru realizarea unei filtrări digitale cu ajutorul

procesorului TMS320C50.

Subrutina care determină răspunsul unui filtru de tip FIR rulează pe

placa de dezvoltare TMS320C50 DSK prevăzută cu interfaţa analogică

TLC32040. Pentru acest exemplu, datele de intrare şi răspunsul filtrului

sunt adresate direct iar coeficienţii filtrului sunt adresaţi indirect. Din acest

motiv, cele mai recente M eşantioane ale semnalului care este filtrat şi

răspunsul filtrului digital sunt memorate în cadrul unei singure pagini din

memoria de date, diferită de pagina 0, rezervată pentru regiştrii interni ai

procesorului. Coeficienţii filtrului ak, datorită modului de adresare indirectă,

pot fi memoraţi în orice zonă a memoriei de date dar la locaţii succesive în

ordinea indicilor. Subrutina este executată ori de câte ori este generată o

întrerupere datorată recepţiei unui eşantion de la interfaţa analogică.

Page 74: PNS curs-pag-1-81din100

74

Adrese Conţinut memorie

adry y[n]

adra0 a0

adra1 a1

... ...

adraM aM

adrx0 x[n]

adrx1 x[n-1]

... ...

adrxM x[n-M]

start LDP #0LAMM DRRAND #0FFFChLDP #nr_pag_date ;pagina de date în care se găseşte

;ultimele M eşantioane a semnalului ;care se filtrează

SACL #adrx0LAR AR0, #adraMMAR *, AR0ZAPLTD adrxM ;MPY *- ;..LTD adrx1MPY *-LTD adrx0MPY *APACSACH adry,1AND #0FFFChSAMM DXRIDLERETE

Page 75: PNS curs-pag-1-81din100

75

B. Filtrele cu răspuns infinit la impuls

O altă categorie importantă de filtre sunt cele cu răspuns infinit la

impuls IIR. Relaţia care descrie funcţionarea acestor filtre este următoarea:

[ ] [ ] [ ]knybknxanyN

kk

M

kk −+−= ∑∑

== 10, (5.18)

unde ak şi bk reprezintă coeficienţii filtrului. Din relaţia (5.18) se observă că

valoarea unui eşantion de la ieşirea unor astfel de filtre depinde pe lângă

eşantioanele de la intrarea filtrului şi de răspunsul filtrului la momente

anterioare, fapt ce indică existenţa unei "reacţii negative". Fiind un sistem

prevăzut cu o reacţie negativă, programatorul trebuie să fie foarte atent la

calculul coeficienţilor pentru a evita o posibilă instabilitate a sistemului

digital de filtrare. Pentru IIR se pot realiza mai multe structuri echivalente

după cum este indicat în figurile 5.5 şi 5.6.

Fig.5.5 Structura unui filtru IIR (forma directă)

Page 76: PNS curs-pag-1-81din100

76

Fig.5.6 Structură de filtru IIRCu ajutorul acestor structuri se pot dezvolta algoritmi de calcul care pot fi

uşor implementaţi pe sistemele bazate pe procesorul de semnal

TMS320C50.

Aplicând transformata z relaţiei (5.18) se obţine:

( ) ( ) ( )∑∑=

−−

=

⋅+⋅=N

k

kk

kM

kk zzYbzzXazY

10, (5.19)

de unde funcţia de transfer a filtrului ( ) ( )( )zXzYzH = este dată de relaţia:

( )k

N

kk

M

k

kk

zb

zazH

=

=

⋅−

⋅=

1

0

1. (5.20)

Page 77: PNS curs-pag-1-81din100

77

Relaţia (5.20) poate fi adusă sub forma:

( ) ∏ −−

−−

⋅−⋅−

⋅+⋅+=

j jj

jjj

zbzbzazaa

zH 22

11

22

110

1. (5.21)

Relaţia (5.21) indică faptul că H(z) se obţine prin conectarea în cascadă a

unui anumit număr de structuri de filtru de tip IIR de ordinul doi (sau unu) -

pentru M = N = 2 - după cum se observă şi în figura următoare.

Fig.5.7 Structură echivalentă de filtru IIR

În continuare se prezintă modul de implementare pe un procesor

digital de semnal TMS320C50 un filtru de tip IIR de ordinul doi - figura 5.7.

Pentru un filtru IIR de ordinul doi, funcţia de transfer se poate scriesub forma:

( ) ( )( )

( )( )

( )( ) 2

21

1

22

110

1 −−

−−

⋅−⋅−⋅+⋅+

===zbzbzazaa

zXzW

zWzY

zXzYzH . (5.22)

Dacă considerăm că

( )( )

22

110

−− ⋅+⋅+= zazaazWzY

, (5.23)

şi ( )( ) 2

21

111

−− ⋅−⋅−=

zbzbzXzW

, (5.24)

Page 78: PNS curs-pag-1-81din100

78

iar apoi aplicăm transformata z inversă relaţiilor (5.23) şi (5.24) se obţine:]2[]1[][][ 210 −+−+= nwanwanwany (5.25)

]2[]1[][][ 21 −+−+= nwbnwbnxnw (5.26)

unde w[n] reprezintă o variabilă intermediară.Deoarece numărul coeficienţilor filtrului sunt puţini, aceştia pot fi

memoraţi fără probleme pe o singură "pagină" de memorie dacă sefoloseşte adresarea directă, după cum se observă în coloanele următoare.

Rutina următoare deserveşte o cerere de întrerupere la achiziţionarea unuieşantion din semnalul de intrare.

RX: LDP #0 ;LAMM DRR ;se încarcă în ACCL reprezentarea

;binară a unui eşantion al semnalului de;intrare

LDP #adr_pag ;se adresează "pagina" din memoria de;date unde se găsesc coeficienţii filtrului

SACL adrx ;salvează eşantionul curent în;locaţia x[n]

ZAP ;0 --> ACC şi 0 -->PREGLT adrw2 ;w[n-2] --> TREG0MPY adrb2 ;(TREG0) x b2 --> PREGAPAC ;(ACC) + (PREG) --> ACC

;în registrul acumulator se găseşte; w[n-1] b1 + w[n-2] b2

LT adrw1 ; w[n-1] --> TREG0MPY adrb1 ;(TREG0) x b1 --> PREGAPAC ; (ACC) + (PREG) --> ACC

;în registrul acumulator se găseşte; w[n-1] b1 + w[n-2] b2

ADD adrx,15 ;la conţinutul acumulatorului se adaugă;x deplasat la stânga cu 15 biţi

SACH adrw0 ;(ACCH) --> la adresa w0;la locaţia adrw0 se găseşte; x[n] + w[n-1] b1 + w[n-2] b2 (5.26)

Adresă Conţinutadrw0 w[n]adrw1 w[n-1]adrw2 w[n-2]

Adresă Conţinutadra0 a0

adra1 a1

adra2 a2

Adresă Conţinutadrb1 b1

adrb2 b2

adrx xadry y

Page 79: PNS curs-pag-1-81din100

79

LT adrw2 ;w[n-2] --> TREG0MPY adra2 ;(TREG0) x a2 --> PREGLTD adrw1 ;(ACC) + (PREG) --> ACC

;în acumulator se găseşte w[n-2] a2;w[n-1] --> TREG0;(adrw1) --> (adrw2)

MPY adra1 ;(TREG0) x a1 --> PREGLTD adrw0 ;(ACC) + (PREG) --> ACC

;în acumulator se găseşte;w[n-1] a1 + w[n-2] a2;w[n] --> TREG0;(adrw0) --> (adrw1)

MPY adra0 ;w[n] x a0 --> PREGAPAC ;(ACC) + (PREG) = (ACC)

; în acumulator se găseşte; w[n] a0 + w[n-1] a1 + w[n-2] a2

SACH adry ;LDP #0 ;LMMR DRR, #adry; y[n] este trimis convertorului

;digital-analogRETE ;revenire din subrutina de întrerupere

;cu refacerea contextului şi validarea;întreruperilor

Page 80: PNS curs-pag-1-81din100

80

ANEXĂ

Semnificaţia Simbolurilor LiteraleFolosite în Cadrul Mnemonicelor Instrucţiunilor

( x ) Indică conţinutul unui registru, bit sau locaţie de memorie,iar x reprezintă registrul, bitul sau adresa locaţiei dememorie;

dma Folosit la adresarea directă a memoriei, reprezintă unnumăr 0 127≤ ≤dma corespunzător câmpului de 7 biţiDP;

{ind} Indică modul de adresare indirect al unui operand şivarianta de modificare a conţinutului registrului AR(ARP);

* (AR(ARP)) --> AR(ARP)*- (AR(ARP)) - 1 --> AR(ARP)*+ (AR(ARP)) + 1 --> AR(ARP)*0- (AR(ARP)) - (INDX) --> AR(ARP)*0+ (AR(ARP)) + (INDX) --> AR(ARP)*BR0- (AR(ARP)) - ‘(INDX) --> AR(ARP)*BR0+ (AR(ARP)) + ‘(INDX) --> AR(ARP)shift indică numărul de biţi cu care se deplasează un operand

spre stânga;shift1 0 16≤ ≤shiftshift2 0 15≤ ≤shiftnext ARP Număr care reprezintă adresa unui ARn şi care se

încadrează în câmpul de trei biţi ARP din registrul ST0,0 7≤ ≤nextARP ;

[ x ] Indică un câmp opţional la scrierea unei instrucţiuni înlimbaj de asamblare;

op Operand obţinut prin unul dintre modurile de adresarecorespunzătoare unei instrucţiuni;

aop Adresa unui operand;k Număr care reprezintă operandul în adresarea imediată

scurtă şi care în absenţa unor precizări se găseşte îndomeniul 0 255≤ ≤k ;

lk Număr care reprezintă operandul în adresarea imediatălungă fiind cuprins în domeniul − ≤ ≤32768 32767lk ;

#k, #lk Prefix şi constantă care reprezintă operandul în adresareaimediată scurtă respectiv lungă;

dst Destinaţie obţinută printr-unul dintre modurile de adresarecorespunzătoare unei instrucţiuni;

adst Adresa unei destinaţii;

Page 81: PNS curs-pag-1-81din100

81

pma Număr care reprezintă adresa unei locaţii din memoriaprogram fiind cuprins în domeniul 0 65535≤ ≤pma ;

cond Condiţie utilizată în instrucţiuni de salt, apel de subrutine şirevenire din subrutine condiţionate:EQ(ACC=0), NEQ(ACC ≠ 0), LT(ACC<0), LEQ(ACC ≤0),GT(ACC>0),GEQ(ACC ≥0),NC(C=0),C(C=1), NOV(OV=0),OV(OV=1), NTC(TC=0), TC(TC=1), BIO(BIO la nivel logiczero), UNC(necond.);

addr Număr care reprezintă dresa unei locaţii din memoria dedate fiind cuprins în domeniul 0 ≤pma ≤65535;

#addr Prefix şi constantă care reprezintă adresa unei locaţii dinmemoria de date pentru adresarea directă lungă;

PA Adresă port I/O, 0 65535≤ ≤PA ;ACCL Biţii 0 - 15 ai acumulatorului;ACCH Biţii 16 - 31 ai acumulatorului;


Recommended