Support du cours
Transcription
Support du cours
Électronique et Informatique Industrielle 2nde année - EII2 30 septembre 2014 Traitement Numérique du Signal Supports de cours magistraux Olivier Sentieys ENSSAT - Université de Rennes 1 [email protected] http://www.irisa.fr/cairn http://perso.univ-rennes1.fr/olivier.sentieys 6 Rue de Kerampont - BP 447 22305 LANNION - France IRISA — ENSSAT Institut de Recherche en Informatique et Systèmes Aléatoires École Nationale Supérieure de Sciences Appliquées et de Technologie Technopôle Anticipa Lannion Traitement numérique du signal et Processeurs de traitement du signal Olivier Sentieys Traitement Numérique du Signal (Digital Signal Processing) Traitement numérique du signal – EII2 • Introduction • • • • • • • • Analyse de filtre numérique Processeurs de TNS Arithmétique virgule fixe Transformée en TNS Synthèse de filtre RII Synthèse de filtre RIF Analyse spectrale Systèmes multi-cadences Cycle de développement Besoin Spécifications opératoires Spécification Analog Signal Processing A/D D/A Digital Signal Processing Digital or ComputerWorld Signals Spécifications technologiques Définition de l'algorithme Converter Technology Provides the Bridge Video/Image/Graphics Fcl High Data Rate Contraintes temps réel, Audio/Speech/Control Low Data Rate Consommation d'énergie, Flexibilité Coût 100M 10M 1M Simulation Conception fonctionnelle 100k Performances Description de l'algorithme Implantation Analog or Real-World Signals Spécifications fonctionnelles Partitionnement Implantation Matérielle Implantation Logicielle 10k [ICE97] I-3 I-4 Contenu du cours de TNS et PTS Modules TNS/PTS CM TNS • Analyse et conception de systèmes de TNS – Analyse des filtres numériques Introduction - chaÎne de TNS 1 Analyse des filtres numériques 2 TD TNS – Transformées en TNS – Synthèse des filtres numériques RII – Synthèse des filtres numériques RIF Arithmétique virgule fixe 3 Bruit de quantification 4 PTS 5 Transformées en TNS – Analyse spectrale Synthèse de filtre IIR – Systèmes multi-cadences 6 1 Transformée de Fourier (x.4.2) 7 4 8 Synthèse de filtre FIR 5 9 • Implantation de systèmes de TNS Analyse spectrale – Arithmétique virgule fixe (codage - évaluation de la précision) Système multi-cadences – Implantation logicielle : processeurs de traitement du signal Analyse cellule 2ème ordre IIR (x.1.2) 2 Analyse et implantation VF FIR (x.1.3) 3 Implantation VF IIR (x.1. 7) Synthèse IIR x.2.2) 10 6 Synthèse FIR par fenêtrage (x.3.1) 11 7 Synthèse FIR éch. Fréquentiel (x.3.2) TP TNS 23xN 1 TP PTS 1 2 15xN Projet PTS 1 2 – Implantation matérielle : module conception des circuits intégrés 8 I-5 Devoir surveillé 2h Planning modules TNS/PTS Plan du cours • Exercice à préparer pour les séances de TD I. Introduction – Ramassage possible des copies et intégration de la note au DS Interpolation Analyse spectrale 12 3 6 I-6 1. Introduction, problématique, caractéristiques, 2. Applications typiques de TNS o TD1 : Analyse et implantation FIR (1.1.1 – partie 1) 3. Caractéristiques des algorithmes o TD2 : Analyse et implantation IIR (1.1.5 – partie 1) 4. Chaîne de traitement et problèmes temps réel, solutions architecturales o TD3 : Analyse et implantation IIR (1.1.5 – partie 2) o TD4 : Transformée de Fourier (1.4.2) o TD5 : Synthèse IIR (1.2.2) II. Analyse des filtres numériques o TD5 : Synthèse FIR par fenêtrage (1.3.1) o TD7 : Synthèse FIR échantillonnage fréquentiel (1.3.2) 1. Spécification, classification, représentation o TD8 : Interpolation Analyse spectrale (1.7.1) 2. Analyse fréquentielle 3. Structures des filtres RII et RIF I-7 I-8 Plan du cours (suite) Plan du cours (suite) III. Implantation d'algorithmes de TNS IV. Arithmétique virgule fixe 1. Caractéristiques des algorithmes 1. 2. 3. 4. 2. Traitement temps réel 3. Solutions architecturales Processeurs de traitement du signal I. Introduction Présentation de l'arithmétique virgule fixe Processus de codage en virgule fixe Exemple d'un filtre IIR cascadé Évaluation de la précision V. Transformées en TNS 2. Description des différentes unités 1. TFD, convolution linéaire 2. TFR : Transformée de Fourier Rapide 3. Panorama des processeurs 4. Outils de développement VI. Synthèse des filtres numériques RII 1. Invariance Impulsionnelle 2. Transformation Bilinéaire I-9 I-10 Plan du cours (fin) VII. Synthèse des filtres numériques RIF Introduction 1. Introduction 2. Filtres à Phase Linéaire 1. Introduction et problématique 3. Méthode du Fenêtrage 4. Échantillonnage en Fréquence 2. Applications typiques de TNS VIII. Analyse spectrale 1. Effets de la troncature 2. Caractéristiques des fenêtres 3. Influence sur l'analyse IX. Systèmes multi-cadences 1. Définition 2. Décimation 3. Interpolation I-11 I-12 Traitement Numérique du Signal Chaîne de traitement B Te • Avantages A Action numérique N – Pas de dérive : température, vieillissement, valeur des composants – Précision : garantie par le nombre de bits anti-repliement CAN T.N.S. CNA – Souplesse : plusieurs tâches simultanées possibles Actionneurs Capteurs Filtre passe-bas – Prédiction : simulation sur ordinateur – Prototypes : changements par modifications du logiciel – Performances : pas de distorsion de phase, filtrage adaptatif, etc. – Intégration : progrès des systèmes VLSI et DSP 0.21 0.2 0.2 035 0.49 0.58 1.236 0.61 0.613 0.61 0.6 0.563 0.421 0.236 0.21 0.2 0.2 035 0.49 0.58 1.236 0.61 0.613 0.61 0.6 0.563 0.421 0.236 • Inconvénients – Coût : élevé pour des réalisations simples – Vitesse : bande passante large = vitesse de calcul élevé – Complexité : réalisation à la fois matérielle et logicielle I-13 I-14 Quelles applications ? Domaines d'application • A la Maison – Télévision à la demande, Télévision Satellite, Jeu Vidéo et Réalité Virtuelle, Electroménager, Réseaux, ... – DVD, HDTV, CD, DAB, DVB • Au Bureau – Vidéoconférence, Fax, Modems, Pagers, etc. – Réseaux rapides, Sans-fil (WLAN, WiFi, etc.) – ATM, ISDN, ADSL • Sur la route – Téléphone cellulaires, Commande vocale, Radar et Sonar, GPS et traceur de route, Fax/Modems sans-fil, Véhicules intelligents, etc. Systèmes de l'âge de l'information Communication homme-machine, synthèse, transformation texte-parole et inverse, reconnaissance de parole, identification et vérification du locuteur • Télécommunications, codage et restauration de la parole, courrier vocal, télécopie, audionumérique (CD, DAB), TV numérique, compression et transmission d'images, cryptage et protection, transmission de données, télé informatique, annulation d'écho, codage à débit réduit, télé et visioconférence, téléphonie cellulaire, ... • Défense, systèmes d'armes, surveillance, guidage, navigation • Biophysique, génie biomédical, EEG, ECG, radiographie, tomographie, scintigraphie, gammagraphie, échographie, aide aux handicapés, ... • Acoustique, aérienne, sous-marine, sonar, ultrasons, nuisances • Géophysique, sismique, de surface, océanographique, télédétection • Electromagnétisme, radar, radionavigation, optique, astrophysique • Automobile, injection électronique, ABS, positionnement global, commande d'assiette adaptative • Musique, numérique, MIDI, échantillonneurs (sampleurs), synthétiseurs, mélangeurs, réverbération et écho, effets spéciaux, filtrage, enregistrement (DAT) • Instrumentation, capteurs, métrologie, analyse spectrale, génération de signaux, analyses de transitoires, DPLL • = fusion entre Calculateur – Télécommunications - Consommateur • Graphisme et imagerie, rotation 3D, vision, reconnaissance de formes, restauration d'images, stations de travail, animation, cartographie I-15 I-16 Glossaire du TNS • Saisie, acquisition, conversion (A/N, N/A), codage • Filtrage, FIR, IIR, convolution rapide, filtres spéciaux • Représentation, modélisation, analyse spectrale, transformées • Compression, approximation, extrapolation, codage de source, réduction de débit • Modulation, codage de canal, protection contre les erreurs, cryptage, garantique • Détection, réception optimale, démodulation, décodage, correction • Estimation, paramétrique, estimation d'onde ou d'état, filtrage, prédiction, lissage • Analyse de système, modèles de canaux, milieux de propagation • Amélioration, réduction de bruit, annulation d'écho, compensation, égalisation • Déconvolution, imagerie, résolution, détection de source, restauration • Classification, reconnaissance, signatures • Apprentissage, estimation séquentielle, adaptation, poursuite • Analyse temps fréquence, non stationnarité, estimation de délais, de phase • Traitement multi-fréquences, décimation, interpolation, filtrages en sous bandes • Arithmétique bit fini, quantification, dépassement, virgule fixe, flottante, bruits de calcul, sensibilité des coefficients. • Architecture des systèmes, DSP, ASIC, mémoire Introduction 1. Introduction et problématique 2. Applications typiques de TNS I-17 I-18 1. Types de signaux Signal de parole • Signaux médicaux • Processus de phonation – EEG, ECG, Images IRM, Images scanner, ... – Génération d'une énergie ventilatoire (poumons+trachée) • Signaux sismiques – Vibration des cordes vocales • Données – Réalisation d'un dispositif articulatoire (conduit vocal) – Statistiques, Bourse, ... • Signal de parole • Sons Cavité nasale • Images Glotte • ... Cavité buccale Lèvres Cavité nasale Conduit vocal Larynx Langue Modèle source filtre I-19 I-20 Signal de parole Signal de parole • Signal temporel – Aspects statistiques – Variabilité intra-individuelle – Variabilité inter-individuelle – Masquage temporel – Prosodie Un son voisé et son spectre (son “ eu ”) • Signal fréquentiel Amplitude (dB) 40 30 – Structure formantique 20 o Fondamental (pitch) 10 o Harmoniques – Masquage fréquentiel Un son non voisé et son spectre (son “ ch ”) 0 -10 -20 0 I-21 Fréquences Fe/2 2. Applications Applications • Voie MIC (PCM) • Télécommunications : détection de tonalité – Parole échantillonnée à 8 kHz en bande limitée à 300-3400Hz sur 8 bits par une loi logarithmique (Rec. G711 du CCITT) – Débit normalisé de 64 kbit/s par voie numérique (MIC) Schéma de détection de tonalité • Codage de la parole – Le codage permet : soit d'augmenter le nombre de signaux par voie (multiplexage temporel), soit d'élargir la bande codée (7kHz pour audio et visioconférence) – ADPCM : 32 kbit/s sans dégradation audible s(n) e(n) CB Q s (n) Q P s (n) canal de transmission e'q(n) DC -1 s' (n) Q-1 s' (n) Detector 697 Hz BP Filter Detector 770 Hz 852 Hz BP Filter Detector 697 Hz 1 2 3 LP Filter Limiter BP Filter Detector 941 Hz 770 Hz 4 5 6 HP Filter Limiter BP Filter Detector 1209 Hz BP Filter Detector 7 8 9 1336 Hz 852 Hz BP Filter Detector 1477 Hz 941 Hz * 0 # |G| (dB) 1209 Hz 1336 Hz 1477 Hz Fréquences de tonalité du clavier numérique P BP Filter I-22 Gabarit du filtre numérique -0 dB -3 dB eq(n) CB : codeur binaire DC : décodeur binaire P : prédicteur Q : quantificateur Q-1: quantificateur inverse -30 dB I-23 FS1 FP1 FP2 FS2 Fe 2 I-24 Applications Applications • Annulation d'écho • Compact Disc Audio – Réseau téléphonique utilisant les satellites géostationnaires (540ms) – Téléphone main libre en voiture (écho + bruit) – Téléconférence – Echantillonnage à 44,1 kHz sur 16 bits des deux voies : 1,41 Mbit/s – Information + correction d'erreurs, contrôle et affichage : 4,32 Mbit/s – 90 dB de rapport Signal à Bruit et de séparation stéréo (contre 60 et 30 dB) o • Réponse impulsionnelle de la salle o • Effets : écho, Larsen, réverbération o • Problème de déconvolution A/D Converter Microphone to far end speaker +- near e nd speach Ht Buffer Memory Control / Display Ambient Noise Parity Coding MUX Modulator Computation of coefficient s D/A 16 bit PCM Converter LP filter Loud speaker Error Correction 16 bit PCM 44.1 kHz 4 Digital LP filter I-25 Applications D/A D/A Converter LP filter Fe = 176.4 kHz Fe = 44.1 kHz Annulateur d'écho par filtrage adaptatif Filter D/A Lecture du système Compact Disc Encodeur du système Compact Disc from far end speaker Re flections Demodul Conversion N/A classique En pratique : Suréchantillonnage I-26 Synoptique de l'encodeur MP3 • Encodeur MP3 – Codage fréquentiel perceptuel Transformation temps-fréquence Quantification & codage o Analyse du signal dans le domaine fréquentiel • Séparation du signal en bandes de fréquence o Utilisation d'un model perceptuel • Modélisation du système auditif humain • Prise en compte des phénomènes de masquage • Le seuil de perception dépend des fréquences o Quantification et codage : • Distribution du nombre de bits aux composantes spectrales • Quantification afin que le bruit soit en dessous des seuils de masquage Modèle perceptuel I-27 I-28 Transformation temps fréquence Modèle perceptuel • Objectif : déterminer pour chaque bande de 0 -10 -20 Gain (dB) -30 -40 fréquence la quantité de bruit maximale -50 -60 -70 -80 -90 -100 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 Modified Discrete Cosine Transform (MDCT) 0.5 Fréquence normalisée Decimation PCM Audio Polyphase filter MDCT Window MDCT 32 sub-bands 576 lines FFT Décomposition en bande de fréquence « Longwindow » « Startwindow » « Shortwindow » « Stopwindow » Psychoacoustic model Détermination des seuils « Longwindow » I-29 I-30 Filtrage Numérique 1 Introduction Définition Analyse des filtres numériques – Système Linéaire Discret (SLD) modifiant la représentation temporelle et fréquentielle de signaux 1. Spécification, classification, représentation Filtre Numérique x(n) <=> X(z) 2. Analyse fréquentielle 3. Structures des filtres RII et RIF y(n) <=> Y(z) h(n) <=> H(z) 1. Introduction Un filtre numérique peut être représenté par : – une fonction de transfert en z : H(z) = Y(z) / X(z) X(z) H(z) Y(z) II-1 II-2 Filtrage Numérique Filtrage Numérique 1 1 Introduction H1(z) X(z) H(z) Y(z) X(z) + H2(z) si x(n) = δ(n) alors y(n) = h(n) Y(z) ... a) Forme directe – une équation aux différences (récursive ou non récursive) HM(z) H1(z) ... H2(z) HM(z) M N i =0 i =1 y (n) = ∑ bi .x(n − i ) −∑ ai . y (n − i ) b) Forme parallèle X(z) Introduction Y(z) c) Forme cascade ∞ y (nT ) = ∑ x(kT )h[(n − k )T ] y ( n) k =0 ∞ = ∑ x ( k ) h( n − k ) k =0 x(n) h(n) y(n) II-3 II-4 Filtrage Numérique Filtrage Numérique 2 Spécification d’un filtre numérique 2 2. Spécification d’un filtre numérique Spécification d’un filtre numérique Passe-Bande (ou Réjecteur de Bande) défini par sa fréquence – Gabarit fréquentiel centrale, sa sélectivité, son ondulation en BP et son atténuation Passe-Bas (ou Passe-Haut) défini par sa sélectivité, son ondulation en BA |H(f)| en BP et son atténuation en BA 1+δ1 1 1-δ1 Bande de transition Bande passante Bande atténuée |H(f)| (dB) |H(f)| fp 1+δ1 1 1-δ1 fa 20log(1+δ1) δ2 0 dB 20log(1-δ1) f fa- δ2 fp- fp+ fa+ fe/2 f 20logδ2 fp Fe/2 fa f a) Gabarit fréquentiel linéaire b) Gabarit fréquentiel en dB II-5 II-6 Filtrage Numérique Filtrage Numérique 3 Classification des filtres numériques 3.1 3 Classification des filtres numériques 3.1 Filtres numériques non récursifs Filtres numériques non récursifs (ou transversaux) Un filtre numérique peut être classé selon : M y (n) = ∑ bi x(n − i ) – la durée de sa réponse impulsionnelle i =0 Y ( z) = H ( z) X ( z) . finie : les filtres RIF ont leur réponse impulsionnelle à support fini i.e. h(n) = 0 pour n<0 et n>N M M i =0 n =0 ⇒ H ( z ) = ∑ bi z −i = ∑ h(n) z − n . infinie : les filtres RII ont leur réponse impulsionnelle à support infini M – le type de représentation temporelle . récursifs : la sortie y(n) dépend de l’entrée courante, des entrées précédentes et ⇒ h(n) = ∑ bi δ (n − i ) i =0 des sorties précédentes Les coefficients bn du filtre sont les valeurs de la RI (h(n) = bn). Ceci . non récursifs : la sortie y(n) ne dépend que de l’entrée courante et des entrées montre qu'un filtre non récursif est à Réponse Impulsionnelle précédentes Finie (RIF). M est appelée la longueur du filtre. II-7 II-8 Filtrage Numérique Filtrage Numérique 3.1 3.2 Filtres numériques non récursifs • Principales propriétés Filtres numériques récursifs 3.2 Filtres numériques récursifs – Les RIF sont toujours stables (pas de pôles) – Les RIF peuvent avoir une caractéristique de phase linéaire M N i =0 i =1 y (n) = ∑ bi x(n − i ) − ∑ ai y (n − i ) M • Retard constant en fréquence (temps de propagation de groupe) • Pas de distorsion harmonique • Symétrie de la RI ∑b z −i i ⇒ H ( z) = – A sélectivité équivalente, ils sont toujours plus coûteux (en temps de calcul) que leur équivalent RII i =0 N 1 + ∑ ai z = −i N ( z) D( z ) i =1 En pratique on a N=M, N est l'ordre du filtre II-9 II-10 Filtrage Numérique Filtrage Numérique 3.2 3.2 Filtres numériques récursifs Filtres numériques récursifs M – Si N(z) n'est pas divisible par D(z) (cas général), on a un nombre – Si N(z)=1 : filtre tout-pôle infini de termes dans la division polynomiale ∞ ∞ i =0 n =0 • Principales propriétés H ( z ) = ∑ ci z −i = ∑ h(n) z − n −i i H ( z) = – Si D(z)=1 : filtre RIF ∑b z i =0 N 1 + ∑ ai z = −i N ( z) D( z ) i =1 – Les RII peuvent être instables : structure à base de pôles et de zéros Les coefficients cn sont les valeurs de la RI (h(n) = cn). Ceci montre M qu'un filtre récursif est, dans le cas général, à Réponse ∏ (z − z ) i H ( z ) = b0 z N − M Impulsionnelle Infinie (RII). i =1 N ∏ (z − p ) i i =1 – Si N(z) est divisible par D(z) (cas particulier), on a un nombre fini de – Bande de transition faible termes dans la division polynomiale. Dans ce cas, le filtre est RIF. – Synthèse par réutilisation des méthodes analogiques • Exemple : filtre moyenneur – Instabilité numérique due au rebouclage : forme cascade plus stable II-11 II-12 Filtrage Numérique Filtrage Numérique 4 4 Analyse fréquentielle Conclusion Analyse fréquentielle Trois domaines de représentation L'analyse fréquentielle est l'étude du module, de la phase et du temps – Temporel h(n), équation aux différences de propagation de groupe du filtre H. H (e jΩ ) = H ( z ) Analyse fréquentielle – Fonction de transfert en z, diagramme des pôles/zéros – Fréquentiel H(Ω), module, phase z = e jΩ Ω est la pulsation relative : Ω = ωT = 2πfT h( n) La fonction de transfert en fréquence H(ejΩ) est périodique de période 2π. TZ TZI |H(ejΩ)| M N y (n) = ∑ bi .x(n − i ) −∑ ai . y (n − i ) i =0 ∞ ∞ i =0 n =0 H ( z ) = ∑ ci z −i = ∑ h(n) z − n z = e jΩ π 2π Ω II-13 TF TFI H (e jΩ ) = H ( z ) z = e jΩ II-14 Filtrage Numérique Filtrage Numérique 4 4 Analyse fréquentielle i =1 Analyse fréquentielle Exemple 1 Exemple 2 pordre1.avi pzordre1.avi z−b HH( z()z )== z zz −− aa a,ab, b∈∈R° − −00.9 ,9 ≤≤ aa, bb ≤≤0.9 0,9 z HH( (zz)) == z zz −−aa aa∈∈R° −−11≤≤ a ≤≤11 II-15 II-16 Filtrage Numérique Filtrage Numérique 4 4 Analyse fréquentielle Analyse fréquentielle Exemple 3 Exemple 4 paordre2.avi prordre2.avi HH((zz)) == zz ( z − p)( )(zz −− pp*) *) HH((zz)) == zz ( z − p)( )(zz −− pp*) *) pp∈ ∈C £ pp∈ ∈C £ pp ≤≤11 pp ==00.9 .9 II-17 II-18 Filtrage Numérique Filtrage Numérique 5 5 5. Structures de réalisation Structures de réalisation Structures de réalisation – Filtres RII N – Filtres RIF N y (n) = ∑ bi x(n − i ) − ∑ ai y (n − i ) i =0 N y (n) = ∑ bi x(n − i ) i =0 x(n) b0 x(n) Z-1 x(n-1) + b1 x(n-N) b1 + bN-1 + Z-1 y(n) b0 + y(n) bN-1 bN i =1 N N ( z) 1 = N ( z) × = ∑ bi z −i × D( z ) D( z ) i =0 1 N 1 + ∑ ai z −i i =1 Z-1 + b0 x(n) Z-1 Z-1 bN a) Structure directe ⇒ H ( z) = + Z-1 Z-1 b1 II-19 + + + bN-1 + + bN RIF b) Structure transposée + y(n) -a1 b0 x(n) Z-1 Z-1 x(n-1) -aN-1 -aN Z-1 Z-1 x(n-N) b1 + + y(n) -a1 Z-1 y(n-1) bN-1 + -aN-1 bN -aN Z-1 y(n-N) RII a) Structure directe II-20 Filtrage Numérique Filtrage Numérique 5 5 Structures de réalisation – Filtres RII H ( z) = 1 × N ( z) = D( z ) N 1 N 1 + ∑ ai z −i Structures de réalisation – Filtres RII × ∑ bi z −i x(n) b0 + w(n) i =0 Z-1 i =1 + -a1 ⎧ w(n) = x(n) − ∑ ai w(n − i ) ⎪⎪ i =1 ⎨ N ⎪ y (n) = ∑ bi w(n − i ) ⎪⎩ i =0 1 ⎧ .X ( z) ⎪W ( z ) = D( z ) ⎨ ⎪⎩ Y ( z ) = N ( z ).W ( z ) w(n) x(n) b0 + + + -a1 Z-1 Z-1 -aN-1 -aN RII Z-1 b1 + + x(n) y(n) -aN-1 N +1 2 N +1 2 i =1 i =1 H ( z ) = ∏ Hi( z ) = ∏ X(z) II-21 H1(z) + y(n) Z-1 + -a1 Z-1 bN-1 bN-1 + bN – Forme cascade de filtres du second ordre + b0 b1 + Z-1 bN -aN w(n-N) bN RIF y(n) Z-1 a) Structure canonique directe bN-1 + Z-1 b1 w(n-1) N + + Z-1 + -aN-1 -aN b) Structure canonique transposée bi ,0 + bi ,1 z −1 + bi , 2 z −2 H2(z) 1 + ai ,1 z −1 + ai , 2 z −2 ... HK(z) Y(z) II-22 Codage en virgule fixe complément à 2 2-n • Définition : Arithmétique virgule fixe -2m 2m-1 21 20 2-1 S b1 b0 m −1 x = −2 m S + ∑ bi 2i 1. Présentation arithmétique virgule fixe pMSB i=− n 2. Processus de codage en virgule fixe bm-1 bm-2 b-1 b-2 n m Partie entière Partie fractionnaire • m : distance (en nombre de bits) entre la position du bit le plus significatif pMSB et la position de la virgule pV 2.1. Détermination de la dynamique • n : 2.2. Détermination de la position de la virgule distance entre la position de la virgule pV et la position du bit le moins significatif pLSB 2m-1 2.3. Détermination de la largeur des données 20 3. Évaluation de la précision 2-n 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 x x b = m+ n+ 1 bits format: (b,m,n) x m S bm-1 b-6 b-7 pMSB n b=8 m = -3 n=10 b-n+1 b-n pLSB ex: 0.09472 (8,-3,10) 01100001 0.0625+0.03125+2-10 b pv IV-1 Codage en virgule fixe complément à 2 • Domaine de définition du codage : [− 2 m ,2 m − 2 − n pLSB b-n+2 b-n+1 b-n IV-2 Règles de l'arithmétique virgule fixe ] • Addition: z=x+y – Règle : le format des opérandes x et y doit être identique – Étapes : • Pas de quantification : q = 2− n Choix d'un format commun (bADD,mADD,nADD) Alignement de la virgule • Exemple de codage : – (6,3,2), Q26 Extension des bits des opérandes a et b 0111.11 7.75 0111.10 7.5 0000.11 0000.10 0000.01 0000.00 0 0.75 0.5 0.25 0 1111.11 -0.25 1111.10 -0.5 1111.01 -0.75 1000.01 -7.75 1000.00 -8 0 1 1 1 1 0 0 0 0 1 0 -7.75 = -8+0.25 1 0 0 mz IV-3 0 1 1 0 1 0 1 n ADD = max (nx ,n y ) bADD = m ADD + n ADD + 1 0 x (7.75) format : (7,3,3) 1 0 y (1.5) format : (3,1,1) m y ny my -0.5 = -8+7. 5 1 nx mx m ADD = max (mx ,m y ) 0 z (9.25) format : (8,4,3) + 1 si x + y ∉ DADD ⎧m mz = ⎨ ADD m si x + y ∈ DADD ⎩ ADD nz = n ADD bz = m ADD + n ADD + 1 nz IV-4 Exemple de calcul Règles de l'arithmétique virgule fixe – Règle : la représentation de a et b doit être identique – Débordement possible si sign(x) = sign(y) = sxy – Étapes : Débordement présent si sign(z) ≠ sxy 1 1 1 r=a×b • Multiplication: • Addition: z=x+y Extension des bits de signe des opérandes a et b 1 1 0 0 1 1 1 1 1 0 x (7.75) format : (7,3,3) 0 0 0 0 0 1 0 0 y (0.5) format : (2,0,1) 0 1 0 0 0 0 1 0 z (8.25) format : (8,4,3) 1 1 1 1 0 1 1 1 1 1 0 x (7.75) format : (7,3,3) 1 1 1 1 1 0 0 y (-0.5) format : (2,0,1) Doublement du bit de signe du résultat • Le bit redondant peut être intégré à la partie entière du résultat -20 2-1 0 0 1 1 1 0 1 0 z (7.25) 0 0 format : (7,3,3) -21 2-2 0 0 0 1 1 Nécessité d'un bit supplémentaire pour coder le résultat x (0.5) 0 0 1 Si il n 'y a pas de débordement la dernière retenue peut être ignorée 0 -2-2 1 y (1.75) format : (4,1,2) 0 1 1 1 z (0.875) nz = n x + n y mz = m x + m y + 1 ny my 0 format : (2,0,1) nx format : (6,2,3) bz = bx + by nz mz 2-3 IV-5 Exemple de calcul • Multiplication: Résumé des règles • Addition r=a×b – Choix du format commun : Extension du signe des opérandes 2-3 1 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 .0 1 x x (-0.5) y (0.75) bin format : (4,0,3) + y format : (4,0,3) z bout si bout = bin alors mADD = max (mx ,m y ,mz ) si bout > bin alors mADD = max (mx ,m y ) bin 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 2-1 0 1 1 1 1 IV-6 0 • Multiplication 0 0 z (-0.375) nz = n x + n y x format : (8,1,6) 2-6 × Bit de signe y Bit de signe redondant IV-7 z mz = m x + m y + 1 Doublement du bit de signe bz = bx + by IV-8 Codage des données • Codage des données en virgule fixe : II. Arithmétique virgule fixe – Définir la position de la virgule : Nombre de bits pour la partie entière et pour la partie fractionnaire 1. Présentation de l'arithmétique virgule fixe 2. Processus de codage en virgule fixe -2m 2m-1 21 20 2-1 S b1 b0 bm-1 bm-2 2-n b-1 b-2 n m 2.1. Détermination de la dynamique Dynamqiue b-n+2 b-n+1 b-n Partie entière Partie fractionnaire Précision 2.2. Détermination de la position de la virgule 2.3. Détermination de la largeur des données Respecter les règles de l'arithmétique virgule fixe Garantir l'absence de débordement 3. Évaluation de la précision Maximiser la précision des calculs RSBQ (Rapport Signal à Bruit de Quantification) IV-9 Les différentes étapes du codage IV-10 Méthodologie de codage Application • Détermination du domaine de définition : D(xi) – Valeur minimale et maximale des données Détermination de la dynamique • Détermination de la position de la virgule mxi Détermination de la position de la virgule – Nombre minimal de bits pour représenter la partie entière permettant Évaluation de la précision d'éviter les débordements • Déterminer et optimiser la largeur des données bxi Synthèse de l'architecture – Utiliser au mieux l'architecture Optimisation de la largeur des données RSBQ Selection Scheduling Allocation • Évaluation de la précision de l'algorithme : Optimisation du format des données Génération de code Instruction selection Register allocation Scheduling Optimisation RSBQmin – Calcul du Rapport Signal à Bruit de Quantification (cf. TNS partie 2) Code VHDL IV-11 Implantation matérielle : FPGA, ASIC Contrainte de précision associée a l'application Code assembleur Implantation logicielle : DSP, µC IV-12 Fil rouge : filtre FIR Fil rouge : filtre FIR float Input[N] = {0.123, -0.569,...} /* Définition du signal d 'entrée du filtre */ • Graphe Flot de Signal du filtre FIR float h[N] = {0.2,…, 0,48 ,…, 0.2 }; /* Définition des coefficients du filtre*/ int main() { float x[N], y[M], acc; x (n ) int i,j; for(j=0; j<M; j++) c0 /* Filtrage du vecteur d'entrée input */ { z-1 × c1 z-1 × cN − 2 z-1 × cN −1 × x[0] = Input[j]; acc = x[0]*h[0] ; + for(i=N-1; i>0; i--) + { acc = acc + x[i]*h[i]; /* Calcul d'une cellule du filtre */ x[i] = x[i-1]; /* Vieillissement des variables internes du filtre */ + y (n ) } y[j] = acc; } } IV-13 IV-14 Largeur des données dans un DSP bmem • Architecture simple/double II. Arithmétique virgule fixe précision Reg A – Simple: badd = bmult = bmem bmem – Double: badd = bmult = 2.bmem pas d’erreurs dues aux multiplications bg bmult 2.1. Détermination de la dynamique ACCL 2.bmem – Réduit l’overflow en étendant la partie entière 1. Présentation de l'arithmétique virgule fixe 2. Processus de codage en virgule fixe Reg C – badd = bg + bmult ACCH bmem × • Bits de garde Guard Bits Reg B badd + 2.2. Détermination de la position de la virgule Reg C 2.3. Détermination de la largeur des données Saturation / Rounding / Shifter 3. Évaluation de la précision bmem 15 IV-15 IV-16 Détermination de la dynamique Méthodes pour déterminer D(xi) Détermination de la dynamique Détermination de la position de la virgule Format des données: (b,m,n) Détermination et optimisation de de la largeur des données 2-n -2m 2m-1 21 20 2-1 S b1 b0 bm-1 bm-2 pMSB b-1 b-2 pLSB Partie entière du signal ð Estimation précise mais dépendante du signal d'entrée Partie fractionnaire But: déterminer le nombre de bits minimal pour représenter la partie entière (mxi) mxi = ⎣log 2 (max( xi – Simulation de l'algorithme en virgule flottante – Détermination de la dynamique à partir des paramètres statistiques b-n+2 b-n+1 b-n n m • Méthodes statistiques ))⎦ + 1 • Méthodes analytiques – Détermination de l'expression de la dynamique – Utilisation de la norme L1 ð Estimation conservatrice mais l'absence de débordement est garantie IV-17 Méthodes analytiques Filtre FIR • Normes dans le cas des systèmes linéaires – Norme L1: X(z) H(z) Y(z) Ø Méthode garantissant l'absence de débordement ∞ ymax1 = max n ( x(n) ). ∑ h(m) IV-18 • Propagation de la dynamique des entrées au sein du GFS représentant l'application x (n ) ] − 1,1[ z-1 z-1 z-1 m = −∞ – Norme Chebychev ymax 2 = maxn ( x(n) )maxω ( H (ω ) ) Ø Méthode garantissant l'absence de débordement pour un signal d'entrée à bande étroite ( x(n)=cos(nwTe) ) c0 × ] − c0 , c0 [ c1 × ] − c1 , c1 [ + – Norme L2 ymax 3 = max n ( x(n) ). ∞ ∑ h(m) 2 Ø Méthode limitant la probabilité de débordement × ] − cN −2 , cN −2 [ IV-19 cN −1 × ] − cN −1 , cN −1 [ + + ∞ N −1 m = −∞ m =0 • Normes L1 m = −∞ ymax 3 ≤ ymax 2 ≤ ymax1 cN − 2 ⎤ N −1 N −1 ⎡ ⎥ − ∑ ci , ∑ ci ⎢ i =0 ⎦ i =0 ⎣ y (n ) max n ( y (n ) ) = max n ( x (n ) ). ∑ h(m) = ∑ ci = 10.65 IV-20 Dynamique dans un système cascadé Dynamique dans un filtre IIR • Dynamique de la sortie y2 • Sources de débordement : additionneurs – Filtre IIR forme directe II: 2 sources ADD0 et ADD1 H(z) = H1(z).H2 (z) Forme directe II H1 ( z) x(n) y1(n) H1(z) y2(n) H2(z) xn ADD 1 wn ADD 0 + b0 z-1 × H1 (e jΩ ) × w(n) = x(n) − a1w(n −1) − a2w(n − 2) H 2 (e jΩ ) yn + × -a1 b1 z-1 ∞ ymax1 = xmax . ∑ h(m) ∞ w max1 = xmax . ∑ hD (m) m=−∞ H12 (e jΩ ) = H1H 2 (e jΩ ) HD (z) = × × 1 1+ a1z + a2z −2 -a2 −1 m = −∞ H ( z) = b2 b0 + b1 z −1 + b2 z − 2 1 + a1 z −1 + a2 z − 2 IV-21 Exemple : filtre IIR directe II • Filtre H(z) H ( z) = xmax • Norme L1 Exemple : filtre IIR directe II 0.5 − 0.2428 z −1 + 0.5 1 − 0.85 z −1 + 0.8417 z − 2 • Comparaison des différentes méthodes Méthodes ∞ ∑ h(m) = 2.5645 ⎯⎯→ m y ∞ ∑h D ( m) = 9 G1.max =2 N1 G2.max N2 Méthodes analytiques m = −∞ xmax IV-22 ⎯ ⎯→ mw = 4 Norme L1 2,56 2 9 4 Norme Chebychev 1.687 1 7,13 3 m = −∞ Méthodes statistiques F iltre1 N um (z )/D en(z ) 2 Chirp 1,66 1 7.12 3 Bruit blanc gaussien 0.74 0 2.34 2 Bruit blanc uniforme 1.4 1 4.87 3 1.5 • Norme Chebychev H(jw) 1 0.5 0 0 0.5 1 1.5 2 2.5 3 3.5 F iltre 1/D en(z ) 8 Fonction de transfert des filtres H(z) et HD(z) G1max = ymax xmax N1 = ⎡log 2 (G1max )⎤ G2 max = wmax xmax N 2 = ⎡log 2 (G2 max )⎤ 6 HD(jw) 4 2 0 0 0.5 1 1.5 2 2.5 3 3.5 IV-23 IV-24 Obtention de la position de la virgule Détermination de la dynamique Détermination de la position de la virgule • Objectifs du codage en virgule fixe II. Arithmétique virgule fixe – Respect des règles de l'arithmétique virgule fixe Détermination et optimisation de de la largeur des données Alignement de la virgule des opérandes sources d'une addition 1. Présentation de l'arithmétique virgule fixe ou d'une soustraction Format commun pour les opérandes sources 2. Processus de codage en virgule fixe – Prévenir les débordements 2.1. Détermination de la dynamique Recadrage des données : adapter le format des données à la dynamique des 2.2. Détermination de la position de la virgule données Débordement possible lors d'une addition ou d'une soustraction 2.3. Détermination de la largeur des données Nécessité d'introduire des bits supplémentaires 3. Évaluation de la précision IV-25 IV-26 Règles pour la position de la virgule Règles pour la position de la virgule • Donnée x : • Additionneur avec bit de garde – Changement de référentiel mx = ⎣log 2 (maxn ( x(n) ))⎦ + 1 garde disponible Sx Bg • Multiplication : format de la sortie Sy Sy Sy Sz Sz my bmz-1 gz • Addition : choix d'un format commun bmx-1 bmy-1 gy mz = m x + m y + 1 m y : position de la virgule de y par mxʹ′ Nombre de bit de mz b0 b-1 b-2 b-n x b0 b-1 b-2 b-n y b0 b-1 b-2 b-n z my' rapport au bit le plus significatif de y m y ' : position de la virgule de y dans le référentiel commun m yʹ′ = m y − g y mzʹ′ = mz − gz mz ' m ADD = max( mx − g x , m y − g y , mz − Bg ) m ADD = max( mx , m y , mz ) IV-27 IV-28 Cas du filtre FIR Cas du filtre FIR • Architecture sans bit de garde • Architecture avec 8 bits de garde z-1 x(n − i ) S S mx = 0 S S S × Ng = 8 (8 bits de garde) S S mMULT = 0 S S + S S S S S + mADD = 4 S S S S S S S + ci × S S S S S S S >> mADD = 4 mc = −1 >> 4 S S mx = 0 S S S mMULT = 0 x(n − i ) S × ci mc = −1 z-1 × y (n ) S S + y (n ) S S S S S g ACC = 4 >> 4 mACC = 4 S S S S S S Renvoi en mémoire en simple précision Renvoi en mémoire en simple précision S IV-29 IV-30 Optimisation de la largeur Détermination de la dynamique Détermination de la position de la virgule Détermination et optimisation de de la largeur des données Arithmétique virgule fixe • Implantation logicielle 1. Présentation de l'arithmétique virgule fixe – Architectures traditionnelles : opérateurs de largeur unique 2. Processus de codage en virgule fixe – Architectures évoluées : différents types de données sont supportés 2.1. Détermination de la dynamique • Implantation matérielle 2.2. Détermination de la position de la virgule – Objectif : optimiser la largeur des opérateurs 2.3. Détermination de la largeur des données 3. Évaluation de la précision IV-31 IV-32 A Cas du filtre FIR B 16 bits Recadrage des données dans un FIR × 32 bits • Architecture double précision Recadrage externe 32 bits 32 bits Accumulateur x (n ) Déplacement vers l'entrée c0 Recadrage des coefficients + (sans bit de garde) x (n) >> z-1 z-1 z-1 (16,0,15) z-1 16 bits 16 bits Déplacement vers les coefficients z-1 z-1 b0 (16,-1,16) c1 × cN − 2 × × cN −1 >> × (32,0,31) 32 bits >> >> >> + b1 >> × bN-2 >> × bN-1 >> × >> >> >> >> + + + + Renvoi en mémoire du résultat y (n) >> (32,4,27) 32 bits × + + 32 bits Q (16,4,11) 16 bits (32,4,27) y (n ) Filtre FIR >> Recadrage interne IV-33 IV-34 Filtre FIR : code C virgule fixe int Input[M] = {4030,..., ...} /* Signal x, codage (16,0,15)*/ int c[N] = {13107, 14336, 15565, ..., 13107, 14336}; int main() { int x[N]; y[M]; long /* Coefficients (16,-1,16) */ Le signal d'entrée et les coefficients sont spécifiés au niveau du code C en entiers sur 16 bits (absence de type virgule fixe en C) : • l'entier représentant Input (16,0,15) est obtenu en multipliant Input par 215 • l'entier représentant c (16,-1,16) est obtenu en multipliant c par 216 acc; int i,j; for(j=0; Arithmétique virgule fixe 1. Présentation de l'arithmétique virgule fixe 2. Processus de codage en virgule fixe j<M; j++) /* Filtrage du vecteur d'entree input */ 2.1. Détermination de la dynamique { x[0] = Input[j]; 2.2. Détermination de la position de la virgule acc = (long)(x[0]*c[0]) >> 4; 2.3. Détermination de la largeur des données Recadrage de la sortie de la multiplication : changement de format : (32,0,31) ð (32,4,30) for(i=N-1; i>0; i--) { acc = acc + ((long)(x[i]*c[i]) >> 4); x[i] = x[i-1]; 3. Évaluation de la précision /* Calcul d'une cellule du filtre */ /* Vieillissement des variables internes */ } } } y[j] = (int)(acc>>16); Réduction de la largeur de la variable 32 bits ð 16 bits Récupération des 16 bits les plus significatifs de la donnée (l 'opération de cast sur acc permet de récupérer les bits de poids faible uniquement) IV-35 IV-36 Quantification Quantification 1 2 Bruit de conversion A/N Quantification d'une sinusoïde Quantification en conversion A/N x(n) • Modèle bruit additif 3q 2q q n multiple entier du pas de quantification élémentaire q. n • Sources de bruit – Bruit de conversion A/N xQ(n) = Q[x(n)] – Limitation des chemins de données de l'architecture cible e(n) = xQ(n) - x(n) Élimination de bits lors d'un changement de format |e(n)| ≤ q/2 IV-37 IV-38 Quantification Quantification 2 2 Caractéristiques de quantification . Arrondi Q(x) = k.q Etude statistique si (k-1/2).q ≤ x < (k+1/2).q x fQ(x) P(e) xi ui ui+1 σ e2 = µe = 0 1/q −q 2 x e(x) q q 2 x de k bits • {e(n)} est une séquence d'un processus aléatoire continu et stationnaire (a) Arrondi • ergodicité : moyennes temporelles = moyennes statistiques x • moyenne µe = moyenne temporelle e(x) σ e2 = q2 12 P(e) q 2 1/q x −q µe = 20 2-1 2-j 2-j-1 2-n S bm-1 b0 b-1 b-j b-j-1 b-n+2 b-n+1 b-n j p (e) n (b) Troncature e.2 n • Moments k e.2 n (q = 2 ) −j q ui ui+1 x p (e) Bits supprimés Bits restants 2m-1 • Processus aléatoire discret • {e(n)} est décorrélée de {x(n)} • la distribution de probabilité de {e(n)} est uniforme sur l'intervalle de quantification fQ(x) q Caractéristiques de quantification • Bruit lié à l'élimination • {e(n)} est un bruit blanc additif q2 12 . Troncature Q(x) = k.q si k.q ≤ x < (k+1).q ui ui+1 xQ(n) – e(n) est l'erreur de quantification q/2 - q/2 xi ui ui+1 + – Définition : approximation de chaque valeur d'un signal x(n) par un n xQ(n) CAN x(n) Q e(n) = Q[x(n)] - x(n) e(n) x(n) xQ(n) = Q[x(n)] = k.q x(n) xQ(n) 3q 2q q Modèle de bruit • variance σe2 = puissance du bruit variance = q2/12 µb = 0 IV-39 σ b2 = q2 (1 − 2−2k ) 12 µb = q (1 − 2−k ) 2 σ b2 = q2 (1 − 2−2k ) 12 IV-40 Quantification 2 Filtrage d'un bruit de quantification Caractéristiques de dépassement • Filtrage du bruit de conversion D[x(n)] x(n) D Filtre Saturation Modulaire – Complexe – Moins d'effets indésirables – Effets indésirables fD(x) Xmax Xmax A xQ(n) H(z) N x(n) – Valeurs de x(n) lorsqu'il sort de la dynamique de codage Xmax σ e2 = xQ(n) Filtre H(z) e(n) σ x2 σ x2 2 = = 12.2 2 (b −1) σ x σ e 2 q 2 / 12 RSBdB = 10 log RSB = 6.02 b + 4.77 + 10 log σ x Xmin 2 Le RSB augmente de 6dB par bit ajouté IV-41 Filtrage d'un bruit de quantification x(n) xQ(n) + IV-42 Sources de bruit dans un FIR s Bruit de quantification associé à l'entrée s Bruit lié au recadrage externe Filtre H(z) f (n ) = e(n ) * h(n) y(n)+f(n) bruit x (n) signal • Moments du bruit en sortie b0 +∞ e n = −∞ +∞ 2 σ 2f = σ e2 ∑ h(n) = n = −∞ ( ) H e j0 σ e2 2π π ∫π − ( ) z-1 + + Δb0 ∑ h( n) = µ s Bruit lié au renvoi en mémoire du résultat bx e(n) µ f = µe y(n) q2 2 , σ x puissance du signal d ' entrée 12 RSB = Xmax Xmin + – Signal x(n) + Bruit de conversion e(n) fD(x) x x(n) • En entrée du filtre Xmin Xmin y(n) × b1 z-1 + Δb1 × z-1 bN-2 + × bgm0 + bgm1 + Δb N-2 bgm N-2 + + + + 2 bN-1 + × Δb N-1 bgm N-1 + + bg mem + Filtre FIR H e jΩ d Ω s Biais lié au codage des coefficients IV-43 y (n) s Bruit lié au recadrage interne IV-44 Exemple du filtre FIR Exemple du filtre FIR • Sources de bruit : • Puissance du bruit en sortie (arrondi) bx x (n) z-1 + z-1 N −1 z-1 σ b2 = σ b2ʹ′ + σ b2 + ∑σ b2 y c0 × × c1 × cN-2 cN-1 × bgm0 + bgm1 + bgm N-2 + bgm N-1 + + + + + σ b2 = σ b2 y bg mem + σ b2 = y (n) y x(n) N.bgm bx + h + e e mem +∞ ∑ h(m) m = −∞ i =0 2 gm . i N −1 + σ b2mem + ∑σ b2gm . i i =0 2 qe2 N −1 2 qmem q2 cm + + N . mi ∑ 12 m=0 12 12 y (n) bg mem IV-45 IV-46 Exemple filtre FIR • Équation aux différences Implantation d'algorithmes de TNS N −1 ⎧h(i) = ci ∀i ∈ [0, N − 1] y (n) = ∑ ci . x(n − i ) = x(n) * h(n) avec ⎨ ailleurs i =0 ⎩ h(i) = 0 x(n) y (n) 1. Caractéristiques des algorithmes de TNS h 2. Fonctionnement temps réel 3. Solutions architecturales • Graphe Flot de Signal x (n ) c0 z-1 × c1 × cN −1 + × + y (n ) III-2 • Charge de calcul importante multiplications-accumulations (convolution) : MAC (multiplication-accumulation) multiplications-additions (FFT, DCT, adaptation,...) • Adaptation yn = yn-1 + x.h cN − 2 z-1 Caractéristiques algorithmiques • Filtrage, convolution y = y + x.h × + III-1 Fonctions typiques de TS z-1 • Virgule Fixe ou Flottante : MAD (multiplication-addition) problèmes liés à la quantification !!! • FFT, multiplication complexe • Calculs d'adressage complexes xr = xr.wr - xi.wi accès linéaire, indexé xi = xr.wi + xi.wr bit-reverse ou similaire (FFT) vieillissement des données … • Viterbi • Boucles de traitement courtes a1 = x1 + x2; a2 = y1 + y2; y = (a1>a2) ? a1 : a2 : ACS III-3 III-4 Caractéristiques algorithmiques • Traitement temps réel Temps d'exécution de l'algorithme Tex guidé par acquisition I/O Implantation d'algorithmes de TNS Période d'échantillonnage Te Période des sorties Tf (frame period) > Tex Ni plus vite ... ni plus lentement (not faster ... not slower) 1. Caractéristiques des algorithmes de TNS • Signaux numériques : quantité importante de données 2. Fonctionnement temps réel Données scalaires, vectorielles, matricielles, multidimensionnelles Opérations I/O intensives par DMA 3. Solutions architecturales e(t) Te s(t) Algorithme ex. s(n) = max(moy(e), s(n-1)) Tf III-5 III-6 Contraintes temps réel Exemple filtre FIR • Traitement en ligne • Traitement par ligne : code C ... Phases • acquisition de l'échantillon x(n0) int main() { • traitement (période du traitement : Te) float x[N], y, acc; • restitution de l'échantillon y(n0 -1) int i; x(n) y(n) T.N.S. x(n0) n0 y(n0) n0 x[0] = Read.Input.Sample(); acc = x[0]*h[0] ; n. for(i=N-1; i>0; i--) { n Input(), output() acc = acc + x[i]*h[i]; /* Calcul d'une cellule du filtre */ x[i] = x[i-1]; /* Vieillissement des variables internes du filtre */ } fir y = acc; idle Te 2.Te n.Te Write.Output.Sample(y); t } Te > texec + t acq III-7 III-8 Contraintes temps réel Contraintes temps réel • Traitement par bloc • Traitement par blocs Phases – Les phases d'acquisition d'un traitement au suivant peuvent soit • acquisition de l'échantillon x(n0) et rangement dans le vecteur X • traitement (période du traitement : N.Te) se recouvrir • restitution de l'échantillon y(n0 -N) x(n) x(n) x(n0) x(n0-1) x(n0 -2) x(n0 -3) n0 T.N.S. x(n0 -4) n être jointives être disjointes x(n) N points x(n) y(n) y(n0) y(n0-1) y(n0 -2) y(n0 -3) Xn n0 y(n0 -4) n. Xn Xn+R Xn+2R Xn+N Xn Xn+2N Xn+M Input(), output() FirBloc idle Te 2.Te n.Te t N .Te > texec + N .t acq III-9 III-10 Exemple filtre FIR Cadence des calculs • Traitement par blocs : code C ... • Nv : nombre de voies à traiter en parallèle int main() { • Nop : quantité d'opérations élémentaires nécessaires /* Filtre de longueur N, blocs de taille M) float x[N+M], y[M], acc; for(j=M-1; au TNS x[0] x[1] … x[M-1] x[M] … x[M+N-1] int i,j; j>=0; j--) • Te /* Acquisition du vecteur d'entrées */ x[j] = Read.Input.Sample(); for(j=0; j<M; j++) { /* Filtrage du vecteur d'entrées */ : périodicité du calcul • Puissance de calcul de la machine : acc = 0; for(i=0; i<N; i++) { acc = acc + x[i+j]*h[i]; Pcalcul = } y[j] = acc; for(j=M-1; } Te (en MIPS, MOPS ou MFlOps) Pcalcul = 2.B. NV . N op } for(i=0; i<N; i++) x[i+M] = x[i]; NV . Nop /* décalage N derniers échantillons */ B est la bande du signal j>=0; j--) Write.Output.Sample(y[j]); /* Restitution vecteur sorties */ III-11 III-12 Solutions architecturales • Applications embarquées et « grand public » Implantation d'algorithmes de TNS – Très faible coût Le coût est proportionnel à la surface du circuit 1. Caractéristiques des algorithmes de TNS – Faible consommation Pmoy = α . C . Vdd 2 . F 2. Fonctionnement temps réel • α: facteur d'activité défini comme le nombre moyen de transitions (0 à 1) pendant une période d'horloge. 3. Solutions architecturales Une partie importante de la consommation est liée à la mémoire • Nécessité de minimiser la largeur des données et des instructions stockées en mémoire – Temps réel Implémentation efficace des applications de TS – Sûreté de fonctionnement III-13 III-14 Solutions architecturales • Compromis performance - flexibilité Pc ( MIPS / mW ) C 1. Introduction Pleiades 10-50 MOPS/mW Embedded Processor Flexibility EE = Processeurs de traitement du signal 2 V DSP 3 MOPS/mW Efficacité énergétique : ASIC ASIP Embedded FPGA 100 Reconfigurable Processor DSP 2.3. Unité de contrôle Alpha 0.007 MIPS/mW 2.4. Unité de communication 3. Exemples de processeurs 10 EE : Efficiency : MIPS / Watt 2.1. Unité de traitement 2.2. Unité de mémorisation SA110 0.4 MIPS/mW 100-1000 MOPS/mW 2. Description des différentes unités 1 III-15 4. Outils de développement III-16 Modélisation d'un processeur Modélisation d'un processeur • Unité de contrôle (IP : Instruction Processor) : unité fonctionnelle (UF) qui interprète les instructions et commande les autres UF Unité de contrôle : I.P. • Unité de traitement (DP : Data Processor) : UF qui modifie ou transforme les données Unité de traitement D.P. • Unité de mémorisation: – IM : Instruction Memory : stocke les instructions Unité de mémorisation I.M. + D.M. – DM : Data Memory : stocke les données traitées par le DP Unité de communication : E.I.U • Unité de communication (EIU : External Interface Unit) : contrôle les accès aux données ou instructions externes, ou à d'autres processeurs III-17 FIR sur machine Von Neumann III-18 Inadéquation des processeurs généralistes • Problèmes : • Unité de traitement – Bande passante avec la mémoire – Opérateur arithmétique peu performant (multiplication lente) Lecture des échantillons – File de registres Vieillissement des échantillons • Unité de mémorisation – Gestion des pointeurs d'adresse – Bande passante avec la mémoire faible loop:! !mov !mov !mpy !add !mov !inc !inc !inc !dec !tst !jnz *r0,x0! *r1,x1! x0,x1,a! a,b! x1,*r2! r0! r1! r2! ctr! ctr! loop! – Gestion peu efficace des pointeurs d'adresse Lecture des opérandes sources Opération MAC Data Path • Unité de contrôle Memory – Gestion peu efficace des boucles Vieillissement de l'échantillon Gestion des pointeurs d'adresse Gestion de la boucle ! ! ! ! ! ! ! ! lec! Exécution en 15 à 20 cycles III-19 III-20 Objectifs Caractéristiques des DSP • Unité de traitement : Propriétés du traitement numérique du signal – Réaliser efficacement les traitements typiques en TNS 1 MAC par cycle • Unité de mémorisation : Calculs intensifs et répétitifs – Alimenter efficacement en données l'unité de traitement afin de ne pas la ralentir – Gérer efficacement les pointeurs d'adresse • Unité de contrôle : Conséquences sur les architectures s Fonctionnement pipeline s Architecture Harvard s Structures de contrôle évoluées s Unités de traitement spécialisées câblées s Gestion complexe de l'adressage ? Primitives simples – Gestion efficace des structures de contrôle utilisées en TNS : boucles – Encodage des instructions • Minimiser la taille des instructions • Encoder le maximum de parallélisme Le tout dans un environnement temps réel III-21 III-22 Le marché des processeurs DSP Les différentes générations Performances normalisées 10000 @ Forward Concept Inc. Architecture VLIW superscalaire 1000 StareCore(300MHz) TMS320C62x (300MIPS) Carmel (300 MHz) Architecture conventionnelle améliorée 100 2ème génération 10 TMS320C20 (5 MIPS) TMS320C10 (2.5 MIPS) 1 1980 1982 1984 1986 DSP16210 (100 MIPS) DSP56301 TMS320C54x (50-100MIPS) ADSP2183 (50MIPS) DSP56001 (13MIPS) ADSP21xx (13MIPS) TMS320C50 1ère génération III-23 4ème génération 3ème génération Architecture conventionnelle 1988 1990 1992 Année 1994 1996 1998 2000 2002 III-24 Exemple Fil Rouge • Filtre numérique FIR sur N points Processeurs de traitement du signal N −1 y (n) = ∑ h(i ).x(n − i ) = x(n) ∗ h(n) 1. Introduction i =0 D 2. Description des différentes unités 2.1. Unité de traitement h(0) 2.2. Unité de mémorisation x h(1) 2.3. Unité de contrôle x + h(3) x + – Dynamique limitée : [-Xmax et Xmax] – Le format d'une donnée ne varie pas au cours du temps Possibilité de débordement ð nécessité de recadrer les données – Représentation : partie entière - partie fractionnaire 21 20 2-1 2-2 bm-1 bm-2 b1 b0 b-1 b-2 Partie entière x + y(n) III-26 • Arithmétique : 2m-1 h(4) DSP virgule fixe • Virgule fixe 2-n b-n+2 b-n+1 b-n • Développement : CA2 i =− n Partie fractionnaire TMS320C62x : - fCLK : 300 MHz (150 MHz - 300 MHz) - On Chip Memory 72 Kbytes ð 896 Kbytes - Price : $9 ð 102 TMS320C64x : - fCLK : 1 GHz (300 MHz - 1GHz) - On Chip Memory 160 Kbytes ð 1056 Kbytes - Price : $18 ð 219 – Temps de développement plus long m −1 x = (−2) m S + ∑ bi 2i Étude la dynamique des données, détermination du codage et des recadrages • Architecture : – Opérateurs plus simples • Virgule flottante – Largeur des données bnat : 16 bits Efficacité énergétique plus importante, consommation moins importante – Représentation : exposant - mantisse Exposant h(2) III-25 Représentation des données d1 D ð Objectif : traitement d'une cellule par cycle 4. Outils de développement dE-1 D Cellule 3. Exemples de processeurs S x + 2.4. Unité de communication S D x(n) d0 cM-1 c2 Mantisse c1 c0 ⎛ 1 M ⎞ x = 2u (−1) S E ⎜ + ∑ Ci 2i −1 ⎟ ⎝ 2 i =1 ⎠ E −1 avec u = (−1) S E ∑ d i 2i Processeur plus rapide Processeur moins cher (surface du circuit moins importante) • Marché : applications grand public – 95% des ventes en 96 i =1 III-27 III-28 DSP virgule flottante Eléments de l'UT • Arithmétique : – Dynamique importante : 1500 dB pour 32 bits • Opérateurs TMS320C67x : - fCLK : 300 MHz (100 MHz - 300 MHz) - On Chip Memory 72 Kbytes ð 264 Kbytes - Price : $14 ð 105 – Multiplieur câblé Multiplication en 1 cycle ou pipelinée (1 résultat de multiplication par cycle) • Développement Le résultat est fourni directement à l'UAL ou il est stocké dans un registre (P register) – Temps de développement plus court Largeur des opérandes Recadrage des données assuré par le processeur Compilateur de langage de haut niveau plus efficace : plus grande portabilité source : bnat résultat : bmult = 2.bnat – U.A.L. Opérations arithmétiques : addition, soustraction, incrémentation, négation • Architecture : Opérations logiques : and, or, not – Largeur des données : 32 bits – Opérateurs plus complexes (gestion de la mantisse et de l'exposant) Largeur des opérandes sources et destination identique badd ≥ 2.bnat – Additionneur indépendant de l'UAL Processeur plus cher et consommant plus – Registres à décalage (recadrage des données) spécialisé : réalisation de quelques décalages prédéfinis en // • Marché en barillet : réalisation d 'un décalage quelconque en 1 cycle – Applications nécessitant une grande dynamique : audionumérique – Applications avec des faibles volumes III-29 Éléments de l'UT III-30 Structure de l'UT de type MAC – Unités de saturation ou d'arrondi – Unités spécifiques Unité de manipulation de bit, Viterbi, ... Opérateurs Nbits Entrées Nbits Sortie Multiplieur b nat 2 b nat Additionneur/ UAL • Unités de stockage de l'UT 2 b nat 2 b nat 2 bnat +b g 2 b nat +b g 2 b nat b nat 2 b nat +b g b nat Saturation/Arrondi – Registres opérandes A bnat × P Stockage des opérandes sources ou des résultats intermédiaires – Registres d'accumulation Stockage du résultat de l'additionneur Nombre de registres d'accumulation limité (1 à 4) Données stockées en double précision Possibilité de bits de garde pour stocker les bits supplémentaires issus d 'accumulations successives badd = bmult + bg Bits de garde bg ACCH Registre Nbits Opérande source b nat Accumulateur Interconnexions registres - opérateurs spécialisées ð Structure hétérogène ð Bonnes performances en terme de consommation et de surface ACCL 2.bnat III-31 bmult MAC + 2 b nat 2 bnat +bg B bnat badd Accumulateur Sat /Arr III-32 Exemple : TMS320C54x DB CB DB CBDB EB PB CB DB 1 multiplieur 16*16 bits Op source 1 : registre T Op source 2 : mémoire Op destination : Processeurs de traitement du signal 1. Introduction 1 additionneur 40 bits 1 ALU (40 bits) 2 registres d 'accumulation 40 bits 1 registre à décalage en barillet 1 unité dédiée à l 'algorithme de Viterbi 2. Description des différentes unités 2.1. Unité de traitement 2.2. Unité de mémorisation 2.3. Unité de contrôle 2.4. Unité de communication 3. Exemple de processeurs III-33 Exemple FIR Fil Rouge • Modèle registre-mémoire – Recherche de l'instruction – Opérandes situées en mémoire et dans les registres – Lecture de la donnée xn-k Temps d'exécution de l'instruction – Lecture du coefficient hk D h(0) h(1) h(2) x h(3) x h(4) x Temps d'exécution de l'instruction + + texec Opérateur Mémoire tacc RX RY tinst = max(texec,,tacc) y(n) + R • Modèle « Load-Store » D – Opérandes situées uniquement dans des registres x tacc A x(n) x Mémoire tinst = tacc+ texec – Vieillissement des données xn-k-1 = xn-k D III-34 Localisation des opérandes • Les différents accès à la mémoire D 4. Outils de développement Opérateur + texec TAP A III-35 III-36 Architecture Harvard de base Modification 1 • Architecture Harvard : séparation de la mémoire • Autorisation de mémorisation de données et de la mémoire programme données dans l'IM DP IP ð Fetch d'instruction pipeliné avec fetch opérande • En un cycle si 2 accès mémoire par DP cycle IP (tacc = 1/2.tinst) : 1-vers-2 – fetch de l'instruction – fetch deux opérandes de la mémoire Ex: TMS320C10 – exécution d'un MAC DM IM/DM – écriture du résultat en I/O ou mémoire DM IM AT&T DSP32 et DSP32C [Classification de E. Lee (1989)] III-37 Modification 2 Modification 3 • DM est une mémoire multi- DP IP • Cache pour charger les ports, plusieurs accès aux données par cycle DP IP 1-vers-2 cache DM IM/DM instructions fréquentes • Évite les conflits d'accès • Utilisable pour des mémoires internes au CI III-38 DM données et instructions de la modification 1 IM Fujitsu MB86232 (3 ports en mémoire interne) III-39 TMS320C25 : DSP16 : ADSP-2100 : cache 1 instruction pour les boucles cache 15 instructions cache 16 instructions III-40 Modification 4 Modèle du C54x • Deux mémoires données DP DM séparées • Bus et mémoires internes IP Mémoire interne • En un cycle : 1-vers-2 – fetch de l'instruction – fetch de deux opérandes (si les ROM : - Bootloader - Utilisation dans l'espace data ou program Program temps d 'accès aux mémoires DM1, DM2 et IM sont identiques) DM 1 DM 2 IM Data read DARAM (Dual Acces RAM) - 1 lecture + 1 écriture par cycle Data read SARAM (Single Acces RAM) - 1 lecture ou 1 écriture par cycle Data write Motorola DSP 56001 et 96002 TMS320C30 et C40 III-41 Modes d'adressage Modes d'adressage • Adressage immédiat : la donnée est stockée directement dans l'instruction – Exemple C54x : LD #75h, A III-42 A = 75h • Adressage mémoire directe : l'adresse de la donnée est stockée dans l'instruction – Adressage absolu : l'adresse complète est stockée dans l'instruction Adressage court (instruction sur 1 mot) : valeur spécifiée sur 3,4,8 ou 9 bits C54x les adresses sont sur 16 bits Adressage long (instruction sur 2 mots) : valeur spécifiée sur 16 bits L'instruction doit être codée sur plusieurs mots – Utilisé pour l'initialisation des registres – Inconvénient : augmentation du temps d'exécution et de la taille du code – Adressage paginé : pour limiter le nombre de bits stockés dans l'instruction l'adresse est composée de deux parties : • Adressage registre directe : les données sont stockées dans des registres a15 a11 A10 a9 a8 a0 – Exemple C54x SUB A, B Partie stockée dans un registre . pointeur de page: DP . pointeur de pile: SP III-43 9 bits TMS320C54x 7 bits Partie stockée dans l'instruction III-44 Modes d'adressage Buffer circulaire et bit-reverse – Buffer circulaire : • Adressage indirecte par registre : – Registre d'adresse (AR) pointant sur les données LD *AR1, A xn-2 – Possibilités de post modifications : linéaire : AR:= AR ± 1 LD *AR1+, A addr = AR1 AR1 = AR1 + 1 indexé : AR:= AR ± MR LD *AR1+0, A addr = AR1 AR1 = AR1 + AR0 – MR: registre d'index x0 x1 x5 x2 x3 modulo : (AR:= AR ± 1)N N=8 *AR1 – Bit-Reverse : . Adressage des données en entrée ou en sortie de la FFT . Attention à l 'adresse de début du tableau : xxxx0000 addr = AR1 AR1 = bitrev(AR1 + AR0) LD *AR1+0B ,A Dernier élément du tableau xn (BK) specifies the size of the circular buffer. bit-reverse : FFT xn-1 xn-6 addr = AR1 AR1 = (AR1 + 1) modulo BK LD *AR1+% ,A Élément courant du buffer Élément courant du buffer xn-4 xn-3 addr = AR1 (Aï *AR1) xn-3 xn-2 xn-1 xn xn+1 n-7 xn-6 xn-5 xn-4 Premier élément du tableau Vieillissement automatique des données After access, AR0 is added to ARx with reverse carry (rc) propagation. III-45 Index bit bit reverse 0 1 2 3 4 5 6 7 000 001 010 011 100 101 110 111 000 100 010 110 001 101 011 111 index bit reverse 0 4 2 6 1 5 3 7 III-46 Unité de gestion des adresses • Unité de gestion des adresses du TMS320C54x 8 registres auxiliaires (AR0…AR7) 2 unités de calcul ARAU registres spécifiques BK : taille du buffer circulaire AR0 : registre d'index Processeurs de traitement du signal 1. Introduction 2. Description des différentes unités 2.1. Unité de traitement 2.2. Unité de mémorisation 2.3. Unité de contrôle 2.4. Unité de communication 3. Exemple de processeurs III-47 4. Outils de développement III-48 Pipeline Codage des instructions • Exécution de l'instruction en plusieurs phases : – 1. Recherche de l'instruction • Stationnarité temporelle: – Une instruction définit l'ensemble des opérations à réaliser pour chaque – 2. Décodage de l'instruction unité fonctionnelle – 3. Recherche des opérandes – 4. Exécution MULT R1,R2,T i Recherche Instruction i+1 Inst n-1 Inst n Décodage Instruction Inst n-1 Recherche Opérande i+2 i+3 i+4 i Inst n+1 Inst n Inst n+1 Inst n-1 Inst n Exécution Inst n-1 ADD T,A,A Transfert mémoire .U.T. LOAD Unité Multiplieur Inst n+1 i+1 i+2 i+3 LOAD LOAD MULT MULT MULT ADD ADD Unité Accumulateur Inst n LD R1,AR1 LD R2,AR2 i+4 ADD III-49 Codage des instructions Format des instructions • Stationnarité des données: – Une instruction définit une séquence complète d'opérations à réaliser sur un ensemble de données MAC *AR1,*AR2 i Transfert mémoire .U.T. Unité Multiplieur Unité Accumulateur LOAD i+1 i+2 III-50 i+3 LOAD LOAD MULT MULT MULT ADD ADD Minimiser la ÷ Compromis ø Maximiser largeur des instructions le parallélisme ò ò Diminuer la consommation Augmenter l'efficacité et la surface mémoire & bus du processeur ò Abaisser les coûts • Format encodé: largeur minimale (16 à 32 bits) i+4 – Restrictions: nombre d'opérations disponibles modes d'adressage opérandes sources et destination ADD – Utilisation de bits de mode III-51 Jeu d'instructions hétérogène III-52 Structures de contrôle Structures de contrôle • Boucle matérielle • Instructions de branchement – Optimiser le traitement des boucles de petite taille – Branchement multi-cycles : ajout de NOP entre BR et 1ère instruction Initialisation des paramètres de la boucle en 1 instruction – Branchement retardé : déplacement de l'instruction de branchement BR Pas d'instructions supplémentaires pour la gestion de la fin de la boucle – Exemple boucle mono-instruction Boucle logicielle LOOP MOVE MAC DEC JNE #16,B (R0)+,(R4)+,A B LOOP Boucle #16 (R0)+,(R4)+,A matérielle RPT MAC DO ... End #16,End Loop body – Instructions conditionnelles du type : C5x If ! Then ! [R1] Else! [!R1] INF R1,R5,10 ADD R3,R2,3 ADD R3,R2,3 • Instructions de mode – Exemple boucle multi-instruction DSP 56000 • Instructions à prédicat SPLK RPTB ... End – Définir un mode de fonctionnement spécifique C5x #16 End-1 Loop body exemple : contrôle d'un registre à décalage, d'une unité de saturation, ... III-53 III-54 Unité de contrôle du C50 • PC sur 16 bits pile de 8 x 16 bits PFC, IR: pour le pipeline • Registres de status ST0,ST1,PMST 1. Introduction • Gestion des boucles • RPTC: repeat instruction • BRCR: repeat bloc 2. Description des différentes unités • Interruptions : • IMR: masque interruptions • IFR: flags interruptions • BMAR: bloc move GREG: mémoire globale • • • Processeurs de traitement du signal 2.1. Unité de traitement 2.2. Unité de mémorisation 2.3. Unité de contrôle 2.4. Unité de communication 3. Exemples de processeurs III-55 4. Outils de développement III-56 Périphériques • Périphériques intégrés Processeurs de traitement du signal ports séries ports parallèles timers 1. Introduction DMA 2. Description des différentes unités générateur de wait state host port PLL 2.1. Unité de traitement 2.2. Unité de mémorisation • Connexion aisée aux CAN et CNA 2.3. Unité de contrôle – les CAN/CNA ne sont généralement pas intégrés dans les DSP afin de pouvoir 2.4. Unité de communication choisir un CAN/CNA en adéquation avec l'application 3. Exemples de processeurs III-57 DSP conventionnels III-58 Panorama des DSP • Texas Instrument • 16-24 bits en virgule fixe, accumulation 40-60 bits – C2000 : virgule fixe 16 bits : contrôle moteur • 32 bits en virgule flottante – C5000 : virgule fixe 16 bits : faible consommation • 16 à 32 bits d'instructions OMAP : C55x + µP ARM – C6000 : virgule fixe 16 bits (C67 flottant) : hautes performances • Une instruction par cycle, jeu d'instructions • Analog Device complexe – ADSP21xx : virgule fixe 16 bits • Architecture non orthogonale, fortement contrainte – SHARC : virgule flottante 32 bits • Mémoire à accès multiples "on-chip" • Motorola • Unités dédiées de gestion des adresses – DSP560xx, DSP563xx : virgule fixe 24 bits : audionumérique • Matériel dédié pour la gestion des boucles Des milliards de produits intègrent ces DSP 4. Outils de développement – DSP566xx, DSP568xx : virgule fixe 16 bits – StareCore : virgule fixe 16 bits, hautes performances III-59 III-60 C5000 instruction MAC C5000 instruction FIRS Syntax Execution Example MAC[R] Smem, src (Smem) x (TREG) + (src) --> src MAC *AR5, A Syntax Execution Example MAC[R] Xmem, Ymem, src [,dst] (Xmem) x (Ymem) + (src) --> src or [,dst] MACR *AR5+, *AR6+, A, B FIRS Xmem, Ymem, pmad pmad -->PAR While (RC) != 0 (B) + (A(32-16)) x (Pmem addressed by PAR) --> B ((Xmem) + (Ymem)) << 16 --> A (PAR) + 1 --> PAR (RC) - 1 --> RC FIRS *AR3+, *AR4+, COEFFS (Xmem) --> TREG MAC #lk, src [,dst] (TREG) x lk + (src) or [,dst] MAC #345h, A, B MAC Smem, #lk, src [,dst] (Smem) x lk + (src) or [,dst] MAC *AR5+, #1234h, A (Smem) --> TREG Description Description FIRS is useful to implement symmetrical FIR filters. The FIRS instruction multiplies accumulator A(32-16) with a program memory value addressed by pmad (program memory address) and adds the result to the value in accumulator B. At the same time, it adds the memory operands Xmem and Ymem, shifts the result left 16 bits and loads this value into accumulator A. In the next iteration, pmad is incremented by 1. Once the repeat pipeline is started, the instruction becomes a single-cycle instruction. The MAC[R] instruction multiplies and adds with or without rounding. The result is stored in the destination accumulator, if specified, or in the source accumulator. For syntaxes 2 and 3, the data-memory value after the instruction is stored in TREG. TREG is updated during the read phase. The MACR instruction rounds the result of the MAC operation by adding 2^15 to the result and clearing the 16 LSBs (bits 15-0) to 0. Operands Smem: Xmem, Ymem: src, dst: lk: Single data-memory operand Dual data-memory operands A (accumulator A), B (accumulator B) 16-bit long-immediate value III-61 III-62 C5000 instruction LMS Syntax Execution Example LMS Xmem, Ymem (A) + (Xmem) << 16 + 2^15 --> A (B) + (Xmem) x (Ymem) --> B LMS *AR3+. *AR4+ Processeurs de traitement du signal 1. Introduction 2. Description des différentes unités Description 2.1. Unité de traitement The LMS instruction is used to execute the least mean square algorithm (LMS). The dual data-memory operand Xmem is shifted left 16 bits and added to accumulator A. The result is rounded by adding 2^15 to the high part of the accumulator (bits 31-16). The final result is stored in accumulator A. In parallel, Xmem and Ymem are multiplied and the result is added to accumulator B. Xmem does not overwrite TREG; therefore, TREG always contains the error value used to update coefficients. 2.2. Unité de mémorisation 2.3. Unité de contrôle 2.4. Unité de communication 3. Exemples de processeurs 4. Outils de développement III-63 III-64 Cycle de développement (1) Cycle de développement (2) #define pi 3.1416 #define pi 3.1416 main() { float x,h,z #define pi 3.1416 #define pi 3.1416 main() { float x,h,z for(i=1;i<n;i++) { *z= *y++ + *h++ } Besoin for(i=1;i<n;i++) { *z= *y++ + *h++ } Correlator.C Vecteurs de test Spécifications opératoires Spécification Modélisation de haut niveau Définition de l'algorithme Simulation for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } Correlator.C Code C virgule flottante for(i=1;i<n;i++) { *z= *y++ + *h++ } Correlator.C Conversion en virgule fixe Spécifications fonctionnelles Spécifications technologiques #define pi 3.1416 #define pi 3.1416 main() { float x,h,z Génération manuelle ou automatique Génération manuelle ou automatique Performances Génération manuelle #define pi 3.1416 #define pi 3.1416 main() { float x,h,z #define pi 3.1416 #define pi 3.1416 main() { float x,h,z for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } Correlator.C #define pi 3.1416 #define pi 3.1416 main() { float x,h,z for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } Correlator.C for(i=1;i<n;i++) { *z= *y++ + *h++ } Correlator.C Conception fonctionnelle x (n ) Bruit blanc uniforme y (n ) max ( y (n ) ) = 3.4 n Description de l'algorithme x (n ) max ( y (n ) ) = 2.4 n y (n ) Chirp (0 → Fe/2) Génération de code max ( y (n) ) = 9.3 n Partitionnement Contraintes temps réel, Consommation d'énergie, Implantation Logicielle Flexibilité Implantation Matérielle (compilateur - linker) Implantation Vecteurs de test Code C virgule fixe y (n ) Bruit blanc gaussien x (n ) Test & Debug (Simulateur Emulateur HW) Coût III-65 Performances III-66 Cycle de développement (3) Cycle de développement (4) • Conception fonctionnelle • Implantation matérielle – Spécifications du flot de données du TS, – Synthèse du circuit – Simulation, validation – Simulation VHDL et validation – Prototypage rapide – Analyse des performances Matlab/Simulink (Mathworks), SPW (CoWare), Cossap (Synopsys), Ptolemy Analyse – Test (Université de berkley) • Implantation logicielle • Développement du code – Génération de code (compilateur C/ass, linker) – Implantation matérielle : code VHDL – Test & Debug : validation du code – Implantation logicielle : code C – Analyse : mesure des performances III-67 III-68 Cycle de développement (5) Développement logiciel Assembly Libraries • Mise au point du logiciel - Debugging – Simulateur au niveau instruction Object Code Libraries Assembler Mise au point avant que le matériel soit disponible Hardware Emulator Simulator Assembly Code – Emulation du Hardware C/C++ Libraries On-chip debugging/emulation : IEEE 1179.1 JTAG standard – Carte de développement Linker C Compiler Binary Executable Object Code C/C++ Code Vérification temps réel de l'algorithme Debugger Système avec des faibles volumes de production DSP Development Board Final Product [Bier97] III-69 Code Composer Studio Code Composer Studio Application design Code & Build III-70 . Choix de la cible . Configuration de l'OS DSP/BIOS . Librairies : - DSPLib - TMS320 DSP Algorithm Standard Debug . IDE . Générateur de code . Compilateur C . Compilateur assembleur . Linker Analyse Simulateur Émulateur HW Exécution pas à pas Analyse de variables Déclenchement sur événements . Visualisation de signaux . Profiler (mesure du temps d'exécution du code) . Analyse temps réel (visualisation des tâches du DSP/BIOS) . Gestionnaire de projet III-71 III-72 Inefficacité des compilateurs C Les raisons de l'inefficacité • Analyse du surcoût associé au compilateur C : DSPStone Sur coût temps d'execution Sur coût taille du code 1200 [Ropers99] 400 350 300 Extensions du langage C C modifié 250 800 ANSI C C modifié 600 • Inefficacité des techniques classiques de développement des 200 Sur coût (%) Sur coût (%) – Absence de support pour l'arithmétique virgule fixe Langage orienté signal ANSI C 1000 • Inadéquation du langage C pour décrire des applications TNS 150 compilateurs (développement du DSP puis du compilateur) 100 400 50 • Inefficacité des techniques classiques de compilation qui ont 0 200 -50 0 ADSP21xx/ ADI DSP56002/ Motorola TMS320C51/ TMS320C54/ TMS320C62/ TI TI TI été développées pour les architectures homogènes -100 Processeurs ADSP21xx/ ADI DSP56002/ Motorola TMS320C51/ TI TMS320C54/ TI TMS320C62/ TI – Les architectures des DSP conventionnels sont hétérogènes Processeurs – Meilleurs performances pour les DSP plus généraux et les DSP virgule • Absence de support pour les spécificités des DSP flottante / architecture homogène – Registres d'état, modes d'adressage (modulo, bit inversé)... III-73 III-74 Conclusion Développement en C ou en assembleur • L'architecture des DSP conventionnels a été optimisée afin • Développement en assembleur : d'implanter efficacement les applications de TNS – Le code est optimisé – Conséquences : – Le code n'est pas portable - demande du savoir faire Le coût et la consommation d'énergie sont très faibles • Développement en C : Les performances obtenues sont bonnes mais elles sont insuffisantes pour les nouvelles applications : – Plus abordable rapidement – Téléphonie de 3ème génération … – Beaucoup moins performant et pas aussi simple ... • Nécessité d'utiliser des architectures nouvelles – Conseils : ne pas déclarer ses variables en float (chaque opération fera appel à des routines de la bibliothèque de calcul en flottant) Les compilateurs de langage de haut niveau sont peu efficaces • Les parties critiques de l'application doivent être codées à la déclarer les variables en int et les recadrages sont gérés par des décalages : main en assembleur • nécessité de connaître les conventions utilisées par le compilateur – ex: renvoi d 'une donnée en double précision en mémoire III-75 III-76 Évolution des architectures Exemple : Convolution • Augmentation du nombre d'opérations exécutées par instruction Traitement ligne – Architectures conventionnelles améliorées : Multi-MAC N−1 y(n) = – Capacités SIMD N • Tcycle < Te ∑ h(k).x(n − k) k= 0 • Complexité pour un point y(n) : N mult. et N-1 add. • Architecture réalisant une multiplication accumulation en 1 cycle • Augmentation du nombre d'instructions exécutées par cycle – VLIW Ex. TMS320C25 (100ns) Fe = 8kHz -> Nmax = 1250 – Superscalaires Traitement blocs avec recouvrement de N-R échantillons – Architectures clusterisées Yn • DSPs hybrides MCUs H = ⎡ y(n) ⎤ ⎡ h(0 ) y(n−1) h(N −1) ⎢ ••• ⎥ = ⎢ ••• ⎣y(n− N+1) ⎦ ⎣ h(1) • DSP multi-cœurs (multi-core)… III-77 Solutions architecturales N2 • Tcycle < R•Te . Xn h(1) h(0) •• h(1) h(N −1) • ••• h(N−1) • h(0) ⎤ ⎡ x(n ) ⎤ x(n−1) ⎥.⎢ ••• ⎥ ⎦ ⎣x(n−N +1) ⎦ Rem. Si N = R, on retrouve le résultat ci-dessus • Complexité pour un vecteur Yn : N.N mult. et N.(N-1) add. • Même Architecture III-78 Exemple : GSM • Processeurs programmables du commerce (ISP) Environ équivalant à 60 MIPS – Processeurs généraux RISC, VLIW 0110... – Micro-contrôleurs A/D – Processeurs de Traitement du Signal (DSP) – Processeurs Multimédia channel decoder modulator IF upc D/A modulator IF upc D/A user interface / control • Processeurs programmables “maison” (ASIP) RF – De type DSP ou µCtrl A/D • Processeurs et logique reconfigurables speech decoder 18% speech coder channel coder 1010... synchronisation – FPGA enfouis, Processeurs reconfigurables • Coprocesseurs ASIC 41% 41% Proc. Prog (comm.) Prog. Proc. (maison) ASIC III-79 Coprocessor, Hardware DSP, ASIP, ASP µController III-80 Le marché du DSP Evolution du marché du DSP • Les communications dominent : 77,2% des revenus en 2006 • Systèmes grand public : DVD, TV et radio numérique, ... • Ordinateurs : asservissement des moteurs pour les disques durs, ... III-81 Le marché des processeurs DSP III-82 Le marché des processeurs DSP • Evolution du marché des semi-conducteurs Semiconductor market in 2006 Flash memory DRAM memory Discrete products Microprocessor Microcontroler DSP MOS logic (*) Analog Optoelectronic Other Total Sales (Billion $) 20,5 33 16,6 33,2 12,5 8,6 60,3 37,3 16,7 10,1 248,8 Evolution / 2005 10,40% 29% 8,80% -5% 3,50% 12,80% 4,60% 16,80% 12,30% 9000 DSP Market Trends (M$) 8000 7000 6000 5000 @ Forward Concept Inc. 4000 3000 2000 1000 9% MOS logic : standard logic, standard cell, field programmable logic devices, 0 1992 1994 1996 1998 2000 2002 2004 2006 2008 and a broad range of application-specific devices III-83 Tendance du marché : vers des solutions à intégration de cœurs de DSP III-84 Le marché des processeurs DSP Le marché des processeurs DSP @ Forward Concept Inc. @ Forward Concept Inc. III-85 III-86 Transformées en TNS 1 Rappels • TFSD : Transformée de Fourier d'un Signal ∞ Discret X (e jωT ) = ∑ x(nT ) e − jnωT Transformées en TNS n = −∞ 1. TFD, convolution linéaire x(nT) non périodique ∞ ⎧ jΩ − jnΩ ⎪ X (e ) = ∑ x(nT ) e n = −∞ ⎪ ⎨ π ⎪ x(nT ) = 1 X (e jΩ ) e jnΩ dΩ ⎪⎩ 2π −∫π 2. TFR : Transformée de Fourier Rapide • Propriétés 1. Linéarité 2. Décalage en temps/fréquence 3. Produit de convolution en temps/fréquence 4. Théorème de Parseval 5. Transformées de fonctions réelles V-1 Transformées en TNS Transformées en TNS 2 2 Transformée de Fourier Discrète • TFD V-2 Transformée de Fourier Discrète • Propriétés – En pratique, on prend seulement un nombre fini d'échantillons de – Linéarité x(nT). On ne peut donc obtenir qu'un nombre fini d'échantillons – Décalage en temps/fréquence fréquentiels de X(ejΩ). – Produit de convolution en temps/fréquence kn N −1 − 2 jπ ⎧ N k = 0..N − 1 ⎪ X (k ) = ∑ x(n) e ⎪ n =0 ⎨ kn N −1 + 2 jπ ⎪ x(n) = 1 ∑ X (k ) e N n = 0..N − 1 ⎪⎩ N k =0 x(n) TFD N-1 Pas temporel : T=1/Fe • Convolution discrète x(n) est considéré comme périodique de période N, x(n) = x(n+qN) X(k) est donc également périodique de période N, X(k) = X(k+qN) • Convolution circulaire (ou périodique) – Théorème de Parseval – Transformées de fonctions réelles • Relation entre TFSD et TFD – Signaux de durée finie ou périodique X(k) – Cas général ? N-1 n Pas fréquentiel : 1/NT=Fe/N k V-3 V-4 Transformées en TNS Transformées en TNS 2 2 Transformée de Fourier Discrète • Définition n n Propriétés des W N = e -2jπ N kn N −1 − 2 jπ ⎧ N k = 0..N − 1 ⎪ X (k ) = ∑ x(n) e ⎪ n =0 ⎨ kn N −1 + 2 jπ ⎪ x(n) = 1 ∑ X (k ) e N n = 0..N − 1 N k =0 ⎩⎪ TFD X( k) x( n) ⇔ Transformée de Fourier Discrète k(N-n) kn WN = (WN )* kn k(n+N) (k+N)n WN = WN = WN n+N/2 n WN = -WN 2kn kn WN = WN/2 x(n) et X(k) sont, dans le cas général, des nombres complexes. • Forme Matricielle X(0) X(1) . . X(N-1) = 1 1 . 1 1 WN 1 WN 2 . WN . WN 2 WN 4 . . . . . WN . . 1 WN N-1 X=W. x WN = e . 2(N -1) WN 2(N -1) Périodicité (3.3) Symétrie (3.4) × (N-1) 2 x(0) x(1) . . x(N-1) La TFD revient à calculer un produit matrice-vecteur où chaque élément est de type complexe. La complexité de calcul de la TFD est de N2 multiplications, et de N(N-1) additions sur des nombres complexes. Ceci revient à une complexité de 4N2 multiplications réelles et N(4N-2) additions réelles. Cet algorithme se comporte donc en O(N2), mais ne possède pas de problèmes d'adressage car les x(n) et les Wi sont rangés dans l'ordre en mémoire. (2) −2 jπ N WNn k = e – En 1965, Cooley et Tuckey [COOLEY 65] ont publié un algorithme applicable quand N est le produit de 2 ou plusieurs entiers dont la complexité est en O(Nlog2N) − 2 jπ kn N V-5 Transformées en TNS 3 (3.2) Complexité de calcul N-1 WN (3.1) V-6 ••• TFR DIT ••• Transformée de Fourier Rapide • TFR (FFT) partagée dans le temps (DIT) X(k) = x(2) x(4) ∑ x(n).WNnk + ∑ x(n).WNnk n pair x(3) x(5) n=0 N/ 2−1 ∑ x(2n).WNnk/2 + WNk . n=0 X(k) = G(k) + WNk .H(k) W 82 W N/ 2−1 ∑ x(2n + 1).WN/nk2 n=0 TFD N/2 pts W 85 6 W8 W 78 O(N2 ) (4) 3 8 W 48 x(7) En exploitant la propriété 3.4, on obtient : X(k) = W 18 x(1) N/ 2−1 ∑ x(2n).WN2nk + ∑ x(2n + 1).WN(2n+1)k n=0 0 W8 TFD N/2 pts x(6) nimpair N/ 2−1 X(k) = x(0) X(0) X(1) X(2) X(3) X(4) X(5) X(6) X(7) O(N) 2 TFD de taille N/2 N/2 papillons k = 0,1,...., N − 1 Xm+1(p) Xm(p) où G(k): TFD sur N/2 points d'indices pairs, H(k): TFD sur N/2 points d'indices impairs. r Xm+1(p) = Xm(p) + WN Xm(q) r Xm+1(q) = Xm(p) - WN Xm(q) Papillon DIT N/ 2−1 N N/ 2−1 n(k+N/ 2) + W k+N/ 2 . 2) X(k + ) = ∑ x(2n). WN/ ∑ x(2n +1).WN/n(k+N/ 2 N 2 2 n=0 n=0 Xm(q) N X(k + ) = G(k) − WNk .H(k) 2 r WN (6) Xm+1(q) -1 Complexité d'un papillon : 1 multiplication complexe, 2 additions/soustractions complexes V-7 V-8 N log2N multiplications de nombres complexes, 2 N log2 N additions/soustractions de nombres complexes, ou, ••• TFR DIT ••• ••• TFR DIF ••• 2 N log2 N multiplications de nombre réels, 3 N log2 N additions/soustractions de nombre réels. FFT DIT RADIX-2 en place sur 16 points • TFR (FFT) partagée dans les fréquences (DIF) X(0 ) X(0 ) entrée ordre bit-reversed X(1 2) X(2 ) X(1 0) X(6 ) X(1 4) X(1 ) X(9 ) X(5 ) X(1 3) X(3 ) X(1 1) X(7 ) X(1 5) X(2 ) 0 X(3 ) 2 0 X(4 ) 0 X(5 ) 2 0 0 0 4 2 6 X(6 ) X(7 ) 0 X(8 ) 1 0 2 0 5 2 0 4 2 6 DIT: (Décimatio n en temps) X(1 1) 4 0 0 0 X(1 0) 3 2 0 X(9 ) 6 FFT W= e A -2j π N W= e -2j π N n = 0 N ∑ x(n ). WNnk + WNk. N / 2 . ∑ x(n + 2 ). WNnk ∑ [ x( n) + (- 1) k . x(n N + ) 2 nk X(0) X(1 2) x(1) X(1 3) x(2) X(2) TFD N/2 pts X(4) x(4) X(3) TFD N/2 pts W18 x(6) r Xm+1(q) = [Xm(p) - Xm(q)] WN X(7) W38 V-9 (8) V-10 Transformée de Fourier Rapide FFT DIT RADIX-2 en place sur 16 points X(0 ) X(0 ) 0 X(3 ) 4 X(4 ) X(5 ) X(6 ) X(1 2) X(2 ) 2 X(1 0) 0 4 X(7 ) 0 0 6 0 X(6 ) 4 X(1 4) 0 X(8 ) 0 X(1 ) X(9 ) 1 X(9 ) X(1 0) 2 X(1 1) 3 X(1 2) 4 X(1 3) 0 0 X(5 ) 4 X(1 3) 0 X(0 ) X(1 ) X(8 ) X(4 ) 0 entrée: ordre normal X(2 ) sortie: ordre bit-reversed X(1 ) X(2 ) 0 X(3 ) 0 X(4 ) 0 X(5 ) 0 X(6 ) 0 4 X(7 ) 0 4 X(8 ) 0 X(9 ) 0 X(1 0) 0 2 X(1 1) 0 2 X(1 2) 0 4 0 X(3 ) 5 2 X(1 1) X(1 3) 0 4 X(1 4) 6 4 0 X(7 ) X(1 4) 0 4 6 X(1 5) 7 4 X(1 5) X(1 5) 0 4 6 fréquence) Xm+1(q) WN Xm+1(p) = Xm(p) + Xm(q) X(5) W28 x(7) r -1 X(1) W08 x(5) B' Xm(q) X(6) x(3) FFT DIF RADIX-2 en place sur 16 points (Décimatio n en Xm+1(p) Xm(p) k X(0 ) DIF: (7) ] WN x(0) ••• TFR DIF entrée: ordre normal N/2-1 n = 0 n = 0 A' B N / 2 - 1 X( k ) = -k A' = A + BW B' = A - BW -k n = N / 2 ∑ x(n ). WNnk + ∑ x( n). WNnk N / 2 - 1 X(1 5) FFT inverse k A' = A + BW B' = A - BW k N - 1 n = 0 X( k ) = X(1 4) 7 N / 2 - 1 X( k ) = X(1 ) 0 6 FFT FFT inverse A' = A + B B' = (A-B) W k A' = A + B B' = (A-B) W -k W= e -2j π N 0 W= e -2j π N 0 A A' DIT: (Décimatio n en k B temps) B' V-11 FFT W= e -2j π N 4 2 6 1 5 3 7 A FFT inverse k A' = A + BW B' = A - BW k 0 X(8 ) X(4 ) X(1 2) X(2 ) X(1 0) X(6 ) X(1 4) X(1 ) X(9 ) X(5 ) X(1 3) X(3 ) sortie: ordre bit-reversed X(4 ) sortie ordre normal X(8 ) X(1 1) X(7 ) X(1 5) A' -k A' = A + BW B' = A - BW -k W= e -2j π N k B B' V-12 Transformée de Fourier Rapide Transformée de Fourier Rapide FFT DIF RADIX-4 en place sur 16 points FFT GEOMETRIE CONSTANTE sur 16 points X(1 2) X(2 ) X(1 0) X(6 ) X(1 4) X(1 ) X(9 ) X(5 ) X(1 3) X(3 ) X(1 1) X(7 ) X(1 5) 0 0 0 0 0 0 2 1 0 0 0 4 0 0 4 4 0 4 0 0 4 Géométrie Constante 6 FFT inverse A' = A + B•W -k B' = A - B•W -k W= e X(9 ) X(1 0) X(1 1) -2jš N B X(8) X(2) X(5) 0 X(6) 1 X(7) 2 X(8) 3 X(10) 0 X(1) 0 X(10) X(11) FFT FFT inverse A' = A+B+C+D k B' = (A-jB-C+jD)W C' = (A-B+C-D)W 2k D' = (A+jB-C-jD)W 3k -2jš N V-13 W= e A' = A+B+C+D -k B' = (A-jB-C+jD)W C' = (A-B+C-D)W -2k D' = (A+jB-C-jD)W -3k W= -2jš e N A k C 2k D Convolution et corrélation 4 Convolution et corrélation Définitions 1 Définitions • Exemple de convolution x(i) y (n) = ∑ x1 (i ) x2 (i + n) C' V-14 ∞ y (n) = ∑ x(i ) h(n − i ) i =0 N>M N −1 B' 3k D' 1 – Soit x1 et x2, 2 signaux de durée finie [0 ... N-1], la corrélation est : X(7) A' B 4 • Corrélation X(11) X(15) A' B' X(5) X(3) X(15) k X(9) X(13) 0 X(14) X(1 5) X(6) X(14) X(9) X(13) X(1 4) X(4) X(12) X(4) X(12) X(1 3) A X(0) 0 X(3) X(1 2) 7 A' = A + B•W kk B' = A - B•W -2jš N X(8 ) 6 FFT W= e X(7 ) 5 4 X(3 ) X(2) X(6 ) 4 2 X(1) X(5 ) 3 0 X(0) X(2 ) X(4 ) 2 6 X(1 ) sortie: ordre bit-reversed entrée: ordre bit-reversed X(4 ) entrée: ordre normal X(8 ) X(0 ) sortie: ordre normal X(0 ) h(i) i =0 * • Convolution linéaire – Soit x et h, 2 signaux de durée finie respectivement N et M, la N-1 i i M-1 h(n-i) convolution est définie par : h(-i) y (n) = ( x ∗ h)(n) ∞ n-M+1 ∞ y (n) = ∑ x(i ) h(n − i ) = ∑ h(i ) x(n − i ) i =0 n i n y (n) = ∑ x(i ) h(n − i ) i =0 i y(n) i =0 Le signal y(n) est de durée [0 ... N+M-2] V-15 N+M-2 n V-16 4 Convolution et corrélation 4 Convolution et corrélation 1 Définitions 2 Convolution circulaire • Propriétés • Convolution circulaire – Y(z) = H(z) X(z) (TZ) – Soit x et h, 2 signaux périodiques de période N, la convolution – Y(k) ≠ H(k) X(k) (TFD) circulaire est définie par : • Vue matricielle de la convolution y (0) ⎡ ⎤ ⎡ h(0) ⎢ ⎥ ⎢ y ( 1 ) . ⎢ ⎥ ⎢ ⎢ ⎥ = ⎢h( M − 1) . ⎢ ⎥ ⎢ . 0 ⎢ ⎥ ⎢ ⎢⎣ y ( N + M − 2)⎥⎦ ⎢⎣ 0 0 . . h(0) . . . . 0 N −1 y (n) = ∑ x(i ) h(n − i ) i =0 0 0 ⎤ ⎡ x(0) ⎤ ⎥ ⎢ x(1) ⎥ ⎥ ⎢ ⎥ ⎥ × ⎢ ⎥ . . 0 . ⎥ ⎢ ⎥ . . h(0) ⎥ ⎢ . ⎥ ⎥ ⎢ . . h( M − 1)⎦ ⎣ x( N − 1)⎥⎦ y ( n) = x ( n) ∗ h( n) Le signal y(n) est de période N h(n-i) est évalué modulo N TFD : Y(k) = H(k).X(k) è O(N2) V-17 V-18 4 Convolution et corrélation 4 Convolution et corrélation 2 Convolution circulaire 3 Convolution rapide • Convolution circulaire • Convolution rapide – On passe de la convolution circulaire à la convolution linéaire en – Passer dans le domaine de Fourier par une TFD : la convolution se remplissant de zéros chaque séquence jusqu'à M+N-1 transforme en produit – Utiliser la FFT sur P points pour accélérer les calculs {x(n)}{0….0} {x(n)}{0….0} N+M-1 * {y(n)} FFT X Longueur P {h(n)}{0….0} {h(n)}{0….0} FFT-1 {y(n)} FFT – Compléter les suites x(n) et h(n) par des zéros jusqu’à P > N+M-2, avec P = 2p. V-19 è O(Plog2P) V-20 4 Convolution et corrélation 4 Convolution et corrélation 3 Convolution rapide 3 Convolution rapide • Méthode OLA (Overlap Add) – Problème : h(n) et x(n) doivent être de durée finie – Application : FIR rapide – Blocs xk de taille M • h(n) de durée M : H(k) peut être calculé une fois pour toute – Addition des recouvrements entre les yk • x(n) de durée infinie • Convolution sectionnée – x(n), de durée infinie, est découpé en blocs xk de taille M ⎧ x(n) xk (n) = ⎨ ⎩ O y ( n) = h( n) * • Méthode OLS (Overlap Save) pour kM ≤ n < (k + 1) M ailleurs ∞ ∑x k – Blocs xk de taille N+M avec recouvrement – Troncature des yk sur M points, addition entre les yk ( n) k = −∞ y ( n) = ∞ ∑y k ( n) k = −∞ V-21 V-22 Synthèse des filtres RII 1 Introduction • Recherche de H(z) correspondant aux spécifications (gabarit) Synthèse des filtres numériques RII – Transposition des méthodes de synthèse applicables aux filtres 1. Introduction analogiques, puis transformation de H(p) vers H(z) Invariance impulsionnelle 2. Rappels sur la synthèse des filtres analogiques Transformation bilinéaire 3. Invariance impulsionnelle – Synthèse directe en z 4. Transformation bilinéaire – Méthodes d'optimisation : minimiser un critère d'erreur entre courbe réelle et courbe idéale VI-1 VI-2 Synthèse des filtres RII Synthèse des filtres RII 2 2 Synthèse de filtre analogique Spécification Gabarit analogique Synthèse de filtre analogique • Normalisation – Calcul de la sélectivité s Normalisation Gabarit normalisé |HNorm(p)| Ordre du filtre |HNorm(p)| (dB) 1 Approximation de H(p) 1+δ1 1 1-δ1 Types de filtre (Butterworth, Chebyshev,...) HNorm(p) s Δ1 0 -Δ1 ω Dénormalisation δ2 H(p) Filtrage numérique Filtrage analogique Transformation Choix d’une structure p=f(z) invariance impulsionnelle, bilinéaire Δ2 1 1/s a) Gabarit prototype linéaire Rauch, Sallien-Key, Biquadratique VI-3 ω b) Gabarit prototype en dB VI-4 Synthèse des filtres RII Synthèse des filtres RII 2 3 Synthèse de filtre analogique • Ordre du filtre et fonction de transfert normalisée Invariance impulsionnelle • Le filtre numérique et le filtre analogique ont la même réponse impulsionnelle – Butterworth, Chebyschev, Elliptique, Bessel, Legendre, ... – HNORM(pN) ha(t) • Dénormalisation h(nT) – Passe-bas : pN = p / ωc – Passe-haut : pN = ωc / p t – Passe-bande : pN = 1/B (p / ω0 + ω0 / p) x(t) • On obtient une fonction de transfert H(p) respectant le gabarit analogique spécifié Ha(p) y(t) x(nT) filtre analogique h(nT) = ha(t) VI-5 Synthèse des filtres RII Synthèse des filtres RII 3 3 • Le filtre numérique et le filtre analogique ont la même réponse impulsionnelle y(nT) H(z) filtre numérique ⇒ Passage vers H(z) Invariance impulsionnelle t T / t = nT VI-6 Invariance impulsionnelle • Réponse fréquentielle 1 Ha(p) −1 L = nT Tz H a ( p ) ⎯⎯→ ha (t ) ⎯t⎯ ⎯→ h(nT ) ⎯⎯→ H ( z) p ou formulation directe H ( z) = ∑ { pôles pi de H a ( p )} H(Ω) ⎡ H a ( p ) ⎤ Résidus ⎢ , pi ⎥ −1 pT ⎣1 − z e ⎦ 1/T – Conserve la réponse temporelle et la stabilité Ω – Phénomène de recouvrement de spectre du à l'échantillonnage -2Π – Non respect de la spécification fréquentielle H (e jΩ ) = 1 ∑ H a jω + j 2Tπk T k ( Π 2Π – Normalisation ) (xT) ou (/H(0)) VI-7 VI-8 Synthèse des filtres RII Synthèse des filtres RII 4 4 Transformation bilinéaire • Approximation d'une intégrale par la méthode des rectangles1 Transformation bilinéaire – Conservation de la stabilité plan p plan z e(nT) z = ejωT S(n) = S(n-1) + T[e(n) + e(n-1)]/2 (n-1)T e(n) s(n) H(z) nT e(t) Intégrateur numérique 1Appelée π t 0 p = jωa s(t) 1/p p= Intégrateur analogique 2 1 − z −1 T 1 + z −1 également, selon les sources, méthode des trapèzes – Relation entre fréquences numériques et analogiques VI-9 VI-10 Synthèse des filtres RII Synthèse des filtres RII 4 4 Transformation bilinéaire – Distorsion en fréquence connue ω analogique T T ⎞ ⎛ = tg ⎜ ω numérique ⎟ 2 2 ⎠ ⎝ ωT π Transformation bilinéaire • Procédure de synthèse – A partir du gabarit en fréquence numérique ωn – Effectuer une prédistorsion en fréquence ωa π/T ωa -π T ⎛ T ⎞ = tg ⎜ ω n ⎟ 2 2 ⎠ ⎝ – Synthèse de H(p) par méthodes vues en Electronique du signal – Transformation bilinéaire fe/2 H ( z ) = H ( p) fe/2 p= filtre analogique filtre numérique VI-11 2 1 − z −1 T 1 + z −1 VI-12 ωa Synthèse des filtres RII ωa Exemple • Filtre numérique analogique du premier ordre ωa=2/T tan(Ω/2) 1 H ( p) = p fc = 1 KHz, fe = 10 Khz ωc 1 ωc = R.C – Invariance impulsionnelle : Hi(z) π Ω δ2 1+δ1 1 1-δ1 ωa p ωa a |Ha(jωa)| 1+ 1+δ1 1 1-δ1 |H(ejΩ)| – Transformation bilinéaire : Hb(z) δ2 Ωp Ωa π 2π VI-13 Ω VI-14 Synthèse des filtres RIF 1 Introduction • Recherche de H(z) correspondant aux spécifications (gabarit) Synthèse des filtres numériques RIF – Synthèse directe en z 1. Introduction – Filtres à phase linéaire ou minimale 2. Filtres à Phase Linéaire • 3 méthodes de synthèse 3. Méthode du Fenêtrage – Méthode du fenêtrage 4. Échantillonnage en Fréquence – Méthodes d'optimisation : minimiser un critère d'erreur entre courbe – Méthode de l'échantillonnage fréquentiel réelle et courbe idéale VII-1 VII-2 Synthèse des filtres RIF Synthèse des filtres RIF 2 2 Phase linéaire • Filtre à phase minimale Phase linéaire réponse impulsionnelle symétrique β=0 – Zéros dans le cercle unité • Filtre à phase linéaire h(n) Type I N impair α entier H (e jΩ ) = A(Ω).e jϕ ( Ω ) ⎧ A(Ω) : pseudo − module (amplitude ) avec ⎨ ⎩ϕ (Ω) = β − αΩ réponse impulsionnelle antisymétrique β=±π/2 Type III h(n) α α – Condition pour avoir une phase linéaire Symétrie ou antisymétrie par rapport à α = (N-1)/2 Type II h(n) N pair α non entier VII-3 Type IV h(n) α α N-1 N-1 N-1 N-1 VII-4 Synthèse des filtres RIF Synthèse des filtres RIF 2 2 Phase linéaire Phase linéaire Réponses fréquentielles Type I jΩ H (e ) = e − jαΩ α ∑a n Réponses fréquentielles Type III j π α H (e jΩ ) = e 2 e − jαΩ ∑ cn sin(nΩ) cos( nΩ) Type I Type III n =1 n =0 cn = 2h(α − n), n = 1…α a0 = h(α ), an = 2h(α − n), n = 1…α N impair H (0) = H (π ) = 0 Tout filtre N pair Type II N /2 Passe Bande Dérivateur Type IV j π N impair bn = 2h( N / 2 − n), n = 1… N / 2 d n = 2h( N / 2 − n), n = 1… N / 2 H (π ) = 0 H (0) = 0 Type II Passe Haut VII-5 Dérivateur π Passe Haut Dérivateur 2π Passe Haut 3 3 Méthode du fenêtrage • Développement en série de Fourier du filtre idéal ∑ h( n) e 1 2π π − 1 Filtre passe-bas idéal − jnΩ jΩ VII-6 • Exemple : filtre passe-bas idéal -π ∫ π H (e 2π Méthode du fenêtrage n = −∞ h( n) = π n =1 Synthèse des filtres RIF H ( e jΩ ) = 2π Type IV Synthèse des filtres RIF ∞ π Passe Bande Dérivateur Tout filtre N /2 H (e jΩ ) = e 2 e − jαΩ ∑ d n sin[(n − 1 / 2)Ω] Passe Haut 2π N pair H (e jΩ ) = e − jαΩ ∑ bn cos[(n − 1 / 2)Ω] n =1 π ).e jnΩ dΩ -Ωc |H(ejΩ)| Ωc π Ω – Filtre non causal, de type RII • Passage de h(n) idéal au RIF approché par fenêtrage de h(n) h( n) = ha (n) = h(n).w(n) VII-7 Ω c sin( nΩ c ) π nΩ c VII-8 Synthèse des filtres RIF Synthèse des filtres RIF 3 3 Méthode du fenêtrage • Prise en compte d'une condition de phase linéaire par décalage de α Méthode du fenêtrage – Largeur de la zone de transition ΔΩ ⇔ 1/2 largeur du lobe principal – Atténuation ΔA ⇔ amplitude du premier lobe secondaire • Fenêtrage de h(n) ^ H(Ω) ha (n) = h(n).w(n) ⇔ H a (e jΩ ) = H (e jΩ ) ∗W (e jΩ ) H(Ω) 1+ΔA 1 1-ΔA W(Ω) * H(Ω) ΔA ΔΩ |Ha(Ω)| W(Ω) = VII-9 VII-10 Synthèse des filtres RIF Synthèse des filtres RIF 3 3 Méthode du fenêtrage • Fenêtres usuelles Méthode du fenêtrage • Fenêtres usuelles – Rectangle, Triangle, Hanning, Hamming, Blackman, Kaiser, ... – Réponses fréquentielles (linéaire, dB) – Réponses temporelles VII-11 VII-12 Synthèse des filtres RIF Synthèse des filtres RIF 3 4 Méthode du fenêtrage • Influence de la fenêtre Fenêtre Rectangulaire Triangulaire Hanning Hamming Blackman Lobe secondaire -13dB -25dB -31dB -41dB -57dB Méthode de l'échantillonnage • Échantillonnage en fréquence – Échantillonnage du filtre idéal Demi largeur du Atténuation lobe principal minimum 2π/N -21dB π 4 /N -25dB π -44dB 4 /N π -53dB 4 /N -74dB 6π/N H(ejΩ) H(kΩe) 1 π Ωc 2π Ω – TFD inverse de H(kΩe) – Le type de fenêtre influe sur ΔA et ΔΩ – Le nombre de points influe sur ΔΩ h( n ) = 1 N N −1 ∑ H (kΩ )e e j 2π n. k N k =0 – Méthode valable pour tout type de filtre – Possibilité d'utiliser un fenêtrage VII-13 VII-14 Analyse spectrale 1 Définition • Analyse spectrale de signaux continus Analyse spectrale – Etude du contenu fréquentiel (spectre) d'un signal continu xc(t) – Nombre limité d'échantillons du signal d'entrée pour la TFD 1. Effets de la troncature 2. Caractéristiques des fenêtres xc(t) 3. Influence sur l'analyse Filtre P.Bas anti-repliement Ωc = π CAN Fe x(n) x xN(n) FFT ||2 φ fenêtre wN(n) • Troncature temporelle – xN(n) = x(n) . wN(n) avec wN(n) fenêtrage sur N points – T0 = N.T : horizon d'observation VIII-1 VIII-2 VIII-3 VIII-4 Analyse spectrale 2 Analyse spectrale Troncature temporelle 2 • Troncature temporelle – xN(n) = x(n) . wN(n) Troncature temporelle • Exemple avec wN(n) fenêtrage sur N points – Fenêtre rectangulaire, N=31 • Influence sur le spectre – Convolution fréquentielle X N (e jΩ ) = X (e jΩ ) *WN (e jΩ ) • TFD du signal tronqué L −1 X N ( k ) = ∑ x N ( n) e − 2 jπ kn L k = 0..L − 1 n =0 L≥N X N (k ) = X N (e jΩ ) Ω = 2πk / L VIII-5 Analyse spectrale 3 VIII-6 Analyse spectrale Influence de la fenêtre 3 Influence de la fenêtre • Influence de la fenêtre – fonction cosinus fenêtrée sur N=32 points Fenêtre Lobe secondaire λdB = 20log|W(fs)/W(0)| Rectangulaire Triangulaire Hanning Hamming Blackman Lobe secondaire Largeur du lobe λ = |W(fs)/W(0)| principal LLP = ΔΩm 4.5-1 17.8-1 35.5-1 112.2-1 708-1 -13dB -25dB -31dB -41dB -57dB 4π/N 8π/N 8π/N 8π/N 12π/N – Le type de fenêtre influe sur λ et ΔΩm – Le nombre de points influe sur ΔΩm W(Ω) λ ΔΩm/2 π 1/NT fs fe/2 ΔΩm VIII-7 Ω f VIII-8 Analyse spectrale 3 Analyse spectrale Influence de la fenêtre 3 • Fenêtres usuelles Influence de la fenêtre • Fenêtres usuelles – Rectangle, Triangle (Bartlett), Hanning, Hamming, Blackman, Kaiser, ... – Réponses fréquentielles (linéaire, dB) – Réponses temporelles VIII-9 Analyse spectrale 4 VIII-10 Analyse spectrale Paramètres de l'analyse 4 Paramètres de l'analyse • Finesse en fréquence – Capacité de l'analyseur à détecter 2 raies proches – Masquage fréquentiel – Largeur du lobe principal : LLP = ΔΩm Fenêtre rectangulaire – Dépend de N et du type de fenêtre Exemple sur transparent 9 • Finesse en amplitude – Capacité de l'analyseur à détecter des raies de faibles amplitudes ou masquée par une autre raie proche – Masquage d'amplitude ou bruit de l'analyse λ = 20log|W(fs)/W(0)| – Dépend du type de fenêtre Exemple sur transparent 10 VIII-11 VIII-12 Analyse spectrale 4 Analyse spectrale Paramètres de l'analyse 5 Zero-padding – Ajout de L-N zéros à la suite de x(n) avant TFD sur L points VIII-13 VIII-14 Systèmes multi-cadences 1 Définition • Systèmes multi-cadences Systèmes multi-cadences – Systèmes dans lesquels on pourra avoir plusieurs fréquences d'échantillonnage dans une même chaîne de traitement 1. Définition – Ils tirent partie de la forme spectrale d'un signal en gardant Fe toujours à sa valeur optimale 2. Décimation -> Réduction de la complexité 3. Interpolation xc(t) 1 t -ω0 Xc(ω) ω0 ω IX-1 IX-2 Systèmes multi-cadences Systèmes multi-cadences 1 2 Définition x(nT) 1/T Décimation • Décimation d'un facteur M X(ejΩ) x(nT) t T -π/T -ω0 ω0 1/T' Xd(ejΩ) π/T t ω ↓M xd(nT') t T' = MT F'e = Fe/M xd (n) = x(nM ) xd(nT') T' t X d ( e jΩ ) = 1 M M −1 ∑ X (e j ( Ω / M − 2πi / M ) ) i =0 – Pour éviter le recouvrement de spectre, le signal xc(t) doit être à -π/T' π/T' ω bande limitée et respecter le théorème de Shannon par rapport à T' X c (ω ) = 0 pour ω ≥ ω 0 IX-3 et π /T' = π /(MT) ≥ ω 0 ou F 'e = Fe / M ≥ ω 0 / π IX-4 Systèmes multi-cadences Systèmes multi-cadences 2 3 Décimation • Interpolation d'un facteur L • Filtres à décimation – Filtre suivi d'un décimateur – Objectif : augmenter la fréquence d'échantillonnage d'un signal x(n) T' = MT Filtre Passe Bas Gain = 1 Ωc = π/M x(nT) échantillonné à la période T d'un facteur L v(nT) y(nT') x i (nT ') = x(nT / L) = x c (nT '), avecT ' = T / L ↓M • Elévateur de fréquence – Ajout de L-1 zéros entre 2 échantillons de x(n) • Optimisation du filtre à décimation x(nT) T b0 T Interpolation x(nT) T t b1 b2 b3 + + + v(nT) xe(nT') ↑L t ⎧ x(n / L), n = 0, ± L, ± 2 L, ... xe (n) = ⎨ ⎩0 ailleurs y(nT') ↓2 X e (e jωT ' ) = X (e jωT ) Pas d'effet sur le spectre X e (e jΩ ) = X (e jΩL ) IX-5 IX-6 Systèmes multi-cadences Systèmes multi-cadences 3 3 Interpolation 1/T Interpolation • Optimisation du filtre à interpolation X(ejΩ) x(nT) t -π/T π/T 1/T' Xe(ejΩ) ω ↑2 v(nT') b0 T T T b1 b2 b3 + + + y(nT') t -π/T' • Interpolateur -π/T π/T ω π/T' – Succession d'un élévateur de fréquence et d'un filtre passe-bas idéal • Multiplication de Fe par un facteur rationnel R=L/M de gain L, de période d'échantillonnage T' et de fréquence de coupure – T' = T.M/L Fc = 1/2T (i.e. Ωc = π/L). x(nT) x(nT) ↑L xe(nT') Filtre Passe Bas Gain = L Ωc = π/L ↑L xi(nT') IX-7 Filtre Passe Bas Gain = L Ωc = min(π/L, π/M) y(nT') ↓M IX-8