Você está na página 1de 10

TMS320C54x

Familia de procesoare de semnal in virgula fixa TMS320C54x este orientata pe aplicatii portabile precum telefoane celulare, sisteme pentru comunicatii de date cordless si wireless, PDA, playere MP3, aparate foto digitale, telefonie VoIP, modemuri.

Caracteristici arhitecturale Ca si generatia C2000 procesoarele C54x au la baza arhitectura Harvard modificata, cu spatii de adrese separate pentru coduri si date. Procesoarele sunt disponibile cu diferite configuratii de memorie si dispozitive I/O (vezi Tabelul 1). Memoriile DARAM si SARAM pot fi configurate ca memorii de date sau ca memorii de date/program. Memoria DARAM este folosita pentru stocarea celor mai frecvent folosite date si coduri deoarece permite doua accesari per ciclu instructiune. Memoria ROM interna este folosita la pornirea programului (boot) pentru initializarea procesorului intr-o stare predeterminata si pentru pornirea aplicatiei. Aceste memorii sunt accesate cu patru seturi de magistrale interne: o magistrala pentru citirea codurilor, doua magistrale pentru citirea datelor si o magistrala pentru scrierea datelor. La frecventa tactului de 100 MHz procesoarele C54x pot executa 200 milioane de citiri de cuvinte pe secunda si pot scrie 100 milioane de cuvinte pe secunda. Comparativ cu familia C2000, procesoarele C54x folosesc doua porturi pentru accesarea memoriei de date la citire. Nucleul procesoarelor C54x consta din urmatoarele unitati functionale: (1) ALU de 40 biti, (2) 2 acumulatoare, ACCA si ACCB, de cite 40 biti, (3) un registru pentru deplasari binare (barell shifter), (4) un multiplicator de 17x17 biti si un sumator de 40 biti, (5) o unitate pentru comparare, selectie si stocare, (6) un codor pentru exponent si (7) unitati de generare a adreselor pentru programe (PAGEN) si date (DAGEN). Unitatea ALU

ALU de 40 de biti executa operatii aritmetice in complement fata de doi si operatii logice. ALU poate sa lucreze in regim saturat sau cu extensia semnului. De exemplu, in regimul de lucru cu extensia semnului numarul negativ de 16 biti, F000h, este inregistrat ca un numar de 32 biti de forma FFFFF000h (SXM=1) sau 0000F000h (SXM=0).

Acumulatoarele

Comparativ cu familia C2000 procesoarele C54x poseda cite doua acumulatoare de 40 de biti. Cei opt biti de garda asigura o protectie mai buna la depasirea scalei. Registrul pentru deplasare

Datele de la iesirea acumulatoarelor sau din memorie pot fi deplasate la stinga cu 0 pina la 31 de biti sau la dreapta cu 0 pina la 16 biti cu registrul barell shifter. Registrul barell shifter este folosit pentru scalarea semnalelor, pentru deplasarea aritmetica sau logica a acumulatorului, pentru extragerea bitilor, pentru operatii in precizie extinsa si pentru prevenirea depasirilor de scala. Unitatea de multiplicare si acumulare

Procesorul C54x are un multiplicator hardware de 17x17 biti si un sumator de 40 de biti care formeaza impreuna o unitate de multiplicare si acumulare. Procesorul foloseste instructiuni speciale pentru a executa o operatie complexa de multiplicare si acumulare intr-un singur ciclu (MAC, MACA, MACD MACP si MACSU). Iesirea sumatorului este trecuta printr-un circuit care detecteaza o valoare zero sau depasirea de scala in rezultat si realizeaza saturarea sau rotunjirea in functie de regimul de lucru programat. Unitatea de comparare, selectie si stocare

Procesorul contine o unitate de comparare, selectie si stocare folosita pentru implementarea eficinta a algoritmului Viterbi. Sunt comparate cuvintele de ordin inferior si superior din acumulator, este selectat cel mai mare dintre ele care este stocat in memoria de date. Unitatea de generare a adreselor

