PM

23
Curs 1 1.Dezvoltarea unei aplicatii de la concept la implementare Pas 1 Simularea - Limbaje de nivel inalt traditionale (C, Pascal) -Limbaje matematice (Matlab) -Instrumente bazate pe diagrame bloc (Simulink) -Instrumente de manipulare si afisare de semnale -Instrumente de proiectare de filtre -Instrumente de control Pas 2 Analiza erorilor de virgula fixa Matlab, DSPwork Pas 3 Evaluarea de timp real completeaza simularea pentru aplicatii care au nevoie de comportarea de timp real (sinteza de voce) 2.Instrumente de dezvoltare DSP Sistemul clasic de dezvoltare software conceptia, evaluarea, proiectarea hardware si software, depanarea, prototipul si productia Asamblorul porneşte de la programe sursă scrise în limbaj de asamblare şi generează fişiere obiect în limbaj maşină. Fişierele sursă pot să conţină instrucţiuni, directive de asamblare şi macro directive. Directivele de asamblare controlează aspecte variate ale procesului de asamblare, ca: formatul listingului sursă, definirea simbolurilor şi modul de plasare a codului în secţiuni. Editorul de legături combină fişierele obiect într-un singur modul obiect executabil, realizează operaţii de relocare şi rezolvă referinţele externe. Bibliotecarul face posibilă gruparea mai multor fişiere într -un singur fişier bibliotecă. Compilatorul pentru limbaj de nivel înalt permite tratarea programelor sursă scrise în limbajul de nivel înalt corespunzător. După compilare se obţine, în general, un fişier sursă în limbaj de asamblare, care se asamblează şi se leagă aşa cum s-a descris mai sus. Limbajul C - cel mai popular limbaj de nivel înalt utilizat - standardul ANSI. Simulatorul software - simulează modurile de lucru ale procesorului digital de semnal. Instrument de dezvoltare şi verificare a programului - fără hardware-ul ţintă.

description

1.Dezvoltarea unei aplicatii

Transcript of PM

Curs 1

1.Dezvoltarea unei aplicatii – de la concept la implementare

Pas 1 – Simularea - Limbaje de nivel inalt traditionale (C, Pascal)

-Limbaje matematice (Matlab)

-Instrumente bazate pe diagrame bloc (Simulink)

-Instrumente de manipulare si afisare de semnale

-Instrumente de proiectare de filtre

-Instrumente de control

Pas 2 – Analiza erorilor de virgula fixa –Matlab, DSPwork

Pas 3 – Evaluarea de timp real – completeaza simularea pentru aplicatii care au nevoie de

comportarea de timp real (sinteza de voce)

2.Instrumente de dezvoltare DSP

Sistemul clasic de dezvoltare software – conceptia, evaluarea, proiectarea hardware si

software, depanarea, prototipul si productia

Asamblorul porneşte de la programe sursă scrise în limbaj de asamblare şi generează fişiere

obiect în limbaj maşină. Fişierele sursă pot să conţină instrucţiuni, directive de asamblare şi

macro directive. Directivele de asamblare controlează aspecte variate ale procesului de

asamblare, ca: formatul listingului sursă, definirea simbolurilor şi modul de plasare a codului

în secţiuni.

Editorul de legături combină fişierele obiect într-un singur modul obiect executabil,

realizează operaţii de relocare şi rezolvă referinţele externe.

Bibliotecarul face posibilă gruparea mai multor fişiere într-un singur fişier bibliotecă.

Compilatorul pentru limbaj de nivel înalt permite tratarea programelor sursă scrise în

limbajul de nivel înalt corespunzător. După compilare se obţine, în general, un fişier sursă în

limbaj de asamblare, care se asamblează şi se leagă aşa cum s-a descris mai sus. Limbajul C -

cel mai popular limbaj de nivel înalt utilizat - standardul ANSI.

Simulatorul software - simulează modurile de lucru ale procesorului digital de semnal.

Instrument de dezvoltare şi verificare a programului - fără hardware-ul ţintă.

Depanatorul (Debbuger) este o interfaţă software avansată executată pe calculatorul gazdă şi

lucrează cu suportul hardware de dezvoltare şi/sau de depanare existent (modul de

evaluare sau emulator). Depanatoarele permit controlul total al resurselor sistemului şi al

execuţiei programelor de către procesorul digital de semnal din sistem prin comenzi date de

către operator

Sistemul de dezvoltare pentru software conţine o placheta cu procesor numeric de semnal şi

un pachet de programe executabile pe gazdă (asamblor, editor de legături, biblioteci pentru

procesor, depanator etc.); acestea alcătuiesc un sistem ieftin de depanare a software-ului în

timp real. Poate fi utilizat, de asemenea, pentru simulare de mare viteză, cu cod executat pe

procesorul real şi fişiere de I/O care înlocuiesc perifericele finale.

Emulatorul este un instrument de depanare în timp real care se conectează la sistemul ţintă,

pe de o parte, şi la un sistem de dezvoltare, pe de altă parte, şi permite controlul execuţiei

programului şi a stării procesorului digital de semnal în condiţiile reale de funcţionare ale

