26.06.2013 Views

Processeurs de traitement du signal (DSP) - Université de Savoie

Processeurs de traitement du signal (DSP) - Université de Savoie

Processeurs de traitement du signal (DSP) - Université de Savoie

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Processeurs</strong> <strong>de</strong> <strong>traitement</strong> <strong>du</strong><br />

<strong>signal</strong> (<strong>DSP</strong>)<br />

Sylvain MONTAGNY<br />

sylvain.montagny@univ-savoie.fr<br />

Bâtiment chablais, bureau 13<br />

04 79 75 86 86<br />

Retrouver tous les documents <strong>de</strong> Cours/TD/TP sur le site<br />

www.master-electronique.com


Présentation <strong>de</strong>s cours : Sommaire<br />

Cours : 13.5 h en 9 séances<br />

Chapitre 1 : Intro<strong>du</strong>ction aux systèmes <strong>de</strong> <strong>traitement</strong> numérique<br />

Chapitre 2 : Représentation numérique <strong>du</strong> <strong>signal</strong><br />

Chapitre 3 : Les unités spécifiques <strong>de</strong>s <strong>DSP</strong><br />

Chapitre 4 : Le <strong>DSP</strong> TMS320C5416<br />

Chapitre 5 : Un outil <strong>de</strong> développement logiciel, co<strong>de</strong> composer<br />

studio<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 2


Présentation TD<br />

TD : 7.5 h en 5 séances<br />

TD1 : Codage <strong>de</strong>s nombres et architecture numérique<br />

TD2 : Etu<strong>de</strong> avancée <strong>de</strong> l’architecture d’un <strong>DSP</strong>, le <strong>DSP</strong>ic30F2010<br />

TD3 : Organisation mémoire et organisation <strong>du</strong> co<strong>de</strong><br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 3


Présentation TP<br />

TP : 16h en 4 séances <strong>de</strong> 4h<br />

TP1 : Prise en main <strong>de</strong> l’environnement <strong>de</strong> programmation<br />

Co<strong>de</strong> Composer Studio<br />

TP2 : Détection <strong>de</strong> fréquence dans un <strong>signal</strong> DTMF<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 4


Examens<br />

Un contrôle final : 1h30<br />

Une note <strong>de</strong> travaux pratiques<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 5


Chapitre 1 : Intro<strong>du</strong>ction aux systèmes <strong>de</strong><br />

<strong>traitement</strong> numérique<br />

1.1 Chaîne <strong>de</strong> <strong>traitement</strong> numérique<br />

1.2 Solutions classiques <strong>de</strong> <strong>traitement</strong><br />

numérique et problématiques<br />

1.3 Le marché <strong>de</strong>s <strong>DSP</strong><br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 6


Chaîne <strong>de</strong> <strong>traitement</strong> numérique<br />

Capteurs<br />

Acquisition Numérisation <strong>DSP</strong> Reconstruction Restitution<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 7<br />

Actionneurs


Chaîne <strong>de</strong> <strong>traitement</strong> numérique<br />

Avantages<br />

Pas <strong>de</strong> dérive <strong>de</strong>s composants : Température,<br />

vieillissement, valeurs<br />

Précision : Garantie et calculable par le nombre <strong>de</strong><br />

bits<br />

Souplesse : Plusieurs tâches simultanées possibles<br />

Prédiction : Simulation sur ordinateur<br />

Prototypes : Changements par modifications <strong>du</strong><br />

logiciel<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 8


Chaîne <strong>de</strong> <strong>traitement</strong> numérique<br />

Inconvénients<br />

Coût : Elevé pour <strong>de</strong>s réalisations simples<br />

Vitesse : Faible ban<strong>de</strong> passante, vitesse <strong>de</strong> calcul<br />

faible <strong>de</strong>vant la fréquence d’échantillonnage parfois<br />

élevée<br />

Complexité : Réalisation à la fois matérielle et<br />

logicielle<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 9


Chaîne <strong>de</strong> <strong>traitement</strong> numérique<br />

Exemples d’applications (1)<br />

A la Maison<br />

Télévision à la <strong>de</strong>man<strong>de</strong>, Télévision Satellite, Jeu Vidéo et Réalité<br />

Virtuelle, Electroménager, Réseaux, ...<br />

DVD, HDTV, CD, DAB, DVB<br />

Au Bureau<br />

Vidéoconférence, Fax, Mo<strong>de</strong>ms, Pagers, etc.<br />

Réseaux rapi<strong>de</strong>s, Sans-fil (WLAN, WiFi, etc.)<br />

ATM, ISDN, ADSL<br />

Sur la route<br />

Téléphone cellulaires, Comman<strong>de</strong> vocale, Radar et Sonar, GPS et<br />

traceur <strong>de</strong> route, Fax/Mo<strong>de</strong>ms sans-fil, Véhicules intelligents, etc.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 10


Chaîne <strong>de</strong> <strong>traitement</strong> numérique<br />

Exemples d’applications (2)<br />

Télécommunications : détection <strong>de</strong><br />

tonalité<br />

697 Hz<br />

770 Hz<br />

852 Hz<br />

941 Hz<br />

1 2 3<br />

4 5 6<br />

7 8 9<br />

* 0 #<br />

1209 Hz 1336 Hz 1477 Hz<br />

Fréquences <strong>de</strong> tonalité <strong>du</strong> clavier numérique<br />

Schéma <strong>de</strong> détection<br />

<strong>de</strong> tonalité<br />

LP Filter<br />

HP Filter<br />

Limiter<br />

Limiter<br />

-0 dB<br />

-3 dB<br />

-30 dB<br />

|G| (dB)<br />

BP Filter Detector<br />

BP Filter Detector<br />

BP Filter Detector<br />

BP Filter Detector<br />

BP Filter Detector<br />

BP Filter Detector<br />

BP Filter Detector<br />

Gabarit <strong>du</strong> filtre numérique<br />

697 Hz<br />

770 Hz<br />

852 Hz<br />

941 Hz<br />

1209 Hz<br />

1336 Hz<br />

1477 Hz<br />

S1<br />

S2<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> F<br />

11<br />

F<br />

FP P2<br />

1<br />

F<br />

Fe<br />

2


Chaîne <strong>de</strong> <strong>traitement</strong> numérique<br />

Exemples d’applications (3)<br />

12


Chapitre 1 : Intro<strong>du</strong>ction aux systèmes <strong>de</strong><br />

<strong>traitement</strong> numérique<br />

1.1 Chaine <strong>de</strong> <strong>traitement</strong> numérique<br />

1.2 Solutions classiques <strong>de</strong> <strong>traitement</strong><br />

numérique et problématiques<br />

1.3 Le marché <strong>de</strong>s <strong>DSP</strong><br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 13


Problématique et solutions<br />

Filtrage numérique sur processeur classique (1)<br />

Fonction <strong>de</strong> transfert d’un filtre numérique<br />

h(<br />

z)<br />

=<br />

Programme d’un filtre numérique<br />

loop:<br />

mov *r0,x0<br />

mov *r1,x1<br />

mpy x0,x1,a<br />

add a,b<br />

mov x1,*r2<br />

inc r0<br />

inc r1<br />

inc r2<br />

<strong>de</strong>c ctr<br />

tst ctr<br />

jnz loop<br />

b0<br />

+ b1.<br />

z −1+<br />

... + bqz − q<br />

a0<br />

+ a1.<br />

z −1+<br />

... + ap.<br />

z − p<br />

Lecture <strong>de</strong>s opéran<strong>de</strong>s sources<br />

Opération MAC<br />

Vieillissement <strong>de</strong> l’échantillon<br />

Gestion <strong>de</strong>s pointeurs d’adresse<br />

Gestion <strong>de</strong> la boucle<br />

Exécution en 15 à 20 cycles<br />

14


Problématique et solutions<br />

Filtrage numérique sur processeur classique (2)<br />

Problèmes :<br />

Temps d’accès aux échantillons<br />

Temps d’accès aux coefficients<br />

Gestion <strong>de</strong>s pointeurs d’adresse<br />

Multiplication lente<br />

Stockage <strong>du</strong> résultat<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 15


Problématique et solutions<br />

Objectifs <strong>de</strong>s <strong>DSP</strong><br />

On cherche donc à :<br />

Obtenir une gestion aisée (automatisée) <strong>de</strong>s pointeurs<br />

pour les boucles<br />

Multiplier le nombre <strong>de</strong> chemin entre le processeur et la<br />

mémoire pour éviter le goulot d’étranglement<br />

Réaliser <strong>de</strong>s multiplications en 1 coup d’horloge<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 16


Problématique et solutions<br />

Exemple d’une opération<br />

MAC : Multiplication / Accumulation<br />

A ← A + (X.Y)<br />

Processeur classique:<br />

Accès mémoire X puis Y 2 cycles<br />

Multiplication 1 cycle<br />

Addition 1 cycle<br />

Processeur <strong>DSP</strong> spécialisé:<br />

Accès mémoires + MAC 1 cycle<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 17


Problématique et solutions<br />

Objectifs d’un <strong>DSP</strong><br />

Très faible coût<br />

Le coût est proportionnel à la surface <strong>du</strong> circuit<br />

Faible consommation<br />

Pmoy = K . V dd 2 . FHorloge<br />

K : facteur lié au type <strong>de</strong> processeur<br />

Une partie importante <strong>de</strong> la consommation est liée à la mémoire<br />

V dd : Tension d’alimentation <strong>du</strong> composant<br />

Gestion <strong>du</strong> temps réel<br />

Implémentation efficace <strong>de</strong>s applications <strong>de</strong> Traitement <strong>du</strong><br />

<strong>signal</strong>.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 18


Problématique et solutions<br />

Gestion <strong>du</strong> temps réel<br />

Te = Pério<strong>de</strong> d’échantillonnage<br />

T = Temps <strong>de</strong> <strong>traitement</strong><br />

Horloge<br />

acquisition<br />

Activité<br />

processeur<br />

T<br />

Te<br />

Interruption<br />

Entrée <strong>de</strong> l’échantillon Sortie <strong>du</strong> résultat<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 19<br />

t<br />

t


Problématique et solutions<br />

Solutions architecturales<br />

Compromis performance – flexibilité<br />

Cf article : Architecture reconfigurable, les processeurs <strong>du</strong> futurs<br />

Efficacité énergétique<br />

En MIPS/W<br />

100-1000 MOPS/mW<br />

ASIC<br />

Embed<strong>de</strong>d<br />

FPGA<br />

Pleia<strong>de</strong>s<br />

10-50 MOPS/mW<br />

Reconfigurable<br />

Processor<br />

2 V <strong>DSP</strong><br />

3 MOPS/mW<br />

<strong>DSP</strong><br />

E E : Efficiency : MIPS / Watt<br />

Embed<strong>de</strong>d<br />

Processor<br />

SA110<br />

0.4 MIPS/mW<br />

Alpha<br />

0.007 MIPS/mW<br />

20<br />

Flexibility


Chapitre 1 : Intro<strong>du</strong>ction aux systèmes <strong>de</strong><br />

<strong>traitement</strong> numérique<br />

1.1 Chaine <strong>de</strong> <strong>traitement</strong> numérique<br />

1.2 Solutions classiques <strong>de</strong> <strong>traitement</strong><br />

numérique et problématiques<br />

1.3 Le marché <strong>de</strong>s <strong>DSP</strong><br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 21


Le marché <strong>de</strong>s <strong>DSP</strong><br />

De 1992 à 2007<br />

Les <strong>DSP</strong> ont connu une <strong>de</strong>s plus fortes croissances <strong>du</strong><br />

marché <strong>de</strong> l’in<strong>du</strong>strie <strong>de</strong>s semi-con<strong>du</strong>cteurs.<br />