Unitatea PAGEN genereaza adresele pentru memoria de program, adrese care sunt stocate in PC. Cele mai noi versiuni ale procesoarelor C54x pot adresa pina la 8 Mcuvinte. Pentru adresarea unui spatiu mare de memorie este folosit un registru selector de pagini de 7 biti, XPC, care poate selecta pina la 128 pagini. PC poate adresa in limitele unui spatiu de 64 kcuvinte.

Unitatea DAGEN calculeaza adresele operanzilor folosind urmatoarele surse: registrele auxiliare AR0AR7, registrul pentru dimensiunea blocurilor, BK (folosit pentru a stabili dimensiunea unui buffer circular) si registru pointer pentru stiva, SP. Registrul auxiliar poate fi utilizat si pentru adresarea modulo in cazul unui buffer circular. Moduri de adresare Procesoarele C54x folosesc urmatoarele moduri de adresare: - Adresare indirecta. Ca pointer de adresa sunt folosite registrele auxiliare AR0AR7. Simbolul * in fata unui registru auxiliar indica registrul auxiliar curent si folosirea modului de adresare indirect. In plus fata de procesoarele C2000, familia C54x asigura suplimentar adresare cu pre-incrementare/decrementare si adresare circulara. - Adresare absoluta. Adresa este specificata explicit de instructiune printr-un cuvint suplimentar. Pentru optimizarea codului C54x foloseste doua moduri de adresare speciale: adresarea circulara si adresarea cu inversarea bitilor. Arhitectura C54x foloseste un singur buffer circular dimensiunea acestuia fiind indicata de registrul BK (Buffer size). Dimensiune buffer-ului este limitata doar de dimensiunea spatiului de memorie. De exemplu, pentru a defini un buffer de 32 de cuvinte, BK se incarca cu 32. Modul de folosire a unui buffer circular este urmatorul: STM RPT MAC #32,BK *AR2+0%,*AR3,A ;initialize circular buffer size

Semnul % arata ca AR2 este registrul pentru adresarea buffer-ului. Adresarea cu inversarea bitilor este o tehnica pentru reordonarea datelor intr-un buffer pentru algoritmii TFR. In cazul C54x operatia de inversare a bitilor poate fi executata incarcind AR0 cu jumatate din lungimea transformatei si adunind aceasta la un index, cu propagarea la dreapta a transportului. De exemplu, pentru a executa inversarea bitilor la un TFR in 8 puncte, AR0 este incarcat cu valoarea 4, iar AR2 este folosit pentru adresare, cu operandul *AR2+0B (B specifica adresarea cu inversarea bitilor).

Accesarea datelor de 32 biti C54x poseda si instructiuni care accepta operanzi de 32 de biti. Datele de 32 de biti sunt aliniate big endian, cu cel mai semnificativ cuvint la o adresa para. Setul de instructiuni C54x poseda urmatoarele tipuri de instructiuni: Operatii load/store Operatii aritmetice Operatii logice Instructiuni pentru controlul programului Instructiuni speciale
FIRS

C54x foloseste un numar de instructiuni specifice aplicatiilor: (filtru FIR simetric). Sintaxa instructiunii FIRS este urmatoarea: FIRS *AR3,*AR4,#coeff Efectul acestei instructiuni este echivalent cu cel al secventei urmatoare: MACA #coeff,B,B ;B=B+(AH*coeff) ||ADD *AR3+,*AR4+,A ;A=(*AR3+*AR4)<<16 Valoarea din AH este multiplicata cu o valoare din memoria de program, iar rezultatul este adunat la ACC B. In acelasi timp, instructiunea aduna operanzii din memoria de date accesati cu registrele AR3 si AR4, deplaseaza suma la stinga cu 16 biti si stocheaza rezultatul in ACC A. LMS

