Pagina documente » Politehnica » Implementarea algoritmilor adaptivi RLS si LMS cu procesorul de semnal ADSP-21160

Despre lucrare

lucrare-licenta-implementarea-algoritmilor-adaptivi-rls-si-lms-cu-procesorul-de-semnal-adsp-21160
Aceasta lucrare poate fi descarcata doar daca ai statut PREMIUM si are scop consultativ. Pentru a descarca aceasta lucrare trebuie sa fii utilizator inregistrat.
lucrare-licenta-implementarea-algoritmilor-adaptivi-rls-si-lms-cu-procesorul-de-semnal-adsp-21160


Cuprins

Capitolul 1 - Procesorul ADSP-21160 1
1.1 Elementele de procesare 5
1.1.1. Unitatea Aritmetica Logica ALU 7
1.1.2. Multiplicatorul 8
1.1.3. Unitatea de deplasare 10
1.1.4. Setul de registre 13
1.1.5. Registrele alternative (secundare) 15
1.1.6. Elementul de procesare secundar Pey 16
1.2. Secventorul de program 19
1.2.1. Schema bloc a secventorului de program 20
1.2.2. Structura pipeline si memoria cache 22
1.3. Generatoarele de adrese DAG1 si DAG2 24
1.3.1. Setarea modurilor de lucru ale DAG 26
1.3.2. Modul de lucru cu buffer circular si modul de difuzare 27
1.3.3. Registrele DAG alternative (secundare) 28
1.3.4. Modul de adresare cu ordinea bitilor inversata 29
1.3.5. Operatiile DAG 30
1.4. Memoria 34
1.4.1. Accesul magistralelor PM, DM si IO la memorie 36
1.4.2. Accesarea memoriei 41
1.5. Procesorul I/O 43
1.5.1. Registrele procesorului I/O 46
1.5.2. Generarea adreselor DMA 49
1.6. Porturile procesorului ADSP-21160 51
1.6.1. Portul extern 52
1.6.2. Porturile de legatura 54
1.6.3. Porturile seriale 58
Capitolul 2 - Filtre adaptive 64
2.1. Aplicatii ale filtrelor adaptive 64
2.1.1. Identificarea sistemului 64
2.1.2. Egalizor adaptiv pentru transmisiunile de date 66
2.1.3. Compensarea ecoului pentru transmisiuni de date in
banda telefonica 66
2.1.4 Codarea liniara predictiva a semnalelor vocale 67
2.1.5. Sisteme de antene 68
2.2. Structuri ale filtrelor FIR 68
2.2.1. Structura transversala 68
2.2.2. Structura transversal-simetrica 69
2.2.3. Structura lattice 70
2.3. Algoritmi pentru filtre adaptive 72
2.3.1. Algoritmul LMS 72
2.3.2. Algoritmul RLS 74
2.3.2.1. Definirea problemei de filtrare cu metoda celor mai
mici patrate 75
2.3.2.2. Implementarea filtrelor transversale adaptive utilizand
algoritmul recursiv al celor mai mici patrate 78
2.3.2.3. Lema de inversiune a unei matrici 79
2.3.2.4. Concluzii 83
Capitolul 3 - Implementarea algoritmilor adaptivi 85
3.1. Organigramele generale 86
3.2. Listing-urile programelor 89
3.2.1. RLS.ASM 89
3.2.2. TESTAFA.ASM folosit pentru implementarea RLS 93
3.2.3. MACROS.H 95
3.2.4. NLMS.ASM 96
3.2.5. TESTAFA.ASM folosit pentru implementarea NLMS 98
3.2.6. LLMS.ASM 100
3.2.7. TESTAFA.ASM folosit pentru implementarea LLMS 102
Capitolul 4 - Mediul de dezvoltare VisualDSP 105
Capitolul 5 - Rezultatele simularilor 123
ANEXA - Dictionar 131
ANEXA - Bibliografie 133
Cuprins I
Cuprins II
Cuprins III

EXTRAS DIN DOCUMENT

?Capitolul 1 - Procesorul ADSP-21160 {p}?1. PROCESORUL ADSP-21160

ADSP-21160 este un procesor digital de semnal de inalta performanta, pe 32 de biti, folosit in aparate medicale, in comunicatii, in aplicatii militare, in aplicatii audio si de recunoastere a vocii, in echipamente de testare, in grafica 3D si in multe alte aplicatii. Acest procesor este construit pe nucleul ADSP-21000 si formeaza un sistem complet integrat pe un singur chip, avand in plus o memorie SRAM, porturi de intrare-iesire integrate si elemente suplimentare pentru procesarea SIMD (Single-Instruction-Multiple-Data).