14000<br />

12000<br />

10000<br />

8000<br />

6000<br />

4000<br />

2000<br />

0<br />

1992<br />

1993<br />

1994<br />

<strong>DSP</strong> Market Trends (M$)<br />

1995<br />

1996<br />

1997<br />

1998<br />

1999<br />

2000<br />

2001<br />

2002<br />

2003<br />

2004<br />

2005<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 22<br />

2006<br />

2007


Le marché <strong>de</strong>s <strong>DSP</strong><br />

Par constructeur<br />

70%<br />

60%<br />

50%<br />

40%<br />

30%<br />

20%<br />

10%<br />

0%<br />

Texas<br />

Instruments<br />

Freescale (Agere)<br />

Chiffres 2007<br />

S ource : Forward C oncepts<br />

Wireless/<strong>DSP</strong> Market Bulletin, 4 Fevrier 2008<br />

Analog<br />

Devices<br />

Autres (NXP,<br />

NEC,<br />

65% 12% 7% 3% 13%<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 23


Le marché <strong>de</strong>s <strong>DSP</strong><br />

Historique et évolutions<br />

1 e génération 1979-1985<br />

Architecture Harvard<br />

Multiplieur câblé<br />

2 e génération 1985-1988<br />

Parallélisme<br />

Bus multiples<br />

Mémoire sur la puce<br />

3 e génération 1988-1992<br />

Virgule flottante<br />

4e génération 1992-1997<br />

Image et vidéo<br />

<strong>Processeurs</strong> faible consommation<br />

5e génération 1997-2008<br />

VLIW<br />

Hybri<strong>de</strong>s<br />

Multicore<br />

<strong>DSP</strong> + RISC<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 24


Chapitre 2 : Représentation numérique <strong>du</strong><br />

<strong>signal</strong><br />

2.1 De l’analogique au numérique<br />

2.2 Le codage <strong>de</strong>s nombres entiers<br />

2.3 Le codage <strong>de</strong>s nombres réels<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 25


De l’analogique au numérique<br />

Volts<br />

Signal Analogique<br />

Temps<br />

Discrétisation en temps<br />

Valeurs continues <strong>de</strong> tension<br />

en fonction <strong>du</strong> temps<br />

Discrétisation en temps par<br />

échantillonneur-bloqueur à la<br />

fréquence<br />

fs = 1 / Ts<br />

Signal Discrétis Discr tisé en temps<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 26<br />

T S


Valeurs continues<br />

De l’analogique au numérique<br />

Signal Echantillonné<br />

Echantillonn<br />

Discrétisation<br />

en amplitu<strong>de</strong><br />

Restriction <strong>de</strong>s instants considérés<br />

Restriction <strong>de</strong>s valeurs <strong>de</strong> magnitu<strong>de</strong><br />

possible<br />

Valeurs discrètes<br />

Signal Numéris Num risé<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 27<br />

q


De l’analogique au numérique<br />

Signal<br />

Analogique<br />

Echantillonnage<br />

Restriction <strong>de</strong>s instants<br />

considérés<br />

Fréquence d’échantillonnage<br />

fs = 1 / Ts<br />

Signal<br />

Echantillonné<br />

Quantification<br />

Signal<br />

Numérique<br />

0011100101<br />

0010010110<br />

1101001011<br />

Restriction <strong>de</strong>s valeurs <strong>de</strong><br />

magnitu<strong>de</strong> possibles<br />

Ensemble fini <strong>de</strong> valeurs<br />

quantifiées<br />

Représentables par un mot<br />

binaire <strong>de</strong> N bits<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 28


De l’analogique au numérique<br />

Caractéristiques <strong>du</strong> <strong>signal</strong> échantillonné<br />

0<br />

0<br />

fc<br />

Spectre <strong>de</strong> Fréquence Fr quence <strong>du</strong> Signal Analogique<br />

Spectre <strong>de</strong> Fréquence Fr quence <strong>du</strong> Signal d’é d’échantillonnage<br />

chantillonnage<br />

fs 2fs 3fs<br />

Spectre <strong>de</strong> Fréquence Fr quence <strong>du</strong> Signal échantillonn chantillonné<br />

fc fs 2fs 3fs<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 29


De l’analogique au numérique<br />

Théorème <strong>de</strong> Shannon<br />

Fs > 2Fc<br />

Fs = 2Fc<br />

Fs < 2Fc<br />

0 fc fs 2fs 3fs<br />

4fs<br />

0 fc fs 2fs 3fs 4fs 5fs<br />

fc fs 2fs 3fs<br />

0 4fs 5fs 6fs 7fs<br />

Repliement <strong>de</strong> spectre,<br />

donc impossible <strong>de</strong> retrouver le <strong>signal</strong> d’origine<br />

30


De l’analogique au numérique<br />

Effets <strong>du</strong> repliement <strong>de</strong> spectre<br />

Reconstitution d’un <strong>signal</strong><br />

échantillonné à fs > 2fc<br />

Reconstitution d’un <strong>signal</strong><br />

échantillonné à fs < 2fc<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 31


De l’analogique au numérique<br />

Quantification Uniforme<br />

On parle <strong>de</strong> quantification uniforme si les intervalles (valeurs<br />

<strong>du</strong> <strong>signal</strong> numérisés) sont <strong>de</strong> même longueur q ( q est le pas<br />

<strong>de</strong> quantification )<br />

L’erreur <strong>de</strong> quantification est l’écart entre la valeur réelle et la<br />

valeur quantifiée :<br />

1. Erreur <strong>de</strong> d’arrondi<br />

e ≤<br />

q<br />

2<br />

2. Erreur <strong>de</strong> saturation xvaleur max<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 32


De l’analogique au numérique<br />

1. Erreur d’arrondi<br />

Plage globale <strong>de</strong><br />

quantification<br />

q<br />

0<br />

0 1 2 3 4 5 6 7 8<br />

Temps<br />

Rapport <strong>signal</strong> sur bruit relatif à la quantification<br />

dB dB ⎛ P ⎞<br />

⎜<br />

Px<br />

⎞<br />

RSB<br />

⎟<br />

dB = Px<br />

− Pe<br />

= 10log<br />

x<br />

RSB<br />

⎜<br />

⎝ P ⎟<br />

dB = Px<br />

− Pe<br />

= 10log ⎝ P<br />

⎟<br />

e ⎠<br />

On peut montrer que le RSB se rapproche <strong>de</strong> l’expression<br />

⎟<br />

dB dB ⎛ P ⎞ x<br />

RSB = − =<br />

⎜<br />

dB Px<br />

Pe<br />

10log<br />

⎝ Pe<br />

⎠<br />

2 ⎛ 3 ⎞<br />

≈ + 6 −10log10(<br />

max ) + log10⎜<br />

⎟<br />

⎝ 2 ⎠<br />

x<br />

N P RSB<br />

dB<br />

2 ⎛ 3 ⎞<br />

dB ≈ x + 6 −10log10(<br />

max ) + log10⎜<br />

⎟<br />

⎝ 2 ⎠<br />

x<br />

N P RSB<br />

dB<br />

2 ⎛ 3 ⎞<br />

≈ + 6 −10log<br />

( ) +<br />

dB x<br />

10 max log10⎜<br />

⎟<br />

⎝ 2 ⎠<br />

x<br />

N P RSB<br />

dB<br />

dB x<br />

e<br />

9<br />

33


De l’analogique au numérique<br />

2. Erreur <strong>de</strong> saturation<br />

xmax<br />

0<br />

0 1 2 3 4 5 6 7 8<br />

Temps<br />

e<br />

9<br />

Cette erreur se pro<strong>du</strong>it<br />

lorsque l’amplitu<strong>de</strong> <strong>de</strong><br />

l’échantillon à convertir<br />

dépasse xmax ou xmin<br />

C’est une erreur non bornée,<br />

on cherche donc à minimiser<br />

la probabilité <strong>de</strong> saturation.<br />

Le RSB se dégra<strong>de</strong> très<br />

rapi<strong>de</strong>ment au-<strong>de</strong>là d'un seuil<br />

où cette probabilité est non<br />

négligeable.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 34


De l’analogique au numérique<br />

Quantification uniforme et RSB<br />

RSB (dB)<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

Quantification uniforme 16 bits sur [-1,1]<br />

pente <strong>de</strong> +1 (10dB/déca<strong>de</strong>)<br />

erreur d’arrondi<br />

saturation<br />

0<br />

-60 -50 -40 -30 -20 -10 0 10<br />

puissance <strong>du</strong> <strong>signal</strong> (dB)<br />

Quantification uniforme 16 bits signés sur [-1,1]<br />

35


De l’analogique au numérique<br />

Quantification uniforme vs logarithmique<br />

1<br />

0.5<br />

0<br />

-0.5<br />

Signal original x<br />

-1<br />

0 0.2 0.4 0.6 0.8 1<br />

1<br />

0.5<br />

0<br />

-0.5<br />

Signal quantifié x q =Q(x)<br />

-1<br />

0 0.2 0.4 0.6 0.8 1<br />

quantif. uniforme<br />

domaine linéaire<br />

1<br />

0.5<br />

0<br />

-0.5<br />

Signal original x<br />

-1<br />

0 0.2 0.4 0.6 0.8 1<br />

1<br />

0.5<br />

0<br />

-0.5<br />

Signal quantifié x q =C -1 (y q )<br />

-1<br />

0 0.2 0.4 0.6 0.8 1<br />

quantif. logarithmique<br />

domaine linéaire<br />

1<br />

0.5<br />

0<br />

-0.5<br />

Signal compressé y=C(x)<br />

-1<br />

0 0.2 0.4 0.6 0.8 1<br />

1<br />

0.5<br />

0<br />

-0.5<br />

Signal quantifié y q =Q(y)<br />

-1<br />

0 0.2 0.4 0.6 0.8 1<br />

quantif. uniforme<br />

domaine compressé<br />

36


De l’analogique au numérique<br />

Quantification Uniforme vs Logarithmique<br />

RSB (dB)<br />

45<br />

40<br />

35<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

Loi A sur 8 bits<br />

Uniforme sur 8 bits<br />

0<br />

-60 -50 -40 -30 -20 -10 0 10<br />

puissance <strong>du</strong> <strong>signal</strong> (dB)<br />

granulation<br />

saturation<br />

Loi A<br />

RSB à peu près constant<br />

sur une plage <strong>de</strong> 30 dB<br />

La compression limite les<br />

effets <strong>de</strong> la granulation<br />

Quantification uniforme<br />

L’effet <strong>de</strong> granulation est<br />

linéaire par rapport à la<br />

puissance <strong>du</strong> <strong>signal</strong><br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 37


Chapitre 2 : Représentation numérique <strong>du</strong><br />

<strong>signal</strong><br />

2.1 De l’analogique au numérique<br />

2.2 Le codage <strong>de</strong>s nombres entiers<br />

2.3 Le codage <strong>de</strong>s nombres réels<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 38


Le codage <strong>de</strong>s nombres entiers<br />

Non signées<br />

A chaque chiffre est affecté un poids exprimé en puissance <strong>de</strong> 2 :<br />

Exemple<br />

( 101 ) 2 1.2 2 + 0.2 1 + 1.2 0 = ( 5 ) 10<br />

∑ − N<br />

1<br />

i<br />

=<br />

0<br />

x = ∑ −<br />

x = ∑ −<br />

x<br />

=<br />

Signées : Complément à 2<br />

C’est le format le plus utilisé en arithmétique binaire. Le bit <strong>de</strong> poids fort<br />

représente le signe<br />

Nombre positif : codé comme un non-signé<br />

Nombre négatif : codé par son C2 (Inversion <strong>de</strong>s bits puis<br />

ajout <strong>de</strong>1)<br />

b<br />

2<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 39<br />

i<br />

i


Le codage <strong>de</strong>s nombres entiers<br />

Entiers signés : Format complément à 2<br />

2 1 N −<br />

−<br />

Dynamique<br />

1<br />

1<br />

2 −<br />

− N<br />

Signe<br />

Nombre Codage<br />

3<br />

2<br />

1<br />

0<br />

-1<br />

-2<br />

-3<br />

-4<br />

0<br />

0<br />

0<br />

0<br />

1<br />

1<br />

1<br />

1<br />

Format le plus utilisé en arithmétique binaire<br />

1<br />

1<br />

0<br />

0<br />

1<br />

1<br />

0<br />

0<br />

1<br />

0<br />

1<br />

0<br />

1<br />

0<br />

1<br />

0<br />

Complément à 2 <strong>de</strong> x :<br />

C2(x) = 2 N –x<br />

Implantation efficace :<br />

Inversion <strong>de</strong>s bits puis ajout <strong>de</strong> 1<br />

C2(x) = C1(x) + 1<br />

40


Le codage <strong>de</strong>s nombres entiers<br />

Propriétés <strong>du</strong> codage en complément à 2<br />

Représentation “circulaire”<br />

En ajoutant 1 à la plus<br />

gran<strong>de</strong> valeur positive on<br />

obtient la valeur négative<br />

extrême<br />

Les <strong>DSP</strong> peuvent être<br />

configurés pour opérer <strong>de</strong><br />

<strong>de</strong>ux manières:<br />

C2 pur<br />

C2 avec arithmétique <strong>de</strong><br />

saturation<br />

-2<br />

-1<br />

-3<br />

111<br />

110<br />

101<br />

000 001<br />

100<br />

010<br />

011<br />

C2 pur C2 avec saturation<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 41<br />

0<br />

-4<br />

1<br />

3<br />

2


Chapitre 2 : Représentation numérique <strong>du</strong><br />

<strong>signal</strong><br />

2.1 De l’analogique au numérique<br />

2.2 Le codage <strong>de</strong>s nombres entiers<br />

2.3 Le codage <strong>de</strong>s nombres réels<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 42


Le codage <strong>de</strong>s nombres réels<br />

La représentation <strong>de</strong>s nombres doit répondre à <strong>de</strong>ux<br />

exigences contradictoires :<br />

Précision: intervalle entre <strong>de</strong>ux rationnels codés :<br />

>>> Doit être le plus petit possible<br />

Dynamique: Rapport entre le plus grand rationnel et le plus petit<br />

rationnel codés :<br />

>>> Doit être la plus éten<strong>du</strong>e possible<br />

Dans ce contexte les unités <strong>de</strong> calcul <strong>de</strong>s <strong>DSP</strong> travaillent<br />

Soit en format fixe (notation décimale)<br />

Soit en format flottant (notation scientifique)<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 43


Le codage <strong>de</strong>s nombres réels<br />

1. Codage en virgule fixe<br />

2. Codage en virgule flottante<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 44


Le codage <strong>de</strong>s nombres réels<br />

1.Codage en virgule fixe (1)<br />

Le format d’une donnée ne varie pas au cours <strong>du</strong> temps<br />

Représentation : partie entière - partie fractionnaire<br />

-2 m-1<br />

x = ( −2)<br />

2 1 2 0<br />

S bm-1 bm-2 b1 b0 b-1 b-2 b-n+2 b-n+1 b-n Partie entière codée en C à 2 Partie fractionnaire<br />

m 1<br />

m 1<br />

S ∑<br />

i n<br />

−<br />

−<br />

+<br />

= −<br />

b<br />

2 -1<br />

i<br />

2<br />

i<br />

2 -2<br />

CA2<br />

2 -n<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 45


Le codage <strong>de</strong>s nombres réels<br />

1. Codage en virgule fixe (2)<br />

Propriétés:<br />

Partie fractionnaire codée sur k bits<br />

Partie entière codée sur N-k bits en C2<br />

Définition "format Q k " :<br />

La représentation Q k <strong>du</strong> réel x correspond à la<br />

représentation CA2 <strong>de</strong> l'entier y tel que:<br />

k<br />

y =<br />

round( 2 x)<br />

Q 0 désigne le cas particulier <strong>de</strong>s entiers signés en CA2<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 46


Le codage <strong>de</strong>s nombres réels<br />

1. Codage en virgule fixe (3)<br />

Si on ne précise pas le format Q k , un nombre<br />

binaire peut représenter plusieurs valeurs.<br />

Exemple : 01011101 peut représenter :<br />

Q2 : 23.25<br />

Q4 : 5.8125<br />

Q7 : 0.7265625<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 47


Le codage <strong>de</strong>s nombres réels<br />

1. Codage en virgule fixe (4)<br />

Exemple: Q 5 sur 8 bits<br />

Partie entière codé sur 3 bits (dont 1 <strong>de</strong> signe)<br />

Partie fractionnaire codée sur 5 bits<br />

Valeurs comprises entre -4 et +3.96875<br />

Erreur maximale q /2 = 2 -6 si arrondi au plus proche<br />

48


Le codage <strong>de</strong>s nombres réels<br />

1. Codage en virgule fixe (5)<br />

2<br />

-4 1 0 0<br />

0 21 -22 #/Poids ,<br />

-3.96875<br />

0<br />

3.9375<br />

3.96875<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

1<br />

0<br />

0<br />

1<br />

1<br />

2 -1<br />

0<br />

0<br />

0<br />

1<br />

1<br />

2 -2<br />

0<br />

0<br />

0<br />

1<br />

1<br />

2 -3<br />

0<br />

0<br />

0<br />

1<br />

1<br />

2 -4<br />

0<br />

0<br />

0<br />

1<br />

1<br />

2 -5<br />

0<br />

1<br />

0<br />

0<br />

1<br />

49


Le codage <strong>de</strong>s nombres réels<br />

1. Codage en virgule fixe (6)<br />

Précision: quantification uniforme <strong>de</strong> pas q<br />

q=2 -k<br />

Dynamique:<br />

-2 N-k-1 >> 2 N-k-1 -2 -k<br />

Exemple format sur 16 bits:<br />

Quel format faut-il pour représenter tous les réels :<br />

entre -1 et 1?<br />

Entre -8 et 8<br />

Entre -200 et 200<br />

>>Donner la précision <strong>de</strong> chaque codage.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 50


Le codage <strong>de</strong>s nombres réels<br />

2. Codage en virgule flottante<br />

Virgule flottante<br />

Représentation : exposant - mantisse<br />

La mantisse et l’exposant sont représenter eux même en CA2.<br />

Ils peuvent donc prendre <strong>de</strong>s valeurs négatives.<br />

dE-1 d1 d0 cM-1 c2 c1 c0 Exposant<br />

x = Mantisse . 2<br />

Mantisse<br />

Exposant<br />

Norme IEEE :<br />

Exposant sur 8 bits<br />

Mantisse sur 24 bits<br />

1 ≤ |Mantisse|


Le codage <strong>de</strong>s nombres réels<br />

Comparaison fixe - flottant<br />

Niveau <strong>de</strong> dynamique<br />

DN ( dB)<br />

⎛ max( x)<br />

⎞<br />

= 20.<br />

log⎜<br />

⎟<br />

⎜<br />

=<br />

min( x)<br />

⎟<br />

⎝ ⎠<br />

Rapport Signal à Bruit <strong>de</strong><br />

Quantification<br />

⎛ P ⎞ s<br />

ρ dB = 10.<br />

log ⎜ =<br />

P ⎟<br />

⎝ e ⎠<br />

Dynamique en dB<br />

RSB en dB<br />

1500<br />

1000<br />

500<br />

0<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

Dynamique virgule fixe/flottante<br />

10 15 20 25 30<br />

Nombre <strong>de</strong> bits<br />

Rapport Signal à Bruit virgule fixe/flottante<br />

Virgule flottante<br />

Virgule fixe<br />

Virgule flottante<br />

Virgule fixe<br />

-50 0 50<br />

Dynamique <strong>du</strong> <strong>signal</strong> d entré e en dB<br />

52


Chapitre 3 : Les unités spécifiques <strong>de</strong>s <strong>DSP</strong><br />

3.1 Architecture générale et objectifs<br />

3.2 Unité <strong>de</strong> comman<strong>de</strong><br />

3.2 Unité <strong>de</strong> <strong>traitement</strong><br />

3.3 Unité <strong>de</strong> mémorisation<br />

3.4 Unité <strong>de</strong> communication<br />

3.5 Performance / Consommation<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 53


Architecture générale et objectifs<br />

Unité <strong>de</strong><br />

comman<strong>de</strong><br />

Mémoire<br />

interne<br />

Processeur<br />

CPU<br />

Bus internes<br />

Unités <strong>de</strong><br />

<strong>traitement</strong><br />

Unité <strong>de</strong><br />

Communication<br />

Périphériques<br />

et mémoire externes<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 54


Architecture générale et objectifs<br />

Unité <strong>de</strong> comman<strong>de</strong><br />

Rôle :<br />

Permet <strong>de</strong> séquencer le déroulement <strong>de</strong>s instructions<br />

Objectifs pour être performant<br />

Pilotage <strong>de</strong> chaque mo<strong>du</strong>le <strong>du</strong> <strong>DSP</strong> indépendamment les uns <strong>de</strong>s<br />

autres<br />

Gestion efficace <strong>de</strong>s boucles<br />

Encodage <strong>de</strong>s instructions :<br />

Minimiser la taille <strong>de</strong>s instructions<br />

Enco<strong>de</strong>r le maximum <strong>de</strong> parallélisme<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 55


Architecture générale et objectifs<br />

Unité <strong>de</strong> <strong>traitement</strong><br />

Rôle :<br />

Assure les <strong>traitement</strong> nécessaire àl’exécution <strong>de</strong>s instructions<br />

Objectifs pour être performant<br />

Réaliser efficacement les <strong>traitement</strong>s typiques<br />

1 MAC par cycle<br />

1 décalage <strong>de</strong> N bits (droite ou gauche) en 1 cycle<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 56


Architecture générale et objectifs<br />

Unité <strong>de</strong> mémorisation<br />

Rôle :<br />

Mémoire <strong>de</strong> programme<br />

Mémoire <strong>de</strong> donnée<br />

Objectifs pour être performant<br />

Alimenter efficacement en données l’unité <strong>de</strong> <strong>traitement</strong> afin<br />

<strong>de</strong> ne pas la ralentir<br />

Gérer efficacement les pointeurs d’adresse<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 57


Architecture générale et objectifs<br />

Unité <strong>de</strong> communication<br />

Rôle :<br />

Contrôle les accès aux données, aux instructions externes ou<br />

à d'autres processeurs<br />

Objectifs pour être performant<br />

Limiter l’utilisation <strong>de</strong>s ressources processeur lors <strong>de</strong> ces<br />

accès.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 58


Chapitre 3 : Les unités spécifiques <strong>de</strong>s <strong>DSP</strong><br />

3.1 Architecture générale et objectifs<br />

3.2 Unité <strong>de</strong> comman<strong>de</strong><br />

3.2 Unité <strong>de</strong> <strong>traitement</strong><br />

3.3 Unité <strong>de</strong> mémorisation<br />

3.4 Unité <strong>de</strong> communication<br />

3.5 Performance / Consommation<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 59


Unité <strong>de</strong> comman<strong>de</strong><br />

Chef d’orchestre <strong>du</strong> CPU<br />

Chargement <strong>de</strong>s instructions<br />

Compteur <strong>de</strong> programme (PC)<br />

Registre d’instruction<br />

Cache d’instructions<br />

Séquençage<br />

Décodage <strong>de</strong>s instructions<br />

Pilotage les autres unités<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 60


Unité <strong>de</strong> comman<strong>de</strong><br />

Le pipeline<br />

La gestion <strong>de</strong>s boucles<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 61


Les phases <strong>du</strong> Pipeline<br />

P (Prefecth) - Generate program address = Incrémentation <strong>du</strong> compteur ordinal<br />

F (Fetch) - Get Opco<strong>de</strong> = Lecture <strong>du</strong> co<strong>de</strong> <strong>de</strong> l’instruction en mémoire<br />

D (Deco<strong>de</strong>) - Deco<strong>de</strong> instruction = Décodage <strong>de</strong> l’instruction<br />

A (Access) - Generate read address = Calcul <strong>de</strong>s adresses <strong>de</strong>s opéran<strong>de</strong>s<br />

= Calcul <strong>de</strong> l’adresse <strong>du</strong> résultat<br />

R (Read) - Read operands = Lecture <strong>de</strong>s opéran<strong>de</strong>s en mémoire<br />

X ( Execute) = Exécution <strong>de</strong> l’instruction<br />

= Ecriture <strong>du</strong> résultat l’adresse calculée<br />

P F D A R X<br />

Full Pipeline : Toutes les unités<br />

matérielles <strong>du</strong> <strong>DSP</strong> sont en activités<br />

P<br />

F<br />

P<br />

D A R X<br />

F<br />

P<br />

D A R X<br />

F<br />

P<br />

D A R X<br />

F<br />

P<br />

D A R X<br />

F<br />

D A R X


Unité <strong>de</strong> comman<strong>de</strong><br />

Séquentiel vs pipeline<br />

t1 t2 t3 t4 t5 t6 t7 t8<br />

Instruction Instruction 1 Instruction 2<br />

Fetch F1 F2<br />

Deco<strong>de</strong> D1 D2<br />

Read R1 R2<br />

Execute X1 X2<br />

t1 t2 t3 t4 t5 t6 t7 t8<br />

Fetch F1 F2 F3 F4 F5 … … …<br />

Deco<strong>de</strong> D1 D2 D3 D4 D5 … …<br />

Read R1 R2 R3 R4 R5 …<br />

Execute X1 X2 X3 X4 X5<br />

Amorçage <strong>du</strong> pipeline<br />

Exécution séquentielle<br />

Exécution avec pipeline : entrelacement <strong>de</strong>s instructions<br />

CPU<br />

CPU<br />

F1 -<br />

D1 -<br />

R1 -<br />

X1<br />

-<br />

F4 F5<br />

D3 D4<br />

R2 R3<br />

X1 X2<br />

MemP<br />

MemD<br />

MemD<br />

MemP<br />

MemD<br />

MemD<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 63


Unité <strong>de</strong> comman<strong>de</strong><br />

Exemple <strong>de</strong> rupture <strong>de</strong> séquence<br />

Co<strong>de</strong> à exécuter :<br />

1: Instr1<br />

2: Si B==1 Alors GOTO 10:<br />

3: Instr3<br />

4: Instr4<br />

5: Instr5<br />

6: Instr6<br />

Si prédiction incorrecte (B=1) Si prédiction correcte (B≠1)<br />

t1 t2 t3 t4 t5 t6 t7 t8<br />

F F1 F2 F3 F4 F5 F10 F11 F12<br />

D D1 D2 D3 D4 ! D10 D11<br />

R R1 R2 R3 ! ! R10<br />

X X1 X2 ! ! !<br />

Evaluation <strong>du</strong> prédicat (B==1)<br />

=> rupture <strong>de</strong> séquence<br />

…<br />

10: Instr10<br />

11: Instr11<br />

12: Instr12<br />

…<br />

Etat <strong>du</strong> pipeline avec prédiction que B≠1 :<br />

Vidange <strong>du</strong> pipeline:<br />

Perte <strong>de</strong> 3 cycles<br />

t1 t2 t3 t4 t5 t6 t7 t8<br />

F F1 F2 F3 F4 F5 F6 … …<br />

D D1 D2 D3 D4 D5 D6 …<br />

R R1 R2 R3 R4 R5 R6<br />

X X1 X2 X3 X4 X5<br />

Evaluation <strong>du</strong> prédicat (B==1)<br />

=> pas <strong>de</strong> rupture


Unité <strong>de</strong> comman<strong>de</strong><br />

Exemple <strong>de</strong> conflit d'accès mémoire<br />

Programmes et Données dans la même mémoire à 1 accès par cycle<br />

t1 t2 t3 t4 t5 t6 t7 t8<br />

Fetch F1 F2 conflit conflit F3 F4 ! !<br />

Deco<strong>de</strong> D1 D2 ! ! D3 D4 !<br />

Read R1 R2 ! ! R3 R4<br />

Execute X1 X2 ! ! X3<br />

Conflit pour l’accès mémoire entre Fetch et Read<br />

Les lectures <strong>de</strong> données R1/R2 empêchent les chargements d'instruction F3/F4<br />

Ré<strong>du</strong>ctions <strong>de</strong>s performances d'au moins 50%<br />

Problème réglé si<br />

Mémoire multi-accès<br />

Programmes et Données dans <strong>de</strong>s mémoires différentes (ou multi-bloc)<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 65<br />

8


Unité <strong>de</strong> comman<strong>de</strong><br />

Effets <strong>du</strong> pipeline lors <strong>du</strong> débogage<br />

Co<strong>de</strong> à exécuter :<br />

1: A=1<br />

2: B=1<br />

3: C=1<br />

… NOP …<br />

10: A=2<br />

11: B=2<br />

12: C=2<br />

13: D=2<br />

14: E=2<br />

…<br />

Watch Window<br />

A 1<br />

B 1<br />

C 1<br />

Watch Window<br />

A 1 ???<br />

B 1<br />

C 1<br />

Watch Window<br />

A 2 !!!<br />

B 1<br />

C 1<br />

Watch Window<br />

A 2<br />

B 2<br />

C 1<br />

La flèche indique la position <strong>du</strong> PC<br />

Plusieurs cycles sont nécessaires<br />

avant que la variable soit modifiée :<br />

Cela n’intervient qu’à l’étape X<br />

(exécution)<br />

t1 t2 t3 t4 t5 t6 t7 t8<br />

F F10 F11 F12 F13 F14 … … …<br />

D D10 D11 D12 D13 D14 … …<br />

R R10 R11 R12 R13 R14 …<br />

X A=2 B=2 C=2 D=2 E=2


Programme 1<br />

Visualisation <strong>de</strong>s variables<br />

Programme 2<br />

Visualisation <strong>de</strong>s variables


Unité <strong>de</strong> comman<strong>de</strong><br />

Utilisation <strong>de</strong>s ressources par le pipeline<br />

Etage<br />

pipeline<br />

P<br />

F<br />

D<br />

A<br />

R<br />

X<br />

Generate program address<br />

Get Opco<strong>de</strong><br />

Deco<strong>de</strong> instruction<br />

Generate read address<br />

Read Operand<br />

Generate write address<br />

Execute instruction<br />

Write result<br />

Description<br />

Partie hardware utilisée<br />

PC<br />

Program memory<br />

Deco<strong>de</strong>r<br />

ARs, ARAU<br />

Data memory<br />

ARs, ARAU<br />

MAC, ALU<br />

Data Memory<br />

68


Unité <strong>de</strong> comman<strong>de</strong><br />

Retards dans le pipeline<br />

Le pipeline atteint son plein ren<strong>de</strong>ment une<br />

fois qu’il est “rempli”<br />

Un retard peut se pro<strong>du</strong>ire<br />

S’il existe un conflit <strong>de</strong> ressources (retard ponctuel)<br />

accès à la mémoire<br />

utilisation <strong>de</strong>s bus<br />

En cas <strong>de</strong> rupture <strong>de</strong> séquence (vidange <strong>du</strong><br />

pipeline)<br />

branchement non prévu<br />

appel <strong>de</strong> sous-programme<br />

interruption<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 69


Unité <strong>de</strong> comman<strong>de</strong><br />

Gestion <strong>de</strong>s boucles<br />

L’objectif est d’optimiser le <strong>traitement</strong> <strong>de</strong>s<br />

boucles <strong>de</strong> petite taille<br />

Initialisation <strong>de</strong>s paramètres <strong>de</strong> la boucle en 1 instruction<br />

Pas d'instructions supplémentaires pour la gestion <strong>de</strong> la fin<br />

<strong>de</strong> la boucle<br />

Exemple boucle mono-instruction<br />

MOVE #16,B<br />

LOOP MAC (R0)+,(R4)+,A<br />

DEC B<br />

JNE LOOP<br />

RPT #16<br />

MAC (R0)+,(R4)+,A<br />

Boucle logicielle Boucle matérielle<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 70


Unité <strong>de</strong> comman<strong>de</strong><br />

Exemple : Calcul d’un filtre RIF<br />

Gestion matérielle <strong>de</strong>s boucles :<br />

Unité <strong>de</strong> génération d’adresses programme<br />

A=0;<br />

for (i=0; i> 15;<br />

A = A + B[i] * X[i];<br />

Co<strong>de</strong> C<br />

Unité MAC matérielle<br />

+ Chargement simultané<br />

<strong>de</strong> l’instruction et <strong>de</strong>s<br />

opéran<strong>de</strong>s<br />

Unité <strong>de</strong> génération<br />

d’adresses données<br />

y<br />

∑ − N 1<br />

i=<br />

0<br />

( n)<br />

= b(<br />

i)<br />

x(<br />

n − i)<br />

B[i] X[i]<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 71<br />

Y<br />

SSBX FRCT<br />

STM #B, AR2<br />

STM #X, AR3<br />

STM #Y, AR4<br />

RPTZ A, #N-1 (x1)<br />

MAC *AR2+,*AR3+, A (xN)<br />

STH A, *AR4 (x1)<br />

Equivalent ASM


Unité <strong>de</strong> comman<strong>de</strong><br />

Optimisation <strong>du</strong> compilateur C<br />

#<strong>de</strong>fine N 256<br />

short in[N];<br />

short out[N];<br />

void toto()<br />

{<br />

int i;<br />

}<br />

Co<strong>de</strong> C<br />

for (i=0; i


Unité <strong>de</strong> comman<strong>de</strong><br />

Unité <strong>de</strong> contrôle <strong>du</strong> C50<br />

• PC sur 16 bits<br />

• pile <strong>de</strong> 8 * 16 bits<br />

• PFC,IR: pour le pipeline<br />

• Registres <strong>de</strong> status ST0,ST1,PMST<br />

• Gestion <strong>de</strong>s boucles<br />

• RPTC: repeat instruction<br />

• BRCR: repeat bloc<br />

• Interruptions :<br />

• IMR: masque interruptions<br />

• IFR: flags interruptions<br />

• BMAR: bloc move<br />

• GREG: mémoire globale<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 73


Chapitre 3 : Les unités spécifiques <strong>de</strong>s <strong>DSP</strong><br />

3.1 Architecture générale et objectifs<br />

3.2 Unité <strong>de</strong> comman<strong>de</strong><br />

3.2 Unité <strong>de</strong> <strong>traitement</strong><br />

3.3 Unité <strong>de</strong> mémorisation<br />

3.4 Unité <strong>de</strong> communication<br />

3.5 Performance / Consommation<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 74


Unité <strong>de</strong> <strong>traitement</strong><br />

<strong>DSP</strong> virgule fixe / virgule flottante<br />

Il existe <strong>de</strong>ux types <strong>de</strong> <strong>DSP</strong> :<br />

Les <strong>DSP</strong>s à virgule fixe traitent <strong>de</strong>s nombres<br />

entiers seulement<br />

Les <strong>DSP</strong>s à virgule flottante traitent <strong>de</strong>s<br />

nombres réels codés sous la forme mantisse<br />

exposant.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 75


Unité <strong>de</strong> <strong>traitement</strong><br />

<strong>DSP</strong> virgule fixe (1)<br />

Arithmétique :<br />

Dynamique limitée : [-X max et X max ] : Possibilité <strong>de</strong><br />

débor<strong>de</strong>ment nécessité <strong>de</strong> recadrer les données<br />

Développement :<br />

Temps <strong>de</strong> développement plus long : Étu<strong>de</strong> <strong>de</strong> la<br />

dynamique <strong>de</strong>s données, détermination <strong>du</strong> codage et<br />

<strong>de</strong>s recadrages<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 76


Unité <strong>de</strong> <strong>traitement</strong><br />

<strong>DSP</strong> virgule fixe (2)<br />

Architecture :<br />

Opérateurs plus simples<br />

Largeur <strong>de</strong>s données b : 16 bits<br />

Efficacité énergétique plus importante, consommation moins<br />

importante<br />

Processeur plus rapi<strong>de</strong><br />

Processeur moins cher (surface <strong>du</strong> circuit moins importante)<br />

Marché : applications grand public<br />

95% <strong>de</strong>s ventes en 96 TMS320C62x :<br />

- f CLK :<br />

CLK : 300 MHz (150 MHz - 300 MHz)<br />

- On Chip Memory 72 Kbytes 896 Kbytes<br />

- Price : $9<br />

TMS320C64x :<br />

- f CLK :<br />

CLK : 1 GHz (300 MHz - 1GHz)<br />

- On Chip Memory 160 Kbytes 1056 Kbytes<br />

77<br />

- Price : $18


Unité <strong>de</strong> <strong>traitement</strong><br />

<strong>DSP</strong> virgule flottante (1)<br />

Arithmétique :<br />

Dynamique importante : 1500 dB pour 32 bits<br />

Développement<br />

Temps <strong>de</strong> développement plus court<br />

Recadrage <strong>de</strong>s données assuré par le processeur<br />

Compilateur <strong>de</strong> langage <strong>de</strong> haut niveau plus efficace : plus<br />

gran<strong>de</strong> portabilité<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 78


Unité <strong>de</strong> <strong>traitement</strong><br />

<strong>DSP</strong> virgule flottante (2)<br />

Architecture :<br />

Largeur <strong>de</strong>s données : 32 bits<br />

Opérateurs plus complexes (gestion <strong>de</strong> la mantisse et <strong>de</strong><br />

l’exposant)<br />

Marché<br />

Processeur plus cher et consommant plus<br />

Applications nécessitant une gran<strong>de</strong> dynamique :<br />

audionumérique<br />

Applications avec <strong>de</strong>s faibles volumes<br />

TMS320C67x :<br />

- f CLK :<br />

CLK : 300 MHz (100 MHz - 300 MHz)<br />

- On Chip Memory 72 Kbytes 264 Kbytes<br />

- Price : $14 105<br />

79


Unité <strong>de</strong> <strong>traitement</strong><br />

Fonctions typiques<br />

Quelques fonctions à réaliser en 1 cycle d’horloge :<br />

Filtrage, convolution<br />

Adaptation<br />

y = y + x.h : MAC (multiplication-accumulation)<br />

y n = y n-1 + x.h : MAD (multiplication-addition)<br />

FFT, multiplication complexe<br />

Viterbi<br />

xr = xr.wr - xi.wi<br />

xi = xr.wi + xi.wr<br />

a1 = x1 + x2; a2 = y1 + y2;<br />

y = (a1>a2) ? a1 : a2 : ACS<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 80


Unité <strong>de</strong> <strong>traitement</strong><br />

Exemple<br />

Filtre numérique FIR sur N points<br />

x(n)<br />

y(<br />

n)<br />

x<br />

=<br />

∑ − N 1<br />

i=<br />

0<br />

h(<br />

i).<br />

x(<br />

n−<br />

i)<br />

= x(<br />

n)<br />

∗h(<br />

n)<br />

D D D D<br />

x<br />

h(0) h(1) h(2) h(3) h(4)<br />

+<br />

x<br />

+<br />

Cellule<br />

x<br />

+<br />

y(n)<br />

Objectif : <strong>traitement</strong> d’une cellule par cycle<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 81<br />

x<br />

+


Unité <strong>de</strong> <strong>traitement</strong><br />

Eléments <strong>de</strong> l’unité <strong>de</strong> <strong>traitement</strong> (1)<br />

Opérateurs<br />

Multiplieur câblé<br />

Multiplication en 1 cycle ou pipelinée (1 résultat <strong>de</strong> multiplication<br />

par cycle)<br />

Le résultat est fourni directement à l’UAL ou il est stocké dans un<br />

registre (P register)<br />

Largeur <strong>de</strong>s opéran<strong>de</strong>s source : b<br />

résultat : b multiplication =2.b<br />

Unités <strong>de</strong> saturation ou d’arrondi<br />

Unités spécifiques<br />

Unité <strong>de</strong> manipulation <strong>de</strong> bit, Viterbi, ...<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 82


Unité <strong>de</strong> <strong>traitement</strong><br />

Eléments <strong>de</strong> l’unité <strong>de</strong> <strong>traitement</strong> (2)<br />

U.A.L.<br />

Opérations arithmétiques : addition, soustraction,<br />

incrémentation, négation<br />

Opérations logiques : and, or, not<br />

Additionneur indépendant <strong>de</strong> l’UAL<br />

Registres à décalage (recadrage <strong>de</strong>s données)<br />

spécialisé : réalisation <strong>de</strong> quelques décalages<br />

prédéfinis en //<br />

en barillet : réalisation d ’un décalage quelconque<br />

en 1 cycle<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 83


Unité <strong>de</strong> <strong>traitement</strong><br />

Éléments <strong>de</strong> l’unité <strong>de</strong> <strong>traitement</strong> (3)<br />

Unités <strong>de</strong> stockage <strong>de</strong> l’unité <strong>de</strong> <strong>traitement</strong><br />

Registres opéran<strong>de</strong>s<br />

Stockage <strong>de</strong>s opéran<strong>de</strong>s sources ou <strong>de</strong>s résultats intermédiaires<br />

Registres d’accumulation<br />

Stockage <strong>du</strong> résultat <strong>de</strong> l ’additionneur<br />

Nombre <strong>de</strong> registres d’accumulation limité (1 à 4)<br />

Données stockées en double précision<br />

Possibilité <strong>de</strong> bits <strong>de</strong> gar<strong>de</strong> pour stocker les bits supplémentaires<br />

issus d ’accumulations successives b add =b multiplication + b gar<strong>de</strong><br />

Bits <strong>de</strong> gar<strong>de</strong> ACC H ACC L<br />

b gar<strong>de</strong><br />

2.b<br />

84


Unité <strong>de</strong> <strong>traitement</strong><br />

Structure <strong>de</strong> l’unité <strong>de</strong> <strong>traitement</strong> MAC<br />

b add<br />

b<br />

+<br />

AA<br />

Accumulateur<br />

Sat /Arr<br />

×<br />

P<br />

b mult<br />

BB<br />

b<br />

MAC<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 85


Unité <strong>de</strong> <strong>traitement</strong><br />

Exemple : TMS320C54x<br />

DB PB CB DB CB DB CB EB<br />

DB<br />

1 multiplieur 16*16 bits<br />

Op source 1 : registre T<br />

Op source 2 : mémoire<br />

Op <strong>de</strong>stination :<br />

1 additionneur 40 bits<br />

1 ALU (40 bits)<br />

2 registres d ’accumulation 40<br />

bits<br />

1 registre à décalage en<br />

barillet<br />

1 unité dédiée à l ’algorithme<br />

<strong>de</strong> Viterbi<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 86


Chapitre 3 : Les unités spécifiques <strong>de</strong>s <strong>DSP</strong><br />

3.1 Architecture générale et objectifs<br />

3.2 Unité <strong>de</strong> comman<strong>de</strong><br />

3.2 Unité <strong>de</strong> <strong>traitement</strong><br />

3.3 Unité <strong>de</strong> mémorisation<br />

3.4 Unité <strong>de</strong> communication<br />

3.5 Performance / Consommation<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 87


Unité <strong>de</strong> mémorisation<br />

Les différents accès à la mémoire<br />

Exemple Filtre FIR<br />

Recherche <strong>de</strong> l’instruction<br />

Lecture <strong>de</strong> la donnée x n-k<br />

Lecture <strong>du</strong> coefficient h k<br />

Vieillissement <strong>de</strong>s données x n-k-1 = x n-k<br />

x(n)<br />

D D D D<br />

x<br />

x<br />

x<br />

x<br />

h(0) h(1) h(2) h(3) h(4)<br />

+<br />

+<br />

TAP<br />

+<br />

x<br />

+<br />

y(n)<br />

88


Unité <strong>de</strong> mémorisation<br />

Rappels : Bus<br />

Le CPU est le maître <strong>du</strong> bus<br />

Il est le seul à écrire sur les bus adresse et contrôle<br />

Le périphérique obtempère sur le bus données<br />

Lecture : il fournit la donnée <strong>de</strong>mandée<br />

Ecriture : il récupère la donnée fournie par le CPU<br />

Haute impédance : il se déconnecte <strong>du</strong> bus<br />

CPU<br />

CPU<br />

BUS<br />

adresses<br />

données<br />

contrôle<br />

Périphérique<br />

Périphérique<br />

Adresses : sélection <strong>du</strong> périphérique<br />

et localisation d’une donnée<br />

Données : valeur <strong>de</strong> la donnée à échanger<br />

Contrôle : lire / écrire / haute impédance<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 89


Unité <strong>de</strong> mémorisation<br />

Accès mémoire pour un calcul<br />

CPU<br />

(1) Charger une instruction <strong>de</strong>puis la mémoire<br />

(2) Charger les opéran<strong>de</strong>s <strong>de</strong>puis la mémoire<br />

(3) Effectuer les calculs<br />

(4) Stocker le résultat en mémoire<br />

3<br />

1<br />

2<br />

4<br />

Mémoire<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 90


Unité <strong>de</strong> mémorisation<br />

Architecture Von Neuman<br />

CPU BUS<br />

Mémoire<br />

Programme<br />

+ Données<br />

Un seul chemin d'accès à la mémoire<br />

Architecture <strong>de</strong>s processeurs d’usage général (Pentium,<br />

68000)<br />

Goulot d'étranglement pour l'accès à la mémoire<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 91


Unité <strong>de</strong> mémorisation<br />

Architecture Harvard<br />

CPU<br />

Mémoire Programme<br />

Mémoire Données<br />

Séparation <strong>de</strong>s mémoires programme et données<br />

Meilleure utilisation <strong>du</strong> CPU<br />

Chargement <strong>du</strong> programme et <strong>de</strong>s données en parallèle<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 92


Unité <strong>de</strong> mémorisation<br />

Architecture Harvard modifiée<br />

CPU<br />

Mémoire Programme<br />

Mémoire Programme<br />

+ Données<br />

Mémoire Données<br />

Mémoire programme contient <strong>de</strong>s données<br />

Possibilité <strong>de</strong> charger 2 données en un cycle<br />

Utilisation classique en TNS<br />

Mémoire Programme+Données → coefficients <strong>de</strong>s filtres<br />

Mémoire Données → échantillons d’entrée<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 93


Unité <strong>de</strong> mémorisation<br />

Accès mémoire multi-port<br />

CPU<br />

Mémoire Programme<br />

+ Données<br />

Mémoire Données<br />

Plusieurs bus <strong>de</strong> données<br />

Accès simultané à plusieurs données<br />

Combiné avec<br />

mémoire multi-accès (plusieurs accès à la même mémoire en un<br />

cycle)<br />

mémoire multi-blocs (accès simultané à <strong>de</strong>ux blocs <strong>de</strong> mémoire<br />

distincts)<br />

Exemple <strong>du</strong> TMS320C54xx :<br />

1 bus programme (P)<br />

2 bus <strong>de</strong> lecture <strong>de</strong>s données (C et D)<br />

1 bus d’écriture <strong>de</strong>s données (E)<br />

94


Unité <strong>de</strong> mémorisation<br />

Exemple <strong>du</strong> TMS320C5416<br />

Internal<br />

Memory<br />

Program A/D Bus (P)<br />

Data Read A/D Bus (D)<br />

Data Read A/D Bus (C)<br />

Data Write A/D Bus (E)<br />

Internal: Up to 4 accesses / cycle<br />

Exemple <strong>du</strong> TMS320C54xx :<br />

1 bus programme (P)<br />

2 bus <strong>de</strong> lecture <strong>de</strong>s données (C et D)<br />

1 bus d’écriture <strong>de</strong>s données (E)<br />

Ext’l<br />

Mem<br />

I/F<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 95<br />

A<br />

D<br />

External<br />

Memory<br />

External: 1 access / cycle<br />

up to 8M words program


Unité <strong>de</strong> mémorisation<br />

Exemple <strong>du</strong> TMS320C5416<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 97


Unité <strong>de</strong> mémorisation<br />

Exemple <strong>du</strong> TMS320C5416<br />

P Bus<br />

D Bus<br />

C Bus<br />

E Bus<br />

Program<br />

ROM<br />

Data<br />

ROM<br />

SARAM DARAM<br />

Ext’l<br />

Mem<br />

I/F<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 98<br />

A<br />

D


Unité <strong>de</strong> mémorisation<br />

Cache d'instructions<br />

cache<br />

d’instructions<br />

CPU<br />

<strong>DSP</strong><br />

Mémoire Programme<br />

+ Données<br />

Mémoire Données<br />

Cache = mémoire associative rapi<strong>de</strong><br />

Contient les <strong>de</strong>rnières instructions exécutées<br />

Utile en cas <strong>de</strong> boucle<br />

Accès aux instructions sans accès en mémoire programme<br />

Libère le bus pour <strong>de</strong>s données<br />

Pas appliqué aux données<br />

Problème <strong>de</strong> validation <strong>du</strong> temps réel<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 99


Unité <strong>de</strong> mémorisation<br />

Bus externes<br />

CPU<br />

Transfert entre les bus<br />

internes et externe par<br />

multiplexage temporel<br />

Boitier <strong>du</strong> <strong>DSP</strong><br />

MUX<br />

Mémoire Programme<br />

+ Données<br />

Mémoire Données<br />

Limitation <strong>du</strong> nombre <strong>de</strong> broches<br />

Ré<strong>du</strong>ction <strong>de</strong>s coûts<br />

Diminution <strong>de</strong>s performances lors<br />

<strong>de</strong>s accès au bus externe<br />

100


Unité <strong>de</strong> mémorisation<br />

Accès Direct à la Mémoire : DMA<br />

CPU<br />

interruptions<br />

configuration<br />

Mémoire Programme<br />

+ Données<br />

Mémoire Données<br />

DMA<br />

Accès DMA : entrées-sorties vers la mémoire interne<br />

indépendant <strong>du</strong> CPU et <strong>de</strong>s bus internes<br />

Système d'interruptions "données reçues"/"données transmises"<br />

101


Unité <strong>de</strong> mémorisation<br />

DMA et buffer ping-pong<br />

CAN<br />

McBSP2<br />

DRR<br />

PING<br />

IN<br />

13<br />

PONG<br />

IN<br />

2<br />

<strong>DSP</strong><br />

DMA4 DMA5<br />

Traitement<br />

PING<br />

OUT<br />

1<br />

PONG<br />

OUT<br />

2<br />

Buffers en mémoire Buffers en mémoire<br />

McBSP2<br />

DXR<br />

CNA<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> Source: Texas Instruments C5000 <strong>DSP</strong> Teaching Kit 102 102


Unité <strong>de</strong> mémorisation<br />

Mémoire interne sur les C54x<br />

Capacité en mémoire interne <strong>de</strong> différents modèles C54x<br />

Plusieurs types <strong>de</strong> RAM incluse sur le chip<br />

Single access (SARAM) : un accès par cycle<br />

Dual access (DARAM) : <strong>de</strong>ux accès par cycle<br />

Two-way shared : <strong>de</strong>ux accès par cycle même <strong>de</strong>puis l'extérieur<br />

DARAM découpée en blocs<br />

Accès simultané à <strong>de</strong>ux blocs <strong>de</strong> mémoire différents<br />

2x2=4 accès par cycle en théorie (en réalité limité par le reste <strong>de</strong> l'architecture)<br />

sources : "TMS320C54x <strong>DSP</strong> Functional Overview", SPRU307A, Texas Instrument<br />

"TMS320VC5416 DSK Reference Technical", Spectrum Digital<br />

Découpage en blocs<br />

103


Unité <strong>de</strong> mémorisation<br />

Les mo<strong>de</strong>s d’adressages<br />

Adressage Immédiat<br />

Adressage Direct<br />

Adressage Indirect par registre<br />

Support pour l’adressage circulaire<br />

Accès aux registres mappés en mémoire<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 104


Unité <strong>de</strong> mémorisation<br />

Adressage immédiat<br />

La donnée est stockée directement dans l’instruction<br />

Adressage court (instruction sur 1 mot)<br />

Exécution en 1 cycle LD #6, DP<br />

Valeur stockée sur 3, 5, 8 ou 9 bits<br />

Utiliser pour l ’initialisation <strong>de</strong>s registres <strong>de</strong> petites tailles<br />

Adressage long (instruction sur 2 mots) :<br />

Exécution en 2 cycles STM #1234h,AR2<br />

Valeur stockée sur 16 bits<br />

Utiliser pour l’initialisation <strong>de</strong>s registres ARi par exemple<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 105


Unité <strong>de</strong> mémorisation<br />

Adressage direct<br />

L’adresse <strong>de</strong> la donnée est stockée dans l’instruction<br />

Adressage absolu :<br />

L’adresse complète 16 bits est stockée dans l’instruction<br />

L ’instruction doit être codée sur plusieurs mots<br />

Adressage paginé :<br />

L’adresse est composée <strong>de</strong> <strong>de</strong>ux parties<br />

Partie stockée dans un<br />

registre<br />

. pointeur <strong>de</strong> page: DP<br />

. pointeur <strong>de</strong> pile: SP<br />

a 15<br />

a 8 A 7 a 6 a 5 a 0<br />

Partie stockée dans<br />

l’instruction<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 106


Unité <strong>de</strong> mémorisation<br />

Adressage indirect : *ARx (1)<br />

L’instruction contient un numéro <strong>de</strong> registre auxiliaire<br />

ARx qui contient l’adresse en mémoire ou se trouve la<br />

donnée<br />

Analogue aux pointeurs en C<br />

Possibilité <strong>de</strong> modifier la valeur <strong>du</strong> registre<br />

MPY *AR4, *AR3, A ; Multiplication <strong>de</strong> la donnée à l’adresse contenue dans AR4<br />

; par celle pointée par AR3 et stockage <strong>du</strong> résultat en A<br />

; On remarque l’accès simultané à <strong>de</strong>ux données<br />

; A ← dm(AR4) × dm(AR3)<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 107


Unité <strong>de</strong> mémorisation<br />

Adressage indirect : exemple (1)<br />

Registre d’adresse (AR) pointant sur les données<br />

LD *AR1, A<br />

Possibilités <strong>de</strong> post modifications :<br />

linéaire : ARx= ARx ± 1<br />

LD *AR1+, A<br />

addr = AR1<br />

AR1 = AR1 + 1<br />

addr = AR1 (A (A *AR1)<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 108


Unité <strong>de</strong> mémorisation<br />

Adressage indirect : exemple (2)<br />

x5<br />

x 0<br />

in<strong>de</strong>xé : ARx= ARx ± MR (MR: registre d’in<strong>de</strong>x)<br />

LD *AR1+0, A<br />

mo<strong>du</strong>lo : (ARx= ARx ± 1) N<br />

x 1<br />

x 2<br />

x 3<br />

LD *AR1+% ,A<br />

bit-reverse : FFT<br />

addr = AR1<br />

AR1 = AR1 + AR0<br />

addr = AR1<br />

AR1 = (AR1 + 1) mo<strong>du</strong>lo BK<br />

(BK) specifies the size of the circular buffer.<br />

addr = AR1<br />

AR1 = bitrev(AR1 + AR0)<br />

LD *AR1+0B ,A<br />

After access, AR0 is ad<strong>de</strong>d to ARx with reverse carry (rc) propagation.<br />

109


Unité <strong>de</strong> mémorisation<br />

Adressage indirect : exemple (3)<br />

Option Syntax Action Affected by:<br />

No Modification *ARn no modification to ARn<br />

Increment / *ARn+ post increment by 1<br />

Decrement *ARn- post <strong>de</strong>crement by 1<br />

In<strong>de</strong>xed *ARn+0 post increment by AR0 AR0<br />

*ARn-0 post <strong>de</strong>crement by AR0<br />

Circular *ARn+% post increment by 1 - circular BK<br />

*ARn-% post <strong>de</strong>crement by 1 - circular<br />

*ARn+0% post increment by AR0 - circular BK, AR0<br />

*ARn-0% post <strong>de</strong>crement by AR0 - circular<br />

Bit-Reversed *ARn+0B post inc. ARn by AR0 with reverse carry AR0<br />

*ARn-0B post <strong>de</strong>c. ARn by AR0 with reverse carry (=FFT size/2)<br />

Pre-modify *ARn (lk) *(ARn+LK), ARn unchanged<br />

*+ARn (lk) *(ARn+LK), ARn changed<br />

*+ARn (lk)% *(ARn+LK), ARn changed - circular BK<br />

*+ARn pre-increment by 1, <strong>du</strong>ring write only<br />

Absolute *(lk) 16-bit lk is used as an absolute address<br />

See Absolute Addressing<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 110


Unité <strong>de</strong> mémorisation<br />

ARAU (Unité d’adressage indirect)<br />

Registres d'adressage<br />

Unités <strong>de</strong> calcul spécialisées<br />

Ecriture sur les bus<br />

d'adresse <strong>de</strong>s bus C, D et E<br />

111


Unité <strong>de</strong> mémorisation<br />

Buffer linéaire<br />

Chaque nouvel échantillon donne lieu au déplacement<br />

<strong>de</strong> l’ensemble <strong>de</strong>s données <strong>du</strong> buffer, l’adresse <strong>du</strong><br />

nouvel échantillon est toujours la même.<br />

Time n Time n+1 Time n+2 Time n+3<br />

x(n) x(n+1) x(n+2) x(n+3)<br />

x(n-1) x(n) x(n+1) x(n+2)<br />

x(n-2) x(n-1) x(n) x(n+1)<br />

x(n-3) x(n-2) x(n-1) x(n)<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 112


Unité <strong>de</strong> mémorisation<br />

Adressage circulaire<br />

Exemple : stockage <strong>de</strong>s échantillons d’entrée dans un<br />

filtre FIR.<br />

Time n Time n+1 Time n+2 Time n+3<br />

x(n-1) x(n-1) x(n-1) x(n+3)<br />

x(n) x(n) x(n) x(n)<br />

x(n-3) x(n+1) x(n+1) x(n+1)<br />

x(n-2) x(n-2) x(n+2) x(n+2)<br />

Chaque nouvel échantillon donne lieu à l’écriture d’une<br />

donnée. Cette adresse est calculé par le générateur<br />

d’adresse.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 113


Unité <strong>de</strong> mémorisation<br />

MMR : Memory Mapped Registers Addressing<br />

MMRs are in page 0 of data memory.<br />

They can be accessed by some specific MMR<br />

instructions allowing simple access to page 0.<br />

In these cases DP, SP and CPL are ignored<br />

Example : STM (STore to Memory-mapped register):<br />

0000h<br />

0060h<br />

007Fh<br />

Stores an immediate value to the specified MMR or Scratch<br />

memory address.<br />

MMRs<br />

Scratch<br />

Tip: use the .mmregs directive<br />

to allow MMR names to be<br />

interpreted as addresses<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 114


Unité <strong>de</strong> mémorisation<br />

Memory Mapped Registers<br />

Addr.<br />

Name (Hex) Description<br />

IMR 0000 Interrupt Mask Register<br />

IFR 0001 Interrupt Flag Register<br />

----- 2 - 5 Reserved<br />

ST0 0006 Status 0 Register<br />

ST1 0007 Status 1 Register<br />

AL 0008 A accumulator low (A[15:00])<br />

AH 0009 A accumulator high (A[31:16])<br />

AG 000A A accumulator guard (A[39:32])<br />

BL 000B B accumulator low (B[15:00])<br />

BH 000C B accumulator high (B[31:16])<br />

BG 000D B accumulator guard (B[39:32])<br />

T 000E Temporary Register<br />

TRN 000F Transition Register<br />

Addr.<br />

Name (Hex) Description<br />

AR0 0010 Address Register 0<br />

AR1 0011 Address Register 1<br />

AR2 0012 Address Register 2<br />

AR3 0013 Address Register 3<br />

AR4 0014 Address Register 4<br />

AR5 0015 Address Register 5<br />

AR6 0016 Address Register 6<br />

AR7 0017 Address Register 7<br />

SP 0018 Stack Pointer Register<br />

BK 0019 Circular Size Register<br />

BRC 001A Block Repeat Counter<br />

RSA 001B Block Repeat Start Address<br />

REA 001C Block Repeat End Address<br />

PMST 001D PMST Register<br />

------- 01E-01F Reserved<br />

Note: XPC and Peripheral MMR locations are <strong>de</strong>vice <strong>de</strong>pen<strong>de</strong>nt<br />

115


Chapitre 3 : Les unités spécifiques <strong>de</strong>s <strong>DSP</strong><br />

3.1 Architecture générale et objectifs<br />

3.2 Unité <strong>de</strong> comman<strong>de</strong><br />

3.2 Unité <strong>de</strong> <strong>traitement</strong><br />

3.3 Unité <strong>de</strong> mémorisation<br />

3.4 Unité <strong>de</strong> communication<br />

3.5 Performance / Consommation<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 116


Unité <strong>de</strong> communication<br />

Périphériques<br />

Périphériques intégrés:<br />

ports séries<br />

ports parallèles<br />

timers<br />

DMA<br />

host port<br />

PLL<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 117


Unité <strong>de</strong> communication<br />

Périphériques<br />

Convertisseur A/N et N/A :<br />

les CAN/CNA ne sont généralement pas intégrés<br />

dans les <strong>DSP</strong> afin <strong>de</strong> pouvoir choisir un CAN/CNA en<br />

adéquation avec l’application<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 118


Chapitre 3 : Les unités spécifiques <strong>de</strong>s <strong>DSP</strong><br />

3.1 Architecture générale et objectifs<br />

3.2 Unité <strong>de</strong> comman<strong>de</strong><br />

3.2 Unité <strong>de</strong> <strong>traitement</strong><br />

3.3 Unité <strong>de</strong> mémorisation<br />

3.4 Unité <strong>de</strong> communication<br />

3.5 Performance / Consommation<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 119


Performance / Consommation<br />

Consommation énergétique<br />

Filtrage numérique FIR:<br />

C549<br />

100MHz, 2.5V<br />

C6201<br />

200MHz, 1.8V<br />

<strong>DSP</strong>16210<br />

100MHz, 3.3V<br />

ZSP16401<br />

200MHz, 2.5V<br />

A<strong>DSP</strong>-21160<br />

100MHz, 2.5V<br />

C6701<br />

167MHz, 1.8V<br />

120


Performance / Consommation<br />

Mesures <strong>de</strong>s performances<br />

MFLOPS<br />

MOPS<br />

MIPS<br />

MMACS<br />

MBPS<br />

Million Floating–Point<br />

Operation Per Second<br />

Million Operation<br />

Per Second<br />

Million Instructions<br />

Per Second<br />

Million of MAC<br />

per Second<br />

Mega-Bytes<br />

Per Second<br />

Mesure le nombre d’opérations<br />

arithmétiques à virgule flottante que le<br />

<strong>DSP</strong> à virgule flottante peut réaliser<br />

en une secon<strong>de</strong><br />

Mesure le nombre total d’opérations<br />

(calcul, accès DMA, transferts, etc.) que<br />

le <strong>DSP</strong> peut réaliser en une secon<strong>de</strong><br />

Mesure le nombre <strong>de</strong> co<strong>de</strong>s machine<br />

(instructions) que le <strong>DSP</strong> peut réaliser<br />

en une secon<strong>de</strong><br />

Mesure le nombre d’opérations MAC<br />

(Multiply+Accumulate) que le <strong>DSP</strong> peut<br />

réaliser en une secon<strong>de</strong><br />

Mesure la ban<strong>de</strong> passante d’un bus<br />

particulier ou d’un dispositif d’E/S<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 121


Performance / Consommation<br />

Panorama <strong>de</strong>s <strong>DSP</strong> (2)<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 122


Performance / Consommation<br />

<strong>DSP</strong> ou Microprocesseur ?<br />

Document : <strong>DSP</strong> Vs Microprocesseur<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 123


Chapitre 4 : Le <strong>DSP</strong> TMS320C5416<br />

4.1 L’architecture<br />

4.2 L’organisation mémoire<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 124


L’architecture<br />

Diagramme bloc <strong>du</strong> TMS320C5416 (1)<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 125


L’architecture<br />

Diagramme bloc <strong>du</strong> TMS320C5416 (2)<br />

Bus externe<br />

D(15-0)<br />

MUX<br />

A(23-0)<br />

Program/Data ROM<br />

16K Words<br />

MAC<br />

17 x 17 MPY<br />

40-Bit Ad<strong>de</strong>r<br />

RND, SAT<br />

Shifter<br />

40-Bit Barrel<br />

(-16, 31)<br />

CPU<br />

Program/Data RAM<br />

128K Words<br />

Program/Data Buses<br />

ALU<br />

40-Bit ALU<br />

CMPS Operator<br />

(VITERBI)<br />

EXP Enco<strong>de</strong>r<br />

Accumulators<br />

40-Bit ACC A<br />

40-Bit ACC B<br />

Addressing Unit<br />

8 Auxiliary Registers<br />

2 Addressing Units<br />

Power Management<br />

DMA<br />

Ch 0<br />

Ch 1<br />

Ch 2<br />

Ch 3<br />

Ch 4<br />

Ch 5<br />

Peripheral Bus<br />

JTAG Test/<br />

Emulation<br />

Control<br />

Timer<br />

Muxed GP I/O<br />

8/16-bit Host Port<br />

Interface (HPI)<br />

Multichannel Buffered<br />

Serial Port (McBSP)<br />

Multichannel Buffered<br />

Serial Port (McBSP)<br />

Multichannel Buffered<br />

Serial Port (McBSP)<br />

PLL Clock<br />

Generator<br />

S/W Waitstate<br />

Generator<br />

Mémoire<br />

interne<br />

Entrées<br />

Sorties<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 126


Schéma <strong>de</strong> principe <strong>de</strong>s échanges<br />

CPU<br />

Séquenceur<br />

Génération<br />

adresses P<br />

pilotage<br />

Génération<br />

adresses D<br />

Mémoire P Mémoire D<br />

Unités <strong>de</strong><br />

calcul<br />

addr<br />

data<br />

ctrl<br />

addr<br />

data<br />

ctrl<br />

Bus<br />

programme<br />

Bus<br />

données<br />

périphériques


L’architecture<br />

Diagramme bloc <strong>du</strong> TMS320C5416 (3)<br />

Bus externe<br />

Unités <strong>de</strong><br />

calcul<br />

Génération<br />

d’adresses<br />

CPU<br />

D(15-0)<br />

MUX<br />

A(23-0)<br />

Program/Data ROM<br />

16K Words<br />

MAC<br />

17 x 17 MPY<br />

40-Bit Ad<strong>de</strong>r<br />

RND, SAT<br />

Shifter<br />

40-Bit Barrel<br />

(-16, 31)<br />

Program/Data RAM<br />

128K Words<br />

Program/Data Buses<br />

ALU<br />

40-Bit ALU<br />

CMPS Operator<br />

(VITERBI)<br />

EXP Enco<strong>de</strong>r<br />

Accumulators<br />

40-Bit ACC A<br />

40-Bit ACC B<br />

Addressing Unit<br />

8 Auxiliary Registers<br />

2 Addressing Units<br />

Power Management<br />

DMA<br />

Ch 0<br />

Ch 1<br />

Ch 2<br />

Ch 3<br />

Ch 4<br />

Ch 5<br />

Peripheral Bus<br />

JTAG Test/<br />

Emulation<br />

Control<br />

Timer<br />

Muxed GP I/O<br />

8/16-bit Host Port<br />

Interface (HPI)<br />

Multichannel Buffered<br />

Serial Port (McBSP)<br />

Multichannel Buffered<br />

Serial Port (McBSP)<br />

Multichannel Buffered<br />

Serial Port (McBSP)<br />

PLL Clock<br />

Generator<br />

S/W Waitstate<br />

Generator<br />

Mémoire<br />

interne<br />

Entrées<br />

Sorties<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 128


Structure interne <strong>du</strong><br />

TMS320C54x<br />

Source : Texas Instruments<br />

TMS320C54x <strong>DSP</strong><br />

Reference Set<br />

Vol 1 : CPU and Peripherals


Bus P<br />

programme<br />

Bus C / D<br />

lecture<br />

données<br />

Bus E<br />

écriture<br />

données<br />

Unité <strong>de</strong> controle<br />

Génération<br />

d'adresses<br />

programme<br />

Génération<br />

d'adresses<br />

données<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 130


MAC<br />

Registres<br />

ALU<br />

Viterbi<br />

Shifter


Chapitre 4 : Le <strong>DSP</strong> TMS320C5416<br />

4.1 L’architecture<br />

4.2 L’organisation mémoire<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 132


L’organisation mémoire<br />

Les types <strong>de</strong> mémoires<br />

L’architecture « Harward Modifiée » <strong>du</strong> <strong>DSP</strong> lui<br />

donne donc une organisation autour <strong>de</strong> <strong>de</strong>ux<br />

types <strong>de</strong> mémoire :<br />

De la mémoire pour le programme<br />

De la mémoire pour les données<br />

Ces types <strong>de</strong> mémoire seront physiquement <strong>de</strong><br />

la ROM ou <strong>de</strong> la RAM (DARAM, SARAM…). Selon<br />

la version <strong>du</strong> circuit, le type (ROM, RAM) et la<br />

taille <strong>de</strong> la mémoire intégrée dans le circuit<br />

diffère.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 133


L’organisation mémoire<br />

Quantité et type <strong>de</strong> mémoire programme<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 134


L’organisation mémoire<br />

Quantité et type <strong>de</strong> mémoire données<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 135


L’organisation mémoire<br />

Type <strong>de</strong> mémoire<br />

Chaque <strong>DSP</strong> possè<strong>de</strong> donc une certaine<br />

quantité <strong>de</strong> RAM à double accès (DARAM), <strong>de</strong><br />

la RAM à simple accès (SARAM) et <strong>de</strong> la ROM<br />

interne.<br />

La RAM est généralement réservé aux<br />

données et la ROM au programme mais on<br />

trouve beaucoup d’exception à cette règle.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 136


L’organisation mémoire<br />

Mémoire Programme (1)<br />

La zone <strong>de</strong> la mémoire programme <strong>de</strong><br />

l’adresse 0 à 13FFh , sera située à<br />

l’extérieur <strong>du</strong> circuit si le bit OVLY<br />

(Overlay) est mis à 0.<br />

Lorsque ce bit est à 1 la zone 80h à<br />

13FF (4992 mots) est située en<br />

mémoire interne. Elle est constitué <strong>de</strong><br />

RAM à double accès commune à<br />

l’espace <strong>de</strong> mémoire donnée. Dans ce<br />

cas 0 à 7Fh est interdit.<br />

Lorsque la zone est commune aux 2<br />

espaces, cela signifie qu’elle peut<br />

contenir aussi bien <strong>de</strong>s instructions<br />

que <strong>de</strong>s données : on se sert <strong>de</strong> cette<br />

possibilité plus particulièrement<br />

lorsque l’on souhaite faire la mise à<br />

jour dynamique d’un programme<br />

préalablement chargé en mémoire.


L’organisation mémoire<br />

Mémoire Programme (2)<br />

De 1400h à 8FFFh (31 Kmots) se<br />

trouve une zone <strong>de</strong> mémoire<br />

adressable à l’extérieur <strong>du</strong> circuit. La<br />

zone <strong>de</strong> 9000h à FFFFh (28Kmots)<br />

pourra être <strong>de</strong> la ROM interne si la<br />

broche MP/MC =0, ou <strong>de</strong> la ROM<br />

externe si la broche est à1.<br />

Dans les 2 cas, la zone située <strong>de</strong> FF80h<br />

à FFFFh (128 mots) est réservé aux<br />

vecteurs d’interruption.<br />

138


L’organisation mémoire<br />

Mémoire <strong>de</strong> données<br />

Cet espace comporte une zone <strong>de</strong> RAM<br />

à double accès <strong>de</strong> 0 à 13FFh (5Kmots)<br />

dont 96 mots, <strong>de</strong> l’adresse 0 à 5 Fh<br />

réservés au stockage <strong>de</strong>s registres<br />

mappés en mémoires et une zone <strong>de</strong><br />

mémoire <strong>de</strong> travail <strong>de</strong> 60h à 7Fh. La<br />

mémoire situé <strong>de</strong> 80h à 13FFh pourra,<br />

comme nous l’avons vu<br />

précé<strong>de</strong>mment, etre partagée par<br />

l’espace programme (OVLY=1).<br />

La zone suivant <strong>de</strong> 1400h à 000h<br />

(50Kmots) sera situé à l’extérieur <strong>du</strong><br />

circuit.<br />

Si DROM est à 0, la mémoire <strong>de</strong><br />

l’adresse E000h à FFFh sera accessible<br />

à l’extérieur, ce sera <strong>de</strong> la ROM interne<br />

si DROM=1


Chapitre 5 : Un outil <strong>de</strong> développement logiciel<br />

Co<strong>de</strong> Composer Studio<br />

5.1 L’interface et la compilation<br />

5.2 Les librairies<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 140


L’interface Co<strong>de</strong> Composer Studio


L’interface et la compilation<br />

Chaîne <strong>de</strong> compilation (1)<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 142


L’interface et la compilation<br />

Chaîne <strong>de</strong> compilation (2)<br />

Outils <strong>de</strong><br />

conception<br />

IDE<br />

Editeur<br />

<strong>de</strong> Texte<br />

*.h<br />

*.c<br />

*.h54<br />

*.asm<br />

*.cmd<br />

*.lib<br />

Compilateur<br />

C<br />

Assembleur<br />

Simulateur<br />

*.asm<br />

*.lst<br />

*.obj<br />

Linker *.map<br />

*.out<br />

Chargement<br />

sur la cible<br />

<strong>DSP</strong><br />

<strong>DSP</strong>


L’interface et la compilation<br />

Chaîne <strong>de</strong> compilation (3)<br />

projet.pjt :<br />

fichier contenant l’ensemble <strong>de</strong>s options <strong>du</strong> projet et qui fourni le lien<br />

vers tous les fichiers que contient le projet.<br />

program.c :<br />

Programme source en langage C contenant la fonction main(). Nous<br />

pouvons aussi avoir d’autres fichier.c pour les fonctions utilisateur.<br />

program.asm :<br />

Programme source en assembleur contenant la fonction main(). Nous<br />

pouvons aussi avoir d’autres fichier.asm pour les fonctions utilisateur.<br />

hea<strong>de</strong>r.h :<br />

Fichier hea<strong>de</strong>r pour les déclaration <strong>de</strong>s fonctions ou variables <strong>du</strong> langage<br />

C utilisées dans le projet.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 144


L’interface et la compilation<br />

Chaîne <strong>de</strong> compilation (4)<br />

hea<strong>de</strong>r.h54 :<br />

Fichier hea<strong>de</strong>r pour les déclaration <strong>de</strong>s fonctions ou variables assembleur<br />

utilisées dans le projet.<br />

librairie.lib :<br />

Librairie compilée. Ce genre <strong>de</strong> fichier est souvent donné par le<br />

constructeur pour fournir <strong>de</strong>s fonctions utilisateurs spécifiques pour son<br />

composant.<br />

program.obj :<br />

Fichier objet. C’est un fichier compilé <strong>de</strong>puis une fichier assembleur ou<br />

un fichier C.<br />

command.cmd:<br />

Fichier <strong>de</strong> comman<strong>de</strong>. Indispensable pour le linker afin qu’il définisse<br />

l’emplacement <strong>de</strong>s variables et <strong>du</strong> co<strong>de</strong> en mémoire.


L’interface et la compilation<br />

Chaîne <strong>de</strong> compilation (5)<br />

Fichier généré par la chaine <strong>de</strong> compilation<br />

program.out :<br />

C’est le programme exécutable pour une cible spécifique. Il s’agit<br />

<strong>du</strong> co<strong>de</strong> chargé en mémoire.<br />

program.lst :<br />

Fichier listing, il s’agit d’un fichier où sont superposés le co<strong>de</strong> en<br />

C, le co<strong>de</strong> assembleur généré, le co<strong>de</strong> machine généré, et les<br />

adresses mémoires utilisées pour chaque instruction.<br />

program.map :<br />

Fichier mapping, il s’agit d’un fichier résumant toutes les<br />

quantités et les zones mémoires utilisées.<br />

>> Document d’exemples <strong>de</strong> co<strong>de</strong>


L’interface et la compilation<br />

Outils <strong>de</strong> débogage<br />

Type d’outils<br />

Emulateur<br />

Communique avec le <strong>DSP</strong> à<br />

gran<strong>de</strong> vitesse<br />

Capable <strong>de</strong> simuler/enregistrer<br />

en temps-réel l’état interne<br />

exact <strong>du</strong> <strong>DSP</strong><br />

Boundary-scan (JTAG)<br />

Protocole intégré au sein <strong>du</strong><br />

processeur<br />

Interrompt le <strong>DSP</strong> pour<br />

accé<strong>de</strong>r à l’information<br />

Opérations<br />

Interruption et relance <strong>de</strong><br />

l’exécution<br />

Chargement <strong>du</strong> co<strong>de</strong><br />

Breakpoints<br />

Accès en lecture/écriture<br />

Visualisation et modification <strong>du</strong><br />

contenu mémoire<br />

Registres internes<br />

<strong>DSP</strong><br />

Emulateur<br />

ou<br />

Contrôleur JTAG<br />

Définition <strong>de</strong> breakpoints<br />

et modification <strong>de</strong>s variables<br />

Récupération <strong>de</strong>s données<br />

<strong>de</strong>puis la mémoire <strong>du</strong> <strong>DSP</strong><br />

IDE<br />

147


L’interface et la compilation<br />

Affichage <strong>du</strong> co<strong>de</strong> désassemblé<br />

#<strong>de</strong>fine N 256<br />

short inputData[N];<br />

short outputData[N];<br />

void toto()<br />

{<br />

int i;<br />

for (i=0; i


Chapitre 5 : Un outil <strong>de</strong> développement<br />

logiciel: Co<strong>de</strong> Composer Studio<br />

5.1 L’interface et la compilation<br />

5.2 Les librairies<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 149


Les librairies<br />

Avantages d'une librairie<br />

Il existe plusieurs librairies :<br />

CSL : Chip support Library, fourni par le constructeur <strong>de</strong> composant<br />

BSL : Board support Library fourni par le constructeur <strong>de</strong> la carte <strong>de</strong><br />

développement.<br />

Librairies spécialisées : <strong>DSP</strong>LIB,IMGLIB…<br />

Il s’agit <strong>de</strong> faire une abstraction <strong>du</strong> matériel à travers une API logicielle<br />

(Application Programmable Interface). Ces interfaces logicielles sont<br />

pilotées par une interface graphique dans le cas <strong>du</strong> CSL et permettent :<br />

un temps <strong>de</strong> développement ré<strong>du</strong>it<br />

une programmation <strong>de</strong> plus haut niveau<br />

Elles sont presque indispensables pour compenser la complexité <strong>de</strong>s<br />

processeurs actuels.<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 150


Les librairies<br />

Exemple : Board Support Library<br />

Cas <strong>du</strong> TP 2 sur <strong>DSP</strong> TMS320<br />

Ces fonctions font parties <strong>de</strong>s librairies <strong>de</strong> la carte (Board Support Library)<br />

>> Voir C:\CCStudio_v3.1\docs\hlp\C5416DSK.HLP<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 151


Les librairies<br />

Exemple : Chip Support Library<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 152


Les librairies<br />

Exemple : <strong>DSP</strong>LIB<br />

Cette librairies est un support pour le calcul. Elle est<br />

Déjà programmée<br />

Optimisée<br />

Utilisable <strong>de</strong>puis le langage C<br />

La library <strong>DSP</strong>LIB est composée <strong>de</strong> 3 parties<br />

Un fichier hea<strong>de</strong>r : dsplib.h<br />

Un fichier objet (54xdsp.lib) comportant le co<strong>de</strong> compilé <strong>de</strong>s<br />

fonctions déclarées dans dsplib.h<br />

Un fichier source 54xdsp.src permettant la customisation <strong>de</strong>s<br />

fonctions par l’utilisateur.<br />

Exemple :<br />

short cfft8 (DATA *x, DATA scale);<br />

short fir(DATA *x, DATA *h, DATA *r,DATA **d, ushort nh, ushort nx);


Les librairies<br />

Vue synoptique <strong>de</strong>s mo<strong>du</strong>les utiles<br />

Logiciel applicatif<br />

Abstraction <strong>du</strong> matériel<br />

et système d’exploitation<br />

Matériel<br />

User Application<br />

<strong>DSP</strong>/BIOS<br />

Kernel/Sche<strong>du</strong>ler<br />

CPU Timer<br />

EMIF<br />

CSL<br />

USB/<br />

JTAG <strong>DSP</strong> CODEC LED<br />

Boutons<br />

Carte DSK<br />

McBSP<br />

BSL<br />

Dsplib<br />

Imglib<br />

Drivers<br />

<strong>Université</strong> <strong>de</strong> <strong>Savoie</strong> 154

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!