sistemului ţintă.

3.Aplicatii ale DSP. Aplicatii clasice .

1.Aplicatii clasice < 1000MIPS: Telefonie celulara, Sinteza voce, Codare/decodare,

modulare, Egalizare , estimare canal, Auto: entertainment, securitate (ABS, ESP, etc)

2.Aplicatii avansate > 1000MIPS: Multimedia, Comunicatii avansate(Smartphone,

Statii de baza), Aparatura audio-video (Televizoare, STB = Set-Top Box).

4.Enumerati cateva aplicatii avansate DSP

-Multimedia (placa de achizitie multimedia)

-Comunicatii avansate (smartphone, statii de baza)

-Aparatura audio-video (televizoare, STB)

-Ex: decodor MPEG (placi receptie DVB-S, decodor VCD), ATM switch, supraveghere IP,

compresie imagine statica – camera foto, playere multimedia – MP3, decodere semnale TV

digital – DVB, procesoare ARM –completeaza DSP – hibrid dual-core.

Curs 2

1. Prelucrarea digitala a informatiei analogice. Sistem de prelucrare. Caracteristici ale

DSP.

Prelucrare primara – filtrare, conversie analog / numerica, corelatie, extragere zgomot

Prelucrare secundara: recunoastere forme, structuri, luare decizii

Componentele de tip DSP – implicate in ambele aspecte

Sistem de prelucrare de semnal digital:

Caracteristici ale procesarii numerice DSP:

-prelucrare in timp real Te/Tr>1

Te-perioada de esantionare

Tr –durata rezolvarii taskului pe un esantion

-caz particular FFT: prelucrare pe blocuri Te = TFFT/N Tr=Tcalcul/N

TFFT – interval intre blocuri N – nr de esantioane pe bloc

2.Ce este DSP? Cazuri de aplicare a DSP. Domenii temporale si in frecventa

DSP- prelucrarea (numerica de semnal) -

O metoda de a prelucra semnale (reprezentate de o secvenţa de numere) utilizând tehnici

matematice pentru a realiza transformări sau a extrage informaţii

Digital Signal ProcessING – concepte matematice si stiintifice

Digital Signal ProcessOR – un sistem sau circuit care realizeaza DSP

Forme de aplicare a DSP: - domeniul temporal (amplitudine in functie de timp) si domeniul

frecventa (amplitudine(frecventa))

-Procesoarele DSP opereaza in domeniul temporal – este posibila operarea in domeniul

frecventa prin simulare software

-Relatia intre domeniul timp si frecventa:

3.DSP – generalitati, caracteristici

-Facilitati – dotare cu ALU specializat: MAC (multiplicator-acumulator): shifter

- Aparut in anii ‘70 ca solutie de sistem pentru procesarea de semnal – radar, voce