Deoarece matematica in virgula mobila a procesoarelor digitale de semnal reduce nevoia de a scala si probabilitatea de aparitie a depasirilor, utilizarea unui procesor in virgula mobila poate usura algoritmul si implementarea software a acestuia. Limbajul de programare de nivel inalt si spatiile mari pentru adrese permit ca timpul alocat dezvoltarii sistemului sa fie folosit in vederea elaborarii algoritmilor si a procesarii semnalelor, lucru care reprezinta un avantaj considerabil daca se tine seama ca se elimina timpul alocat codarii in limbaj de asamblare sau tratarii erorilor. ADSP-21160 este un procesor ce face parte din familia de procesoare de semnal cu arhitectura SHARC (Super Harvard Arhitecture) si care dispune de toate aceste avantaje mentionate mai sus. Arhitectura SHARC imbina performantele inalte ale nucleului procesorului cu magistralele dedicate pentru program, date si intrari/iesiri (PM, DM, IO). In nucleu fiecare instructiune este executata intr-un singur ciclu. Magistralele si memoria cache pentru instructiuni ofera nucleului un flux de date rapid necesar pentru a mentine rata de executie ridicata.

In figura 1.1 este prezentata detaliat schema bloc a procesorului, fiind ilustrate urmatoarele caracteristici arhitecturale:

- Doua elemente de procesare (PEx si PEy), fiecare continand unitati de calcul pe 32 de biti standardizate IEEE multiplicator, ALU, registru de deplasare si setul de registre;

- Secventor de program cu memorie cache pentru instructiuni, timer de interval, doua generatoare de adrese de date (DAG1 si DAG2);

- Un bloc de memorie SRAM cu doua porturi;

- Port extern de interfata cu memoria externa, periferice, sisteme gazda sau sisteme multiprocesor;

- Procesor de Intrare/Iesire (IO) cu controler DMA integrat, porturi seriale si porturi de legatura punct la punct pentru comunicatii multiprocesor;

- JTAG port test de acces pentru emulari.

Figura 1.1 prezinta de asemenea si cele trei magistrale incluse in procesorul ADSP-21160: PM (Program Memory) magistrala de program, DM (Data Memory) magistrala de date si IO (Input/Output) magistrala pentru intrari/iesiri. PM ofera acces atat la date cat si la instructiuni. In timpul unui singur ciclu, aceste magistrale lasa procesorul sa acceseze doi operanzi (unul de la PM si altul de la DM), o instructiune (din cache) si sa efectueze un transfer DMA. Aceste magistrale se conecteaza la portul extern al procesorului care are rol de interfata cu memoria externa, cu un alt procesor gazda sau cu siteme multiprocesor de prcesoare ADSP-21160. Portul extern arbitreaza magistralele si furnizeaza semnale de control memoriei partajate globale si dispozitivelor I/O.

Figura 1.1 Schema bloc a procesorului de semnal ADSP-21160

Procesorul ADSP-21160 indeplineste cele cinci cerinte de baza ale procesoarelor digitale de semnal (DSP):

- Unitati aritmetice de calcul rapide si flexibile;

- Flux de date nerestrictionat de la si inspre unitatile de calcul;

- Precizie extinsa in unitatile de calcul;

- Doua generatoare de adrese cu suport de memorare circular;

- Secventiere de program eficienta.

Aritmetica rapida si flexibila. Familia de procesoare ADSP-21000 executa toate instructiunile intr-un singur ciclu. Ele ofera atat timpi mici pentru un ciclu cat si un set complet de operatii aritmetice. Procesorul digital de semnal este IEEE compatibil in virgula mobila si permite intreruperi pentru exceptiile aritmetice.

Flux de date nerestrictionat. Procesorul ADSP-21160 are o arhitectura SHARC combinata cu un set mare de registre de date. In fiecare ciclu procesorul de semnal poate citi sau scrie doi operanzi de la sau inspre setul de registre, poate furniza doi operanzi unitatii ALU, poate furniza doi operanzi multiplicatorului si poate receptiona trei rezultate de la ALU si multiplicator. Cuvintele de instructiuni de 48 de biti ale procesorului suporta transferuri de date paralele si operatii aritmetice in aceeasi instructiune.

Precizie extinsa la 40 de biti. Procesorul utilizeaza formate standard IEEE pe 32 de biti, formate intregi si fractionale pe 32 de biti (in complement fata de 2) dar si formate in virgula mobila cu precizie extinsa pe 40 de biti. Procesorul beneficiaza de aceasta precizie extinsa la nivelul unitatilor de calcul, limitind erorile de trunchiere intermediare.

