Poly-DSP-2009-10

Embed Size (px)

Citation preview

  • Traitement du signal

    sur processeurs DSP

    Rmi Mgret

    ENSEIRB 2009-10

    sur processeurs DSP

    1

  • Plan

    Gnralits

    Architecture des DSP Architecture des DSP

    Dveloppement pour un DSP

    Reprsentation numrique du signal

    Mise en uvre de filtres

    2

  • Gnralits surGnralits sur

    les processeurs DSP

    3

  • DSP: une introduction

    Quel est le contexte dutilisation du traitement numrique du signal (TNS) ?numrique du signal (TNS) ?

    De quelles solutions dispose-t-on pour effectuer ce travail ?

    Quelle est la spcificit dun processeur DSP (Digital Signal Processor) ?

    4

  • Chane de Traitement Numrique

    Signal originalGrandeur physique

    Capteur

    Memfsfs

    G

    Adaptation du

    signal dentre

    Gain + Dmodulation

    Signal TraitSignal analogique

    5

    Filtreanti-repliement

    EchantillonageEchantillonage

    CAN CNAFiltre delissage

    DSP

    PortsE/S

    QuantificationQuantification

    Reconstruction Reconstruction du signaldu signal

    Signal analogiqueSignal numriqueSignal numrique

  • Chane de Traitement Numrique (2)

    Memcalcul

    Signaux analogiques(RF, capteur physique, microphone)

    DSP

    PortsE/S

    AdapteurAnalogique /Numrique

    Dmodulation analogiquegain, chantillonnage,

    quantification

    Adapteur

    AdapteurNumrique /Analogique

    Adapteur

    Modulation analogiqueCNA, amplification

    Calculsnumriques

    6

    AdapteurNumrique / Numrique

    Transmission depuis un module numrique :coprocessing, acquisition (capteur CCD)

    Traduction de protocole

    AdapteurNumrique /Numrique

  • Le cahier des charges

    Traitement temps rel Latence maximale autorise entre larrive dune donne

    et la disponibilit du rsultat du calcul correspondant.et la disponibilit du rsultat du calcul correspondant.

    Dbits de donnes important Signaux numriques = quantit importante de donnes

    transmises squentiellement

    Charge de calcul importante Convolution, FFT Charge de calcul = Dbit Complexit du calcul Charge de calcul = Dbit Complexit du calcul

    Matrise de la prcision des calculs

    Traitements rptitifs

    7

  • Oprations classiques en TNS

    MAC : multiplication-accumulation acc acc + bi . xi acc acc + bi . xi Filtres rponse impulsionelle finie (RIF):

    =

    =1

    0

    )()()(

    P

    i

    inxibny

    8

    Filtres rponse impulsionelle infinie (RII):

    =

    =

    =1

    1

    1

    0

    )()()()()(

    Q

    j

    P

    i

    jnyjainxibny

  • Oprations classiques en TNS

    MAC Filtrage (convolution) Correlation Correlation Produit scalaire

    FFT Analyse spectrale

    DCT Compression dimages

    Compare Select and Store Compare Select and Store Algorithme de Viterbi (Com. num.)

    Gnration de formes dondes Communications numriques

    9

  • Applications des processeurs DSP

    60,0%

    80,0%source : Will Strauss, Forward Concepts,publi dans Programmable Logic 2007

    0,0%

    20,0%

    40,0%

    60,0%

    Wireless MultipurposeConsumer electronics

    Wireline Computer Automotive

    10

    72,5% 8,4% 8,2% 4,7% 3,3% 2,5%

    Parts de march vente DSP programmables (2006)

    Rmq: Les SoCs, et ASIC sont galement trs utiliss pour des applications similaires, mais ne sont pas comptabiliss ici.

  • Applications

    Communications Software Defined Radio Sans fil (cellulaires, tlvision

    Image / vido Compression/Codage

    Sans fil (cellulaires, tlvision numrique, radio numrique)

    Filaire (DSL, cable) Modem Cryptage

    Audio Mixage et dition

    Compression/Codage Composition Traitement

    Militaire Imagerie

    radar, sonar

    Cryptographie Mixage et dition Effets Suppression de bruit Annuleur decho

    Cryptographie Guidage de missiles Navigation

    11

  • Applications

    Biomdical Equipements de monitoring

    Signaux biophysiques

    Automatisation Commande de machines Contrle de moteurs Signaux biophysiques

    ElectroEncphaloGramme (EEG)

    ElectroCardioGramme (ECG) Radiographie

    Instrumentation Analyseurs de spectre

    Gnrations de fonctions

    Contrle de moteurs Robots Servomcanismes

    Electronique Automobile Contrle du moteur Assistance au freinage Aide la navigation Gnrations de fonctions

    Analyseurs de rgimes transitoires

    Aide la navigation Commandes vocales

    12

  • Constructeurs de processeurs DSP

    50%

    60%

    70%Chiffres 2007Source : Forward Concepts

    Wireless/DSP Market Bulletin, 4 Fevrier 2008

    0%

    10%

    20%

    30%

    40%

    50%

    65% 12% 7% 3% 13%

    Texas Instruments

    Freescale (Agere)Analog Devices

    Autres (NXP, NEC,

    13

    dspvillage.ti.comwww.freescale.comAgere -> LSI, Infineonwww.analog.com

    March de 7.8 Milliards de $ en 20072006-2007: -6.7%2007-2008:+7% (prvision)

    Parts de march vente DSP programmables (2007)

    Source: http://www.fwdconcepts.com/DSPBulletin_2408.pdf

  • Famille TMS320 Texas Instruments

    C2000 C5000 C6000

    Lowest Cost

    Control Systems Motor Control

    Storage

    Digital Ctrl Systems

    Efficiency

    Best MIPS perWatt / Dollar / Size Wireless phones

    Internet audio players

    Digital still cameras

    Modems

    Multi Channel and Multi Function App's

    Comm Infrastructure Wireless Base-stationsDSL

    Performance &Best Ease-of-Use

    virgule fixe 16 bits

    14

    Modems

    Telephony

    VoIP

    DSL Imaging Multi-media Servers Videovirgule fixe 16 bits

    virgule fixe et flottante, 32 bits

    Clients mobiles Infrastructure

  • 15

  • Famille DSP Analog Devices

    16

    TigerSHARC : virgule flottante 24 bits, hautes performances

    ADSPBFxx (Blackfin) : virgule fixe 16 bits, hautes performances

    SHARC : virgule fixe ou flottante 32 bits

    ADSP21xx : virgule fixe 16 bits

  • Traitement numrique vs. analogique

    En quoi le passage par le numrique est-il intressant,mme lorsque lentre et la sortie sont analogiques ?

    Signalanalogique

    Signalanalogique

    Circuit lectronique composants analogiques

    17

    DSPCAN CNASignalanalogique

    Signalanalogique

    Signalnumrique

    Signalnumrique

  • Traitement Numrique vs. Analogique

    Numrique AnalogiqueFixes et connus l'avance

    Dpend de la qualit des Prcision / RSB

    Fixes et connus l'avance

    Lis la taille des mots mmoire (16/24/32 bits)

    Dpend de la qualit des composants

    Sources de bruitEchantillonnage

    Quantification

    Bruit lectromagntique,

    temprature, humidit, vieillissement

    Reconfigurabilit Changer le logiciel

    Matriel

    Calibration ncessaire(Arrive rcente de puces reprogrammables (Arrive rcente de puces reprogrammables

    incluant des composants analogiques)

    Largeur de bande utilisable

    Limite par l'chantillonnagePeut travailler trs haute

    frquence

    18

  • Un exemple: la radio logicielle(Software Defined Radio : SDR)

    Complexit accrue des traitements sur le signal Modulation large bande, multi-utilisateurs (CDMA, OFDMA) et adaptative Egalisation, estimation de canal Codes correcteurs derreurs (Turbo-codes) Codes correcteurs derreurs (Turbo-codes)

    Multiplicit des protocoles de communication Reconfigurabilit logicielle du protocole utilis

    19Image: Agilent Technologie, http://www.soccentral.com/results.asp?CatID=488&EntryID=24811

    SDR Development Platform(www.lyrtech.com)

    TMS320DM6446 SoC ARM+DSPVirtex-4 SX35 FPGADAC/ADCRF Module

  • Plateformes matrielles pour le Plateformes matrielles pour le

    traitement numrique du signal

    20

  • Solutions matrielles pour le TNS

    Processeur Processeur dusage gnral Microcontrleur

    Architectureprocesseur Microcontrleur

    DSP (Digital Signal Processor) Multiprocesseurs

    GPU (Graphics Processing Unit) Architectures reconfigurables

    FPGA (Field-Programmable Gate Array)

    processeur

    FPGA (Field-Programmable Gate Array) Architectures figes

    ASSP (Application Specific Standard Product) ASIC (Application-Specific Integrated Circuit)

    21

    Architecturespcialise

  • Exemple d'un filtre RIFArchitecture ddie (FPGA / ASIC)

    x(n)

    p

    =

    =1

    0

    )()()(

    P

    i

    inxibny

    b(0) b(1) b(2) b(3) b(4) b(5)

    log2(p)

    22

    y(n)

    log2(p)

    Architecture systolique ddieTraitement fortement parallleEfficace pour le RIF, mais peu flexible

  • Exemple d'un filtre RIF Architecture processeur

    =

    =1

    0

    )()()(

    P

    i

    inxibny

    Mmoire

    E/S

    bx programmey

    CPU

    units de

    calcul

    registres

    23

    Architecture de type processeurTraitement squentielProgramme stock en mmoire : facile modifier

  • Microprocesseur dusage gnral(General Purpose Processor, GPP)

    Intel Pentium Motorola PowerPC, 68000 Digital Alpha Chip

    Nombreuses fonctionnalits pas toujours utiles Augmente le cot et la Digital Alpha Chip

    Sun SPARC PXA250 (RISC)

    Formats de donnes varis sur 32 ou 64 bits

    Adapts aux langages volus Bonnes performances en calcul

    numrique

    Augmente le cot et la consommation lectrique

    Gestion matrielle de la mmoire virtuelle Ncessaire pour lutilisation de

    systmes dexploitation avancs

    Fonctionnalits dynamiques qui compliquent la garantie temps rel Cache de donnes

    Bonnes performances en calcul numrique Instructions spcifiques (MMX,

    SSE)

    Tendance aux volutions multi-coeurs

    Cache de donnes

    24

  • Microcontrleur

    Motorola 68HC11 Intel 8751

    Peu adapt aux signaux numriques Intel 8751

    MicroChip PIC16/17 Cypress PsoC

    Faible cot Faible consommation

    lectrique

    Priphriques faible dbit Donnes sur 8 ou 16 bits

    Adapts aux tches de contrle Embarqu, temps rel Calculs logiques

    lectrique

    Mmoire limite Utile pour calculs peu

    complexes

    25

  • Processeur DSP

    Texas Instrument TMS320Cxxxx,

    Processeur Programme en mmoire Excution squentielle Freescale 56000, 96000

    Analog Devices ADSPxxxx, SHARC, Blackfin

    Architecture spcialise pour les traitements numriques

    Excution squentielle Jeu d'instruction spcialis

    Calculs numriques Addition, Multiplication Units de calcul spcialises

    (filtrage, FFT)

    Entre-sortie de donnes Grand dbitnumriques

    Cot, encombrement et consommation au plus juste

    Grand dbit Priphriques intgrs

    26

  • DSP et processeur dusage gnral

    Un processeur DSP est prfrable pour: Minimiser la taille

    Minimiser la consommation Minimiser la consommation

    Traitement temps-rel grand dbit

    Un processeur dusage gnral est prfrable pour: Disposer dune grande quantit de mmoire

    Dvelopper sous un systme dexploitation avanc

    Ncessit de mixer calcul numrique et autres tches Ncessit de mixer calcul numrique et autres tches

    27

  • Exemple : TMS320C6200 vs. Pentium

    Processor Pea k MIPS

    ISR la t ency

    Pow er Un i t Pr ice

    Area Volum e

    Pent ium III 1200

    2400 1.14 s 4.25 W $29 5.5 x 2.5 8.789 in 3

    C6200 200 MHz

    1600 0.09 s 1.94 W $25 1.3 x 1.3 0.118 in 3

    C6200 300 MHz

    2400 0.06 s $96 1.3 x 1.3 0.118 in 3

    28

    BDTImarks: Berkeley Design Technology Inc. DSP benchmark

    results (larger means better) http://www.bdti.com/bdtimark/results.htm

    Source: http://www.ece.utexas.edu/~bevans/courses/ee382c/lectures/processors.html

  • GPU (Graphics Processing Unit)

    Nombreuses units de calcul indpendantes en parallle Streaming Processor (SP) Texture Filtering Unit (TF)

    Programmation spcifique (CUDA, OpenCL)

    NVIDIA ATI

    Programmation spcifique (CUDA, OpenCL) Trs efficace si GPU disponible (calcul scientifique, traitement dimage) Risqu si contraintes de prennit et de certification (aronautique)

    SP TF

    29Nvidia GeForce 8800 Series GPU Block Diagram

  • FPGA (Field-Programmable Gate Array)

    Altera Xilinx

    Logique reconfigurable VHDL compil puis charg sur

    la puce Facile reconfigurer (mais

    pas en cours de fonctionnement)

    Produits rcents intgrentdes blocs DSP

    Produits rcents intgrentdes blocs DSP Units arithmtiques simples

    Adapt si calculs fortement paralllisables

    30

    Exemple darchitecture:Altera Stratix

  • ASSP (Application Specific Standard Product)

    Puce spcialise pour une application spcifique Peut tre programmable ou pas

    Dcodage analogique, dmultiplexage, dcryptage, dcodage MPEG2, interface vers sortie vido ou numrique, tltexte

    Exemple: Micronas MDE9500 Single-chip DigitalTV mixed-signal decoder Fonctionnalits ncessaires pour un poste de tl numrique

    31

  • ASIC (Application-Specific Integrated Circuit)

    Puce conue entirement pour l'application vise Parfaitement adapt

    Conception prend du temps Dveloppement d'un circuit

    Parfaitement adapt lapplication

    Meilleures performances Calcul et vitesse Consommation

    Passage par un fondeur Cots de dveloppement

    levs

    Dveloppement d'un circuit complet en VHDL

    Curs licenciables Intgration dIP

    curs DSP

    modules dE/S

    Permet la rutilisation de conceptions prouves

    levs Peu flexible

    conceptions prouves

    Personnalisation possible de larchitecture

    32

  • Compromis pour limplantationdalgorithmes de traitement du signal

    ASIC ASSP GPPDSPFPGA

    Matriel ddi Matriel gnriqueComplexit dans le logiciel

    Performance pour une application spcifiqueContraintes temps rel Flexibilit

    33

    Contraintes temps relContraintes de consommation

    FlexibilitDlai de mise sur le march

    Cot de dveloppement plus faible

  • Architecture dunArchitecture dun

    processeur DSP

    Accs mmoire et E/S Accs mmoire et E/S

    Units du CPU

    Pipelining

    34

  • Architecture gnrale dun processeur

    Processeur

    CPUUnit decontrle

    Units detraitement

    Bus internes

    CPU

    35

    Mmoireinterne

    Unit deCommunication

    Priphriqueset mmoire externes

  • Accs la mmoire

    36

  • Rappels : Bus

    Le CPU est le matre du bus Il est le seul crire sur les

    bus adresse et contrlePriphriqueCPU BUS

    bus adresse et contrle

    Le priphrique obtempre sur le bus donnes Lecture: il fournit la donne

    demande

    Ecriture : il rcupre la donne fournie par le CPU

    Haute impdance: il se

    PriphriqueCPU

    adresses

    donnes

    contrle

    37

    Haute impdance: il se dconnecte du bus

    Contrle : lire / crire / haute impdance

    Adresses : slection du priphriqueet dune donne en son sein

    Donnes : valeur de la donne changer

  • Etapes dune opration de calcul

    11

    33

    22

    (1) Charger une instruction (Fetch)

    (2) Dcoder linstruction (Decode)

    MmoireCPU33

    44

    55

    (2) Dcoder linstruction (Decode)

    (3) Charger les oprandes (Read)

    (4) Effectuer les calculs (Execute)

    (5) Stocker le rsultat

    38

  • Architecture Von Neuman

    Mmoire

    Un seul chemin d'accs la mmoire Architecture des processeurs dusage gnral (Pentium, 68000)

    CPU BUSMmoire

    Programme+ Donnes

    Architecture des processeurs dusage gnral (Pentium, 68000) Goulot d'tranglement pour l'accs la mmoire Pas de scurisation matrielle du programme

    Responsabilit dvolue au systme dexploitation (logiciel)

    39

  • Architecture Harvard

    Mmoire Programme

    Sparation des mmoires programme et donnes

    Moins de risque de corruption du programme

    Mmoire Donnes

    CPU

    Moins de risque de corruption du programme

    Meilleure utilisation du CPU Chargement du programme et des donnes en parallle

    40

  • Architecture Harvard modifie

    Mmoire ProgrammeMmoire Programme

    + Donnes

    Mmoire programme contient des donnes

    Possibilit de charger 2 donnes en un cycle

    CPU

    + Donnes

    Mmoire Donnes

    Utilisation classique en TNS Mmoire Programme+Donnes coefficients des filtres

    Mmoire Donnes chantillons dentre

    41

  • Accs mmoire multi-port

    Mmoire Programme+ Donnes

    Plusieurs bus de donnes Accs simultan plusieurs donnes Ncessite une mmoire multi-accs ou multi-blocs

    CPU

    + Donnes

    Mmoire Donnes

    Ncessite une mmoire multi-accs ou multi-blocs

    Exemple du TMS320C54xx : 1 bus programme (P) 2 bus de lecture des donnes (C et D) 1 bus dcriture des donnes (E)

    42

  • Exemple

    CPUMmoire Donnes

    b[0]b[N-1]x[0]x[N-1]

    Bus C

    x[0]x[N-1] Bus D

    Pour loprationy[n] b[n] * x[n]

    On souhaite rcuprer b[n] et x[n]

    Chaque bus est capable de transmettre 1 donne par cycle

    43

    Chaque bus est capable de transmettre 1 donne par cycle

    La limite est impose par les capacits de la mmoire:- Mmoire Simple Accs (SARAM) => 2 cycles - Mmoire Double Accs (DARAM) => 1 cycle- Mmoire externe => temps de latence dpend de la qualit de la mmoire

  • Multiplexage spatial(Mmoire multi-blocs)

    Dcoupage en blocs indpendants Accs simultan deux blocs distincts

    Exemple

    CPUb[0]b[N-1]

    Bus C

    Bus Dx[0]x[N-1]

    Exemple b[n] stocks dans le bloc 1, x[n] stocks dans le bloc 2

    Bus C

    Utilisation desressources

    Adresses@b[0] sur bus C@x[0] sur bus D

    b[0] et x[0]lus par le CPU

    Adresses@b[1] sur bus C@x[1] sur bus D

    b[1] et x[1]lus par le CPU

    Adresses@b[2] sur bus C@x[2] sur bus D

    44

    Bus D

    Bloc 1Bloc 2

    1 cycle

    b[0]

    x[0] x[1]

    b[1]

    temps

    Traitement simultan des requtes des deux bus

  • Multiplexage temporel(Mmoire multi-accs)

    Plusieurs accs la mme mmoire en un cycle Le CPU rcupre cependant une donne par cycle et par bus

    CPUMmoire Donnes

    b[0]b[N-1]x[0]x[N-1]

    Bus C

    Bus DDARAM fonctionne 2f0

    Frquence decycle f0

    Le CPU rcupre cependant une donne par cycle et par bus

    Bus C

    Utilisation desressources

    Adresses@b[0] sur bus C@x[0] sur bus D

    b[0] et x[0]lus par le CPU

    Adresses@b[1] sur bus C@x[1] sur bus D

    b[1] et x[1]lus par le CPU

    Adresses@b[2] sur bus C@x[2] sur bus D

    45

    Bus C

    Bus D

    Mmoire

    1 cycle

    b[0] x[0] x[1]b[1]temps

    Ordonnancement des requtes des deux bus

  • Mmoire interne sur les processeurs C54x

    Capacit en mmoire interne de diffrents modles C54x

    Dcoupage en blocs

    Plusieurs types de RAM incluse sur le chip Single access (SARAM) : un accs par cycle Dual access (DARAM) : deux accs par cycle Two-way shared : deux accs par cycle mme depuis l'extrieur

    DARAM dcoupe en blocs Accs simultan deux blocs de mmoire diffrents 2x2=4 accs par cycle en thorie (en ralit limit par le reste de l'architecture)

    46sources : "TMS320C54x DSP Functional Overview", SPRU307A, Texas Instrument"TMS320VC5416 DSK Reference Technical", Spectrum Digital

  • Cache d'instructions

    DSP

    Mmoire Programme+ Donnes

    cachedinstructions

    Cache = mmoire associative rapide Contient les dernires instructions excutes

    Utile en cas de boucle

    + Donnes

    Mmoire Donnes

    CPU

    Utile en cas de boucle Accs aux instructions sans accs la mmoire programme Libre le bus pour des donnes, ou pour un gain en consommation

    Cache pour les donnes Peu utilis sur DSP classiques De plus en plus utilis sur les DSP hautes-performances Peut poser des problmes pour la validation du temps rel

    47

  • Bus externedans une architecture Harvard

    DSPMmoire Programme

    + Donnes

    Transfert entre les bus

    MUX

    CPU

    + Donnes

    Mmoire Donnes

    48

    Transfert entre les bus internes et externe par multiplexage temporel

    Limitation du nombre de broches Rduction des cots Diminution des performances lors des accs au bus externe

  • Accs Direct la Mmoire(DMA : Direct Memory Access)

    Mouvements de donnes E/S direct entre

    priphrique et mmoire priphrique et mmoire interne

    Dplacements au sein de la mmoire interne

    Indpendant du CPU Configuration par le CPU

    une fois pour toutes

    CPU prvenu du droulement par interruptions

    DMA

    CPU Mmoire Interne

    interruptions

    configurationinterruptions Buffer plein (en rception)

    / Buffer vide (en mission)

    Buffer demi-plein

    49

    configuration

    E/S

    Priphriques(Port Srie, Mmoire externe)

  • DMA et buffer ping-pongpour le traitement par blocs

    CAN

    McBSP2 McBSP2

    CNA

    DSPCAN

    DRR DXRCNA

    DMA4 DMA5

    PINGIN

    PONG

    PINGOUT

    PONGTraitement

    PINGIN1

    PINGOUT

    1

    PONG

    PINGIN3

    PONG

    50

    PONGIN

    PONGOUT

    Traitement

    Source: Texas Instruments C5000 DSP Teaching Kit

    Buffers en mmoire Buffers en mmoire

    PONGIN2

    PONGOUT

    2

  • Chronogramme des changes de donnes

    temps

    Entre CAN => BSP x[0] x[N-1] x[4N] x[N] x[2N-1] x[2N] x[3N-1]

    BSP => PING IN

    Traitement PING

    BSP => PONG IN

    Traitement PONG

    Interruptionbuffer mi-plein

    Interruptionbuffer plein

    Interruptionbuffer mi-plein

    51

    PING OUT => BSP

    PONG OUT => BSP

    BSP => Sortie CNA y[0] y[N-1] y[2N] y[2N-1]

    Latence de 2 blocs

  • Architecture interne du CPU

    52

  • Schma de principe des changes

    SquenceurGnration Gnration

    Registres etUnits de

    CPU pilotage

    addr

    datactrl

    Squenceur

    Bus

    programme

    Gnrationadresses P

    Gnrationadresses D

    Units decalcul

    53

    addr

    datactrl

    programme

    Bus

    donnes

    Mmoire P Mmoire D priphriques

  • Dtail des units

    Squenceur Dcodage des instructions Pilotage les autres units Pilotage les autres units

    Unit de gnration dadresse programme Compteur de programme (PC) Gestion matrielle des boucles

    Unit de gnration dadresses donnes Adressage indirect efficace (*p++) Adressage circulaire, bit-reverse Adressage circulaire, bit-reverse

    Units de traitement Effectuent les calculs Registres pour rsultats intermdiaires

    54

  • Fetch (lecture instruction)

    SquenceurGnration Gnration Units de

    addr

    datactrl

    Squenceur

    Bus

    programme

    Gnrationadresses P

    Gnrationadresses D

    Units decalcul

    PCInstruction

    55

    addr

    datactrl

    programme

    Bus

    donnes

    Mmoire P Mmoire D

  • Read/Write (lecture/criture donne)

    SquenceurGnration Gnration Units de

    SquenceurGnrationadresses P

    Gnrationadresses D

    Units decalcul

    addr

    datactrl

    Bus

    programme

    ARi Donne

    56

    Mmoire P Mmoire D

    addr

    datactrl

    programme

    Bus

    donnes

  • Diagramme bloc du TMS320C5416

    D(15-0)

    Program/Data RAM128K Words

    Program/Data ROM16K Words

    Mmoireinterne

    JTAG Test/EmulationControl

    Bus externe

    Muxed GP I/O

    A(23-0)

    Program/Data Buses

    Timer

    Ch 0

    Ch 1

    Ch 2

    Ch 3

    Ch 4

    Ch 5

    DMA

    8/16-bit Host PortInterface (HPI)

    P

    e

    r

    i

    p

    h

    e

    r

    a

    l

    B

    u

    s

    RND, SAT

    17 x 17 MPY

    40-Bit Adder

    MAC

    Shifter

    40-Bit Barrel(-16, 31)

    EXP Encoder

    40-Bit ALUCMPS Operator

    (VITERBI)

    ALU

    Accumulators

    40-Bit ACC A

    40-Bit ACC B

    Multichannel BufferedSerial Port (McBSP)

    Multichannel BufferedSerial Port (McBSP)

    Units decalcul

    ControlM

    U

    X

    57

    Ch 540-Bit ACC B

    8 Auxiliary Registers

    2 Addressing Units

    Addressing UnitMultichannel BufferedSerial Port (McBSP)

    PLL Clock Generator

    S/W WaitstateGeneratorPower Management

    Gnrationdadresses

    EntresSorties

    CPU

  • Structure interne du TMS320C54x

    58

    Source : Texas InstrumentsTMS320C54x DSPReference SetVol 1 : CPU and Peripherals

  • Unit de controle

    Gnrationd'adressesprogramme

    Gnrationd'adressesdonnes

    Zero overhead looping Adressage indirect :Pr- et post-incrmentation

    automatique

    Bus Pprogramme

    Bus C / Dlecture

    59

    lecturedonnes

    Bus Ecrituredonnes

    4 bus : Accs simultan 1 instruction + 2 oprandes + 1 criture

  • ALU

    Shifter

    Viterbi

    Registres

    60

    MACViterbi

    Calcul MAC en un cycle Multiplication par 2k en un cycle

  • Architectures des units de traitement

    Architecture accumulateur

    Couplage accs mmoire et calcul Accs mmoire et calcul dcoupls

    Architecture Load/Store

    Architecture registres et mmoire

    ACC

    RAMR0

    RAMR1

    R2

    R3registres et mmoire

    61

    R0

    RAMR1

    R2

    R3

    R3

  • Calcul dun filtre RIF en N+2 cycles

    ( ) ( )

    =

    =1

    0

    )(N

    i

    inxibnyGestion matrielle des boucles :Unit de gnration dadresses programme

    A=0;

    for (i=0; i 15;Unit de gnration dadresses donnes

    STM #X, AR3STM #Y, AR4

    RPTZ A, #N-1 (x1)MAC *AR2+,*AR3+, A (xN)

    STH A, *AR4 (x1)

    Equivalent ASMCode C

  • Boucles matrielles / Zero overhead looping

    Rptition dune Instruction (N) fois

    RPTZ A, #54 ;A 0 et RC 54

    RC N - 1

    Instructions RPT et RPTZ

    Rptition dun Bloc dInstructions (N) fois

    BRC N - 1

    RPTZ A, #54 ;A 0 et RC 54

    MAC *AR2+, *AR3+, A ;La valeur pointe par ;AR2 est additionne la ;valeur pointe par AR3, ;55 fois

    STM #54, BRC ;Rptition 55 fois

    RPTB fin-1 ;RSA charg avec PC+2;REA charg avec endblk-1

    63

    RSA Premire Adresse

    REA Dernire Adresse

    Instructions RPTB et RPTBD

    ;REA charg avec endblk-1

    MPY *AR2+0%, A

    LMS *AR3, *AR2

    ST A, *AR3+

    fin :

    STH A, *AR3

    RSA

    REA

  • Utilisation de ladressage indirect

    ; A accumulateur; X=@X[0], Y=@Y[0]

    long A;int X[100],Y[100];int *px, *py;

    Produit scalaire entre deux vecteur

    LD #X, AR2LD #Y, AR3

    RPTZ A, #99 MAC *AR2+, *AR3+, A

    int *px, *py;

    px=X;py=Y;A=0;for (i=0; i

  • Adressage indirect bit-reverse

    Ordre des donnes pour la FFT

    x(0)

    x(1)

    x(2)

    x(3)

    x(4)

    x(5)

    65

    Ordrebit-reverse

    Ordrenaturel

    Implmentation rcursive de la FFT

    X(k) = TFD( x(n) )Ordrenaturel

    x(6)

    x(7)

    Rorganisation des donnes

  • Unit dadressage indirect(Gnration dadresses donnes)

    Registres d'adressage Units de calcul spcialises

    Ecriture sur les bus d'adresse des bus C, D et E

    66

  • Optimisation de la part du compilateur C

    813D toto813D PSHM 11h Sauvegarde AR1 (save-on-entry)813E FRAME -1813F SSBX SXM Manipulation de nombres signs8140 LD #100h,0,A A

  • Pipelining

    68

  • Pipelining

    Instructions segmentes en tages

    Excution entrelace de plusieurs instructions

    Exemple du TMS320C54xx :pipeline 6 tages Prefetch (P)

    Incrmentation du PCinstructions Chacune une tage diffrent

    Augmentation de la frquence d'horloge Etages plus simples donc plus

    rapides

    Gr par le squenceur

    Incrmentation du PC(Program Counter)

    Fetch (F) Lecture de linstruction en

    mmoire

    Decode (D) Dcodage de linstruction

    Access (A) Calcul des adresses des

    oprandesoprandes

    Read (R) Lecture des oprandes en

    mmoire Calcul de ladresse du rsultat

    Execute (X) Excution du calcul Ecriture en mmoire

    69

  • Squentiel vs pipeline

    t1 t2 t3 t4 t5 t6 t7 t8

    Instruction Instruction 1 Instruction 2

    Fetch F1 F2

    -

    -

    MemP

    D1

    F1

    t1 t2 t3 t4 t5 t6 t7 t8

    Fetch F1 F2 F3 F4 F5

    Fetch F1 F2

    Decode D1 D2

    Read R1 R2

    Execute X1 X2

    Excution squentielle

    F4 MemPF5

    -

    -

    -

    MemD

    MemD

    C

    P

    U

    D1

    R1

    X1

    Fetch F1 F2 F3 F4 F5

    Decode D1 D2 D3 D4 D5

    Read R1 R2 R3 R4 R5

    Execute X1 X2 X3 X4 X5

    70

    Amorage du pipeline

    Excution avec pipeline : entrelacement des instructions

    D3

    R2

    X1

    MemD

    MemD

    C

    P

    U

    D4

    R3

    X2

  • Retards dans le pipeline

    Le pipeline atteint son plein rendement une fois quil est amorc

    Une retard peut se produire Une retard peut se produire en cas de rupture de squence (vidange du pipeline)

    branchement mal prdit

    appel de sous-programme

    interruption

    sil existe un conflit de ressources (retard ponctuel, bulle sil existe un conflit de ressources (retard ponctuel, bulle dans le pipeline) accs la mmoire

    utilisation des bus

    71

  • Exemple de rupture de squence

    Code excuter :1: Instr12: Si B==1 Alors GOTO 10:3: Instr3

    10: Instr1011: Instr11

    t1 t2 t3 t4 t5 t6 t7 t8

    F F1 F2 F3 F4 F5 F10 F11 F12

    3: Instr34: Instr45: Instr56: Instr6

    t1 t2 t3 t4 t5 t6 t7 t8

    F F1 F2 F3 F4 F5 F6

    Si prdiction incorrecte (B=1) Si prdiction correcte (B1)

    11: Instr1112: Instr12

    Etat du pipeline avec prdiction que B1 :

    72

    F

    D D1 D2 D3 D4 ! D10 D11

    R R1 R2 R3 ! ! R10

    X X1 X2 ! ! !

    F

    D D1 D2 D3 D4 D5 D6

    R R1 R2 R3 R4 R5 R6

    X X1 X2 X3 X4 X5

    Vidange du pipeline:Perte de 3 cycles

    Evaluation du prdicat (B==1)=> rupture de squence

    Evaluation du prdicat (B==1)=> pas de rupture

  • Exemple de conflit d'accs mmoire

    Programmes et Donnes dans la mme mmoire 1 accs par cycle

    t1 t2 t3 t4 t5 t6 t7 t8

    Conflit pour laccs mmoire entre Fetch et Read

    Les lectures de donnes R1/R2 empchent les chargements d'instruction F3/F4

    Rductions des performances d'au moins 50%

    Fetch F1 F2 conflit conflit F3 F4 ! !

    Decode D1 D2 ! ! D3 D4 !

    Read R1 R2 ! ! R3 R4

    Execute X1 X2 ! ! X3

    88

    Rductions des performances d'au moins 50%

    Problme rgl si

    Mmoire multi-accs

    Programmes et Donnes dans des mmoires diffrentes (ou multi-bloc)

  • Effets du pipeline lors du dbogage

    Code excuter :1: A=12: B=1

    Watch WindowA 1B 1C 1

    La flche indique la position du PCPlusieurs cycles sont ncessaires 2: B=1

    3: C=1 NOP 10: A=211: B=212: C=213: D=214: E=2

    C 1

    Watch WindowA 1 ???B 1C 1

    Watch WindowA 2 !!!

    t1 t2 t3 t4 t5 t6 t7 t8

    F F10 F11 F12 F13 F14

    Plusieurs cycles sont ncessaires avant que la variable soit modifie :Cela nintervient qu ltape X (excution)

    74

    A 2 !!!B 1C 1

    D D10 D11 D12 D13 D14

    R R10 R11 R12 R13 R14

    X A=2 B=2 C=2 D=2 E=2Watch WindowA 2B 2C 1

  • Rsum caractristiques des DSP

    Cblage des oprations les plus critiques Units de calculs spcialises

    Opration MAC cable

    Modes dadressages spcialiss Accs en mmoire selon des schma prdfinis

    Boucle matrielle Pas de perte de temps pour les instructions rptes

    Gestion des entres/sorties intgre Gestion des entres/sorties intgre Mmoire, DMA, timers Interfaces srie / parallle Interruptions faible latence

    75

  • Rsum caractristiques des DSP (2)

    Augmentation du paralllisme Calculs

    Units de calcul en parallle Units de calcul en parallle

    Mmoire accs multiples Lecture/criture de plusieurs donnes simultanment

    Augmentation de la frquence dhorloge Pipelining

    Dcoupage des instructions de faon les excuter intervalles Dcoupage des instructions de faon les excuter intervalles plus rapprochs

    76

  • Mesures des performances

    MFLOPSMillion FloatingPoint Operation Per Second

    Mesure le nombre doprations

    arithmtiques virgule flottante que le

    DSP virgule flottante peut raliser

    en une secondeen une seconde

    MOPSMillion Operation

    Per Second

    Mesure le nombre total doprations

    (calcul, accs DMA, transferts, etc.) que

    le DSP peut raliser en une seconde

    MIPSMillion Instructions

    Per Second

    Mesure le nombre de codes machine

    (instructions) que le DSP peut raliser

    en une seconde

    MMACSMillion of MAC Mesure le nombre doprations MAC

    (Multiply+Accumulate) que le DSP peut

    77

    MBPSMega-BytesPer Second

    Mesure la bande passante dun bus

    particulier ou dun dispositif dE/S

    MMACSper Second

    (Multiply+Accumulate) que le DSP peut

    raliser en une seconde

  • Performances pour une application (benchmarking)

    Pour avoir une ide des performances concrtes des DSP, seul reste le benchmarking

    Benchmarks effectus par des socits de conseil telles que Berkeley Design Technology Inc. (www.bdti.com) Berkeley Design Technology Inc. (www.bdti.com) Embedded Microproc. Benchmark Consortium (www.eembc.org)

    Spcifications gnrales des benchmarks: SPEC95: couvre plusieurs domaines tels que les vocodeurs, les

    modems, les applications multimdia

    Algorithme Standard

    78

    de Traitement du Signal

    Temps dexcutionConsommation lectrique

  • Les volutions rcentes dans

    SIMD

    Les volutions rcentes dans

    larchitecture des DSP

    SIMD

    MIMD / VLIW

    Puces multi-curs

    79

  • Perspective historique

    1970 1971: Intel 40041972: Intel 80081974: 1er microcontrleur : TMS1000

    1er ordinateur personnel (8008)

    1980

    1990

    1er ordinateur personnel (8008)1979: 1er DSP single-chip : Bell Labs Mac 4

    Intel 80861980: 1er DSP autonome : NEC PD77101981: IBM PC (8088)1983: 1er succs commercial pour un DSP : TMS320C101986: MIPS -> R2000, premier microprocesseur RISC commercial1989: Intel 486 (Utilisation dun pipeline)1993: Intel Pentium, PowerPC 6011996: 1er DSP VLIW : TMS320C62xx

    80

    2000

    1996: 1er DSP VLIW : TMS320C62xx1997: Jeux dinstruction MMX, 3DNow!, Altivec1999: Pentium III (Jeu dinstruction SSE)2000: Pentium 42004: Jeu dinstruction SSE32005: Cell processor2006: Pentium Core Duo2007: TMS320DM6467 (SoC DSP+ARM Traitement Vido)

  • Historique des DSP

    1e gnration 1979 Architecture Harvard

    4e gnration 1992 Image et vido Processeurs faible Architecture Harvard

    Multiplieur cabl

    2e gnration 1985 Paralllisme Bus multiples Mmoire sur la puce

    3e gnration 1988

    Processeurs faible consommation

    5e gnration 1996 SIMD VLIW

    Plus rcemment SoC DSP

    3e gnration 1988 Virgule flottante

    Homognes (Multi-DSP) Hybrides (RISC+DSP)

    Co-design hardware-software

    81

  • Limites des architectures conventionnelles

    Processeur DSP conventionnel = Harvard + Cblage des oprations critiques

    Performances bornes Limite physique laugmentation des frquences dhorloge

    Architecture trs spcialise Jeux dinstructions CISC irrguliers Peu de portabilit Inefficacit des optimisation automatiques du compilateur Inefficacit des optimisation automatiques du compilateur Loptimisation ncessite du savoir-faire

    Peu de paralllisme ou alors trs limit Exemple: MACD = ADD + MPY + MOV

    82

  • Vers plus de paralllisme

    SISD = Single Instruction, Single Data SIMD = Single Instruction, Multiple Data SIMD = Single Instruction, Multiple Data MIMD = Multiple Instruction, Multiple Data

    A1 B1 A2 B2

    Instruction 1ADD

    Donnes 1 Donnes 2

    Instruction 2MUL

    MIMD

    InstructionADD

    Donnes 1 Donnes 2

    SIMD

    InstructionADD

    Donnes 1

    SISD

    83

    ALU1 ALU2

    A1 B1 A2

    R1 = A1 + B1

    B2

    R2 = A2 B2

    ALU1 ALU2

    A1 B1 A2

    R1 = A1 + B1

    B2

    R2 = A2 + B2

    ALU1

    A B

    R = A + B

  • Lapproche SIMD

    SIMD = Single Instruction Multiple Data Introduit sur les processeurs dusage gnral Introduit sur les processeurs dusage gnral

    MMX (Intel), 3DNow! (AMD) SSE (x86), Altivec (PowerPC, Cell)

    InstructionADD

    Donnes 1 Donnes 2

    SIMD par units parallles

    A [A1,A2]B [B1,B2]

    Instructionpacket_add

    Donnes

    SIMD par partage dunit

    84

    ALU1 ALU2

    A1 B1 A2

    R1 = A1 + B1

    B2

    R2 = A2 + B2

    Donnes 1 Donnes 2

    ALU

    B [B1,B2]

    B

    R = packed_add(A,B)

    Donnes

    A

    R [A1 + B1, A2 + B2]

    Empaquetage des donnes

    Dpaquetage des donnes

  • SIMD : exemple de lextension SSE Addition de deux vecteurs

    Code C squentiel Code C vectorisSSE=Streaming SIMD Extensions

    r a + b

    /* Dclaration de 4 vecteurs 32 bits */

    float a[4], b[4], r[4];

    /* Addition case par case */

    On note pa, pb, pr les addresses respectives de a, b et r en mmoire.

    /* Copie de a[0..3] dans le registre XMM */movaps xmm0,pa

    /* Addition SSE SIMD (packed_add 128 bits) */addps xmm0,pbfor (i=0; i limiter au maximum les transferts entre registres XMM et mmoire RAM

  • SIMD: implications architecturales(exemple du TMS320C54x et du C55x)

    2 bus de lecture : C+D

    x y x1 y x2 y

    3 bus de lecture : B+C+D

    2 RegistresA, B

    MAC

    1 bus dcriture : E

    MAC1 MAC24 RegistresAC0,AC3

    x y x1 y x2 y

    2 bus dcriture : E+F

    C54x C55x

    86Daprs: http://focus.ti.com/lit/ug/spru307a/spru307a.pdf Daprs: http://focus.ti.com/lit/ug/spru393/spru393.pdf

    Opration MAC SIMD:MAC *AR2+, *CDP+, AC0

    :: MAC *AR3+, *CDP+, AC1

    Opration MAC SISD:MAC *AR2+, *AR4+, A

    y est partag par les deux oprations MAC=> Coefficient commun(sinon, 4 bus de lecture auraient t ncessaires)

    2 bus dcriture : E+F

  • SIMD: granularit du paralllisme(exemple du TigerSHARC)

    Le TigerSHARC d Analog Devices met en uvre deux types de SIMD :- SIMD par units parallles (exemple TMS320C55x par rapport au C54x)- SIMD par partage de chaque unit de traitement (comme MMX)

    MACALU Shift MACALU Shift

    Instruction MAC SIMD

    Unit decalcul n1

    Unit decalcul n2

    SIMD par units parallles 64 bits

    - SIMD par partage de chaque unit de traitement (comme MMX)

    87

    4 multiplications 16 bitsau lieu de

    1 multiplication 64 bits

    4 multiplications 16 bitsau lieu de

    1 multiplication 64 bits

    SIMD par partage de

    l unit de traitement

    (split-MAC)

  • Lapproche MIMD (architecture VLIW)

    Plusieurs units de calcul en parallle Units indpendantes (en gnral distinctes) Units indpendantes (en gnral distinctes)

    Augmentation forte du paralllisme

    VLIW = Very Long Instruction Word Notion de super-instruction (bundle)

    dcoupe en sous-instructions destines des units distinctes (slots)distinctes (slots) 1 Instruction Word = 1 bundle compos de N slots

    Taille du code machine fortement augmente Bande passante depuis la mmoire importante

    88

  • Exemple de VLIW RISC(TMS320C62x, Texas Instruments)

    MIMD de type VLIW 4 units de calcul en parallle

    par data-path (4 slots)

    Opration MAC dcompose en oprations lmentairespar data-path (4 slots)

    Archi. Load/Store 16 registres

    Jeu dinstruction RISC L : Logique et Arithmtique S : Dcalage (ALU et Shifter) M : Multiplication D : Donnes (Mouvement de

    lmentaires Load (Unit D)

    Multiply (Unit M)

    Add (Unit L)

    Data Path 1

    Register File A D : Donnes (Mouvement de donnes de/vers la mmoire)

    Optimisation fige la compilation

    89RAM

    L1

    Register File A

    S1

    A15-A0

    ++

    M1

    xD1++

  • Exemple de VLIW RISC (2)(TMS320C62x, Texas Instruments)

    2 chemins de donnes (data-path) 4 units de calcul en parallle par

    data-path

    C62x/C67x CPU

    Instruction Fetch Control Registers

    Interru

    pt

    Contro

    l

    data-path

    En tout 8 slots Mot instruction de 256 bits = 8*32bit

    Bilan : Augmentation du paralllisme et des

    frquences dhorloge (car units RISC plus simples)

    Data Path 2Data Path 1

    L1

    Register File A

    M2D2 S2 L2

    Instruction Decode

    Instruction Dispatch Registers

    Interru

    pt

    Contro

    lEmulation

    S1

    A15-A0

    + + +x+M1

    xD1+

    Register File BB15-B0

    +plus simples)

    Taille du code beaucoup plus grande

    90

    ++ +

    ++x+x ++

    Dual 32-Bit Load/Store Path(Dual 64-Bit Load Path - C67x only)

  • Exemple de VLIW CISC(Jazz D4, Improv Systems)

    MIMD 4 slots VLIW

    Registres locaux

    Registres locaux

    Registres locaux

    Registres locaux

    MIMD 4 slots VLIW Registres locaux chaque unit Units peuvent tre htrognes

    Jeu dinstruction CISC/DSP Prsence dunits MAC

    Design matriel reconfigurable / SoC Processeur 16 ou 32 bits 1 4 slots VLIW

    Bus dinterconnection

    Unit2(ALU, MAC,

    Shift)

    Unit3(ALU, MAC)

    Unit4(ALU, MAC)

    Unit1(ALU, MAC,

    Shift)

    Mmoire Compression du code machine

    91

    Jazz D4

    http://www.improvsys.com/products/JazzDSP/Jazz_DSP.pdf

  • Bilan approches SIMD et MIMD

    Augmentation des performances Par augmentation du paralllisme Ncessaire pour les applications exigeantes

    Vido, TV numrique, multimdia, cartes graphiques Tlphonie 3G et plus Imagerie mdicale, radar

    Ncessitent une optimisation spcifiqueIl faut que lalgorithme sy prte SIMD => Vectorisation des calculs MIMD => Optimisation de lutilisation des diffrentes units

    Processeurs gnriques avec fonctionnalits SIMD DSP Processeurs gnriques avec fonctionnalits SIMD DSP Certains processeurs peuvent surpasser les DSP en puissance brute

    Filtre RIF: Pentium 1.3GHz plus rapide quun C67xx 225MHz Mais moins bons pour :

    la consommation lectrique, la gestion des entres-sorties, le prix

    92

  • Puces multi-processeurs

    Multi-curs Nombre de curs x4 => Performances x4 ??? Nombre de curs x4 => Performances x4 ??? Attention la limitation au niveau des communications

    Flux de donnes avec la mmoire et lextrieur Echanges de donnes entre les curs La programmation doit explicitement prendre en compte les

    multiples curs

    Puces hybrides Processeur gnrique (Pilotage du systme)

    + DSP (Traitement du Signal) Exemple: tlphone portable

    GPP = gestion du clavier, de laffichage, du rseau DSP = compression audio, communication numrique

    93

  • Processeurs DSP conventionnels multi-curs

    Gravure sur la mme puce de deux curs puce de deux curs DSP indpendants

    Communication entre les deux

    Mmoire partage

    Interface FIFO Interface FIFO

    94Architecture du C5421

    Shared memorytwo-way RAM : permet l'accs simultan la mmoire par les deux curs DSP, par exemple

    pour l'excution parallle du mme programme

  • DSP System on a Chip (DSP SoC)

    ARM + DSP + modules vido Spcialis traitement

    vido/multimdia Encodage/dcodage matriel Encodage/dcodage matriel

    temps-rel

    Outils de dveloppement Linux embarqu Librairies de codecs multimdia

    logiciels adapts

    Exemples Texas Instruments: DaVinci

    DM335 : ARM+coprocesseur DM335 : ARM+coprocesseur MPG4+vido

    DM6437: DSP+vido DM644x, DM646x :

    ARM+DSP+vido

    95

  • Processeur Cell (Sony/Toshiba/IBM)CBEA = Cell Broadband Engine Architecture

    Paralllisme 8 SPE indpendants en

    parallle Capacits SIMD du PPE Capacits SIMD du PPE

    et des SPE

    Haut-Dbit Frquence dhorloge

    leve / architecture simple (3.2GHz)

    Bus dinterconnexion trs haut-dbit (EIB)

    Usage intensif de transferts DMA asynchrones

    Programmation Extensions vectorielles

    au Langage C SDK base sur outils

    GNU/Linux

    96

    1 PPE(Power Processor Element)

    64 bits PowerPCContrleur gnral

    8 SPE(Synergistic Processor Elements)

    Calcul vectoris sur mots de 128 bitsPossdent une mmoire locale rapide

    Image: http://www-128.ibm.com/developerworks/power/library/pa-fpfeib/

    Introduction to the Cell multiprocessor: http://www.research.ibm.com/journal/rd/494/kahle.html

  • Dveloppement pour

    la plateforme DSPla plateforme DSP

    Texas Instruments

    Outils de dveloppement Outils de dveloppement

    Organisation de la mmoire

    97

  • Carte de dveloppement (DSK 5416)Mmoireexterne

    Plateforme de

    Protocole JTAGsur lien USB

    (CPLD)ROM

    SARAM

    DARAM

    Mmoireinterne

    Plateforme de dveloppement

    ProcesseurDSP

    98

    DARAM

    source : "TMS320VC5416 DSK Reference Technical", Spectrum Digital

    Carte DSK

  • Dveloppement pour processeur DSP

    Mise au point de l algorithme Prototypage, simulation haut-niveau

    Matlab Matlab Langage C sur PC

    Implmentation DSP Dveloppement sur carte d'valuation

    Langage C Cartes EVM, SDK Noyau temps-rel (DSP/BIOS)

    Optimisation des parties critiques Assembleur Assembleur

    Outils de dbogage Simulateur mulateur Boundary scan JTAG Communication temps-rel avec un PC hte

    99

  • Dveloppement pour un DSP

    *.cCompilateur

    C

    Outils deconception

    *.asm

    Assembleur *.lst*.obj

    Linker *.map*.cmd

    IDE *.asm

    Editeurde Texte

    *.out

    100

    Simulateur DSP*.hex

    Chargementsur la cible

  • C vs. assembleur

    Langage C Langage de plus haut-niveau

    Plus rapide coder

    Assembleur Langage bas-niveau

    Fastidieux Plus rapide coder Meilleure portabilit

    Code machine gnr moins efficace Malgr loptimisation par le

    compilateur

    Outils de dveloppement Noyau temps-rel

    (DSP/BIOS)

    Fastidieux Jeux dinstructions

    complexes et irrguliers Spcifique chaque

    constructeur

    Plus puissant Accs direct certains

    registres inconnus du C Instructions spcifiques DSP(DSP/BIOS)

    Configuration de la carte Librairies de calculs

    optimises (DSPLIB)

    Utile pour loptimisation

    ...ponctuellement sur les fonctions identifies comme critiques

    101

  • Environnement Intgr de Dveloppement (Integrated Development Environment : IDE)

    102

  • Vue synoptique des modules utiles

    DsplibUser ApplicationLogiciel applicatif

    CSLDSP/BIOSKernel/Scheduler

    DsplibImglib

    BSL

    User Application

    Abstraction du matrielet systme dexploitation

    Logiciel applicatif

    Drivers

    103

    Carte DSK

    USB/JTAG DSP CODEC

    LEDBoutons

    CPU Timer EMIF McBSP

    Matriel

  • Support Libraries (CSL/BSL)

    Abstraction du matriel travers une API logicielle Amliore la portabilit

    C54x DSP Modules

    CHIP

    Chip Support Library (CSL) Bibliothque facilitant l'utilisation des priphriques

    internes du DSP DMA, BSP, IRQ

    Mthodes standards d'accs aux priphriques Accessible depuis le langage C

    Board Support Library (BSL)

    CHIP

    DAA

    DAT

    DMA

    EBUS

    GPIO

    HPI

    IRQ

    MCBSP Board Support Library (BSL) Bibliothque facilitant lutilisation des priphriques sur

    la carte DSK Switches, LEDS

    104

    MCBSP

    PLL

    PWR

    UART

    WDTIM

  • Systme temps-rel DSP/BIOS

    Noyau temps-rel Ordonnanceur temps-rel Gestion multi-threads premptive Gestion multi-threads premptive

    Outils d'analyse temps-rel Dbogage sans interruption de l'excution Profiling, vision des threads

    Intgration avec Real-time data exchange (RTDX) Real-time data exchange (RTDX)

    Communication hteDSP pendant l'excution

    Chip Support Library (CSL)

    105

  • Stratification des traitements sous DSP/BIOS

    Interruptions matrielles

    Hard Real-time

    1st-TIER Traitement par chantillon Raction la microseconde

    Interruptions logicielles

    Multi-tche

    2nd-TIER Traitement par blocs Raction la milliseconde

    Raction la microseconde

    Traitements ordonnancs Excution concurrente

    106

    Multi-tche

    Tche de fond (idle)

    Soft Real-time

    Excution concurrente

    S'il reste du temps

  • Proprits des systmes temps-rel

    Pilot par vnements Synchrones (chronomtre) Asynchrones (interruptions des E/S) Asynchrones (interruptions des E/S)

    Contraint dans le temps Contraintes dures (deadlines critiques) Contraintes souples (deadlines non critiques)

    Concurrence de l'excution Plusieurs traitements en parallle Ncessite un ordonnancement

    multi-tches (plusieurs traitements la fois) multi-tches (plusieurs traitements la fois) premptif (toute tche peut tre interrompue par une tche plus

    prioritaire)

    Dterministe et fiable Comportement du systme prdictible

    107

  • Librairies spcialises (DSPLIB, IMGLIB)

    Librairie dj optimise Traitement du signal ou des images Dj programmes Dj programmes Optimises Utilisables depuis le langage C

    Fonctionnalits de base FFT Filtrage Filtrage Mathmatiques et trigonomtrie Calcul matriciel

    108

  • Outils de dbogage

    Type doutils Emulateur

    Communique avec le DSP grande vitesse

    Emulateurou

    Contrleur JTAG

    IDEDSP

    vitesse Capable de simuler/enregistrer en

    temps-rel ltat interne exact du DSP

    Boundary-scan (JTAG) Protocole intgr au sein du

    processeur Interrompt le DSP pour accder

    linformation

    Oprations Interruption et relance de lexcution

    Chargement du code

    Rcupration des donnesdepuis la mmoire du DSP

    Dfinition de breakpointset modification des variables

    Chargement du code Breakpoints

    Accs en lecture/criture Visualisation et modification du

    contenu mmoire Registres internes

    109

  • Boundary Scan (JTAG) vs In-Circuit Emulator (ICE)

    Emulateur ICEGestion avance temps-rel

    Emulateur JTAG Externe(GAO XDS510PP JTAG Scan Path)

    www.gaotek.com

    110http://www.embedded-computing.com/products/product_guide/emulators/index.shtml

    Gestion avance temps-rel(trace, dtection dvnements complexes,

    statistiques) (Lauterbach TRACE32-ICE)

    Contrleur JTAG intgr la carte(DSK C5416)

    Image: http://www.logic-instrument.com/gamme-33.html

  • Affichage du code dsassembl

    #define N 256

    short inputData[N];short outputData[N];

    void toto()void toto()

    {

    int i;

    for (i=0; i

  • Organisation mmoire

    112

  • Structuration hirarchique de la mmoire

    Carte mmoire Carte mmoire physique

    Associe chaque adresse une connexion vers une mmoire physique Configuration matrielle statique spcifique chaque processeur Configuration matrielle statique spcifique chaque processeur Configurable dans une certaine mesure (MP/MC, DROM, OVLY)

    Carte mmoire logique Blocs dadresses logiques nomms Position et taille dfinies statiquement Doit tre compatible avec la carte physique

    Sur architecture Harvard, attention bien diffrencier les espaces dadresses donnes et programme

    Section relogeable A lintrieur dun bloc logique A lintrieur dun bloc logique Taille dcide lors de ldition des liens, en fonction de son contenu

    Variable / Portion de code A lintrieur dune section Position dans la section dcide lors de ldition des liens

    113

  • Architecture mmoire logique et physique

    DSP

    Espace

    Vue logique simplifiede larchitecture Harvard

    Vue physique

    ROM

    SARAM

    DARAM

    Mmoireinterne

    CPU

    SRAM Mmoireexterne

    Bus Bus

    Mmoire Programme

    CPU

    Espace dadresses programme

    Espace dadresses donnes

    Mmoire Donnes

    114

    Bus programme

    Busdonnes

    Chaque mmoire est physiquement cble pour ne rpondre qu certaines adresses logiques dans chaque espace dadresses.La carte mmoire permet de dterminer le lien entre adresses logiques et mmoires physiques.

  • Carte mmoire Prog et Data (C5416)

    PROG

    Registres MMR(Accs accumulateurs et registres de configuration)

    DATA

    Reserved

    DARAM03

    registres de configuration)

    Utilis par le DSP/BIOS

    DARAM03

    Overlay :DARAM03 est

    accessible par les deux espaces

    Deux espaces mmoires distincts :0x8000 pointe sur

    deux cases

    External

    ROM

    115

    Routines d'interruption(gr par le DSP/BIOS)

    DARAM47 accessible uniquement par adresses donnes

    DARAM47

    deux cases physiques distinctes

    Carte mmoire obtenue daprs la documentation du DSK5416 lorsqueMP/MC=0, OVLY=1, DROM=0. Dautres valeurs conduiraient des cartes diffrentessource : "TMS320VC5416 DSK Reference Technical", Spectrum Digital

  • Notion de mmoire tendue (Prog)

    Mmoire accessible avec adresses 16 bits(0x0000 0xFFFF)

    Mmoire tendue,accessible grce la pagination par le registre XPC

    DARAM03

    DARAM03 DARAM03 DARAM03 DARAM03

    DARAM47 SARAM03 SARAM47

    Reserved

    116source : "TMS320VC5416 DSK Reference Technical", Spectrum Digital

    Le registre XPC permet dexcuter des fonctions dont le code est stock en mmoire tendue, ladresse :

    XPC 0x10000 + PC

    Le compilateur C gre automatiquement le XPC lorsque loption far-calls est coche.

  • Le fichier de commande

    File_name1.obj

    File_name2.obj

    -o Name.out

    Name.cmd Noms des fichiers objet constituant lexcutable final

    Noms des fichiers de sortie -m Name.map

    MEMORY

    {

    PAGE 0 :

    IPROG : origin = 0x7080, length = 0x0F00

    VECT : origin = 0xFF80, length = 0x0080

    SARAM03 : origin = 0x28000, length = 0x8000

    PAGE 1 :

    IDATA : origin = 0x0080, length = 0x7000

    DARAM47: origin = 0x8000, length = 0x8000

    Carte mmoire :Dfinition des blocs mmoire statiques

    Noms des fichiers de sortie (excutable et carte mmoire)

    117

    }

    SECTIONS

    {

    .text : load = SARAM03 page0

    .data : load = IDATA page1

    .bss : load = IDATA page1

    .coef : load = IPROG page0

    }

    Positionnement des sections dans les blocs mmoire

  • Sections relogeables

    Sections initialisesSections initialises Sections non initialises pour les

    donnesCode VariablesCode ou constantes

    Sections nommes (par l'utilisateur)

    .sect .usect

    118

    Sections par dfaut

    .text .data .bss

  • Phase d'dition de liens

    Positionnementdes sections en mmoire (*.cmd)

    SARAM03

    IDATA

    mmoire (*.cmd)

    119source : "TMS320C54x Assembly Language Tools User's Guide",ref. SPRU102F, Texas Instruments

  • Utilisation explicite des sectionsen assembleur

    SECTIONS{

    Dclaration des sections dans le fichier *.cmd :

    {init: > IPROG page0vars: > IDATA page1 results: > IDATA page1 .text: > IPROG2 page0

    }

    .sect "init"

    Dclaration des variables dans le fichier assembleur :

    init: Section initialise qui commence

    120

    .sect "init"tbl .int 1,2,3

    x .usect "vars",3y .usect "result",1

    .text

    init: Section initialise qui commence laddresse tblvars: Section non initialise de taille 3 qui commence laddresse xresult: Section non initialise de taille 1 qui commence laddresse y.text: Section de code

  • Utilisation explicite des sectionsen Langage C

    Pour placer un tableau ou une variable :

    SECTIONS#pragma DATA_SECTION (tbl, "init")

    Pour placer une fonction (cest--dire le code machine correspondant):

    Code C Fichier *.cmd

    SECTIONS{init: > IPROG page1vars: > IDATA page1results: > IDATA page1

    }

    #pragma DATA_SECTION (tbl, "init")Int16 tbl[3]={1,2,3};#pragma DATA_SECTION (x, "vars")Int16 x[3];#pragma DATA_SECTION (y, "results")Int16 y;

    121

    Pour placer une fonction (cest--dire le code machine correspondant):

    SECTIONS{psec: > IPROG page0

    }

    #pragma CODE_SECTION (increment, "psec")Int16 increment(Int16 a) {return a+1;

    }

    Code C Fichier *.cmd

  • Reprsentation numriqueReprsentation numrique

    du signal

    Echantillonnage / Quantification Echantillonnage / Quantification

    Virgule fixe, format Qk

    Virgule flottante

    122

  • Chane de Traitement Numriqueau sein dune chane analogique

    Signaldentre

    Signal Trait

    Filtreanti-repliement

    CAN CNAFiltre delissage

    DSP

    G

    Echantillonage/Quantification Reconstruction

    123

    Signal analogique Signal analogiqueSignal numrique

  • Du signal analogique...

    Signal AnalogiqueSignal Analogique

    VoltsVolts Valeurs continues de tension en fonction du temps

    Discrtisation en temps par

    TempsTemps

    Discrtisation en temps par chantilloneur-bloqueur frquence

    Signal Discrtis en tempsSignal Discrtis en temps

    ffss = 1 / T= 1 / Tss

    124

    TempsTemps

    TTSSDiscrtisation en temps

  • vers le signal numrique

    Restriction des instants considrs

    Signal EchantillonnSignal Echantillonn

    V

    a

    l

    e

    u

    r

    s

    c

    o

    n

    t

    i

    n

    u

    e

    s

    Signal NumrisSignal Numris

    q

    Restriction des valeurs de magnitude possible

    V

    a

    l

    e

    u

    r

    s

    c

    o

    n

    t

    i

    n

    u

    e

    s

    V

    a

    l

    e

    u

    r

    s

    d

    i

    s

    c

    r

    t

    e

    s

    125

    Discrtisationen amplitude

    V

    a

    l

    e

    u

    r

    s

    d

    i

    s

    c

    r

    t

    e

    s

  • Lchantillonnage

    126

  • Caractristiques du signal chantillonn

    Spectre de Frquence du Signal AnalogiqueSpectre de Frquence du Signal Analogique| X(f) |

    fc

    fs 2fs 3fs0

    Spectre de Frquence du Signal dEchantillonageSpectre de Frquence du Signal dEchantillonage

    127

    fc fs 2fs 3fs0

    Spectre de Frquence du Signal EchantillonSpectre de Frquence du Signal Echantillon| Xe(f) |

  • Thorme de Shannon

    Fs > 2FcFs > 2Fc| Xe(f) |

    fc fs 2fs 3fs0 4fs

    fc fs 2fs 3fs0 4fs 5fs

    Fs = 2FcFs = 2Fc| Xe(f) |

    128

    fc fs 2fs 3fs0 4fs 5fs 6fs 7fs

    Fs < 2FcFs < 2Fc

    Repliement de spectre

    | Xe(f) |

  • Effets du repliement de spectre

    AmplitudeAmplitudeSignal chantillon Signal chantillon

    fs > 2fcfs > 2fc

    TempsTemps

    129TempsTemps

    SignalSignal chantillonchantillon

    fsfs < 2fc< 2fc

  • La quantification

    Uniforme

    130

    Logarithmique

  • Quantification Uniforme

    Pour un pas de quantification q :

    =q

    xX round Entier X associ au rel x

    xxe = Lerreur de quantification est (cart entre la valeur relle et la valeur quantifie)

    qXx =

    =q

    X round

    Valeur approche du rel x aprs quantification

    q e

    131

    Erreur de granulationErreur de granulationErreur de granulationErreur de granulation Erreur de saturationErreur de saturationErreur de saturationErreur de saturationLie la prcision q Lie la dynamique [xmin, xmax]

    0 1 2 3 4 5 6 7 8Temps

    09

    q

    00 11 22 33 44 55 66 77 88Temps

    xmax

    99

    ee

  • RSB de la quantification uniformeN bits signs

    ==

    e

    xdB

    e

    dB

    xdBP

    PPPRSB log10

    Rapport signal sur bruit relatif la quantification

    q

    )(log2077.402.6 max10 xPNRSBdBxdB ++

    Le RSB de la quantification uniformede la quantification uniformede la quantification uniformede la quantification uniforme est donc, en labsence de saturation :

    2

    qe

    12

    2qPe =On peut alors montrer que la puissance de lerreur est

    Si arrondi au plus proche voisin

    Pour un codage N bits sign , on a q=(2xmax)2-N

    132

    max10xdB

    En introduisant le facteur de chargefacteur de chargefacteur de chargefacteur de charge ,qui indique quelle est la dynamique utilisable par rapport la puissance du signal x

    x

    max=

    ( )+ 10log2077.402.6 NRSBdB

  • Seuil dapparition de la saturation

    La saturation se produit lorsque lamplitude du signal convertir dpasse xmax ou xmin

    Le RSB se dgrade trs rapidement ds quil y a saturation

    Soit a lamplitude du signal il y a saturation pour a>xmax

    Pour un signal carr: Px=a2 saturation 0 dBPour un signal sinusodal: Px=a2/2 saturation -3.01 dBPour un signal uniforme sur [-a, a] : Px=a2/3 saturation -4.77 dBPour un signal gaussien moyenne nulle :

    133

    Dynamiques typiques :X sur N bits non signs => xmin=0 et xmax=q(2N-1)X sur N bits signs en C2 => xmin=-q2

    N-1 et xmax=q(2N-1-1)

    a 3x (rgle des 3 sigmas) do Px a2/9 saturation -9.54 dB

  • Quantification uniforme et RSB

    120Quantification uniforme 16 bits sur [-1,1]

    bruit blanc gaussien

    bruit blanc uniforme

    saturation

    dBxPx == )(log201 10maxQuantification uniforme 16 bits signs sur [-1,1]

    40

    60

    80

    100

    R

    S

    B

    (

    d

    B

    )

    bruit blanc uniforme

    signal sinusoidal

    signal carr

    dBxdB PNRSB ++ 77.402.6

    Seuil dapparition de la saturationCarr: 0 dBSinus: -3.01 dB

    RSB en labsence de saturation:

    134

    -60 -50 -40 -30 -20 -10 0 100

    20

    puissance du signal (dB)

    erreur de granulation

    Sinus: -3.01 dBUniforme : -4.77 dBGaussien : -9.54 dB

  • Quantification Logarithmique

    Trs utilise pour la transmission de signaux audio Permet dobtenir un RSB peu prs constant, quelle que soit la puissance du

    signalsignal

    Deux lois logarithmiques sont actuellement utilises la loi A est utilise en Europe la loi aux Etas Unis et au Japon

    Peut tre exprime laide dune quantification uniforme aprs compression damplitude

    y yCompression Quantification Expansion )( xQx =

    135

    y

    )( 1 yCx =

    xCompression dAmplitude

    Quantification Uniforme

    Expansion dAmplitude

    )(xCy = )( yQy u=

    )( log xQx =

    ( )( ))()( 1log xCQCxQ u=

  • Quantification uniforme vs logarithmique

    0.5

    1Signal original x

    x1

    x2

    0.5

    1Signal original x

    0.5

    1Signal compress y=C(x)

    0 0.5 1-1

    -0.5

    0

    0.5

    1

    Signal quantifi xq=Q(x)

    x2

    x3

    0 0.5 1-1

    -0.5

    0

    0 0.5 1-1

    -0.5

    0

    0.5

    1

    Signal quantifi yq=Q(y)

    0.5

    1

    Signal quantifi xq=C-1(y

    q)

    136

    0 0.5 1-1

    -0.5

    0

    0.5

    quantif. uniformedomaine linaire

    quantif. logarithmiquedomaine linaire

    quantif. uniformedomaine compress

    0 0.5 1-1

    -0.5

    0

    0.5

    0 0.5 1-1

    -0.5

    0

    0.5

  • Loi A

    0.8

    0.9

    1loi de compression A

    Pente leve bonne prcision

    Pente faible augmente la dynamique

    0.2

    0.25

    0.3

    0.35

    0.4

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    C

    (

    x

    )

    Compression logarithmique

    ( ) ( )( ) ( ) 11

    ;ln1

    /ln1

    max

    maxmax +

    +=

    x

    x

    Apourxsign

    A

    xxAxxC

    A=87.56

    Pente leve bonne prcision

    C(x)

    137

    0 0.01 0.02 0.030

    0.05

    0.1

    0.15

    0.2

    Compression linaire

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

    x

    ( ) ( ) ( ) Axx

    pourxsignA

    xAxC

    10;

    ln1 max

    +=

    x

    Pour les signaux de trs faible amplitude,quivalent une quantification uniforme de pas ulog

    ln1q

    A

    Aq

    +=

  • Quantification Uniforme 8 bitsvs. Logarithmique 8 bits

    Loi A La compression limite les effets

    de la granulation50Quantif ication 16 bits sur [-1,1]

    Loi A sur 8 bits Uniforme sur 8 bits

    RSB pour une sinusode

    de la granulation RSB peu prs constant sur

    une plage de 30 dB

    Quantification uniforme Meilleur que loi A seulement 10

    15

    20

    25

    30

    35

    40

    45

    R

    S

    B

    (

    d

    B

    )

    Loi AUniforme

    ( )ANRSBdB ln1log2077.402.6 10 ++

    Meilleur que loi A seulement pour premiers 10dB

    Leffet de granulation est linaire par rapport la puissance du signal

    138

    -60 -50 -40 -30 -20 -10 0 100

    5

    10

    puissance du signal (dB)

    x1x2x3

    Quantification uniformemeilleur RSB

    Quantification logarithmiquemeilleur RSB

    ( )+ 10log2077.402.6 NRSBdB

  • Quantification Uniforme 12 bitsvs. Logarithmique 8 bits

    60

    70 Pour les calculs, on reviendra toujours en quantification uniforme

    RSB pour un bruit gaussien centr

    -60 -50 -40 -30 -20 -10 0 100

    10

    20

    30

    40

    50

    puissance du signal (dB)

    R

    S

    B

    (

    d

    B

    )

    uniforme

    Pour viter une augmentation du RSB,

    le nombre de bits supplmentaires dpend de A uniquement

    Loi A sur 8 bits

    A1

    logudBdB RSBRSB

    139

    ( )+ 10log2077.402.6 NRSBudB

    ( )

    +++ 1010

    log log20ln1

    log2077.402.6A

    ANRSBdB

    ++

    A

    ANNu

    ln1log20

    02.6

    110log

    bits 4log += NNu

    Lorsque A=87.56 :

  • Le codage des entiers

    140

  • Reprsentation dentiers non signs

    Reprsentation binaire non-signe sur bits

    =1

    2N

    i

    ibX bi = 0 ou 1 Reprsentation binaire non-signe sur N bits

    =

    =0

    2i

    ibX bi = 0 ou 1

    dynamique de X : 0..(2N-1)

    141

    Exemple: entier en dcimal, binaire et hexadcimal

    010123401

    16210

    16101612021202121106102

    1A1101026

    +=++++=+

    ==

  • Entiers signs : binaire dcal

    Binaire DcalBinaire DcalBinaire DcalBinaire DcalEntier x cod par

    Le dcalage d est gnralement gal d = -2N-1

    Entier x cod parla reprsentation binaire pure de lentier positif

    y=x+d

    110011

    00-210-1010111012113

    Nombre Codage

    234567y

    12 1 N

    D

    y

    n

    a

    m

    i

    q

    u

    e

    142

    001

    00-410-300-2

    012

    N=3

    12 N

  • Entiers signs : signe et valeur absolue

    Format signe et valeur absolue Format signe et valeur absolue Format signe et valeur absolue Format signe et valeur absolue Le bit de poids fort reprsente le signeLes autre bits, la valeur absolue de lentierLe bit de poids fort reprsente le signeLes autre bits, la valeur absolue de lentier

    0011

    000101002103

    Nombre Codage12 1 N

    Deux codes

    143

    11000

    11-301-211-101-0000

    Signe

    )12( 1 N

    Deux codes pour le zro

  • Entiers signs : format complment 1

    Format complment 1Format complment 1Format complment 1Format complment 1Le bit de poids fort reprsente le signeNombre positif : cod comme un non-sign

    ATTENTION : ne pas confondre

    Format C1 et C1 dun entier

    Nombre positif : cod comme un non-signNombre ngatif : cod comme le C1 de son oppos

    12 1 N

    Deux codes

    C1(x) = (2N-1) x

    avec0011

    000101002103

    Sign C1 CodageComplment 1 de x:

    0123

    Non signassoci

    144Signe

    Deux codes pour le zro

    Implantation efficace :Implantation efficace :Implantation efficace :Implantation efficace :inversion des bitsinversion des bitsinversion des bitsinversion des bits

    avec

    N fois 1

    2N-1 = 1111112

    )12( 1 N 00110

    01-311-201-111-0000

    45670

  • Entiers signs : format complment 2

    Format complment 2Format complment 2Format complment 2Format complment 2Le bit de poids fort reprsente le signeNombre positif : cod comme un non-sign

    ATTENTION : ne pas confondre

    Format C2 et C2 dun entier

    Format le plus utilisNombre positif : cod comme un non-signNombre ngatif : cod comme le C2 de son oppos

    12 1 NC2(x) = 2N x

    Implantation efficace de lopposInversion des bits puis ajout de 1

    Format le plus utilisen arithmtique binaire

    Complment 2 de x :

    D

    y

    n

    a

    m

    i

    q

    u

    e

    0011

    000101002103

    Sign C2 Codage

    0123

    Non signassoci

    145Signe

    Inversion des bits puis ajout de 1

    12 N

    C2(x) = C1(x) + 1

    D

    y

    n

    a

    m

    i

    q

    u

    e

    00110

    01----444411-301-211-1000

    45670

  • Lien entre non-sign et sign C2

    Pour une mme reprsentation binaire

    ],,,,[ 0121 bbbb NN L

    0 12-2

    -10

    X entier sign C2

    Y entier non-sign

    =

    +=

    2

    0

    11 22

    N

    i

    ii

    NN bbX

    ],,,,[ 0121 bbbb NN L 2

    3

    4

    5

    67-7

    -6

    -5

    -4

    -3

    -2 0 123

    4

    56

    78910

    11

    12

    1314

    15

    pour N=4 bits

    Y entier non-sign

    146

    =

    =1

    0

    2

    N

    i

    iibY

    NYX 2=

    7-8-7

    0X

    12 < NY12 NY0

  • Proprits de la saturation

    Modes de saturation

    Exercice: Montrer quen mode C2 pur sur 8 bits signs le calcul

    C2 pur C2 avec saturation

    Montrer quen mode C2 pur sur 8 bits signs le calcul suivant conduit un rsultat correct, mais pas en mode de saturation A=((100+70)+30)-150

    147

  • Le codage des rels en virgule fixe

    148

  • Reprsentation de nombres rels

    Deux exigences contradictoires:

    Prcision: intervalle entre deux valeurs codes Prcision: intervalle entre deux valeurs codes doit tre le plus petit possible

    Dynamique: intervalle entre les valeurs min et max doit tre le plus tendu possible

    Les units de calcul des DSP travaillent Les units de calcul des DSP travaillent soit en format fixe (notation dcimale) soit en format flottant (notation scientifique)

    149

  • Format virgule fixe : le format Qk

    Dfinition :Dfinition :Dfinition :Dfinition :La reprsentation Qk du rel x est l'entier X dfini parLa reprsentation Qk du rel x est l'entier X dfini par

    )2round( xX k=

    Q0 dsigne le cas du codage lentier le plus proche (X=round(x))

    Cela correspond une quantification uniforme de pas q=2-k

    150

    On peut utiliser le format Qk en sign et non-sign

    Le format Qk peut galement tre not Q.k

  • Dynamique et prcision du format Qk

    Prcision: quantification uniforme de pas qkq = 2

    En pratique, on peut approximer les dynamiques par des intervalles

    Dynamique:non-sign:

    sign C2: [ ]kkNkN 22 ,2 11[ ]kkN 22 ,0

    q = 2

    151

    En pratique, on peut approximer les dynamiques par des intervalles semi-ouverts: etDo les formats classiques: Dynamique sur [-1, 1[ format QN-1 sur sur sur sur N bits signsbits signsbits signsbits signs Dynamique sur [0, 1[ format QN sur sur sur sur N bits nonbits nonbits nonbits non----signssignssignssigns

    [ [kN2 ,0 [ [11 2 ,2 kNkN

  • Reprsentation Qk sur 16 bits

    kPrcision

    q

    Dynamique pour

    16 bits signs

    Dynamique pour

    16 bits non signs

    -1 2 [-65536, 65535] [0, 216-1]-1 2 [-65536, 65535] [0, 216-1]

    0 1 [-32768, 32767] [0, 65535]

    1 1/2 [-16384, 16383] [0, 32767]

    14 2-14 [-2, 2[ [0, 4[

    Entiers Q0

    [-1 1[ Q15 sur 16 bits signs15 2-15 [-1, 1[ [0, 2[

    16 2-16 [-0.5, 0.5[ [0, 1[

    17 2-17 [-0.25, 0.25[ [0, 0.5[

    152

    [-1 1[ Q15 sur 16 bits signs

    [0 1[ Q16 sur 16 bits non-signs

  • Quantification uniforme

    Attention lambigit entre et x X

    x

    = xX round

    xValeur relle exacte

    exact

    quantifi

    qx /

    Valeur relle exacte normalise

    qXx =

    Quantificationde pas q

    Arrondi entier

    153

    x

    =q

    X round

    Valeur relle quantifie Reprsentation entire

    qXx =

    Dynamique sur [qXmin, qXmax] Dynamique sur [Xmin, Xmax]

  • Inteprtation binaire

    Exemple : Reprsentation Qk non signe de x=0.1

    12 1/2 1/4 1/8 1/16 1/32 1/64 2-112-102-92-82-7 2-12

    En pratique, utiliser plutt la dfinition X=round(x/q)

    0 0 0 0 0 1 1 0 0 1 1, 0 0 112 1/2 1/4 1/8 1/16 1/32 1/64 222 2

    Format Q0 sur 8 bits non signs

    0 00 0 0 0 0 0 ,1

    0

    0

    =

    =

    x

    X

    Format Q sur 8 bits non signs13=X

    Format Q12 sur 8 bit Saturation

    154

    Format Q10 sur 8 bits non signs

    0 1 1 0 0 1 1 02-10

    50.09960937

    102

    =

    =

    x

    X

    0 0 0 0 1 1 0

    ,

    02-7Format Q7 sur 8 bits non signs

    1015625.0

    13

    =

    =

    x

    X

  • Choix du format Qk

    Pour le codage d'un ensemble de valeurs x en virgule fixe sur N bits signs, la mthode est la suivante:

    1) Expliciter la dynamique prvue pour les valeurs de x

    2) Estimer kmax, le k maximum permettant d'viter la saturationviter la saturationviter la saturationviter la saturation, c'est dire vrifiant:

    3) Toutes les valeurs k infrieures k permettent d'viter la saturation. On

    maxxx

    1

    maxmax2 kNx

    1)(log max2max += Nxk

    155

    3) Toutes les valeurs k infrieures kmax permettent d'viter la saturation. On choisit la valeur permettant la plus grande prcision, c'est dire kmax.4) Le pas de quantification est alors:

    Dans le cas non sign, on a:

    max2 kq =

    max2maxkN

    x Nxk += )(log max2max

  • Quantification et prcision dcimale

    A titre purement indicatifA titre purement indicatifA titre purement indicatifA titre purement indicatif, il est possible de dterminer le nombre de chiffres dcimaux significatifs associ un pas de quantification.

    Dkq = 102( )

    Dk

    Dk

    3.3

    10log2

    Notons- k le nombre de bits aprs la virgule (format Qk),- D le nombre de chiffres dcimaux significatifs aprs la virgule,- q le pas de quantification

    -On a l'quivalence suivante:

    156

    En particulier, le format Q15 a une prcision approximative de 4 chiffres dcimaux aprs la virgule

    Ceci est un calcul approximatif,ne pas utiliser pour justifier le choix dun format Qk

  • Oprations arithmtiques virgule fixe

    157

  • Influence des oprations sur le format Qk

    Addition:Si A, B reprsentations Qk de a et b,alors A+B est la reprsentation Qk de a+b.

    A + BQk Qk

    Qk

    A + BQk Ql

    klA+B Qk a+b.

    MultiplicationSi A reprsentations Qk de aet B reprsentations Ql de b,alors A*B est la reprsentation Qk+l de ab.

    DcalageSi A reprsentations Qk de aalors A n

    Qk

    A

  • Multiplication entire sur le C54x

    Multiplication entiers 16 bits

    ; AR2 = @X

    ; AR3 = @Y

    Int16 X,Y,R;

    Int32 A;; AR3 = @Y

    ; AR4 = @R

    MPY *AR2,*AR3,A

    STL A,*AR4

    Int32 A;

    A = (Int32)X * Y;

    R = (Int16)A;

    s s015162931 30

    X*Y sur 32 bits

    159

    s s

    s

    Rduction 16 bitsPartie basse de laccumulateur :STL = Store Low

    R: Rsultat sur 16 bits

    X*Y

  • Multiplication virgule fixe Q15

    RSBX FRCT ; FRCT0

    MPY *AR2,*AR3,A

    Multiplication format Q15 sur 16 bits

    A = (Int32)X * Y;

    S

    a

    n

    s

    F

    R

    C

    T

    SSBX FRCT ; FRCT1

    MPY *AR2,*AR3,A

    STH A,*AR4

    MPY *AR2,*AR3,A

    STH A,-1,*AR4

    A = (Int32)X * Y;

    R = (Int16)(A>>(16-1));

    015 142931 30

    A = ((Int32)X * Y)16);

    A

    v

    e

    c

    F

    R

    C

    T

    S

    a

    n

    s

    F

    R

    C

    T

    160

    s s015 14

    Partie haute de lacc.(STH=Store High)Rduction 16 bits

    sDcalage gaucheautomatique si FRCT=10

    s

    X*Y sur 32 bitsQ30

    Q31

    Q15

    >>16 (STH)

  • Accumulateurs sur le C54x

    15-0

    ALAHAGAccumulateur A

    31-16

    Bits de Garde

    39-32

    Bits de poids fort

    Bits de poids faibleGarde poids fort faible

    Sur le C54X, deux accumulateurs 40 bits : A et B Peuvent servir de source et de destination pour lALU et pour le MAC Sont mapps en mmoire (MMR)

    ; A accumulateur 40 bits

    ; AR2=@X[0], AR3=@Y[0]

    ; AR4=@R

    ; 55 rptitions

    Int32 A;

    Int16 X[],Y[];

    Int16 R;

    A=0;

    161

    RPTZ A, #54

    MAC *AR2+, *AR3+, A

    STH A,-1,*AR4

    A=0;

    for (i=0; i> 15);

    Accumulateur de 40 bitsnon accessible depuis le langage C:Dgradation ds quun rsultatintermdiaire dpasse 32 bits.

    Si le rsultat final R tient sur 16 bits, possibilit de rsultats intermdiaires jusqu 40 bits sans saturation.

  • Arithmtique et prcision

    Divisions et dcalages entranent une erreur lie la perte de prcision

    Int16 X[4]={15, 23, 7, 2};x(0)=15 x(1)=23 x(2)=7 x(3)=2

    a = (x(0) + x(1) + x(2) + x(3))/4 A = ((Int32)X[0]+X[1]+X[2]+X[3])>>2;

    Equivalence sur les rels

    Pas dquivalence en virgule fixe

    A = floor(47/4) = 11 erreur 0e>2) + (X[1]>>2)+ (X[2]>>2) + (X[3]>>2);

    a = x(0)/4 + x(1)/4 + x(2)/4 + x(3)/4

    sur les rels

    A = 3 + 5 + 1 + 0 = 9 erreur 0e

  • Accumulation et saturation

    Exercice:1) Quelle est la dynamique de laddition de M entiers non-signs n bits ?

    2) En dduire le nombre de bits minimum N de laccumulateur pour viter la saturation.

    1 et 2) Mme questions en sign.

    Problme:On dsire calculer le produit scalaire aM entre deux vecteurs x et h de taille m, dont toutes les valeurs sont lintervalle ]-1, 1[. Les valeurs sont codes au format Q15 sur 16 bits signs (Int16). On note am les accumulations intermdiaires :

    1) Quelle est la dynamique des rsultats intermdiaires am ?

    =

    =1

    0

    )()(

    m

    i

    m ihixa

    1) Quelle est la dynamique des rsultats intermdiaires am ?

    2) En dduire le nombre de bits ncessaires pour pouvoir calculer aM exactement.

    3) Supposons que lon soit contraint dutiliser uniquement les types Int16 et Int32. A quel format Qk faut-il stocker les rsultats intermdiaires pour viter la saturation ?

    4) On suppose de plus que aM]-1, 1[, mais sans aucune garantie sur les am intermdiaires.Ecrire le code C permettant de calculer aM en Q15 sur 16 bits signs avec la meilleure prcision possible sans saturation. (oprations: +, *, >>, (Int16), (Int32))

    163

  • Le codage des rels en virgule flottante

    164

  • Reprsentation en virgule flottante

    ES Mx 2)1( =

    Le signesignesignesigne S : 1 bit (0 ou 1) La mantissemantissemantissemantisse M : rel positif cod sur m bits Lexposantexposantexposantexposant E : entier sign sur e bits

    Nem =++1

    Opration de normalisationnormalisationnormalisationnormalisation:

    nombre de chiffres significatifsdynamique

    165

    Opration de normalisationnormalisationnormalisationnormalisation:Pour rendre la reprsentation unique,M doit satisfaire en outre: et peut donc tre cod uniquement par sa partie fractionnaire F, son bit de poids fort tant implicitement 1:

    21

  • Format virgule flottante IEEE 754

    Simple prcision (N=32 bits) : float

    Double prcision (N=64 bits) : double

    ES Mx 2)1( =

    Signe S (1 bit)

    Exposant E (8 bits)en binaire dcal (cod par le non-sign E+127)

    Fraction F (23 bits), partie fractionnaire de la mantisseMantisse M sur 24 bits non-signs

    Double prcision (N=64 bits) : double

    float double

    Signe S (1 bit)

    Exposant E (11 bits)cod par E+1023

    Fraction F (52 bits) M sur 53 bits

    166

    Mantisse M sur 24 bits non-signs

    Cas spciauxZro: tous les bits 0Underflow: exposant = 00002Overflow: exposant = 11112

    M sur 53 bits

  • Dynamique en format flottant

    Pour le codage en virgule flottantela dynamique est conditionne par le nombre de bits de lexposant:

    ( ) ( ){ }11loglog11log2 max22max2 ++++ xexe

    12 )12(max = e

    x

    Do la condition :

    ( ) ( ){ }11loglog11log2 max22max2 ++++ xex

    167

    En pratique, la dynamique est beaucoup moins contraignante en virgule flottante quen virgule fixe, et requiert donc moins dattention.

  • Virgule flottante par bloc

    Simulation de la reprsentation virgule flottante avec un DSP virgule fixe

    ; Laccumulateur A contient

    ; une valeur sur 40 bits

    EMx 2=

    virgule fixe La mantisse M est un rel sign

    de [-1, 1]cod au format Qm-1 sur m bits

    Un autre contient lexposant E

    Lexposant est constant pour un bloc de donnes

    Les calculs se font sur les mantisses, puis les rsultats sont

    ; Calcule lexposant de A

    ; et le stocke dans T

    EXP A

    ; Normalise A

    ; en fonction de T

    NORM A

    ; Stocke:mantisses, puis les rsultats sont mis lchelle en fonction de l exposant Dans ce cas, la normalisation est

    plutt

    168

    ; - la mantisse dans *AR3

    STL A,*AR3; - lexposant dans *AR4

    ST T,*AR4

    Passage de la virgule fixe la virgule flottante simule sur deux entiers

    (ASM C54x)

    15.0

  • Mise en uvreMise en uvre

    de filtres numriques

    Mthodologie dimplmentation Mthodologie dimplmentation

    Lookup table (LUT)

    Structures de filtres RIF et RII

    Problmes lis la quantification et la saturation

    169

  • Mthodologie d'implantation d'un filtre

    numrique

    170

  • Mthodologie d'implantation d'un filtre

    tape 0 : Conception du filtre Choix du filtre et calcul des coefficients

    tape 1 : Choix de structure Choix d'un schma d'implantation criture des quations correspondantes

    tape 2 : Choix algorithmiques Choix de l'implantation mmoire et des variables criture de l'algorithme en virgule flottante

    tape 3 : Choix numriques Choix du format Qkk criture du programme en virgule fixe

    tape 4 : Validation Dfinir un protocole de test et l'appliquer

    Etape 5 : Optimisation

    171

  • Etape 0 : Conception du filtre

    Outils de conception de filtres numriquesPar exemple, sous Matlab: Signal Processing Toolbox, outil fdatool

    172

  • Etape 0 : Conception du filtre (2)

    Conception de filtres RIF

    cfirpm Complex and nonlinear-phase equiripple FIR filter designfir1 Window-based finite impulse response filter designfir2 Frequency sampling-based finite impulse response filter designfircls Constrained least square FIR multiband filter designfircls Constrained least square FIR multiband filter designfircls1 Constrained least square, lowpass and highpass, linear phase, FIR filter desigfirls Least square linear-phase FIR filter designfirpm Parks-McClellan optimal FIR filter designfirpmord Parks-McClellan optimal FIR filter order estimationfirrcos Raised cosine FIR filter designgaussfir Gaussian FIR pulse-shaping filter designintfilt Interpolation FIR filter designkaiserord Kaiser window FIR filter design estimation parameterssgolay Savitzky-Golay filter design

    Conception de filtres RII

    buttord Butterworth filter order and cutoff frequency

    Analyse des caractristiques des filtres

    filternorm 2-norm or infinity-norm of a digital filterbuttord Butterworth filter order and cutoff frequencybutter Butterworth analog and digital filter designcheb1ord Chebyshev Type I filter ordercheby1 Chebyshev Type I filter design (passband ripple)cheb2ord Chebyshev Type II filter ordercheby2 Chebyshev Type II filter design (stopband ripple)ellipord Minimum order for elliptic filtersellip Elliptic (Cauer) filter designmaxflat Generalized digital Butterworth filter designyulewalk Recursive digital filter design

    173

    filternorm 2-norm or infinity-norm of a digital filterfreqz Frequency response of digital filtersfvtool Filter Visualization Toolgrpdelay Average filter delay (group delay)impz Impulse response of digital filtersphasedelay Phase delay response of digital filtersphasez Phase response of digital filtersstepz Step response of digital filterszerophase Zero-phase reponse of digital filterszplane Zero-pole plot

  • tape 1 : Schma et quations

    Exemple sur une cellule RII du 2e ordre

    b1

    b0

    -a1

    ynxnwn

    s

    2211

    ++=

    = nnnnwbwbwby

    wawasxwwn-1

    z-1

    174

    b2-a2

    22110 ++= nnnn wbwbwby

    wn-2

    z-1

    Forme directe II

    quations correspondantes

  • tape 2 : Variables et algorithme

    s

    coefs

    wn-1 w(n-1)

    dbufferEntres :x (contient xn)dbuffer (contient wn-1 et wn-2)coefs (contient les coefficients)

    0 0

    a1

    a2

    b2

    b1

    b0

    wn-2 w(n-2)

    tableau descoefficients

    tableau desretards

    Variable temporaire :w (recevra wn)

    Calcul

    wn s * xn a1 * w(n-1) a2 * w(n-2)

    y b0 * wn + b1 * w(n-1) + b2 * w(n-2)

    Mise jour retards

    xn

    ? puis yn

    x

    y

    coefs (contient les coefficients)1

    2

    3

    4

    5

    1

    175

    coefficientsw(n-2) w(n-1)

    w(n-1) wn

    ? puis yn y

    ? puis wn w

    variablestemporaires

    tat de la mmoirelors de l'appel de la fonction

    Sorties :y (reoit yn)dbuffer (contient wn'-1 et wn'-2 pour n'=n+1)

  • tape 3 : Format Qk et programme C

    x(n) Q15

    s Q15 int cellule(int x) {int w;

    int coefs[6];int dbuffer[2];

    ai Q15

    bi Q15

    wk Q15/* Calcul */w=((long)coefs[0]*x

    -(long)coefs[1]*dbuffer[0](long)coefs[2]*dbuffer[1]) >> 15;

    y=((long)coefs[5]*w+(long)coefs[4]*dbuffer[1]+(long)coefs[3]*dbuffer[0]) >> 15;

    /* Mise jour retards */

    int cellule(int x) {int w;int y;

    Conversion algorithme (calcul sur des rels)vers programme (calcul en format Qk)

    176

    /* Mise jour retards */dbuffer[1]=dbuffer[0];dbuffer[0]=w;

    /* Sortie */return y;

    }

    s * x

    devient

    (coefs[0]*x)>>15

    pour un rsultat en Q15

  • Aller-retour tapes 1-2-3:correction derreurs, volution des objectifs

    coefsw (n-1)

    dbuffer

    0

    Exemple: extension de lalgorithme des cellules en cascade.Limplantation mmoire ncessite une phase de conception

    s

    a11

    a12

    b12

    b11

    b10

    w1(n-1)

    w1(n-2)

    w2(n-1)

    w2(n-2)cellule 1cellule 2

    cellule 10

    1

    2

    5

    0

    1

    2+1

    2+2

    177

    a21

    a22

    b22

    b21

    b20

    cellule 2

    5+1

    5+2

    H1(z) H2(z)sx(n)

    Nouvelle structure du filtre

  • Utilisation de lookup-table (LUT)

    178

  • Principe de la LUT

    Prcalcul dune fonction calculatoirement y = g(x)

    g(x0)

    lut

    0

    k

    g(x1)

    g(x )

    1calculatoirementcomplexe Fonctions

    trigonomtriqu