(Least Mean Square). Este o instructiune speciala folosita pentru ajustarea

coeficientilor unui filtru adaptiv pe baza calculului erorii medii patratice, denumita metoda gradientului stocastic. Sintaxa instructiunii este: LMS *AR3+,*AR4+ iar efectul este acelasi cu cel dat de secventa urmatoare: MAC *AR3+,*AR4+,B ;B=B+(*AR3+**AR4+) ||ADD *AR3,16,A ;A=(*AR3+A)<<16 RND A ;A=round(A) Prima instructiune executa operatia de multiplicare si acumulare specifica operatiei de filtrare FIR asupra primului coeficient si plaseaza rezultatul in ACC B. In acelasi timp, cel de al doilea coeficient este adunat la ACC A. Rezultatul este deplasat la stinga cu 16 biti si este

rotunjit inainte de a fi plasat in ACC A. In acest mod filtrarea si adaptarea coeficientilor este executata in ACC B si respectiv in ACC A.
SQDST

(patratul diferentei). Instructiunea calculeaza patratul diferentei dintre *AR3+,*AR4+ A,A A,B *AR3,*AR4,A ;A=AH*AH ;B=A+B ;A=((*AR3)-(*AR4))<<16

doi vectori. De exemplu: SQDST SQUR ADD ||SUB efectul fiind echivalent cu al secventei:

Configuratia sistemului Procesoarele C54x sunt folosite in multe aplicatii ieftine si cu consum redus. Aceste aplicatii necesita viteza mare de prelucrare, o mare varietate de memorii si de dispozitive periferice. Memoria La fel ca C2000, C54x au un spatiude memorie de 192 kcuvinte. Acest spatiu este impartit in trei blocuri: (1) 64 kcuvinte memoria pentru program si constante, (2) 64 kcuvinte memoria pentru date si (3) 64 kcuvinte spatiul de adrese pentru dispozitivele I/O. Unele procesoare C54x folosesc tehnica paginarii memoriei pentru extinderea memoriei de program. De exemplu procesorul C5402 are posibilitatea extinderii acesui spatiu pina la 1 Mcuvinte folosind 20 de linii de adresa. Spatiul este impartit in 16 pagini, iar o pagina din spatiul memoriei de program contine 64 Kcuvinte. Dispozitivele periferice interne Toate procesoarele au porturi I/O de uz general, un timmer, un generator de tact si un generator de stari de asteptare (wait) programabil. Perifericele pentru dispozitive specifice sunt: (1) un port de interfatare gazda (HPI Host-Port Interfacing) de 8 sau de 16 biti, (2) un port serial care poate fi o combinatie de porturi seriale sincrone, BSP (Buffered Serial Port), McBSP sau porturi seriale multiplexate in timp. HPI permite procesorului gazda sa citeasca sau sa scrie 1kcuvinte din memoria interna a procesorului C54x. Procesoarele C54x au patru interfete de tip port serial. Portul serial de baza este de tip serial sincron si lucreaza la o viteza egala cu cea a tactului master. BSP lucreaza fie ca port serial sincron fie ca port cu autobuffer-are. Portul serial sincron este asemanator cu portul serial de baza, dar foloseste si un buffer de 2 kcuvinte in

memoria DARAM interna. La C54x unitatea de autobuffer-are transfera 2kcuvinte de date intre port si memorie automat si semnalizeaza printr-o intrerupere cind buffer-ul este gol sau plin. McBSP este similar cu BSP dar are o functionalitate mai complexa. El accepta pina la 128 de canale si este destinat conectarii mai multor dispozitive rapide. McBSP poseda un numar de facilitati avansate: ceas separat pentru emisie si receptie, generator de tact flexibil, comunicatie full-duplex, registre multiple tip buffer, hardware de compresie/decompresie dupa legile A si . Procesoarele C54x au trei moduri de lucru cu consum redus configurabile prin software (IDLE1, IDLE2 si IDLE3). Atunci cind este activat oricare din cele 3 moduri este blocat tactul. In modul IDLE3 sunt blocate dispozitivele periferice incorporate, inclusiv oscilatorul si circuitul PLL.