Doua generatoare de adrese. Procesorul dispune de doua generatoare de adrese de date pentru adresarea indirecta. Operatiile de modul, inversie de bit si de difuziune sunt suportate fara nici un fel de restrictii in ceea ce priveste plasarea memoriei tampon de date (buffer).

Secventiere de program eficienta. Procesorul suporta initierea si iesirea din bucla intr-un singur ciclu. Buclele pot fi atat de tipul bucla-in-bucla (cu 6 nivele posibile hardware) cat si intreruptibile.

1.1 Elementele de procesare

Nucleul procesorului contine doua elemente de procesare (PEx si PEy). Fiecare element este compus dintr-un set de registre de date si trei unitati independente de calcul: o unitate ALU, un multiplicator si o unitate de deplasare. Pentru a acoperi o gama cat mai larga de necesitati de procesare, cele trei unitati de calcul proceseaza datele in trei formate posibile: pe 32 de biti in virgula fixa, pe 32 de biti in virgula mobila si pe 40 de biti in virgula mobila. Daca formatul pe 32 de biti in virgula fixa este formatul standard IEEE, cel pe 40 de biti cu precizie extinsa dispune de opt biti aditionali, cei mai putini importanti, Least Significant Bits (LSB), pentru o acuratete cat mai mare.

Elementul de procesare primar PEx proceseaza toate instructiunile de calcul chiar daca procesorul lucreaza in mod SISD (single-instruction single-data o intructiune - o data) sau in mod SIMD (single-istruction multiple-data o instructiune - mai multe date). Acest element se regaseste si in procesoarele mai vechi din familia din care face parte si ADSP-21160.

Elementul de procesare secundar PEy proceseaza instructiunile in acelasi ritm cu PEx, dar face lucrul acesta doar daca procesorul lucreaza in modul SIMD.

Unitatile de calcul din cele doua elemente se ocupa fiecare cu diferite tipuri de operatii. Unitatea ALU realizeaza operatii aritmetice si logice in virgula fixa sau mobila. Multiplicatorul realizeaza inmultiri in virgula mobila sau fixa si executa in virgula fixa operatii de inmultire/adunare si inmultire/scadere. Unitatea de deplasare realizeaza deplasari logice si aritmetice, stocari de date in campuri de date si operatii de extragere a acestora pe operanzi pe 32 de biti. Caile fluxurilor de date dintre unitatile de calcul sunt dispuse in paralel si sunt prezentate in figura 1.2:

Figura 1.2 Unitatile de calcul din elementul de procesare

1.1.1 Unitatea Aritmetica Logica - ALU

Instructiunile ALU in virgula fixa utilizeaza operanzi pe 32 de biti, iar rezultatele de iesire sunt tot pe 32 de biti. Instructiunile ALU in virgula mobila utilizeaza operanzi pe 32 de biti sau pe 40 de biti, iar rezultatele de iesire sunt tot pe 32 de biti si respectiv 40 de biti . Acestea includ:

- adunari, scaderi, medieri in virgula mobila;

- adunari, scaderi, medieri in virgula fixa;

- in virgula fixa: adunari cu depasire, scaderi cu imprumut, incrementari, decrementari;

- operatii logice: si, sau, si exclusiv, sau exclusiv;

- functii: valoare absoluta, minim, maxim, comparare;

- conversie de format;

- radacina patratica;

Instructiunile ALU au una sau doua intrari: X si Y. Aceste intrari (cunoscute si sub numele de operanzi) pot fi in oricare registru de date din setul de registre. Majoritatea operatiilor ALU intorc un singur rezultat; operatiile adunare/scadere intorc insa doua rezultate pe cand operatia de comparare nu intoarce nici un rezultat, fiind modificate numai unele fanioane (flags). Rezultatele provenite de la ALU pot fi stocate in oricare locatie din setul de registre.

Procesorul transfera operanzii de intrare din setul de registre in prima jumatate a unui ciclu iar rezultatele in cea de-a doua jumatate a ciclului. In acest fel, unitatea ALU poate citi si scrie aceeasi locatie a registrului intr-un singur ciclu. Daca operatia este in virgula fixa, intrarile sunt tratate ca operanzi pe 32 de biti in virgula fixa. Rezultatele in acest caz vor fi mereu valori in virgula fixa pe 32 de biti.

Operatiile ALU modifica sapte fanioane de stare in registrele specializate ASTATx si ASTATy si patru fanioane in registrele STKYx si STKYy, prin care se determina starile exceptionale (de depasire, rezultat negativ, tipul ultimei operatii etc.).