Développement pour une plateformeDSP   Mise au point de l ’algorithme       Prototypage, simulation haut-niveau         ...
Développement pour un DSP Outils de           Compilateur      *.asmconception    *.c                         C  IDE      ...
C vs. assembleur   Assembleur                             Langage C       Langage bas-niveau                     Langa...
Outils daide au développement                  User Application             Drivers               DSP/BIOS™              D...
CSL (Chip Support Library)   Librairie pour faciliter         C67x™ DSP Modules    lutilisation des                CHIP  ...
Avantages dune librairie de supportde type CSL   Abstraction du matériel à travers une API logicielle       Configuratio...
Librairies spécialisées (DSPLIB, IMGLIB)   Librairies de support pour le calcul     Traitement  du signal ou des images ...
Propriétés des systèmes temps-réel   Piloté par évènements     Synchrones (chronomètre)     Asynchrones (interruptions ...
Système temps-réel DSP BIOS   Noyau temps-réel     Ordonnanceur   temps-réel     Gestion multi-threads préemptive   Ou...
Stratification des traitements sousDSP/BIOS      Hard Real-time                            1st-TIERInterruptions matériell...
Mise en œuvre et implémentation de         filtres RIF et RII                                     12
Méthodologie dimplantation dun filtre   Étape 0 : Choix du filtre        Choix du filtre et calcul des coefficients   É...
Étape 1 : Schéma et équations  |H(f )|   pass-band                        stop-band      1                          fc : c...
Méthodes de synthèse dun filtre   Il existe de nombreuses méthodes     Méthode  de la fenêtre     Optimisation par moin...
Synthèse de filtres
Synthèse de filtre
Synthèse de filtre
Synthèse de filtre
Synthèse de filtre
Synthèse de filtre
Étape 1 : Schéma et équations Exemple sur une cellule RII du 2e ordre     s          wn     b0xn                          ...
Étape 2 : Variables et algorithme                                              Entrées :       coefs             dbuffer  ...
Étape 3 : Format Qk et programme C                                               int coefs[6];        x(n)       Q15      ...
Étape 3 : Programme détaillé   Si programmation       ACC=x(n)  s    en assembleur,         ACC=ACC - a1  w(n-1)    néc...
Implantation mémoire pour cellules encascade            coefs                     dbuffer                                 ...
Filtres RIFStructure         transverseImplémentation par  Buffer linéaire  Buffer circulaire                         ...
Structures pour filtre RIF    Structure transverse avec ligne à retard                             y n   b0 xn   b1...
Structures pour filtre RIF    Structures en cascade:                              N 1       k  b  b z  1  b z  2 ...
Filtre RIF par structure transverse   Deux aspects     Mise     à jour de la mémoire         A chaque réception d’une n...
N 1                                                       y n    bi xn  i Buffer linéaire                       ...
N 1                                                               y n    bi xn  i Buffer circulaire             ...
Quantification des coefficients RIF   Virgule fixe:                                     N 1     B=16  bits pour h(i) , ...
Filtre RIF avec buffer circulaire enassembleur                                    N 1                            y n  ...
Exemple d’implémentation d’un filtre RIF en Q15short fir_filter (short input){int i;short output;int acc=0;int prod;R_in[0...
Filtres RIIStructures          de filtresDécomposition en élements simplesProblèmes de quantification                  ...
Filtre RII    Fonction de transfert rationnelle                                   Q                     N(z)             ...
Filtre RII – Pôles et zéros   Zéros au numérateur                                                                 Q    ...
Forme directe I (ND)                                           Q               P                                     yn  ...
Forme directe II (DN)                    b0xn                           yn                                            1   ...
Forme directe II transposée                   b0                    b0xn                        yn   xn                   ...
Quantification des coefficients                   b0xn                        yn      -a1             z-1                 ...
Quantification des coefficients                       Q         N(z)                       bi z i                      i...
Décomposition d’un filtre RII        en sections du deuxième ordre            choisies pour leur stabilité            c...
Décomposition en cascadex(n) s0                          s1                      s2                       s3 y(n)         ...
Prochain SlideShare
Chargement dans…5
×

Chapitre3 prog dsplf3

1 857 vues

Publié le

DSP

Publié dans : Formation
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 857
Sur SlideShare
0
Issues des intégrations
0
Intégrations
152
Actions
Partages
0
Téléchargements
121
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Chapitre3 prog dsplf3

  1. 1. Développement pour une plateformeDSP Mise au point de l ’algorithme  Prototypage, simulation haut-niveau  Matlab  Langage C sur PC Implémentation DSP  Développement sur carte dévaluation  Langage C  Cartes EVM, SDK  Noyau temps-réel (DSP/BIOS)  Optimisation des parties critiques  Assembleur  Outils de débogage  Simulateur  Émulateur  Boundary scan JTAG (Norme IEEE 1179.1)  Communication temps-réel avec un PC hôte 2
  2. 2. Développement pour un DSP Outils de Compilateur *.asmconception *.c C IDE *.asm Assembleur *.obj *.lst Editeurde Texte *.cmd Linker *.out *.map  Simulateur *.hex  DSP Chargement sur la cible 3
  3. 3. C vs. assembleur Assembleur  Langage C  Langage bas-niveau  Langage de plus haut-  Fastidieux niveau  Jeux d’instructions  Plus rapide à coder complexes et irréguliers  Meilleure portabilité  Spécifique à chaque  Code machine généré constructeur moins efficace  Plus puissant  Malgré l’optimisation par  Accès direct à certains le compilateur registres inconnus du C  Outils de développement  Nécessaire pour une  Noyau temps-réel optimisation poussée (DSP/BIOS)  Configuration de la carte  Librairies de calculs optimisées (DSPLIB) 4
  4. 4. Outils daide au développement User Application Drivers DSP/BIOS™ Dsplib CSL Kernel/Scheduler Imglib CODEC Timer McBSP EMIF CPU DSP DIP Switches Target Board 5
  5. 5. CSL (Chip Support Library) Librairie pour faciliter C67x™ DSP Modules lutilisation des CHIP périphériques internes du DAA DSP Plateformes C5000 et C6000 DAT Texas Instruments DMA Accessible depuis le EBUS langage C GPIO Organisation en modules HPI  Un module par périphérique IRQ MCBSP PLL PWR UART WDTIM 6
  6. 6. Avantages dune librairie de supportde type CSL Abstraction du matériel à travers une API logicielle  Configuration  Accès aux ressources  Macros pour accéder au niveau des contenus de registres Intégré au noyau temps-réel DSP/BIOS  Interface graphique CSL Facilitation du développement  Méthodes standards daccès aux périphériques  Temps de développement réduit  Programmation à plus haut-niveau  Utile pour compenser laugmentation de la complexité des processeurs et des applications 7
  7. 7. Librairies spécialisées (DSPLIB, IMGLIB) Librairies de support pour le calcul  Traitement du signal ou des images  Déjà programmées  Optimisées  Utilisables depuis le langage C Fonctionnalités de base  FFT  Filtrage  Mathématiques et trigonométrie  Calcul matriciel 8
  8. 8. Propriétés des systèmes temps-réel Piloté par évènements  Synchrones (chronomètre)  Asynchrones (interruptions des E/S) Contraint dans le temps  Contraintes dures (deadlines critiques)  Contraintes souples (deadlines non critiques) Concurrence de lexécution  Contraintes sur plusieurs traitements en parallèle  Nécessite un ordonnancement  multi-tâches (plusieurs traitements à la fois)  préemptif (toute tâche peut être interrompue par une tâche plus prioritaire) Déterministe et fiable  Comportement du système prédictible  Temps de réponse bornés 9
  9. 9. Système temps-réel DSP BIOS Noyau temps-réel  Ordonnanceur temps-réel  Gestion multi-threads préemptive Outils danalyse temps-réel  Débogage sans interruption de lexécution  Profiling, vision des threads Intégration avec  Real-time data exchange (RTDX)  Communication hôte↔DSP pendant lexécution  Chip Support Library (CSL) 10
  10. 10. Stratification des traitements sousDSP/BIOS Hard Real-time 1st-TIERInterruptions matérielles  Traitement par échantillon  Réaction à la microseconde 2nd-TIERInterruptions logicielles  Traitement par blocs  Réaction à la milliseconde  Traitements ordonnancés Multi-tâche  Exécution concurrente Tâche de fond (idle)  Sil reste du temps Soft Real-time 11
  11. 11. Mise en œuvre et implémentation de filtres RIF et RII 12
  12. 12. Méthodologie dimplantation dun filtre Étape 0 : Choix du filtre  Choix du filtre et calcul des coefficients Étape 1 : Choix de structure  Choix dun schéma dimplantation  Écriture des équations correspondantes Étape 2 : Choix algorithmiques  Choix de limplantation mémoire et des variables  Écriture de lalgorithme Étape 3 : Choix numériques  Choix du format Qk  Écriture du programme Étape 4 : Validation  Définir un protocole de test et lappliquer Etape 5 : Optimisation 13
  13. 13. Étape 1 : Schéma et équations |H(f )| pass-band stop-band 1 fc : cut-of f f requency fs/2 f (norm) (a) |H(f )| pass-band transition band stop-band |H(f )| (dB) (linear) p 1   p 0 1 1   p pass-band -3 ripple stop-band ripple s  s fs/2 f (norm) fs b : stop-band f requency fc : cut-of f f requency fpb : pass-band f requency (b)
  14. 14. Méthodes de synthèse dun filtre Il existe de nombreuses méthodes  Méthode de la fenêtre  Optimisation par moindres carrés  Calcul des coefficients par approximation de tchebycheff  Par TFD récursive  etc.
  15. 15. Synthèse de filtres
  16. 16. Synthèse de filtre
  17. 17. Synthèse de filtre
  18. 18. Synthèse de filtre
  19. 19. Synthèse de filtre
  20. 20. Synthèse de filtre
  21. 21. Étape 1 : Schéma et équations Exemple sur une cellule RII du 2e ordre s wn b0xn yn z-1 -a1 w b1 wn  sxn  a1wn1  a2 wn2 n-1 z-1 yn  b0 wn  b1wn1  b2 wn2 -a2 b2 Équations correspondantes wn-2 Forme directe II 22
  22. 22. Étape 2 : Variables et algorithme Entrées : coefs dbuffer x (contient xn)0 s 0 wn-1 w(n-1) dbuffer (contient wn-1 et wn-2) coefs (contient les coefficients)1 a1 1 wn-2 w(n-2) Variable temporaire :2 a2 tableau des w (recevra wn)3 b2 retards Calcul4 b1 wn ← s * xn – a1 * w(n-1) – a2 * w(n-2)5 b0 xn x y ← b0 * wn + b1 * w(n-1) + b2 * w(n-2) tableau des Mise à jour retards ? puis yn y coefficients w(n-2) ← w(n-1) ? puis wn w w(n-1) ← wn variables Sorties : temporaires y (reçoit yn) dbuffer (contient wn-1 et wn-2 pour n=n+1) État de la mémoire lors de lappel de la fonction 23
  23. 23. Étape 3 : Format Qk et programme C int coefs[6]; x(n) Q15 int dbuffer[2]; s Q15 int cellule(int x) { ai Q15 int w; int y; bi Q15 /* Calcul */ wk Q15 w=((long)coefs[0]*x +(long)coefs[1]*dbuffer[0] –(long)coefs[2]*dbuffer[1]) >> 15; y=((long)coefs[5]*w +(long)coefs[4]*dbuffer[1]Conversion algorithme (calcul sur des réels) +(long)coefs[3]*dbuffer[0]) >> 15;vers programme (calcul en format Qk) /* Mise à jour retards */ dbuffer[1]=dbuffer[0]; s*x dbuffer[0]=w; devient /* Sortie */ (coefs[0]*x)>>15 return y; pour un résultat en Q15 } 24
  24. 24. Étape 3 : Programme détaillé Si programmation ACC=x(n)  s en assembleur, ACC=ACC - a1  w(n-1) nécessité de ACC=ACC - a2  w(n-2) décomposer en w(n)=ACC>>15 ACC=w(n)  b0 calculs élémentaires ACC=ACC + b2  w(n-2)  Algorithmedétaillé ACC=ACC + b1  w(n-1)  Conversion en y(n)=ACC>>15 assembleur w(n-2)=w(n-1) w(n-1)=w(n) 25
  25. 25. Implantation mémoire pour cellules encascade coefs dbuffer 0 w1(n-1) 0 s cellule 1 1 w1(n-2) 1 a11 2+1 w2(n-1) 2 a12 cellule 2 cellule 1 2+2 w2(n-2) … b12 … b11 5 b10 5+1 a21 5+2 a22 … b22 cellule 2 b21 b20 26
  26. 26. Filtres RIFStructure transverseImplémentation par Buffer linéaire Buffer circulaire 27
  27. 27. Structures pour filtre RIF Structure transverse avec ligne à retard y n   b0 xn   b1 xn  1  ....  bN 1 xn  N  1 -1 -1 -1 x(n) z z z b b b b 0 1 2 N-1 + + + y (n) Structure en treillis (filtres adaptatifs) y0(n) y1(n) y2(n) y3(n) + + + x(n) k1 k2 k3 u1(n) u2(n) u3(n) u0(n) z-1 + z-1 + z-1 + yi(n) = yi-1(n) + ki ui-1(n) et ui(n) = k1 yi-1(n) + ui-1(n-1) avec y0(n)=u0(n)=x(n). 28
  28. 28. Structures pour filtre RIF  Structures en cascade: N 1  k  b  b z  1  b z  2  ... b   N  1 H z      bk z z   0 1 2 N 1 k 0   N  1 z   N  1  b 1 b  2 b   b 1  1 z  2 z  ...   0 b b b   0 0 0  M  b  1  b z  1  b  z 2   0 k 1  k ,1 k ,2  x(n) b0 y (n) + + + z -1 z -1 z -1 b 1,1 b 2,1 b M,1 + + + z -1 z -1 z -1 b 1,2 b 2,2 b M,2 29
  29. 29. Filtre RIF par structure transverse Deux aspects  Mise à jour de la mémoire  A chaque réception d’une nouvelle donnée x(n)  Calcul du filtre  ACCU=0  for i=0 to N-1:  ACCU ← ACCU + h(i) x(n-i)  Sortie de y(n)=ACCU 30
  30. 30. N 1 y n    bi xn  i Buffer linéaire i 0 Schéma "état mémoire" Schéma de structure de filtre x(n) y(n) xtab xtab 0 x(n-1) 0 x(n) b0 1 x(n-2) 1 x(n-1) b1 … 2 x(n-2) b2 … … … … … … … … … N-2 x(n-N+1) N-2 x(n-N+2) bN-2 N-1 x(n-N) N-1 x(n-N+1) bN-1 x(n-N) Mise à jour du buffer Calcul de y(n) 31
  31. 31. N 1 y n    bi xn  i Buffer circulaire i 0 Schéma "état mémoire" Schéma de structure de filtre x(n) y(n) xtab xtab 0 x(n-k+1) 0 x(n-k+1) bk+1 1 … 1 … … x(n-N+1) x(n-N+1) bN-1 x(n-N) idx x(n) b0 idx x(n-1) x(n-1) b1 x(n-2) x(n-2) b2 N-2 … N-2 … … N-1 x(n-k) N-1 x(n-k) bk Mise à jour du buffer Calcul de y(n) 32
  32. 32. Quantification des coefficients RIF Virgule fixe: N 1  B=16 bits pour h(i) , x(n-i) et y(n) y n    hi xn  i  i 0  40 bits pour les accumulateurs Représentation Qk  Coefficient de magnitude maximale:  hmax = max |h(i)|  Nombre de bits nécessaires pour la partie entière :  BE = log2(hmax)  Codage Qk avec k = B – BE  h(i) = round(h(i)/2k) 33
  33. 33. Filtre RIF avec buffer circulaire enassembleur N 1 y n    hi xn  i N .set 32; adr_x+d supposé chargé i 0dans AR2 Adresses ContenuSTM #(coef)+N-1, AR3 Adresses Contenu k = adr_x x(n-N+d-1)STM #(adr_y), AR5 i = coef h(N-1) …… …… i +1 h(N-2) k+d-1 x(n-N+1)STM #N, BKSTM #1, AR0 i+2 h(N-3) k+d x(n) …… …… …… ……RPTZ A, #N-1 i+N-1 h(0) k+N x(n-N+d)MAC *AR2+0%, *AR3-, A Mémoire Programme Mémoire DonnéesSTH A, *AR5 Rmq: les log2(N) bits de poids faible de adr_x doivent être nuls 34
  34. 34. Exemple d’implémentation d’un filtre RIF en Q15short fir_filter (short input){int i;short output;int acc=0;int prod;R_in[0] = input; /* lire les valeurs des échantillons */acc = 0; /* initialisation de l’acc à zéro*/for (i=0; i<128; i++){prod = (h[i]*R_in[i]); /* Q.15 */acc = acc + prod; /* mise a jour des 32-bit de l’acc */}output = (short) (acc>>15); /* mise en forme de l’output (16-bits) */for (i=127; i>0; i--) /* décalage des échantillons */R_in[i]=R_in[i-1];return output;}
  35. 35. Filtres RIIStructures de filtresDécomposition en élements simplesProblèmes de quantification 36
  36. 36. Filtre RII  Fonction de transfert rationnelle Q N(z)  bi z i i0 H(z)   P D( z ) 1   ak z  k k 1  Equation aux différences Q P yn   bi xni   ak ynk i 0 k 1 37
  37. 37. Filtre RII – Pôles et zéros Zéros au numérateur   Q Q  bi z  b0  1  zi z 1 i 0 i i 0 Pôles au dénominateur   P P 1   ai z   1  pi z 1 i i 1 i 0 38
  38. 38. Forme directe I (ND) Q P yn   bi xni   ak yn k b0xn yn z-1 z-1 i 0 k 1 b1 -a1 z-1 -a2 z-1 b2 1 z-1 z-1 H ( z)  N ( z) b3 -a3 D( z ) •Forme non canonique : •Nécessite Q+P mémoires z-1 z-1 bQ-1 -aQ-1 Forme directe I (ND) 39
  39. 39. Forme directe II (DN) b0xn yn 1 -a1 z-1 b1 H ( z)  N ( z) D( z ) z-1 -a2 b2 •Forme canonique •Nécessite max(Q,P) mémoires -a3 z-1 b3 z-1 -aQ-1 bQ-1 Forme directe II (DN) 40
  40. 40. Forme directe II transposée b0 b0xn yn xn yn z-1 z-1 -a1 b1 b1 -a1 z-1 -a2 b2 z-1 b2 -a2 z-1 -a3 b3 z-1 b3 -a3 z-1 z-1 -aQ-1 bQ-1 bQ-1 -aQ-1 Forme directe II Forme directe II transposée 41
  41. 41. Quantification des coefficients b0xn yn -a1 z-1 b1 ak  ak  ak z-1 -a2 b2 -a3 z-1 b3 bk  bk  bk Quantification d’un coef : z-1 -aQ-1 bQ-1 aq = round(a*q)/q avec un pas de quantification q=2-k Forme directe II 42
  42. 42. Quantification des coefficients Q N(z)  bi z i i0H(z)   a k  a k  a k P D( z ) 1   ak z  k k 1Le dénominateur quantifié devient : Q 1 Q 1  D  z   1   ak z  k   1  pl z 1  k 1 l 1La fonction de transfert est donc perturbée.Plus le degré du polynôme est élevé, plus la fonctionde transfert sera perturbée. 43
  43. 43. Décomposition d’un filtre RII  en sections du deuxième ordre  choisies pour leur stabilité  coefficients réels (racines conjuguées) Structure parallèle Structure cascade c0 b0  b1 z 1 b0  b1 z 1  b2 z 2 b0  b1 z 1  b2 z 2 xn 1  a1 z 1  a2 z  2 1  a1 z 1  a2 z  2 yn 1  a1 z 1  a2 z  2xn yn b0  b1 z 1 1  a1 z 1  a2 z  2 FactorisationExpansion partielle B( z ) N 1 1  bi 1 z 1  bi 2 z 2  b0  1 B( z ) N 1 bi 0  bi 1 z 1 A( z ) i  0 1  ai 1 z  ai 2 z  2  c0   1 A( z ) i 0 1  ai 1 z  ai 2 z  2 44
  44. 44. Décomposition en cascadex(n) s0 s1 s2 s3 y(n) H1 H2 H3 B( z ) N 1 1  bi1 z 1  bi 2 z 2  b0  1 2  b0 H1 ( z ) H 2 ( z ) H 3 ( z ) A( z ) i 0 1  ai1 z  ai 2 zavec : 1  bi1 z 1  bi 2 z 2 et s0 s1s2 s3  b0 H i ( z)  1  ai1 z 1  ai 2 z 2 45

×