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
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