- Relansat in anii `80 ca procesor single chip – Texas Instruments –numele de DSP

devine brand

- intre ASIC si microprocesoare de uz general (GPP)

-Prima generatie – prelucrari in virgula fixa

- arhitectura Harvard

- frecventa de tact 5-15 MHz

- reprezentanti TMS320C10

-A doua generatie – prelucrari in virgula fixa

- lungime cuvant – 16 biti

- lungime acumulator 24-32 biti

-frecventa de tact 20-50 MHz

-arhitectura Harvard

-memorie maxima adresabila: 64K cuvinte date, 4 cuvinte program

- reprezentanti: TMS320C20, TMS320C25, ADSSP-2101, DSP5000

-A treia generatie – aparitia de prelucrari in virgula mobil

- lungime cuvant 32-64 biti

- frecventa de tact 40-50MHz

- reprezentanti: TMS320C30, DSP96000(Moto)

-A patra generatie – toate caract procesoarelor din generatia a treia

- liniile de comunicatie interprocesor pentru sisteme multiprocesor

- facilitati pentru controlul proceselor paralele

- facilitati pentru interfata cu perifericele multimedia

- reprezentanti: TMS320C40, TMS320C80

-A cincea generatie – introducerea de arhitecturi de inalta performanta (VLIW)

- generalizarea arhitecurilor multiprocesor

-o programare simplificata prin liniarizarea externa a arhitecturii

multiprocesor

- viteze de functionare de peste 200MHz (peste 5000MIPS)

- reprezentanti: TMS320C6x, TriMedia 1xxx, StarCore SC140

-A sasea generatie –procesoare multiple si multi core (DSP+ARM)

- fammilii extinsse –procesoare media (multimedia)

4. DSP – definitii. Caracteristici comune si aplicatii

-DSP - “microprocesoare” destinate special prelucrării numerice de semnal - manipularea

matematică a semnalelor reprezentate digital

- DSP sunt structuri de prelucrare numerice , cu o arhitectură şi un set de instrucţiuni

optimizate şi adaptate prelucrării eficiente de semnal analogic reprezentat numeric.

- Explicatii: - prima definitie aplicabila initial DSP, astazi nu le mai putem considera doar

microprocesoare – arhitectura unora este mult mai complexa – nuclee de procesare duale,

triple

- Caracteristici comune ale DSP - posibilitatea de a realiza operaţii repetate de înmulţire-

acumulare (denumite în literatură operaţii MAC- multiply and accumulate) într-un singur

ciclu de instrucţiune

- posibilitatea de a realiza accesarea multiplă a memoriei într-un singur ciclu

de instrucţiune

- prezenţa uneia sau a mai multor unităţi dedicate de generare a adreselor

- instrucţiuni pentru o buclare ( salt, apelare subrutine) eficientă

- interfeţe seriale sau paralele, mecanisme de gestiune a întrărilor şi a

întreruperilor, mecanisme de gestiune a DMA – transfer eficient date

-Aplicatii DSP – variate- de la sisteme radar (militare) la electronica din bunuri de larg

consum

- aplicatii ieftin de mare serie: telefoane celulare, unitati de disc, modemuri

- prelucrarea de volume de date importante cum este in cazul: sonar, radar,

explorari seismice

- ultimii ani: aplicatii multimedia

5.Criterii de avaluare. Tipuri de procesoare DSP

A. Formatul aritmetic - unele utilizează aritmetica în virgulă fixă , unde numerele sunt

reprezentate ca întregi sau fracţii între –1.0 şi +1.0.

- alte procesoare utilizează aritmetica în virgulă mobilă , unde valorile sunt

reprezentate de o mantisă şi de un exponent conform relaţiei mantisa x 2^exponent .

Mantisa este în general o fracţie în intervalul –1.0 şi +1.0, in timp ce exponentul este

un întreg care reprezintă numărul de poziţii cu care trebuie deplasat stânga punctul

binar (termen definit analog cu punctul zecimal) pentru a obţine valoarea reprezentată.

Virgula fixa – ieftine, simple

Virgula mobila – mai flexibile, gama dinamica mai mare

Alternativa-block floating point (emulare virgula mobila pe procesoare in virgula fixa)

B. Lungimea cuvantului de date

- virgula fixa – 16 biti (Texas Instruments); 20-24 biti (Motorola); 32 biti (procesoare

avasate0

- virgula mobila – 32 biti (24-mantisa, 8 exponentul)-IEEE 754

C. Viteza de prelucrare

- Prima metoda de masurare – durata unui ciclu de instructiune; intervalul de timp

necesar ca sa se execute cea mai rapida intructiune a procesorului (masurata de

exemplu in us)

- Valoarea inversa – rata de executie a intructiunilor MIPS (mega instructiuni per

secunda)

- A doua metoda – compararea unei operatii de baza –MAC (Multiply and

accumulate)

- A treia metoda – teste benchmark – programe complexe (FFT)

- Procesoare virgula mobila – MFLOPS (Mega floating point operations per second)

D. Organizarea memoriei – memorii multiport

- Memorii separate – arhitecturi Harvard:

E. Consumul circuitului si managementul puterii absorbite

-

- Moduri “sleep” sau “idle” – adormirea proc. in cazul neutilizarii

- Divizoare de ceas programabile – reducerea frecventei

- Controlul perifericelor – dezactivarea acestora in cazul neutilizarii

F. Costul circuitului

- procesoare ieftine : aplicatii de masa , telefoane mobile….

- procesoare performante : aplicatii profesionale

Curs 3

1. Definirea procesoarelor media

- Unii consideră că este o categorie de marketing mai degrabă decât un termen tehnic

- Definitie: - un procesor multiplu single-chip sau VLIW

- Arhitecura SIMD extinsa

- Model de programare CPU like

- Scopul este prelucrarea audio/video in timp real

- MP- o combinatie a caracteristicilor microporcesoarelor (CPU), DSP si procesoarelor

VLIW (Very Long Instruction Word)

- MP- convergenta a mai multor tehnologii:

MP - Un procesor cu o arhitectura, periferice si

un set de instructiuni optimizate pentru

prelucrarea in timp real, simultana si eficienta, a

fluxurilor audio-video si a datelor de organizare

atasate acestora

2. Predecesori procesoare media

- TMS320C80 –1994 - MVP: Multimedia Video Processor

•Bazat pe cercetările University of - Washington Image Computing Laboratory

•1MP(CPU)+4 PP(VLIW DSP) +TC+ crossbar+ memorie segmentată redusă

•Utilizat pentru aplicaţii medicale, militare, MPEG2 encoder

•4 procesoare DSP virgulă fixă

•Un procesor RISC

•Controler video (VC), controler transfer (TC)

Curs 4

1. DSP de inalta performanta (caract principale). Tipri de arhitecturi

- Abatere de la arhitecura clasica a DSP

- Arhitecutir de tip MIMD

- Arhitecturi multiprocesor

- Model de programare de tip DSP

- Programare in limbaje de nivel inalt –C

- Optimizarea e facuta de compilator (cvasi-paralel)

Tipuri de arhitecturi

- Arhitectura acumulator

- Arhitectura Load-store

- Arhitectura memory-register

2. Accelerarea in procesoare paralele. Legea lui Amdahl

- Scopul arhiteturilor paralele in DSP/PM de inalta performanta este accelerarea operatiilor

- Accelerare = (Durata de executie seriala)/Durata executiei paralele – legea lui Amdahl

Sp=ti/tp;

tsec – durata op secventiale tpar-durata op paralele

ex: p=10, 10% secv, 90% paral -> Sp=5.26

3. Arhitectura unitati de baza ale C6000

4. Filtre FIR. Pasi de calcul

- ecuatie cu diferente finite (vector dot product): y(n)=2x(n)+3x(n-1)+4x(n-2)+5x(n-3)

- graful de semnal:

- produs intre vector sesantioane si vector coeficienti

- stocare intrare in bufferul circular, in aria de coef

- Fiecare celula de filtrare:

-

Extragere esantion

Extragere coeficient

Extragere operand

Inmultire termeni

Acumulare a rezultatului multiplexarii

- Calcului unui termen de filtrare intr-un ciclu

doua accese la memoria de date si unul la memoria de program

moduri de adresare autoincrement sau autodecrement

adresare modulo pentru linii de intarziere sau buffer circular

5. Etaje pipeline in C6000. Descriere

- Operatiile CPU

Fetch intruction from (on-chip) program memory

Decode intruction

Execute intruction including reading data values

- Suprapunere operatii pentru cresterea performantei

Functionare a CPU cu pipeline pentru a mari viteza ceasului raportat la o

implementare secventiala

Unitati functionale paralele separate

Interfete I/O care nu incarca CPU

- Extragere program (F). Ct in 4 faze

Generare fetch address(FG)

Trimitere adresa la memorie (FS)

Asteptare pentru data ready (FW)

Citire opcode (FR)

- Pachetul extras are 8 instructiuni de 32 biti

- Stadiul de decodare (D) –ct din doua faze

Dispecerizare instructiuni la unitatea functionala (DP)

Instructiunea decodata la unitatea functionala (DC)

Curs 5-6

1. Schema bloc generala a DSP C6000

2.Instructiuni de incarcare. Descriere. Sintaxa si versiune

- Folosite pentru incarcarea continutului memoriei in registre – LDB, LDH, LDW, LDDW

- Procesorul este adresabil pe bytes, ceea ce inseamna ca fiecare byte are o adresa unica (pe 32

biti)

- Sintaxa: LD *Rn,Rm - Rn –registru care contine adresa operandului care se incarca; Rm-

registrul destinatie

- Nr de bytes incarcati in registrul destinatie depinde de insructiunea aleasa:

LDB – loads one byte (8 biti)

LDH – jumatate de cuvant -16 biti

LDW – un cuvant – 32 biti

LDDW – dublu cuvant – 64 biti

LD singura nu exista

3.Instructiuni MVKH si MVKl

- Instructiunea MVKL permite incarcarea unei constante de 16 biti intr-un registru: MVKL .? a, A5

- O adresa completa e formata din 32 de biti

- Instructiunea nu incarca o valoare pe 16 biti pentru ca toate instructiunile sunt pe 32 biti

- MVKH – se utilizeaza pentru a incarca o valoare pe 16 biti: MVKH .? a,A5

- Pentru a incarca o adresa de 32 biti intr-un registru se poate fol:

MVKL a, A5 si MVKH a, A5

- Intotdeauna se foloseste MVKL apoi MVKH

4.Bucle conditionate. Registre utilizate - Bucla este creata utilizand instructiunea B

- Sintaxa pentru instructiune conditionata: [condition] Instruction Label

Ex: [B1] B loop

Conditia poate fi unul din registrele urmatoare: A1, A2, B0, B1, B2

Orice instructiune poate fi conditionata

- Conditia poate fi inversata prin adaugarea simbolului ! : [!condition] Instruction Label

Ex: [!B0] B loop; salt daca B0 = 0

[B0] B loop; salt daca B0!=0

5.Instructiuni de buclare(salt). Bucle relative si relative la registru

- toate instructiunile sunt codate in 32 biti, astfel eticheta va avea o gama dinamica mai mica

decat 32 biti pentru ca si instructiunea B trebuie codata

- B .S1 label - salt relativ, eticheta limitata la un offset +/- 220; prin specificarea unui

registru ca operand in loc de o eticheta, e posibil sa avem un salt absolut; permite o gama

dinamica de 232

- B .S2 register - salt absolut – functioneaza doar cu .S2!

6.Pointeri in C6000

- *R – pointerii sunt utlizati dar nemodificati; R-orice registru

- *+R[disp] +Pre-offset

- *-R[disp] -Pre-offset Pointerii sunt modificati inainte de a fi utilizati si apoi refacuti la valorile anterioare’

[disp] – specifica nr de elem in DW, W, H (16 biti) sau B(8 biti)

Disp = R sau orice constanta pe 5 biti; R-orice registru

- *++R[disp] Pre-increment

- *--R[disp] Pre-decrement Pointerii sunt modificati inainte de utilizare si nu sunt refacuti la valorile initiale

- *R++[disp] Post increment

- *R—[disp] Post-decrement Pointerii sunt modificati dupa utilizare si nu sunt refacuti la val anterioare

7.Ce sunt caile incrucisate? Date si adrese

- Sunt necesare pentru schimbul de operanzi intre cele doua parti (A si B sau 1 si 2) care sunt

necesare procesorului, pentru cresterea puterii de procesare

- O calea incrucisata leaga o parte a CPU cu cealalta

- Tipuri – cai incrucisate de date si cai incrucisate de adrese - Caile de date incrucisate pot fi considerate ca si registrelorsi cai incrucisate ale registrelor.

Aceste cai incrucisate permit operanzilor dintr-partedintr-o parte sa fie utilizati de cealalta

parte. Sunt doar doua cai incrucisate:

O cale care transporta date din partea B la partea A, 1X.

O cale care transporta date din partea A in partea B, 2X

Caile incrucisate de date se aplica doar unitatilor .L, .S si .M

Caile de date incrucisate sunt foarte utile, totusi sunt unele limitari in utilizarea lor:

Registrul trebuie sa fie in aceeasi parte cu unitatea

Registrele sursa - pina la o cale incrucisata pe pachet de executie pe parte

Pachet de executie : grup de instructiuni care se executa simultan

- Cai incrucisate de adrese – pointerul trebuie sa fie in aceeasi unitate

- Conditiile nu utilizeaza cai incrucisate: Daca un registru conditional vine din cealalta parte, nu

foloseste o cale incrucisata (date sau adrese)

8.Cai incrucisate. Sumar

- Date - Registrul destinatie de aceeasi parte cu unitatea

Registrele sursa – pina la o cale incrucisata pe pachet de partede executie pe parte

Utilizati “x” pentru a indica incrucisarea

- Adrese - Pointerul trebuie sa fie pe aceeasi parte cu unitatea

Datele pot fi transferate de/la orice parte

Acces incrucisat: ambele incrucisate sau nicunul

- Instructiunile conditionate nu utilizeaza caile incrucisate.

9.Tipuri de operanzi

- Operanzii pot fi - Constante pe 5-biti (sau 16-bit pt. MVKL si MVKH).

- Registre 32-biti

- Registre pe 40-biti

- Un registru pe 40-biti poate fi continut prin concatenarea a doua registre

Totusi, sunt 3 conditii care trebuie sa fie respectate :

Registrele trebuie sa fie din aceeasi parte

Primul registru trebuie sa fie par, al doilea impar

Registrele trebuie sa fie consecutive

10.Transferuri de date registru-registru

- Pentru a muta continutul unui registru (A sau B) in alt registru (B sau A) se utilizeaza

instructiunea move “MV” , ex.: MV A0, B0; MV B6, B7

- Pentru a muta continutul unui registru de control in alt registru (A sau B) sau viceversa se

utilizeaza instructiunea MVC , ex.: MVC IFR, A0; MVC A0, IRP

11. Schema bloc finala pentru C6x

12.Datelor impachetate (quad si dual) la C64x. Exemple de operatii posibile

- Procesare date impachetate - Extensii de instructiuni Quad 8-bit si Dual 16-bit

- Hardware suplimentar unitati functionale- Caracteristici hardware speciale

- Ortogonalitate extinsa - resurse mai flexibile

- Quad 8 bit – adunare, scadere, adunare saturata, inmultire, dot products (a+bj)*(c+dj), pack

operations, saturated pack operations, unpack operations, max, min

- Dual 16 bit - adunare, scadere, adunare saturata, inmultire, dot products (a+bj)*(c+dj),

pack operations, saturated pack operations, unpack operations, max, min, shiftare, valoarea

absoluta

13.Probleme de codare

- Utilitati functionale –cate pot realiza functia ADD?Numitile- 6: .L1, .L2, .D1, .D2, .S1, .S2

Care suporta incarcari /stocari in memorie? - .M .S .D .L - .D

- Harta memoriei – cate game externe exista la `C6201? – 4