TMS320C55x
Este un procesor de semnal in virgula fixa, compatibil software cu familia C54x, avind insa o viteza superioara de lucru si o densitate a codului superioara. Procesorul este destinat aplicatiilor care cer consum mic si inalta performanta de calcul cum sunt: telefoanele celulare, dispozitivele digitale audio portabile, aparatele foto digitale, protezele audio, etc. Diferentele hardware fata de familia C54x constau in: (1) doua unitati MAC, fiecare capabila sa execute o multiplicare de 17x17 biti, o adunare/scadere pe 40 de biti si optional o saturare intr-un singur ciclu, (2) patru acumulatoare de 40 de biti, (3) un ALU suplimentar de 16 biti, (4) patru noi registre de 16 biti, (5) stiva software cu salvarea/restaurarea automata a contextului la intreruperi. Procesoarele C55x accepta instructiuni cu lungime variabila (8/16/24/32/40/48 biti) pentru imbunatatirea denstitatii codului. Setul de instructiuni cuprinde sase tipuri de operatii: (1) transfer, (2) aritmetice, (3) manipulare a bitilor, (4) lucru cu registrele extinse, (5) logice, si (6) control a programului. Sintaxa de baza a unor instructiuni poate fi schimbata prin adaugarea unor prefixe. De exemplu, instructiunea MOV poate fi schimbata in AMOV astfel ca instructiunea poate fi executata in paralel cu o alta.

Procesoarele C55x pot executa doua operatii (instructiuni) in paralel in cadrul aceluiasi ciclu, daca acestea folosesc resurse diferite. Exista trei tipuri de paralelism: a) Paralelism intrinsec. Unele instructiuni pot realiza doua operatii diferite in paralel.Paralelismul intrinsec in cadrul unei singure instructiuni este indicat prin semnul :: pentru a separa cele doua operatii. De exemplu: MPY *AR0,*CDP,AC0 ::MPY *AR1,*CDP,AC1 Aceasta este o singura instructiune care foloseste unitatile MAC. Data adresata cu AR0 este inmultita cu coeficientul adresat cu CDP, iar produsul este salvat in AC0. In acelasi timp, data adresata cu AR1 este inmultita cu acelasi coeficient adresat cu CDP, iar produsul este salvat in AC1. b) Paralelism definit de utilizator. Programatorul sau compilatorul de C poate plasa doua instructiuni in paralel astfel incit cele doua instructiuni sunt executate intr-un singur ciclu. Semnul || este folosit pentru a delimita cele doua inastructiuni executate in paralel. De exemplu: MPYM *AR+,*CDP,AC1 ||XOR AR2,T1 In acest exemplu, prima instructiune executa inmultirea in unitatea de calcul, iar cea de a doua executa operatia logica in unitatea de adresare. c) Paralelism combinat. Acesta apare atunci cind una din doua instructiuni definite de utilizator au si paralelism intrinsec. De exemplu: MPY *AR0,*CDP,AC0 ::MPY *AR1,*CDP,AC0 ||RPT CSR Procesoarele C55x poseda citeva facilitati arhitecturale importante: o unitate MAC duala, facilitati pentru adresarea circulara si pentru executarea buclelor cu incarcare zero. Unitatea MAC este exploatata optim atunci cind algoritmul prezinta simetrii cum este cazul filtrelor FIR. In plus operatiile MAC duale pot fi aplicate pentru inmultirea vectorilor, inmultirea matricilor, filtrarea FIR pe bloc si pentru sistemele multicanal. Adresarea circulara poate fi utilizata cu orice mod de adresare indirecta. Fiecare registru auxiliar ARn poate fi configurat pentru a fi un pointer liniar sau circular.

10

Você também pode gostar