- Cod condtionat – ce registre pot fi utilizate ca registre conditionale? A1, A2, B0, B1, B2

Ce instructiuni pot fi conditionate? – toate

- Performanta – care e ciclul de instructiune al `C6711? – CLKOUT1

Cum poate `C6711 sa execute 1200 MIPS? – 1200 MIPs = 8 instructiuni (units) x 150

MHz

14.Probleme de codare

- Mutare continut A0 ->A1: MV .L1 A0, A1; sau ADD .S1 A0,0, A1; sau MPY .M1, A0,

1, A1 (A0 poate fi doar pe 16 biti)

- Muta continutul CSR -> A1 MVC CSR, A1 - Sterge registrul A5

ZERO .S1 A5; sau SUB .L1 A5, A5, A5; sau MPY .M1 A5,0,A5 ; sau CLR .S1 A5,0,31,A5

sau MVK .S1 0,A5 sauXOR .L1 A5,A5,A5

- A2=A02+A1 MPY .M1 A0,A0,A2 ADD .L1 A2,A1,A2

- Daca (B1!=0) atunci B2=B5*B6 [B1] MPY .M2 B5,B6, B2 - A2 =A0*A1+10 MPY A0,A1,A2 ADD 10,A2,A2

- Incarcare constanta unsigned (19ABCh) in regisrul A6 mvk1 .s1 0x00019ABC, A6

mvkh .s1 0x00019ABC, A6

- Incarcare A7 cu continutul mem1 si post incrementarea pointerului selectat load_mem1: MVKL .S1 mem1, A6

MVKH .S1 mem1, A6

LDH .D1 *A6++, A7

Curs 7-8

1. Programarea DSP in C si lmbaj de asamblare. Eficienta acestora

- C si C++ -> Compilator + optimizator -> 80-100%

- Limbaj Asamblare –> Asamblor + Optimizator -> 90-100%

- Assamblor – > Asamblor optimizat manual ->100%

2. Ce este DSP/BIOS si componentele sale

- DSP(SYS)/BIOS este un sistem de operare care asigura:

interfata grafica pentru setarea statica a sistemului

Etapizarea (scheduling) de timp real

Analiza de timp real (RTA)

Schimb de date de timp real (RTDX) intre gazda (host) si target (sistem)

- DSP/BIOS era elaborat initial doar pentru procesoare DSP. Odata cu unificarea mediilor de

dezvoltare sub CCS4 acest concept s-a generalizat pentru mai multe procesoare Texas sub

numele SYS/BIOS

- Componente:

Utilizatorul scrie cod (C/asamblare) utilizand biblioteca DSP/BIOS

Utilizatorul poate utiliza instrumentele de configurare pentru setarea sistemului

Toate fisierele generate constituie un proiect

Proiectul este apoi compilat, asamblat si linkeditat de instrumentele de generare cod

pentru a genera un fisier executabil (*.out).

Exista unele pluginuri DSP/BIOS care pot fi folosite, pe moment, pentru testare, in

timp ce tinta functioneaza

Simulatorul/debuggerul si emulatorul pe calc. gazda sunt parti din Code Composer

Studio.

Gazda (host) si tinta comunica prin conexiunea JTAG (Joint Test Action Group)

(ssya002c.pdfssya002c.pdf))

3. Ce este un scheduler?

- Este concept cheie in multitaskingul computational si designul sistemelor operationale

multiproces si in designul sistemelor de operare in timp real. In sistemele de operare

moderne, there are typically many more processes running than there are CPUs available to

run them. Scheduling refers to the way processesprocesses are assigned to run on the

available CPUs. This assignment is carried out by software known as a scheduler.

- The sheduler is concerned mainly with:

CPU utilization - to keep the CPU as busy as possible.

Throughput - number of process that complete their execution per time unit.

Turnaround - amount of time to execute a particular process.

Waiting time - amount of time a process has been waiting in the ready queue.

Response time - amount of time it takes from when a request was submitted until the

first response is produced.

Fairness - Equal CPU time to each thread.

4. Nivele de prioritati in DSP/BIOS

- Prioritati HWI setate de hardware OISR pe intrerupere

- 14 nivele de prioritate SWI – mai multe la fiecare nivel

- 15 nivele de prioritate pentru TSK – TSK multiple la fiecare nivel

- Mai multe functii IDL – bucla continua, HWI declansate de intreruperea hardware, IDL

ruleaza ca thread de background

- SWI nu poate astepta, revine intotdeauna din functie

- TSK revine cand nu e necesar, altfel e o bucla infinita

5. Diferenta intre intreruperi software si taskuri

- Un task poate fi suspendat in timp de o intrerupere software (SWI) ruleaza pana la

terminare

- Taskurile ruleaza normal intr-o bucla infinita, iar in bucla taskull testeaza semaforul

- Un task se poate suspenda singur

6. Diferenta intre printf si LOG printf

- LOG_printf() – append a formatted message to a message log

- Functia printf() necesita >34000 cicluri

- LOG_printf()= fast printf

- Functionarea modulului LOG este rapida si se executa in perioade constante log_printf()

~32 cicli

7. Prezentarea sumara a RTDX

- RTDX – real Time Data Exchange

- RTDX permite comunicarea neinvaziva bidirectionala intre PC si DSP (in timpul IDL).

- Deoarece ruleaza in IDL (default), are o prioritate mai redusa decat codul de timp real.

- RTDX este utilizat de DSP/BIOS RTA, dar este disponibil direct programatorului DSP

(util pentru testare sau daca echipamentul final este rezident in PC).

- Viteza limitata de :

Tipul de conexiune JTAG (paralela, PCI, etc.).

Nivelul de activitate al DSP

- Code Composer Studio controleaza fluxul de date intre host (PC) si target

8. Sumar al DSP/BIOS

- usor de utilizat – economiseste timp

- dim redusa(<2Kw) – incape in spatii limitate de memorie

- executie rapida – ideala pt sisteme de timp real

- analiza de timp real – vizualizare parametrii sistem in cursul executiei fara breakpoints si

fara incarcarea executiei- „testare executie si executie testare”

- set de functii de bibl – se utiliz doar ce este necesar pt reducerea dimensiunii

- extensibilitate OS –Kernel complet care permite functii ulterioare

- In versiunea pentru CCS 3.1 DSP/BIOS nu suporta multiprocesarea.

- Sistemul de operare “VSPWorks” de la WindRiver Systems suporta multiprocesarea.

- Alte sisteme de operare posibile : Linux, QNX, Android, WinCEAndroid, WinCE

- Unele din aceste sisteme sunt posibile doar pentru arhitecturile hibride (care au si ARM)

Cursul 9

1. Filtre FIR. Ecuatia caracteristica. Structura (slides 4-5)

Coeficientii filtrului:

x[n]- reprezinta intrarea filtrului, -reprezinta coeficientii filtrului,

y[n] - reprezinta iesirea filtrului, N -este numarul de coeficienti (ordinul filtrului).

Structura:

2. Forma directa FIR (slide 27)

Forma directa pentru un filtru FIR:

3. Elementele codarii/decodarii JPEG (slides 43-44)

Pentru realizarea codarii JPEG , o imagine (color sau gri) este intai

subdivizata in blocuri de 8x8 pixeli.

Discrete Cosine Transform (DCT) este realizata pe fiecare bloc.

Aceasta genereaza 64 coeficienti care sunt apoi cuantizati pentru a le

reduce magnitudinea

Coeficientii sunt apoi reordonati intr-o arie unidimensionala intr-o

maniera in zigzag pentru codarea entropica.

Compresia este realizata in doi pasi; primul este in cursul cuantizarii iar

al doilea in cursul procesului de codare entropica.

Decodarea JPEG este procesul de codare inversat

4. Transformata DCT. Calculul 2D DCT folosind 1D DCT (slides 45- 48)

-Codecurile bazate pe DCT utilizeaza o versiune bidimensionala a transformatei.

-DCT 2-D si inversa sa (IDCT) a unui bloc de N x N sunt prezentate mai jos:

Nota: DCT este similar DFT deoarece descompune un semnal intr-o serie de functii cosinus.

-Una din proprietatile DCT 2-D este ca este separabila, adica poate fi separata intr-o pereche

de DCT 1-D - Pentru a obtine DCT 2-D a unui bloc este realizata intai DCT 1-D pe liniile

unui bloc apoi este realizata o DCT 1-D pe coloanele blocului ramas.

- La fel este si la IDCT.

DCT 2-D utilizand o preche de DCT 1-D

Curs 10

1.Periferice integrate in TMS320DM642 (slide 8)

Sase canale video de I/O

• Trei porturi video duale (configurabile software ca intrari/iesiri)

• Filtrare video, scalare orizontala

• Interfata directa a componentelor video

• Suporta BT656. formate digital TV (SDTV si HDTV), raw video I/O

• 8-biti 10-biti/16-biti/20-bit video pe port

• MPEG-2 transport stream interface cu suport VCXO McASP

• Multi-channel audio serial port SPDIF port interface

• Pina la 8 linii stereo (16 canale)66MHz PCI

• Conectare la retele IP

• Conectare la sasiu prin PCI

2.OMAP. Definiţie şi structura (slide 11)

OMAP=Open Multimedia Application Processor (Platform)

Un nou concept in dezvoltarea DSP

• Procesor dual core : DSP+ RISC (ARM)

• DSP - digital signal processing

• ARM – calcule generale si comunicare

Structura:

3.Dezvoltarea aplicatiilor cu Procesoare media TI (slide 24)

4.Elemente ale eXpress DSP (slide 25)

eXpressDSP include:

• Fundatie software, in timp real, scalabila: DSP/BIOS™ Real-Time OS kernel

• Standarde pentru interoperabilitate in aplicatii si reutilizare : TMS320 DSP Algorithm

Standard – xDAIS si XDM

• Cod gata de utilizare care este comun multor aplicatii : eXpressDSP Framework Software

5.Roluri specifice in domeniul PM/DSP (slide 35)

-Application Programmer (programator aplicatii)

Utilizeaza toate resursele de Linux/BIOS/SYS BIOS pentru constructia aplicatiilor

Scrierea de soft in interfata standard

- Driver Author (creator de drivere)

Creare sau actualizare drivere

Refacere kernel

-DSP Author (Autor de algoritmi DSP)

Creare de algoritmi DSP (Codecuri)

Curs 11

1. Nuclee de procesare media : tipuri (slide 3)

Criterii de ordonare:

1. Tipul de nucleu de procesare

• Bazate pe DSP : TMS320DM6xxx, Nexperia

• Bazate pe RISC : ST20, MIPS, ARM

2. Disponibilitate

• Proprii – proprietary : DM64x, Nexperia, ST20

• Deschise: ARM, MIPS

2. Periferice – video in si video out (slide 12-13)

Periferice: Video In • Intrare digitala video de la camera digitala sau camera analogica (printr-un decodor video). – Debit binar ridicat (81 MB/sec) pe fiecare canal. – Interfata 8-10 biti pentru convertoarele A/D pina la 81-MHz rata de esantionare. • Scalare in jos (downscaling) 2x – Port de receptie pentru transferul unidirectional de

la PNX1300-la-PNX1300 (sisteme multiprocesor)

Periferice: Enhanced Video out • Iesire digitala video : – PAL si NTSC – Clock de iesire 81MHz – Programabila la orice format video • Pina la 4095 linii x 4095 pixeli, limitata de debitul binar – Amestec video cu pina la 129 nivele – Codare cromatica (Chroma keying) – Iesire YUV – Scalare in sus (upscaling) 2x

– Mod de transfer mesaje

3 periferice – audio in si audio out (slide 14-15)

Audio In

AI se conecteaza la un convertor extern A/D pentru a permite: – Unul sau doua canale de intrare audio – Esantioane 8- sau 16-biti pe canal. – Rata de esantionare variabila. – Sursa de ceas de esantionare externa sau interna. – suporta scrierea autonoma a datelor audio in memorie prin bufferare dubla (DMA). – Suporta 8-bit mono si stereo sau 16-bit mono si stereo format de date standard PC . – Suporta formate de memorie little- si big-endian .

Periferice: Audio Output (AO) • AO se conecteaza la un convertor D/A pentru a permite: – Pina la 8 canale de iesire audio. – Esantioane 16-bit sau 32-bit pe canal. – Rata de esantionare programabile. – Sursa de ceas de esantionare externa sau interna.

– Citeste autonom datele audio procesate din memorie utilizand bufferarea dubla (DMA). – Suporta formate de memorie little- si big-endian . – Asigura capabilitate de control pentru codecuri integrate tip PC ca AD1847, CS4218 sau UAD1340. – Nu este suport pentru conectarea citorva D/As la o iesire

seriala

4 Nexperia- Variable Length Decoder (functii, capabilităţi) (slide 16)

VLD implementeaza decodarea Huffman pentru fluxuri MPEG-1 si MPEG-2

• Functioneaza independent in timpul decodarii la nivel slice

• Comenzi:

– Shiftare sir biti cu N biti

– Cautarea urmatorului cod de start

– Parcurgere N macroblocuri

– Reset

– Transfer rezultat in SDRAM

5 Instrumente si opţiuni de depanare pentru Nexperia - NDK (slide 32)

• NDK include :

– C/C++ compiler/linker

– Depanator la nivel sursa

– Simulator cu cicluri exacte

– Code profiler

Curs 12.

1. Arhitectura memoriei la ARM : tipuri si variatii (slide 12-13) Arhitectura memoriei

• Sunt cunoscute cele doua arhitecturi (Harvard si von Neumann) (curs 2-3) 0000h FFFFh Cod Data Cod Tabel date Data Procesor

Von Neumann- O singura cale (bus) pentru cod si date 0000h FFFFh Cod Cod Data Data Procesor Harvard – magistrale separate pentru cod si date

2. Moduri de adresare operanzi la ARM (slide 16) Moduri de adresare operanzi Adresare imediata • Operandul este dat in instructiune Adresare la registru • Operandul este stocat in registru Adresare directa • operandul este stocat in memorie , cu adresa data in instructiune Adresare Indirecta (Index)

• operandul este stocat in memorie , cu adresa data intr-un registru (adresa se aduna cu un offset dat in instructiune) Adresare implicita • Locatii implicite, ca stiva sau numaratorul de program Toate aceste moduri exista si la procesoarele din fam. C6000 !!!

3. Pipeline la ARM (slide 17-18)

Pipeline la ARM • Arhitectura pipeline a fost prezentata si la C6000

• Iata cum arata la ARM7 si ARM9

4 Detalii ale arhitecturii ARM (slide 35)

• Nucleu procesor 32 biti RISC (instructiuni pe 32-bit)

• 37 registre întregi pe 32 biti (16 disponibile)

• Pipeline (3 etaje)

• Cache ( dependent de aplicatie)

• Arhitectura Von Neumann (ARM7), Harvard (ARM9)

• Date pe 8 / 16 / 32 -bit

• 7 moduri de functionare (usr, fiq, irq, svc, abt, sys, und)

• Structura simpla -> viteza buna / consum de energie

5.Instrumente si modelul de dezvoltare pentru ST20cc (slides 43-44)

Instrumente de dezvoltare ST20 - flux dezvoltare:

-St20icc- compilator C

-St20link – linkeditor

-St20libr – bibliotecar

-debug – depanator

-Simulator

-Profiler

Modelul de dezvoltare pentru ST20cc

Sursa-> compilator-> executie/simulare/programare ROM

Cursul 13

1. Dezvoltarea de aplicatii in PM/DSP (slide 2) Dezvoltarea DSP/PM rapida cu EZ Tools C6EZRun: Portare cod ARM pe DSP (Programatorii ARM ) C6EZAccel:

Permite acces ARM la kernelul DSP (Dezvoltare Sistem) C6EZFlo: Graphical Software Development Instrumente pentru prototipuri rapide (Dezvoltare DS

2. Privire generala asupra EZflo (slide 6)

3. Avantaje C6EzRun (slide 13) Ce poate face un programator ARM cu DSP? Rulare de algoritmi matematici complecsi Echilibrare de operatii DSP, calcule in virgula fixa Eliberare de MIPS pentru ARM pentru a obtine caracteristici si performante de sistem noi Economie prin evitarea unui nou procesor ARM! Obtinerea unui raspuns real-time prin DSP fara sacrificarea avantajelor unui OS ca Linux sau Android 4. Desenarea unui sistem si generarea aplicatiei in C6EZFlo (slide 8-9)

1. 5. Aplicatia C6EZAccel